diff --git a/worldwind-tutorials.js b/worldwind-tutorials.js index 51a34cff0..b7f2cfe61 100644 --- a/worldwind-tutorials.js +++ b/worldwind-tutorials.js @@ -1,3 +1,3 @@ /*! For license information please see worldwind-tutorials.js.LICENSE.txt */ -!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["worldwind-tutorials"]=n():t["worldwind-tutorials"]=n()}(this,(()=>(()=>{var __webpack_modules__={135:(t,n,i)=>{"use strict";function e(t,n,i){function e(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,n&&n.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===i&&(i=Error),e.prototype=Object.create(i.prototype),e.prototype.name=t,e.prototype.constructor=e,e}i.r(n),i.d(n,{ArithmeticException:()=>o,ChronoField:()=>O,ChronoLocalDate:()=>W,ChronoLocalDateTime:()=>an,ChronoUnit:()=>S,ChronoZonedDateTime:()=>rn,Clock:()=>dn,DateTimeException:()=>r,DateTimeFormatter:()=>Yt,DateTimeFormatterBuilder:()=>Ut,DateTimeParseException:()=>s,DayOfWeek:()=>M,DecimalStyle:()=>mt,Duration:()=>x,IllegalArgumentException:()=>_,IllegalStateException:()=>h,Instant:()=>vn,IsoChronology:()=>nn,IsoFields:()=>rt,LocalDate:()=>hn,LocalDateTime:()=>ln,LocalTime:()=>cn,Month:()=>N,MonthDay:()=>Gt,NullPointerException:()=>a,OffsetDateTime:()=>un,OffsetTime:()=>en,Period:()=>P,ResolverStyle:()=>U,SignStyle:()=>gt,Temporal:()=>V,TemporalAccessor:()=>T,TemporalAdjuster:()=>H,TemporalAdjusters:()=>Jt,TemporalAmount:()=>$,TemporalField:()=>C,TemporalQueries:()=>j,TemporalQuery:()=>A,TemporalUnit:()=>k,TextStyle:()=>yt,UnsupportedTemporalTypeException:()=>u,ValueRange:()=>E,Year:()=>Xt,YearConstants:()=>q,YearMonth:()=>Kt,ZoneId:()=>G,ZoneOffset:()=>Q,ZoneOffsetTransition:()=>gn,ZoneRegion:()=>Mt,ZoneRules:()=>K,ZoneRulesProvider:()=>Dt,ZonedDateTime:()=>sn,_:()=>Tn,convert:()=>Sn,nativeJs:()=>En,use:()=>zn});var r=e("DateTimeException",(function(t,n){void 0===n&&(n=null);var i=t||this.name;null!==n&&n instanceof Error&&(i+="\n-------\nCaused by: "+n.stack+"\n-------\n"),this.message=i})),s=e("DateTimeParseException",(function(t,n,i,e){void 0===n&&(n=""),void 0===i&&(i=0),void 0===e&&(e=null);var r=t||this.name;r+=": "+n+", at index: "+i,null!==e&&e instanceof Error&&(r+="\n-------\nCaused by: "+e.stack+"\n-------\n"),this.message=r,this.parsedString=function(){return n},this.errorIndex=function(){return i}})),u=e("UnsupportedTemporalTypeException",null,r),o=e("ArithmeticException"),_=e("IllegalArgumentException"),h=e("IllegalStateException"),a=e("NullPointerException");function l(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,n,i){if(!t)throw i?new i(n):new Error(n)}function v(t,n){if(null==t)throw new a(n+" must not be null");return t}function d(t,n,i){if(!(t instanceof n))throw new _(i+" must be an instance of "+(n.name?n.name:n)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function w(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var p=Object.freeze({__proto__:null,assert:f,requireNonNull:v,requireInstance:d,abstractMethodFail:w}),m=9007199254740991,g=-9007199254740991,y=function(){function t(){}return t.intDiv=function(n,i){var e=n/i;return e=t.roundDown(e),t.safeZero(e)},t.intMod=function(n,i){var e=n-t.intDiv(n,i)*i;return e=t.roundDown(e),t.safeZero(e)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(n,i){var e=Math.floor(n/i);return t.safeZero(e)},t.floorMod=function(n,i){var e=n-t.floorDiv(n,i)*i;return t.safeZero(e)},t.safeAdd=function(n,i){if(t.verifyInt(n),t.verifyInt(i),0===n)return t.safeZero(i);if(0===i)return t.safeZero(n);var e=t.safeToInt(n+i);if(e===n||e===i)throw new o("Invalid addition beyond MAX_SAFE_INTEGER!");return e},t.safeSubtract=function(n,i){return t.verifyInt(n),t.verifyInt(i),0===n&&0===i?0:0===n?t.safeZero(-1*i):0===i?t.safeZero(n):t.safeToInt(n-i)},t.safeMultiply=function(n,i){if(t.verifyInt(n),t.verifyInt(i),1===n)return t.safeZero(i);if(1===i)return t.safeZero(n);if(0===n||0===i)return 0;var e=t.safeToInt(n*i);if(e/i!==n||n===g&&-1===i||i===g&&-1===n)throw new o("Multiplication overflows: "+n+" * "+i);return e},t.parseInt=function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n}((function(n){var i=parseInt(n);return t.safeToInt(i)})),t.safeToInt=function(n){return t.verifyInt(n),t.safeZero(n)},t.verifyInt=function(t){if(null==t)throw new o("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new o("Invalid int value, using NaN as argument");if(t%1!=0)throw new o("Invalid value: '"+t+"' is a float");if(t>m||tn?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(n){if(n!=n||n===1/0)return 0;for(var i=n;n>4294967295;)i^=n/=4294967295;return t.smi(i)},t.hashCode=function(){for(var n=17,i=arguments.length,e=new Array(i),r=0;r0&&e<0)e+=cn.NANOS_PER_SECOND;else if(i<0&&e>0)e-=cn.NANOS_PER_SECOND;else if(0===i&&0!==e){var s=n.with(O.NANO_OF_SECOND,r);i=t.until(s,S.SECONDS)}}catch(t){}return this.ofSeconds(i,e)},n.parse=function(t){v(t,"text");var i=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==i&&"T"===i[3]==0){var e="-"===i[1],r=i[2],u=i[4],o=i[5],_=i[6],h=i[7];if(null!=r||null!=u||null!=o||null!=_){var a=n._parseNumber(t,r,cn.SECONDS_PER_DAY,"days"),l=n._parseNumber(t,u,cn.SECONDS_PER_HOUR,"hours"),c=n._parseNumber(t,o,cn.SECONDS_PER_MINUTE,"minutes"),f=n._parseNumber(t,_,1,"seconds"),d=null!=_&&"-"===_.charAt(0),w=n._parseFraction(t,h,d?-1:1);try{return n._create(e,a,l,c,f,w)}catch(n){throw new s("Text cannot be parsed to a Duration: overflow",t,0,n)}}}throw new s("Text cannot be parsed to a Duration",t,0)},n._parseNumber=function(t,n,i,e){if(null==n)return 0;try{return"+"===n[0]&&(n=n.substring(1)),y.safeMultiply(parseFloat(n),i)}catch(n){throw new s("Text cannot be parsed to a Duration: "+e,t,0,n)}},n._parseFraction=function(t,n,i){return null==n||0===n.length?0:(n=(n+"000000000").substring(0,9),parseFloat(n)*i)},n._create=function(){return arguments.length<=2?n._createSecondsNanos(arguments[0],arguments[1]):n._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},n._createNegateDaysHoursMinutesSecondsNanos=function(t,i,e,r,s,u){var o=y.safeAdd(i,y.safeAdd(e,y.safeAdd(r,s)));return t?n.ofSeconds(o,u).negated():n.ofSeconds(o,u)},n._createSecondsNanos=function(t,i){return void 0===t&&(t=0),void 0===i&&(i=0),0===t&&0===i?n.ZERO:new n(t,i)};var i=n.prototype;return i.get=function(t){if(t===S.SECONDS)return this._seconds;if(t===S.NANOS)return this._nanos;throw new u("Unsupported unit: "+t)},i.units=function(){return[S.SECONDS,S.NANOS]},i.isZero=function(){return 0===this._seconds&&0===this._nanos},i.isNegative=function(){return this._seconds<0},i.seconds=function(){return this._seconds},i.nano=function(){return this._nanos},i.withSeconds=function(t){return n._create(t,this._nanos)},i.withNanos=function(t){return O.NANO_OF_SECOND.checkValidIntValue(t),n._create(this._seconds,t)},i.plusDuration=function(t){return v(t,"duration"),this.plus(t.seconds(),t.nano())},i.plus=function(t,n){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&n instanceof k?this.plusAmountUnit(t,n):this.plusSecondsNanos(t,n)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n===S.DAYS)return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_DAY),0);if(n.isDurationEstimated())throw new u("Unit must not have an estimated duration");if(0===t)return this;if(n instanceof S){switch(n){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this.plusSecondsNanos(1e3*y.intDiv(t,1e9),1e3*y.intMod(t,1e9));case S.MILLIS:return this.plusMillis(t);case S.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos(y.safeMultiply(n.duration().seconds(),t),0)}var i=n.duration().multipliedBy(t);return this.plusSecondsNanos(i.seconds(),i.nano())},i.plusDays=function(t){return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_DAY),0)},i.plusHours=function(t){return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_HOUR),0)},i.plusMinutes=function(t){return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_MINUTE),0)},i.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},i.plusMillis=function(t){return this.plusSecondsNanos(y.intDiv(t,1e3),1e6*y.intMod(t,1e3))},i.plusNanos=function(t){return this.plusSecondsNanos(0,t)},i.plusSecondsNanos=function(t,i){if(v(t,"secondsToAdd"),v(i,"nanosToAdd"),0===t&&0===i)return this;var e=y.safeAdd(this._seconds,t);e=y.safeAdd(e,y.intDiv(i,cn.NANOS_PER_SECOND)),i=y.intMod(i,cn.NANOS_PER_SECOND);var r=y.safeAdd(this._nanos,i);return n.ofSeconds(e,r)},i.minus=function(t,n){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,n)},i.minusDuration=function(t){v(t,"duration");var n=t.seconds(),i=t.nano();return n===g?this.plus(m,-i):this.plus(-n,-i)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),t===g?this.plusAmountUnit(m,n):this.plusAmountUnit(-t,n)},i.minusDays=function(t){return t===g?this.plusDays(m):this.plusDays(-t)},i.minusHours=function(t){return t===g?this.plusHours(m):this.plusHours(-t)},i.minusMinutes=function(t){return t===g?this.plusMinutes(m):this.plusMinutes(-t)},i.minusSeconds=function(t){return t===g?this.plusSeconds(m):this.plusSeconds(-t)},i.minusMillis=function(t){return t===g?this.plusMillis(m):this.plusMillis(-t)},i.minusNanos=function(t){return t===g?this.plusNanos(m):this.plusNanos(-t)},i.multipliedBy=function(t){if(0===t)return n.ZERO;if(1===t)return this;var i=y.safeMultiply(this._seconds,t),e=y.safeMultiply(this._nanos,t);return i+=y.intDiv(e,cn.NANOS_PER_SECOND),e=y.intMod(e,cn.NANOS_PER_SECOND),n.ofSeconds(i,e)},i.dividedBy=function(t){if(0===t)throw new o("Cannot divide by zero");if(1===t)return this;var i=y.intDiv(this._seconds,t),e=y.roundDown((this._seconds/t-i)*cn.NANOS_PER_SECOND),r=y.intDiv(this._nanos,t);return r=e+r,n.ofSeconds(i,r)},i.negated=function(){return this.multipliedBy(-1)},i.abs=function(){return this.isNegative()?this.negated():this},i.addTo=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,S.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,S.NANOS)),t},i.subtractFrom=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,S.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,S.NANOS)),t},i.toDays=function(){return y.intDiv(this._seconds,cn.SECONDS_PER_DAY)},i.toHours=function(){return y.intDiv(this._seconds,cn.SECONDS_PER_HOUR)},i.toMinutes=function(){return y.intDiv(this._seconds,cn.SECONDS_PER_MINUTE)},i.toMillis=function(){var t=Math.round(y.safeMultiply(this._seconds,1e3));return y.safeAdd(t,y.intDiv(this._nanos,1e6))},i.toNanos=function(){var t=y.safeMultiply(this._seconds,cn.NANOS_PER_SECOND);return y.safeAdd(t,this._nanos)},i.compareTo=function(t){v(t,"otherDuration"),d(t,n,"otherDuration");var i=y.compareNumbers(this._seconds,t.seconds());return 0!==i?i:this._nanos-t.nano()},i.equals=function(t){return this===t||t instanceof n&&this.seconds()===t.seconds()&&this.nano()===t.nano()},i.toString=function(){if(this===n.ZERO)return"PT0S";var t,i=y.intDiv(this._seconds,cn.SECONDS_PER_HOUR),e=y.intDiv(y.intMod(this._seconds,cn.SECONDS_PER_HOUR),cn.SECONDS_PER_MINUTE),r=y.intMod(this._seconds,cn.SECONDS_PER_MINUTE),s="PT";if(0!==i&&(s+=i+"H"),0!==e&&(s+=e+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*cn.NANOS_PER_SECOND-this._nanos):""+(cn.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+"S"},i.toJSON=function(){return this.toString()},n}($),q=function(){},S=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return this.isDateBased()||this===n.FOREVER},i.isDateBased=function(){return this.compareTo(n.DAYS)>=0&&this!==n.FOREVER},i.isTimeBased=function(){return this.compareTo(n.DAYS)<0},i.isSupportedBy=function(t){if(this===n.FOREVER)return!1;try{return t.plus(1,this),!0}catch(n){try{return t.plus(-1,this),!0}catch(t){return!1}}},i.addTo=function(t,n){return t.plus(n,this)},i.between=function(t,n){return t.until(n,this)},i.toString=function(){return this._name},i.compareTo=function(t){return this.duration().compareTo(t.duration())},n}(k),C=function(){function t(){}var n=t.prototype;return n.isDateBased=function(){w("isDateBased")},n.isTimeBased=function(){w("isTimeBased")},n.baseUnit=function(){w("baseUnit")},n.rangeUnit=function(){w("rangeUnit")},n.range=function(){w("range")},n.rangeRefinedBy=function(t){w("rangeRefinedBy")},n.getFrom=function(t){w("getFrom")},n.adjustInto=function(t,n){w("adjustInto")},n.isSupportedBy=function(t){w("isSupportedBy")},n.displayName=function(){w("displayName")},n.equals=function(t){w("equals")},n.name=function(){w("name")},t}(),E=function(){function t(t,n,i,e){f(!(t>n),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+n+"'",_),f(!(i>e),"Smallest maximum value '"+i+"' must be less than largest maximum value '"+e+"'",_),f(!(n>e),"Minimum value '"+n+"' must be less than maximum value '"+e+"'",_),this._minSmallest=t,this._minLargest=n,this._maxLargest=e,this._maxSmallest=i}var n=t.prototype;return n.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},n.minimum=function(){return this._minSmallest},n.largestMinimum=function(){return this._minLargest},n.maximum=function(){return this._maxLargest},n.smallestMaximum=function(){return this._maxSmallest},n.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},n.checkValidValue=function(t,n){return this.isValidValue(t)?t:f(!1,null!=n?"Invalid value for "+n+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,r)},n.checkValidIntValue=function(t,n){if(!1===this.isValidIntValue(t))throw new r("Invalid int value for "+n+": "+t);return t},n.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},n.isIntValue=function(){return this.minimum()>=y.MIN_SAFE_INTEGER&&this.maximum()<=y.MAX_SAFE_INTEGER},n.equals=function(n){return n===this||n instanceof t&&this._minSmallest===n._minSmallest&&this._minLargest===n._minLargest&&this._maxSmallest===n._maxSmallest&&this._maxLargest===n._maxLargest},n.hashCode=function(){return y.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},n.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return(t+=" - ")+(this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():""))},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):f(!1,"Invalid number of arguments "+arguments.length,_)},t}(),O=function(t){function n(n,i,e,r){var s;return(s=t.call(this)||this)._name=n,s._baseUnit=i,s._rangeUnit=e,s._range=r,s}l(n,t),n.byName=function(t){for(var i in n)if(n[i]&&n[i]instanceof n&&n[i].name()===t)return n[i]};var i=n.prototype;return i.name=function(){return this._name},i.baseUnit=function(){return this._baseUnit},i.rangeUnit=function(){return this._rangeUnit},i.range=function(){return this._range},i.displayName=function(){return this.toString()},i.checkValidValue=function(t){return this.range().checkValidValue(t,this)},i.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},i.isDateBased=function(){return this===n.DAY_OF_WEEK||this===n.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===n.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===n.DAY_OF_MONTH||this===n.DAY_OF_YEAR||this===n.EPOCH_DAY||this===n.ALIGNED_WEEK_OF_MONTH||this===n.ALIGNED_WEEK_OF_YEAR||this===n.MONTH_OF_YEAR||this===n.YEAR_OF_ERA||this===n.YEAR||this===n.ERA},i.isTimeBased=function(){return this===n.NANO_OF_SECOND||this===n.NANO_OF_DAY||this===n.MICRO_OF_SECOND||this===n.MICRO_OF_DAY||this===n.MILLI_OF_SECOND||this===n.MILLI_OF_DAY||this===n.SECOND_OF_MINUTE||this===n.SECOND_OF_DAY||this===n.MINUTE_OF_HOUR||this===n.MINUTE_OF_DAY||this===n.HOUR_OF_AMPM||this===n.CLOCK_HOUR_OF_AMPM||this===n.HOUR_OF_DAY||this===n.CLOCK_HOUR_OF_DAY||this===n.AMPM_OF_DAY},i.rangeRefinedBy=function(t){return t.range(this)},i.getFrom=function(t){return t.getLong(this)},i.toString=function(){return this.name()},i.equals=function(t){return this===t},i.adjustInto=function(t,n){return t.with(this,n)},i.isSupportedBy=function(t){return t.isSupported(this)},n}(C),j=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),T=function(){function t(){}var n=t.prototype;return n.query=function(t){return t===j.zoneId()||t===j.chronology()||t===j.precision()?null:t.queryFrom(this)},n.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},n.range=function(t){if(t instanceof O){if(this.isSupported(t))return t.range();throw new u("Unsupported field: "+t)}return t.rangeRefinedBy(this)},t}(),A=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n.prototype.queryFrom=function(t){w("queryFrom")},n}(b);function z(t,n){var i=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n}(A);return i.prototype.queryFrom=n,new i(t)}var I,D,M=function(t){function n(n,i){var e;return(e=t.call(this)||this)._ordinal=n,e._name=i,e}l(n,t);var i=n.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},n.values=function(){return I.slice()},n.valueOf=function(t){for(var i=0;i7)throw new r("Invalid value for DayOfWeek: "+t);return I[t-1]},n.from=function(t){if(f(null!=t,"temporal",a),t instanceof n)return t;try{return n.of(t.get(O.DAY_OF_WEEK))}catch(n){throw n instanceof r?new r("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),n):n}},i.value=function(){return this._ordinal+1},i.displayName=function(t,n){throw new _("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof O?t===O.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===O.DAY_OF_WEEK)return t.range();if(t instanceof O)throw new u("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===O.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.DAY_OF_WEEK)return this.value();if(t instanceof O)throw new u("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=y.floorMod(t,7);return I[y.floorMod(this._ordinal+(n+7),7)]},i.minus=function(t){return this.plus(-1*y.floorMod(t,7))},i.query=function(t){return t===j.precision()?S.DAYS:t===j.localDate()||t===j.localTime()||t===j.chronology()||t===j.zone()||t===j.zoneId()||t===j.offset()?null:(f(null!=t,"query",a),t.queryFrom(this))},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},n}(T),N=function(t){function n(n,i){var e;return(e=t.call(this)||this)._value=y.safeToInt(n),e._name=i,e}l(n,t);var i=n.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,n){throw new _("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof O?t===O.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===O.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.MONTH_OF_YEAR)return this.value();if(t instanceof O)throw new u("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var i=y.intMod(t,12)+12,e=y.intMod(this.value()+i,12);return e=0===e?12:e,n.of(e)},i.minus=function(t){return this.plus(-1*y.intMod(t,12))},i.length=function(t){switch(this){case n.FEBRUARY:return t?29:28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case n.FEBRUARY:return 28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case n.FEBRUARY:return 29;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var i=t?1:0;switch(this){case n.JANUARY:return 1;case n.FEBRUARY:return 32;case n.MARCH:return 60+i;case n.APRIL:return 91+i;case n.MAY:return 121+i;case n.JUNE:return 152+i;case n.JULY:return 182+i;case n.AUGUST:return 213+i;case n.SEPTEMBER:return 244+i;case n.OCTOBER:return 274+i;case n.NOVEMBER:return 305+i;case n.DECEMBER:default:return 335+i}},i.firstMonthOfQuarter=function(){switch(this){case n.JANUARY:case n.FEBRUARY:case n.MARCH:return n.JANUARY;case n.APRIL:case n.MAY:case n.JUNE:return n.APRIL;case n.JULY:case n.AUGUST:case n.SEPTEMBER:return n.JULY;case n.OCTOBER:case n.NOVEMBER:case n.DECEMBER:default:return n.OCTOBER}},i.query=function(n){return f(null!=n,"query() parameter must not be null",r),n===j.chronology()?nn.INSTANCE:n===j.precision()?S.MONTHS:t.prototype.query.call(this,n)},i.toString=function(){switch(this){case n.JANUARY:return"JANUARY";case n.FEBRUARY:return"FEBRUARY";case n.MARCH:return"MARCH";case n.APRIL:return"APRIL";case n.MAY:return"MAY";case n.JUNE:return"JUNE";case n.JULY:return"JULY";case n.AUGUST:return"AUGUST";case n.SEPTEMBER:return"SEPTEMBER";case n.OCTOBER:return"OCTOBER";case n.NOVEMBER:return"NOVEMBER";case n.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(O.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._value-t._value},i.equals=function(t){return this===t},n.valueOf=function(t){for(var i=0;i12)&&f(!1,"Invalid value for MonthOfYear: "+t,r),D[t-1]},n.from=function(t){if(t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),n)}},n}(T),R=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,P=function(t){function n(i,e,r){var s;s=t.call(this)||this;var u=y.safeToInt(i),o=y.safeToInt(e),_=y.safeToInt(r);return 0===u&&0===o&&0===_?(n.ZERO||(s._years=u,s._months=o,s._days=_,n.ZERO=c(s)),n.ZERO||c(s)):(s._years=u,s._months=o,s._days=_,s)}l(n,t),n.ofYears=function(t){return n.create(t,0,0)},n.ofMonths=function(t){return n.create(0,t,0)},n.ofWeeks=function(t){return n.create(0,0,y.safeMultiply(t,7))},n.ofDays=function(t){return n.create(0,0,t)},n.of=function(t,i,e){return n.create(t,i,e)},n.from=function(t){if(t instanceof n)return t;v(t,"amount");for(var i=0,e=0,s=0,u=t.units(),o=0;on.MAX_SECONDS)throw new r("Zone offset not in valid range: -18:00 to +18:00")},n._validate=function(t,n,i){if(t<-18||t>18)throw new r("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(n<0||i<0)throw new r("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(n>0||i>0)throw new r("Zone offset minutes and seconds must be negative because hours is negative")}else if(n>0&&i<0||n<0&&i>0)throw new r("Zone offset minutes and seconds must have the same sign");if(Math.abs(n)>59)throw new r("Zone offset minutes not in valid range: abs(value) "+Math.abs(n)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new r("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(n)>0||Math.abs(i)>0))throw new r("Zone offset not in valid range: -18:00 to +18:00")},n.of=function(t){v(t,"offsetId");var i,e,s,u=Z[t];if(null!=u)return u;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=n._parseNumber(t,1,!1),e=0,s=0;break;case 5:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=0;break;case 6:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=0;break;case 7:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=n._parseNumber(t,5,!1);break;case 9:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=n._parseNumber(t,7,!0);break;default:throw new r("Invalid ID for ZoneOffset, invalid format: "+t)}var o=t[0];if("+"!==o&&"-"!==o)throw new r("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===o?n.ofHoursMinutesSeconds(-i,-e,-s):n.ofHoursMinutesSeconds(i,e,s)},n._parseNumber=function(t,n,i){if(i&&":"!==t[n-1])throw new r("Invalid ID for ZoneOffset, colon not found when expected: "+t);var e=t[n],s=t[n+1];if(e<"0"||e>"9"||s<"0"||s>"9")throw new r("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(e.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},n.ofHours=function(t){return n.ofHoursMinutesSeconds(t,0,0)},n.ofHoursMinutes=function(t,i){return n.ofHoursMinutesSeconds(t,i,0)},n.ofHoursMinutesSeconds=function(t,i,e){n._validate(t,i,e);var r=t*cn.SECONDS_PER_HOUR+i*cn.SECONDS_PER_MINUTE+e;return n.ofTotalSeconds(r)},n.ofTotalMinutes=function(t){var i=t*cn.SECONDS_PER_MINUTE;return n.ofTotalSeconds(i)},n.ofTotalSeconds=function(t){if(t%(15*cn.SECONDS_PER_MINUTE)==0){var i=t,e=J[i];return null==e&&(e=new n(t),J[i]=e,Z[e.id()]=e),e}return new n(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===O.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof O)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return v(t,"query"),t===j.offset()||t===j.zone()?this:t===j.localDate()||t===j.localTime()||t===j.precision()||t===j.chronology()||t===j.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(O.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return v(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof n&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},n}(G),tt=function(t){function n(){var n;return(n=t.call(this)||this).fieldValues=new F,n.chrono=null,n.zone=null,n.date=null,n.time=null,n.leapSecond=!1,n.excessDays=null,n}l(n,t),n.create=function(t,i){var e=new n;return e._addFieldValue(t,i),e};var i=n.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,n){v(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==n)throw new r("Conflict found: "+t+" "+i+" differs from "+t+" "+n+": "+this);return this._putFieldValue0(t,n)},i._putFieldValue0=function(t,n){return this.fieldValues.put(t,n),this},i.resolve=function(t,n){return null!=n&&this.fieldValues.retainAll(n),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=P.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(nn.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var n in this._addObject(t),this.fieldValues.keySet()){var i=O.byName(n);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var e=void 0;try{e=t.getLong(i)}catch(t){if(t instanceof r)continue;throw t}var s=this.fieldValues.get(i);if(e!==s)throw new r("Conflict found: Field "+i+" "+e+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_DAY)){var n=this.fieldValues.remove(O.CLOCK_HOUR_OF_DAY);t!==U.LENIENT&&(t===U.SMART&&0===n||O.CLOCK_HOUR_OF_DAY.checkValidValue(n)),this._addFieldValue(O.HOUR_OF_DAY,24===n?0:n)}if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_AMPM)){var i=this.fieldValues.remove(O.CLOCK_HOUR_OF_AMPM);t!==U.LENIENT&&(t===U.SMART&&0===i||O.CLOCK_HOUR_OF_AMPM.checkValidValue(i)),this._addFieldValue(O.HOUR_OF_AMPM,12===i?0:i)}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.AMPM_OF_DAY)&&O.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(O.AMPM_OF_DAY)),this.fieldValues.containsKey(O.HOUR_OF_AMPM)&&O.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(O.HOUR_OF_AMPM))),this.fieldValues.containsKey(O.AMPM_OF_DAY)&&this.fieldValues.containsKey(O.HOUR_OF_AMPM)){var e=this.fieldValues.remove(O.AMPM_OF_DAY),r=this.fieldValues.remove(O.HOUR_OF_AMPM);this._addFieldValue(O.HOUR_OF_DAY,12*e+r)}if(this.fieldValues.containsKey(O.NANO_OF_DAY)){var s=this.fieldValues.remove(O.NANO_OF_DAY);t!==U.LENIENT&&O.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(O.SECOND_OF_DAY,y.intDiv(s,1e9)),this._addFieldValue(O.NANO_OF_SECOND,y.intMod(s,1e9))}if(this.fieldValues.containsKey(O.MICRO_OF_DAY)){var u=this.fieldValues.remove(O.MICRO_OF_DAY);t!==U.LENIENT&&O.MICRO_OF_DAY.checkValidValue(u),this._addFieldValue(O.SECOND_OF_DAY,y.intDiv(u,1e6)),this._addFieldValue(O.MICRO_OF_SECOND,y.intMod(u,1e6))}if(this.fieldValues.containsKey(O.MILLI_OF_DAY)){var o=this.fieldValues.remove(O.MILLI_OF_DAY);t!==U.LENIENT&&O.MILLI_OF_DAY.checkValidValue(o),this._addFieldValue(O.SECOND_OF_DAY,y.intDiv(o,1e3)),this._addFieldValue(O.MILLI_OF_SECOND,y.intMod(o,1e3))}if(this.fieldValues.containsKey(O.SECOND_OF_DAY)){var _=this.fieldValues.remove(O.SECOND_OF_DAY);t!==U.LENIENT&&O.SECOND_OF_DAY.checkValidValue(_),this._addFieldValue(O.HOUR_OF_DAY,y.intDiv(_,3600)),this._addFieldValue(O.MINUTE_OF_HOUR,y.intMod(y.intDiv(_,60),60)),this._addFieldValue(O.SECOND_OF_MINUTE,y.intMod(_,60))}if(this.fieldValues.containsKey(O.MINUTE_OF_DAY)){var h=this.fieldValues.remove(O.MINUTE_OF_DAY);t!==U.LENIENT&&O.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(O.HOUR_OF_DAY,y.intDiv(h,60)),this._addFieldValue(O.MINUTE_OF_HOUR,y.intMod(h,60))}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&O.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(O.MILLI_OF_SECOND)),this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&O.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(O.MICRO_OF_SECOND))),this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var a=this.fieldValues.remove(O.MILLI_OF_SECOND),l=this.fieldValues.get(O.MICRO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,1e3*a+y.intMod(l,1e3))}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var c=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,y.intDiv(c,1e3)),this.fieldValues.remove(O.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var f=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MILLI_OF_SECOND,y.intDiv(f,1e6)),this.fieldValues.remove(O.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var v=this.fieldValues.remove(O.MICRO_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e3*v)}else if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)){var d=this.fieldValues.remove(O.MILLI_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e6*d)}},i._resolveTimeInferZeroes=function(t){var n=this.fieldValues.get(O.HOUR_OF_DAY),i=this.fieldValues.get(O.MINUTE_OF_HOUR),e=this.fieldValues.get(O.SECOND_OF_MINUTE),r=this.fieldValues.get(O.NANO_OF_SECOND);if(null!=n&&(null!=i||null==e&&null==r)&&(null==i||null!=e||null==r)){if(t!==U.LENIENT){if(null!=n){t!==U.SMART||24!==n||null!=i&&0!==i||null!=e&&0!==e||null!=r&&0!==r||(n=0,this.excessDays=P.ofDays(1));var s=O.HOUR_OF_DAY.checkValidIntValue(n);if(null!=i){var u=O.MINUTE_OF_HOUR.checkValidIntValue(i);if(null!=e){var o=O.SECOND_OF_MINUTE.checkValidIntValue(e);if(null!=r){var _=O.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(cn.of(s,u,o,_))}else this._addObject(cn.of(s,u,o))}else null==r&&this._addObject(cn.of(s,u))}else null==e&&null==r&&this._addObject(cn.of(s,0))}}else if(null!=n){var h=n;if(null!=i)if(null!=e){null==r&&(r=0);var a=y.safeMultiply(h,36e11);a=y.safeAdd(a,y.safeMultiply(i,6e10)),a=y.safeAdd(a,y.safeMultiply(e,1e9)),a=y.safeAdd(a,r);var l=y.floorDiv(a,864e11),c=y.floorMod(a,864e11);this._addObject(cn.ofNanoOfDay(c)),this.excessDays=P.ofDays(l)}else{var f=y.safeMultiply(h,3600);f=y.safeAdd(f,y.safeMultiply(i,60));var v=y.floorDiv(f,86400),d=y.floorMod(f,86400);this._addObject(cn.ofSecondOfDay(d)),this.excessDays=P.ofDays(v)}else{var w=y.safeToInt(y.floorDiv(h,24));h=y.floorMod(h,24),this._addObject(cn.of(h,0)),this.excessDays=P.ofDays(w)}}this.fieldValues.remove(O.HOUR_OF_DAY),this.fieldValues.remove(O.MINUTE_OF_HOUR),this.fieldValues.remove(O.SECOND_OF_MINUTE),this.fieldValues.remove(O.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof W?this.date=t:t instanceof cn&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(O.OFFSET_SECONDS);if(null!=t){var n=Q.ofTotalSeconds(t),i=this.date.atTime(this.time).atZone(n).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,i)}else if(null!=this.zone){var e=this.date.atTime(this.time).atZone(this.zone).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,e)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){v(t,"field");var n=this.getFieldValue0(t);if(null==n){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new r("Field not found: "+t)}return n},i.query=function(t){return t===j.zoneId()?this.zone:t===j.chronology()?this.chrono:t===j.localDate()?null!=this.date?hn.from(this.date):null:t===j.localTime()?this.time:t===j.zone()||t===j.offset()?t.queryFrom(this):t===j.precision()?null:t.queryFrom(this)},n}(T),nt=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new it(this)]}var n=t.prototype;return n._constructorParam=function(t,n,i){this._locale=t,this._symbols=n,this._overrideChronology=i},n._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},n._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new it(this)]},n.copy=function(){return new t(this)},n.symbols=function(){return this._symbols},n.isStrict=function(){return this._strict},n.setStrict=function(t){this._strict=t},n.locale=function(){return this._locale},n.setLocale=function(t){this._locale=t},n.startOptional=function(){this._parsed.push(this.currentParsed().copy())},n.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},n.isCaseSensitive=function(){return this._caseSensitive},n.setCaseSensitive=function(t){this._caseSensitive=t},n.subSequenceEquals=function(t,n,i,e,r){if(n+r>t.length||e+r>i.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),i=i.toLowerCase());for(var s=0;s0)return null;throw t}},n.temporal=function(){return this._temporal},n.locale=function(){return this._locale},n.setDateTime=function(t){this._temporal=t},n.setLocale=function(t){this._locale=t},t}(),rt={},st=[0,90,181,273,0,91,182,274],ut=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i._isIso=function(){return!0},n._getWeekRangeByLocalDate=function(t){var i=n._getWeekBasedYear(t);return E.of(1,n._getWeekRangeByYear(i))},n._getWeekRangeByYear=function(t){var n=hn.of(t,1,1);return n.dayOfWeek()===M.THURSDAY||n.dayOfWeek()===M.WEDNESDAY&&n.isLeapYear()?53:52},n._getWeek=function(t){var i=t.dayOfWeek().ordinal(),e=t.dayOfYear()-1,r=e+(3-i),s=r-7*y.intDiv(r,7)-3;if(s<-3&&(s+=7),e=363){var e=t.dayOfWeek().ordinal();(i=i-363-(t.isLeapYear()?1:0))-e>=0&&n++}return n},i.displayName=function(){return this.toString()},i.resolve=function(){return null},i.name=function(){return this.toString()},n}(C),ot=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"DayOfQuarter"},i.baseUnit=function(){return S.DAYS},i.rangeUnit=function(){return pt},i.range=function(){return E.of(1,90,92)},i.isSupportedBy=function(t){return t.isSupported(O.DAY_OF_YEAR)&&t.isSupported(O.MONTH_OF_YEAR)&&t.isSupported(O.YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: DayOfQuarter");var n=t.getLong(ft);if(1===n){var i=t.getLong(O.YEAR);return nn.isLeapYear(i)?E.of(1,91):E.of(1,90)}return 2===n?E.of(1,91):3===n||4===n?E.of(1,92):this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: DayOfQuarter");var n=t.get(O.DAY_OF_YEAR),i=t.get(O.MONTH_OF_YEAR),e=t.getLong(O.YEAR);return n-st[y.intDiv(i-1,3)+(nn.isLeapYear(e)?4:0)]},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.DAY_OF_YEAR,t.getLong(O.DAY_OF_YEAR)+(n-i))},i.resolve=function(t,n,i){var e=t.get(O.YEAR),r=t.get(ft);if(null==e||null==r)return null;var s,u=O.YEAR.checkValidIntValue(e),o=t.get(ct);if(i===U.LENIENT){var _=r;s=(s=(s=hn.of(u,1,1)).plusMonths(y.safeMultiply(y.safeSubtract(_,1),3))).plusDays(y.safeSubtract(o,1))}else{var h=ft.range().checkValidIntValue(r,ft);if(i===U.STRICT){var a=92;1===h?a=nn.isLeapYear(u)?91:90:2===h&&(a=91),E.of(1,a).checkValidValue(o,this)}else this.range().checkValidValue(o,this);s=hn.of(u,3*(h-1)+1,1).plusDays(o-1)}return t.remove(this),t.remove(O.YEAR),t.remove(ft),s},n}(ut),_t=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"QuarterOfYear"},i.baseUnit=function(){return pt},i.rangeUnit=function(){return S.YEARS},i.range=function(){return E.of(1,4)},i.isSupportedBy=function(t){return t.isSupported(O.MONTH_OF_YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){return this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: QuarterOfYear");var n=t.getLong(O.MONTH_OF_YEAR);return y.intDiv(n+2,3)},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.MONTH_OF_YEAR,t.getLong(O.MONTH_OF_YEAR)+3*(n-i))},n}(ut),ht=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekOfWeekBasedYear"},i.baseUnit=function(){return S.WEEKS},i.rangeUnit=function(){return wt},i.range=function(){return E.of(1,52,53)},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: WeekOfWeekBasedYear");return ut._getWeekRangeByLocalDate(hn.from(t))},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: WeekOfWeekBasedYear");return ut._getWeek(hn.from(t))},i.adjustInto=function(t,n){return this.range().checkValidValue(n,this),t.plus(y.safeSubtract(n,this.getFrom(t)),S.WEEKS)},i.resolve=function(t,n,i){var e=t.get(dt),r=t.get(O.DAY_OF_WEEK);if(null==e||null==r)return null;var s,u=dt.range().checkValidIntValue(e,dt),o=t.get(vt);if(i===U.LENIENT){var _=r,h=0;_>7?(h=y.intDiv(_-1,7),_=y.intMod(_-1,7)+1):_<1&&(h=y.intDiv(_,7)-1,_=y.intMod(_,7)+7),s=hn.of(u,1,4).plusWeeks(o-1).plusWeeks(h).with(O.DAY_OF_WEEK,_)}else{var a=O.DAY_OF_WEEK.checkValidIntValue(r);if(i===U.STRICT){var l=hn.of(u,1,4);ut._getWeekRangeByLocalDate(l).checkValidValue(o,this)}else this.range().checkValidValue(o,this);s=hn.of(u,1,4).plusWeeks(o-1).with(O.DAY_OF_WEEK,a)}return t.remove(this),t.remove(dt),t.remove(O.DAY_OF_WEEK),s},i.displayName=function(){return"Week"},n}(ut),at=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekBasedYear"},i.baseUnit=function(){return wt},i.rangeUnit=function(){return S.FOREVER},i.range=function(){return O.YEAR.range()},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){return O.YEAR.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: WeekBasedYear");return ut._getWeekBasedYear(hn.from(t))},i.adjustInto=function(t,n){if(!1===this.isSupportedBy(t))throw new u("Unsupported field: WeekBasedYear");var i=this.range().checkValidIntValue(n,dt),e=hn.from(t),r=e.get(O.DAY_OF_WEEK),s=ut._getWeek(e);53===s&&52===ut._getWeekRangeByYear(i)&&(s=52);var o=hn.of(i,1,4),_=r-o.get(O.DAY_OF_WEEK)+7*(s-1);return o=o.plusDays(_),t.with(o)},n}(ut),lt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return!0},i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)},i.addTo=function(t,n){switch(this){case wt:var i=y.safeAdd(t.get(dt),n);return t.with(dt,i);case pt:return t.plus(y.intDiv(n,256),S.YEARS).plus(3*y.intMod(n,256),S.MONTHS);default:throw new h("Unreachable")}},i.between=function(t,n){switch(this){case wt:return y.safeSubtract(n.getLong(dt),t.getLong(dt));case pt:return y.intDiv(t.until(n,S.MONTHS),3);default:throw new h("Unreachable")}},i.toString=function(){return name},n}(k),ct=null,ft=null,vt=null,dt=null,wt=null,pt=null,mt=function(){function t(t,n,i,e){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=n,this._negativeSign=i,this._decimalSeparator=e}var n=t.prototype;return n.positiveSign=function(){return this._positiveSign},n.withPositiveSign=function(n){return n===this._positiveSign?this:new t(this._zeroDigit,n,this._negativeSign,this._decimalSeparator)},n.negativeSign=function(){return this._negativeSign},n.withNegativeSign=function(n){return n===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,n,this._decimalSeparator)},n.zeroDigit=function(){return this._zeroDigit},n.withZeroDigit=function(n){return n===this._zeroDigit?this:new t(n,this._positiveSign,this._negativeSign,this._decimalSeparator)},n.decimalSeparator=function(){return this._decimalSeparator},n.withDecimalSeparator=function(n){return n===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,n)},n.convertToDigit=function(t){var n=t.charCodeAt(0)-this._zeroDigitCharCode;return n>=0&&n<=9?n:-1},n.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var n=this._zeroDigitCharCode-"0".charCodeAt(0),i="",e=0;e1)throw new _('invalid literal, too long: "'+t+'"');this._literal=t}var n=t.prototype;return n.print=function(t,n){return n.append(this._literal),!0},n.parse=function(t,n,i){if(i===n.length)return~i;var e=n.charAt(i);return!1===t.charEquals(this._literal,e)?~i:i+this._literal.length},n.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),$t=function(){function t(t,n){this._printerParsers=t,this._optional=n}var n=t.prototype;return n.withOptional=function(n){return n===this._optional?this:new t(this._printerParsers,n)},n.print=function(t,n){var i=n.length();this._optional&&t.startOptional();try{for(var e=0;e9)throw new _("Minimum width must be from 0 to 9 inclusive but was "+n);if(i<1||i>9)throw new _("Maximum width must be from 1 to 9 inclusive but was "+i);if(i0){this.decimalPoint&&n.append(e.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var o=s;o=e.convertNumberToI18N(o),this.decimalPoint&&n.append(e.decimalSeparator()),n.append(o)}return!0},n.parse=function(t,n,i){var e=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=n.length;if(i===s)return e>0?~i:i;if(this.decimalPoint){if(n[i]!==t.symbols().decimalSeparator())return e>0?~i:i;i++}var u=i+e;if(u>s)return~i;for(var o=Math.min(i+r,s),_=0,h=i;h0&&this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE},n.print=function(t,n){var i=t.getValue(this._field);if(null==i)return!1;var e=this._getValue(t,i),s=t.symbols(),u=""+Math.abs(e);if(u.length>this._maxWidth)throw new r("Field "+this._field+" cannot be printed as the value "+e+" exceeds the maximum print width of "+this._maxWidth);if(u=s.convertNumberToI18N(u),e>=0)switch(this._signStyle){case gt.EXCEEDS_PAD:this._minWidth<15&&e>=xt[this._minWidth]&&n.append(s.positiveSign());break;case gt.ALWAYS:n.append(s.positiveSign())}else switch(this._signStyle){case gt.NORMAL:case gt.EXCEEDS_PAD:case gt.ALWAYS:n.append(s.negativeSign());break;case gt.NOT_NEGATIVE:throw new r("Field "+this._field+" cannot be printed as the value "+e+" cannot be negative according to the SignStyle")}for(var o=0;o=0&&ie)return~i;for(var a=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),l=0,c=i,v=0;v<2;v++){for(var d=Math.min(c+a,e);c15)throw new o("number text exceeds length");l=10*l+p}if(!(this._subsequentWidth>0&&0===v))break;var m=c-i;a=Math.max(_,m-this._subsequentWidth),c=i,l=0}if(s){if(0===l&&t.isStrict())return~(i-1);0!==l&&(l=-l)}else if(this._signStyle===gt.EXCEEDS_PAD&&t.isStrict()){var g=c-i;if(u){if(g<=this._minWidth)return~(i-1)}else if(g>this._minWidth)return~i}return this._setValue(t,l,i,c)},n._getValue=function(t,n){return n},n._setValue=function(t,n,i,e){return t.setParsedField(this._field,n,i,e)},n.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===gt.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),St=function(t){function n(n,i,e,s,u){var o;if(o=t.call(this,n,i,e,gt.NOT_NEGATIVE)||this,i<1||i>10)throw new _("The width must be from 1 to 10 inclusive but was "+i);if(e<1||e>10)throw new _("The maxWidth must be from 1 to 10 inclusive but was "+e);if(ey.MAX_SAFE_INTEGER)throw new r("Unable to add printer-parser as the range exceeds the capacity of an int")}return o._baseValue=s,o._baseDate=u,o}l(n,t);var i=n.prototype;return i._getValue=function(t,n){var i=Math.abs(n),e=this._baseValue;return null!==this._baseDate&&(t.temporal(),e=nn.INSTANCE.date(this._baseDate).get(this._field)),n>=e&&n=0){var s=xt[this._minWidth],u=r-r%s;(n=r>0?u+n:u-n)=3||this.type>=1&&s>0)&&(n.append(this.type%2==0?":":"").appendChar(y.intDiv(s,10)+"0").appendChar(s%10+"0"),_+=s,(this.type>=7||this.type>=5&&u>0)&&(n.append(this.type%2==0?":":"").appendChar(y.intDiv(u,10)+"0").appendChar(u%10+"0"),_+=u)),0===_&&(n.setLength(o),n.append(this.noOffsetText))}return!0},n.parse=function(t,n,i){var e=n.length,r=this.noOffsetText.length;if(0===r){if(i===e)return t.setParsedField(O.OFFSET_SECONDS,0,i,i)}else{if(i===e)return~i;if(t.subSequenceEquals(n,i,this.noOffsetText,0,r))return t.setParsedField(O.OFFSET_SECONDS,0,i,i+r)}var s=n[i];if("+"===s||"-"===s){var u="-"===s?-1:1,o=[0,0,0,0];if(o[0]=i+1,!1===(this._parseNumber(o,1,n,!0)||this._parseNumber(o,2,n,this.type>=3)||this._parseNumber(o,3,n,!1))){var _=y.safeZero(u*(3600*o[1]+60*o[2]+o[3]));return t.setParsedField(O.OFFSET_SECONDS,_,i,o[0])}}return 0===r?t.setParsedField(O.OFFSET_SECONDS,0,i,i+r):~i},n._parseNumber=function(t,n,i,e){if((this.type+3)/21){if(r+1>i.length||":"!==i[r])return e;r++}if(r+2>i.length)return e;var s=i[r++],u=i[r++];if(s<"0"||s>"9"||u<"0"||u>"9")return e;var o=10*(s.charCodeAt(0)-48)+(u.charCodeAt(0)-48);return o<0||o>59?e:(t[n]=o,t[0]=r,!1)},n.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+Ct[this.type]+",'"+t+"')"},t}();Et.INSTANCE_ID=new Et("Z","+HH:MM:ss"),Et.PATTERNS=Ct;var Ot=function(){function t(t,n,i){this._printerParser=t,this._padWidth=n,this._padChar=i}var n=t.prototype;return n.print=function(t,n){var i=n.length();if(!1===this._printerParser.print(t,n))return!1;var e=n.length()-i;if(e>this._padWidth)throw new r("Cannot print as output of "+e+" characters exceeds pad width of "+this._padWidth);for(var s=0;sn.length)),f(i>=0),i===n.length)return~i;var s=i+this._padWidth;if(s>n.length){if(e)return~i;s=n.length}for(var u=i;un.length||i<0)),!1===t.subSequenceEquals(n,i,this._literal,0,this._literal.length)?~i:i+this._literal.length},n.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),Dt=function(){function t(){}return t.getRules=function(t){throw new r("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),Mt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._id=n,e._rules=i,e}l(n,t),n.ofId=function(t){return new n(t,Dt.getRules(t))};var i=n.prototype;return i.id=function(){return this._id},i.rules=function(){return this._rules},n}(G),Nt=function(){function t(t,n){this.query=t,this.description=n}var n=t.prototype;return n.print=function(t,n){var i=t.getValueQuery(this.query);return null!=i&&(n.append(i.id()),!0)},n.parse=function(t,n,i){var e=n.length;if(i>e)return~i;if(i===e)return~i;var r=n.charAt(i);if("+"===r||"-"===r){var s=t.copy(),u=Et.INSTANCE_ID.parse(s,n,i);if(u<0)return u;var o=s.getParsed(O.OFFSET_SECONDS),_=Q.ofTotalSeconds(o);return t.setParsedZone(_),u}if(e>=i+2){var h=n.charAt(i+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return e>=i+3&&t.charEquals(n.charAt(i+2),"C")?this._parsePrefixedOffset(t,n,i,i+3):this._parsePrefixedOffset(t,n,i,i+2);if(t.charEquals(r,"G")&&e>=i+3&&t.charEquals(h,"M")&&t.charEquals(n.charAt(i+2),"T"))return this._parsePrefixedOffset(t,n,i,i+3)}if("SYSTEM"===n.substr(i,6))return t.setParsedZone(G.systemDefault()),i+6;if(t.charEquals(r,"Z"))return t.setParsedZone(Q.UTC),i+1;var a=Dt.getAvailableZoneIds();Lt.size!==a.length&&(Lt=Rt.createTreeMap(a));for(var l=e-i,c=Lt.treeMap,f=null,v=0;null!=c;){var d=n.substr(i,Math.min(c.length,l));null!=(c=c.get(d))&&c.isLeaf&&(f=d,v=c.length)}return null!=f?(t.setParsedZone(Mt.ofId(f)),i+v):~i},n._parsePrefixedOffset=function(t,n,i,e){var r=n.substring(i,e).toUpperCase(),s=t.copy();if(ethis.length){var e=n.substr(0,this.length),r=this._treeMap[e];null==r&&(r=new t(i,!1),this._treeMap[e]=r),r.add(n)}},n.get=function(t){return this._treeMap[t]},t}(),Lt=new Rt([]),Ft=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(n,i){v(n,"parent"),v(i,"optional");var e=new t;return e._parent=n,e._optional=i,e};var n=t.prototype;return n.parseCaseSensitive=function(){return this._appendInternalPrinterParser(jt.SENSITIVE),this},n.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(jt.INSENSITIVE),this},n.parseStrict=function(){return this._appendInternalPrinterParser(jt.STRICT),this},n.parseLenient=function(){return this._appendInternalPrinterParser(jt.LENIENT),this},n.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},n._appendValue1=function(t){return v(t),this._appendValuePrinterParser(new qt(t,1,Ft,gt.NORMAL)),this},n._appendValue2=function(t,n){if(v(t),n<1||n>Ft)throw new _("The width must be from 1 to 15 inclusive but was "+n);var i=new qt(t,n,n,gt.NOT_NEGATIVE);return this._appendValuePrinterParser(i),this},n._appendValue4=function(t,n,i,e){if(v(t),v(e),n===i&&e===gt.NOT_NEGATIVE)return this._appendValue2(t,i);if(n<1||n>Ft)throw new _("The minimum width must be from 1 to 15 inclusive but was "+n);if(i<1||i>Ft)throw new _("The minimum width must be from 1 to 15 inclusive but was "+i);if(i=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof qt){var n=this._active._valueParserIndex,i=this._active._printerParsers[n];t.minWidth()===t.maxWidth()&&t.signStyle()===gt.NOT_NEGATIVE?(i=i.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=n):(i=i.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[n]=i}else this._active._valueParserIndex=this._appendInternal(t);return this},n.appendFraction=function(t,n,i,e){return this._appendInternal(new kt(t,n,i,e)),this},n.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new _("Invalid fractional digits: "+t);return this._appendInternal(new Bt(t)),this},n.appendOffsetId=function(){return this._appendInternal(Et.INSTANCE_ID),this},n.appendOffset=function(t,n){return this._appendInternalPrinterParser(new Et(n,t)),this},n.appendZoneId=function(){return this._appendInternal(new Nt(j.zoneId(),"ZoneId()")),this},n.appendPattern=function(t){return v(t,"pattern"),this._parsePattern(t),this},n.appendZoneText=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendText=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendLocalizedOffset=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendWeekField=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n._parsePattern=function(t){for(var n={G:O.ERA,y:O.YEAR_OF_ERA,u:O.YEAR,Q:rt.QUARTER_OF_YEAR,q:rt.QUARTER_OF_YEAR,M:O.MONTH_OF_YEAR,L:O.MONTH_OF_YEAR,D:O.DAY_OF_YEAR,d:O.DAY_OF_MONTH,F:O.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:O.DAY_OF_WEEK,c:O.DAY_OF_WEEK,e:O.DAY_OF_WEEK,a:O.AMPM_OF_DAY,H:O.HOUR_OF_DAY,k:O.CLOCK_HOUR_OF_DAY,K:O.HOUR_OF_AMPM,h:O.CLOCK_HOUR_OF_AMPM,m:O.MINUTE_OF_HOUR,s:O.SECOND_OF_MINUTE,S:O.NANO_OF_SECOND,A:O.MILLI_OF_DAY,n:O.NANO_OF_SECOND,N:O.NANO_OF_DAY},i=0;i="A"&&e<="Z"||e>="a"&&e<="z"){for(var r=i++;i="A"&&e<="Z"||e>="a"&&e<="z")){for(u=s,r=i++;i4)throw new _("Too many pattern letters: "+e);4===s?this.appendZoneText(yt.FULL):this.appendZoneText(yt.SHORT)}else if("V"===e){if(2!==s)throw new _("Pattern letter count must be 2: "+e);this.appendZoneId()}else if("Z"===e)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset(yt.FULL);else{if(5!==s)throw new _("Too many pattern letters: "+e);this.appendOffset("+HH:MM:ss","Z")}else if("O"===e)if(1===s)this.appendLocalizedOffset(yt.SHORT);else{if(4!==s)throw new _("Pattern letter count must be 1 or 4: "+e);this.appendLocalizedOffset(yt.FULL)}else if("X"===e){if(s>5)throw new _("Too many pattern letters: "+e);this.appendOffset(Et.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===e){if(s>5)throw new _("Too many pattern letters: "+e);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(Et.PATTERNS[s+(1===s?0:1)],h)}else if("W"===e){if(s>1)throw new _("Too many pattern letters: "+e);this.appendWeekField("W",s)}else if("w"===e){if(s>2)throw new _("Too many pattern letters: "+e);this.appendWeekField("w",s)}else{if("Y"!==e)throw new _("Unknown pattern letter: "+e);this.appendWeekField("Y",s)}i--}else if("'"===e){for(var a=i++;i=t.length)throw new _("Pattern ends with an incomplete string literal: "+t);var l=t.substring(a+1,i);0===l.length?this.appendLiteral("'"):this.appendLiteral(l.replace("''","'"))}else if("["===e)this.optionalStart();else if("]"===e){if(null===this._active._parent)throw new _("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===e||"}"===e||"#"===e)throw new _("Pattern includes reserved character: '"+e+"'");this.appendLiteral(e)}}},n._parseField=function(t,n,i){switch(t){case"u":case"y":2===n?this.appendValueReduced(i,2,2,St.BASE_DATE):n<4?this.appendValue(i,n,Ft,gt.NORMAL):this.appendValue(i,n,Ft,gt.EXCEEDS_PAD);break;case"M":case"Q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,yt.SHORT);break;case 4:this.appendText(i,yt.FULL);break;case 5:this.appendText(i,yt.NARROW);break;default:throw new _("Too many pattern letters: "+t)}break;case"L":case"q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,yt.SHORT_STANDALONE);break;case 4:this.appendText(i,yt.FULL_STANDALONE);break;case 5:this.appendText(i,yt.NARROW_STANDALONE);break;default:throw new _("Too many pattern letters: "+t)}break;case"e":switch(n){case 1:case 2:this.appendWeekField("e",n);break;case 3:this.appendText(i,yt.SHORT);break;case 4:this.appendText(i,yt.FULL);break;case 5:this.appendText(i,yt.NARROW);break;default:throw new _("Too many pattern letters: "+t)}break;case"c":switch(n){case 1:this.appendWeekField("c",n);break;case 2:throw new _("Invalid number of pattern letters: "+t);case 3:this.appendText(i,yt.SHORT_STANDALONE);break;case 4:this.appendText(i,yt.FULL_STANDALONE);break;case 5:this.appendText(i,yt.NARROW_STANDALONE);break;default:throw new _("Too many pattern letters: "+t)}break;case"a":if(1!==n)throw new _("Too many pattern letters: "+t);this.appendText(i,yt.SHORT);break;case"E":case"G":switch(n){case 1:case 2:case 3:this.appendText(i,yt.SHORT);break;case 4:this.appendText(i,yt.FULL);break;case 5:this.appendText(i,yt.NARROW);break;default:throw new _("Too many pattern letters: "+t)}break;case"S":this.appendFraction(O.NANO_OF_SECOND,n,n,!1);break;case"F":if(1!==n)throw new _("Too many pattern letters: "+t);this.appendValue(i);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===n)this.appendValue(i);else{if(2!==n)throw new _("Too many pattern letters: "+t);this.appendValue(i,n)}break;case"D":if(1===n)this.appendValue(i);else{if(!(n<=3))throw new _("Too many pattern letters: "+t);this.appendValue(i,n)}break;default:1===n?this.appendValue(i):this.appendValue(i,n)}},n.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},n._padNext1=function(t){return this._padNext2(t," ")},n._padNext2=function(t,n){if(t<1)throw new _("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=n,this._active._valueParserIndex=-1,this},n.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},n.optionalEnd=function(){if(null==this._active._parent)throw new h("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new $t(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},n._appendInternal=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.appendLiteral=function(t){return f(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new bt(t.charAt(0))):this._appendInternalPrinterParser(new It(t))),this},n._appendInternalPrinterParser=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.append=function(t){return v(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},n.toFormatter=function(t){for(void 0===t&&(t=U.SMART);null!=this._active._parent;)this.optionalEnd();var n=new $t(this._printerParsers,!1);return new Yt(n,null,mt.STANDARD,t,null,null,null)},t}(),Ht=31556952e4,Vt=62167219200,Bt=function(){function t(t){this.fractionalDigits=t}var n=t.prototype;return n.print=function(t,n){var i=t.getValue(O.INSTANT_SECONDS),e=0;if(t.temporal().isSupported(O.NANO_OF_SECOND)&&(e=t.temporal().getLong(O.NANO_OF_SECOND)),null==i)return!1;var r=i,s=O.NANO_OF_SECOND.checkValidIntValue(e);if(r>=-62167219200){var u=r-Ht+Vt,o=y.floorDiv(u,Ht)+1,_=y.floorMod(u,Ht),h=ln.ofEpochSecond(_-Vt,0,Q.UTC);o>0&&n.append("+").append(o),n.append(h),0===h.second()&&n.append(":00")}else{var a=r+Vt,l=y.intDiv(a,Ht),c=y.intMod(a,Ht),f=ln.ofEpochSecond(c-Vt,0,Q.UTC),v=n.length();n.append(f),0===f.second()&&n.append(":00"),l<0&&(-1e4===f.year()?n.replace(v,v+2,""+(l-1)):0===c?n.insert(v,l):n.insert(v+1,Math.abs(l)))}if(-2===this.fractionalDigits)0!==s&&(n.append("."),0===y.intMod(s,1e6)?n.append((""+(y.intDiv(s,1e6)+1e3)).substring(1)):0===y.intMod(s,1e3)?n.append((""+(y.intDiv(s,1e3)+1e6)).substring(1)):n.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){n.append(".");for(var d=1e8,w=0;-1===this.fractionalDigits&&s>0||w64?t.substring(0,64)+"...":t,new s("Text '"+i+"' could not be parsed: "+n.message,t,0,n)},n._parseToBuilder=function(t,n){var i=null!=n?n:new L(0),e=this._parseUnresolved0(t,i);if(null==e||i.getErrorIndex()>=0||null==n&&i.getIndex()64?t.substr(0,64).toString()+"...":t,i.getErrorIndex()>=0?new s("Text '"+r+"' could not be parsed at index "+i.getErrorIndex(),t,i.getErrorIndex()):new s("Text '"+r+"' could not be parsed, unparsed text found at index "+i.getIndex(),t,i.getIndex())}return e.toBuilder()},n.parseUnresolved=function(t,n){return this._parseUnresolved0(t,n)},n._parseUnresolved0=function(t,n){f(null!=t,"text",a),f(null!=n,"position",a);var i=new nt(this),e=n.getIndex();return(e=this._printerParser.parse(i,t,e))<0?(n.setErrorIndex(~e),null):(n.setIndex(e),i.toParsed())},n._toPrinterParser=function(t){return this._printerParser.withOptional(t)},n.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}(),Gt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._month=y.safeToInt(n),e._day=y.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return this.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),this.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock");var i=hn.now(t);return n.of(i.month(),i.dayOfMonth())},n.of=function(t,i){return 2===arguments.length&&t instanceof N?n.ofMonthNumber(t,i):n.ofNumberNumber(t,i)},n.ofMonthNumber=function(t,i){if(v(t,"month"),O.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new r("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new n(t.value(),i)},n.ofNumberNumber=function(t,i){return v(t,"month"),v(i,"dayOfMonth"),n.of(N.of(t),i)},n.from=function(t){if(v(t,"temporal"),d(t,T,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR),t.get(O.DAY_OF_MONTH))}catch(n){throw new r("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,Tt)},n.parseStringFormatter=function(t,i){return v(t,"text"),v(i,"formatter"),d(i,Yt,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof O?t===O.MONTH_OF_YEAR||t===O.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.MONTH_OF_YEAR?n.range():n===O.DAY_OF_MONTH?E.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.DAY_OF_MONTH:return this._day;case O.MONTH_OF_YEAR:return this._month}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return 0==(29===this._day&&2===this._month&&!1===Xt.isLeap(t))},i.withMonth=function(t){return this.with(N.of(t))},i.with=function(t){if(v(t,"month"),t.value()===this._month)return this;var i=Math.min(this._day,t.maxLength());return new n(t.value(),i)},i.withDayOfMonth=function(t){return t===this._day?this:n.of(this._month,t)},i.query=function(n){return v(n,"query"),d(n,A,"query"),n===j.chronology()?nn.INSTANCE:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),(t=t.with(O.MONTH_OF_YEAR,this._month)).with(O.DAY_OF_MONTH,Math.min(t.range(O.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return hn.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._month-t.monthValue();return 0===i&&(i=this._day-t.dayOfMonth()),i},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)>0},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.monthValue()===i.monthValue()&&this.dayOfMonth()===i.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),d(t,Yt,"formatter"),t.format(this)},n}(T),Kt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._year=y.safeToInt(n),e._month=y.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return n.nowClock(dn.system(t))},n.nowClock=function(t){var i=hn.now(t);return n.of(i.year(),i.month())},n.of=function(t,i){return 2===arguments.length&&i instanceof N?n.ofNumberMonth(t,i):n.ofNumberNumber(t,i)},n.ofNumberMonth=function(t,i){return v(i,"month"),d(i,N,"month"),n.ofNumberNumber(t,i.value())},n.ofNumberNumber=function(t,i){return v(t,"year"),v(i,"month"),O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(i),new n(t,i)},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR),t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,At)},n.parseStringFormatter=function(t,i){return v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.MONTH_OF_YEAR||t===O.PROLEPTIC_MONTH||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof S?t===S.MONTHS||t===S.YEARS||t===S.DECADES||t===S.CENTURIES||t===S.MILLENNIA||t===S.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.YEAR_OF_ERA?this.year()<=0?E.of(1,Xt.MAX_VALUE+1):E.of(1,Xt.MAX_VALUE):t.prototype.range.call(this,n)},i.get=function(t){return v(t,"field"),d(t,C,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t){case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._getProlepticMonth();case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return y.safeAdd(y.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,n){return 1===arguments.length?this.withAdjuster(t):this.withFieldValue(t,n)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,n){if(v(t,"field"),d(t,C,"field"),t instanceof O){var i=t;switch(i.checkValidValue(n),i){case O.MONTH_OF_YEAR:return this.withMonth(n);case O.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year<1?1-n:n);case O.YEAR:return this.withYear(n);case O.ERA:return this.getLong(O.ERA)===n?this:this.withYear(1-this._year)}throw new u("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return O.YEAR.checkValidValue(t),new n(t,this._month)},i.withMonth=function(t){return O.MONTH_OF_YEAR.checkValidValue(t),new n(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),d(t,$,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),d(n,k,"unit"),n instanceof S){switch(n){case S.MONTHS:return this.plusMonths(t);case S.YEARS:return this.plusYears(t);case S.DECADES:return this.plusYears(y.safeMultiply(t,10));case S.CENTURIES:return this.plusYears(y.safeMultiply(t,100));case S.MILLENNIA:return this.plusYears(y.safeMultiply(t,1e3));case S.ERAS:return this.with(O.ERA,y.safeAdd(this.getLong(O.ERA),t))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=O.YEAR.checkValidIntValue(this._year+t);return this.withYear(n)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t;return new n(O.YEAR.checkValidIntValue(y.floorDiv(i,12)),y.floorMod(i,12)+1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return t===y.MIN_SAFE_INTEGER?this.plusAmountUnit(y.MAX_SAFE_INTEGER,n).plusAmountUnit(1,n):this.plusAmountUnit(-t,n)},i.minusYears=function(t){return t===y.MIN_SAFE_INTEGER?this.plusYears(y.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===y.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(n){return v(n,"query"),d(n,A,"query"),n===j.chronology()?nn.INSTANCE:n===j.precision()?S.MONTHS:n===j.localDate()||n===j.localTime()||n===j.zone()||n===j.zoneId()||n===j.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),d(t,V,"temporal"),t.with(O.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit"),d(t,V,"endExclusive"),d(i,k,"unit");var e=n.from(t);if(i instanceof S){var r=e._getProlepticMonth()-this._getProlepticMonth();switch(i){case S.MONTHS:return r;case S.YEARS:return r/12;case S.DECADES:return r/120;case S.CENTURIES:return r/1200;case S.MILLENNIA:return r/12e3;case S.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i.atDay=function(t){return hn.of(this._year,this._month,t)},i.atEndOfMonth=function(){return hn.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._year-t.year();return 0===i&&(i=this._month-t.monthValue()),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.year()===i.year()&&this.monthValue()===i.monthValue()}return!1},i.toString=function(){return At.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V),Xt=function(t){function n(n){var i;return(i=t.call(this)||this)._year=y.safeToInt(n),i}l(n,t);var i=n.prototype;return i.value=function(){return this._year},n.now=function(t){return void 0===t&&(t=void 0),void 0===t?n.now0():t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),d(t,G,"zone"),n.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock"),d(t,dn,"clock");var i=hn.now(t);return n.of(i.year())},n.of=function(t){return v(t,"isoYear"),O.YEAR.checkValidValue(t),new n(t)},n.from=function(t){if(v(t,"temporal"),d(t,T,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR))}catch(n){throw new r("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return arguments.length<=1?n.parseText(t):n.parseTextFormatter(t,i)},n.parseText=function(t){return v(t,"text"),n.parse(t,zt)},n.parseTextFormatter=function(t,i){return void 0===i&&(i=zt),v(t,"text"),v(i,"formatter"),d(i,Yt,"formatter"),i.parse(t,n.FROM)},n.isLeap=function(t){return 0===y.intMod(t,4)&&(0!==y.intMod(t,100)||0===y.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof S?t===S.YEARS||t===S.DECADES||t===S.CENTURIES||t===S.MILLENNIA||t===S.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){if(this.isSupported(n))return n.range();if(n instanceof O)throw new u("Unsupported field: "+n);return t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return n.isLeap(this._year)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.YEAR_OF_ERA:return n.of(this._year<1?1-i:i);case O.YEAR:return n.of(i);case O.ERA:return this.getLong(O.ERA)===i?this:n.of(1-this._year)}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.plusAmount=function(t){return v(t,"amount"),d(t,$,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k,"unit"),n instanceof S){switch(n){case S.YEARS:return this.plusYears(t);case S.DECADES:return this.plusYears(y.safeMultiply(t,10));case S.CENTURIES:return this.plusYears(y.safeMultiply(t,100));case S.MILLENNIA:return this.plusYears(y.safeMultiply(t,1e3));case S.ERAS:return this.with(O.ERA,y.safeAdd(this.getLong(O.ERA),t))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){return 0===t?this:n.of(O.YEAR.checkValidIntValue(y.safeAdd(this._year,t)))},i.minusAmount=function(t){return v(t,"amount"),d(t,$,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),d(n,k,"unit"),t===y.MIN_SAFE_INTEGER?this.plus(y.MAX_SAFE_INTEGER,n).plus(1,n):this.plus(-t,n)},i.minusYears=function(t){return t===y.MIN_SAFE_INTEGER?this.plusYears(y.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return hn.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof N?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return v(t,"month"),d(t,N,"month"),Kt.of(this._year,t)},i.atMonthNumber=function(t){return v(t,"month"),Kt.of(this._year,t)},i.atMonthDay=function(t){return v(t,"monthDay"),d(t,Gt,"monthDay"),t.atYear(this._year)},i.query=function(n){return v(n,"query()"),d(n,A,"query()"),n===j.chronology()?nn.INSTANCE:n===j.precision()?S.YEARS:n===j.localDate()||n===j.localTime()||n===j.zone()||n===j.zoneId()||n===j.offset()?null:t.prototype.query.call(this,n)},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._year-t._year},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this._year>t._year},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this._year=0){var n=t.with(O.DAY_OF_MONTH,1),i=n.get(O.DAY_OF_WEEK),e=y.intMod(this._dowValue-i+7,7);return e+=7*(this._ordinal-1),n.plus(e,S.DAYS)}var r=t.with(O.DAY_OF_MONTH,t.range(O.DAY_OF_MONTH).maximum()),s=r.get(O.DAY_OF_WEEK),u=this._dowValue-s;return u=0===u?0:u>0?u-7:u,u-=7*(-this._ordinal-1),r.plus(u,S.DAYS)},n}(H),tn=function(t){function n(n,i){var e;return e=t.call(this)||this,v(i,"dayOfWeek"),e._relative=n,e._dowValue=i.value(),e}return l(n,t),n.prototype.adjustInto=function(t){var n=t.get(O.DAY_OF_WEEK);if(this._relative<2&&n===this._dowValue)return t;if(0==(1&this._relative)){var i=n-this._dowValue;return t.plus(i>=0?7-i:-i,S.DAYS)}var e=this._dowValue-n;return t.minus(e>=0?7-e:-e,S.DAYS)},n}(H),nn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t),n.isLeapYear=function(t){return 0==(3&t)&&(t%100!=0||t%400==0)};var i=n.prototype;return i._updateResolveMap=function(t,n,i){v(t,"fieldValues"),v(n,"field");var e=t.get(n);if(null!=e&&e!==i)throw new r("Invalid state, field: "+n+" "+e+" conflicts with "+n+" "+i);t.put(n,i)},i.resolveDate=function(t,n){if(t.containsKey(O.EPOCH_DAY))return hn.ofEpochDay(t.remove(O.EPOCH_DAY));var i=t.remove(O.PROLEPTIC_MONTH);null!=i&&(n!==U.LENIENT&&O.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,O.MONTH_OF_YEAR,y.floorMod(i,12)+1),this._updateResolveMap(t,O.YEAR,y.floorDiv(i,12)));var e=t.remove(O.YEAR_OF_ERA);if(null!=e){n!==U.LENIENT&&O.YEAR_OF_ERA.checkValidValue(e);var s=t.remove(O.ERA);if(null==s){var u=t.get(O.YEAR);n===U.STRICT?null!=u?this._updateResolveMap(t,O.YEAR,u>0?e:y.safeSubtract(1,e)):t.put(O.YEAR_OF_ERA,e):this._updateResolveMap(t,O.YEAR,null==u||u>0?e:y.safeSubtract(1,e))}else if(1===s)this._updateResolveMap(t,O.YEAR,e);else{if(0!==s)throw new r("Invalid value for era: "+s);this._updateResolveMap(t,O.YEAR,y.safeSubtract(1,e))}}else t.containsKey(O.ERA)&&O.ERA.checkValidValue(t.get(O.ERA));if(t.containsKey(O.YEAR)){if(t.containsKey(O.MONTH_OF_YEAR)&&t.containsKey(O.DAY_OF_MONTH)){var o=O.YEAR.checkValidIntValue(t.remove(O.YEAR)),_=t.remove(O.MONTH_OF_YEAR),h=t.remove(O.DAY_OF_MONTH);if(n===U.LENIENT){var a=_-1,l=h-1;return hn.of(o,1,1).plusMonths(a).plusDays(l)}return n===U.SMART?(O.DAY_OF_MONTH.checkValidValue(h),4===_||6===_||9===_||11===_?h=Math.min(h,30):2===_&&(h=Math.min(h,N.FEBRUARY.length(Xt.isLeap(o)))),hn.of(o,_,h)):hn.of(o,_,h)}if(t.containsKey(O.DAY_OF_YEAR)){var c=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var f=y.safeSubtract(t.remove(O.DAY_OF_YEAR),1);return hn.ofYearDay(c,1).plusDays(f)}var v=O.DAY_OF_YEAR.checkValidIntValue(t.remove(O.DAY_OF_YEAR));return hn.ofYearDay(c,v)}if(t.containsKey(O.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var d=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var w=y.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),p=y.safeSubtract(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return hn.of(d,1,1).plusWeeks(w).plusDays(p)}var m=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),g=O.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)),b=hn.of(d,1,1).plusDays(7*(m-1)+(g-1));if(n===U.STRICT&&b.get(O.YEAR)!==d)throw new r("Strict mode rejected date parsed to a different year");return b}if(t.containsKey(O.DAY_OF_WEEK)){var $=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var k=y.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),x=y.safeSubtract(t.remove(O.DAY_OF_WEEK),1);return hn.of($,1,1).plusWeeks(k).plusDays(x)}var q=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),S=O.DAY_OF_WEEK.checkValidIntValue(t.remove(O.DAY_OF_WEEK)),C=hn.of($,1,1).plusWeeks(q-1).with(Jt.nextOrSame(M.of(S)));if(n===U.STRICT&&C.get(O.YEAR)!==$)throw new r("Strict mode rejected date parsed to a different month");return C}}}return null},i.date=function(t){return hn.from(t)},n}(b),en=function(t){function n(n,i){var e;return e=t.call(this)||this,v(n,"time"),d(n,cn,"time"),v(i,"offset"),d(i,Q,"offset"),e._time=n,e._offset=i,e}l(n,t),n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof un)return t.toOffsetTime();try{return new n(cn.from(t),Q.from(t))}catch(n){throw new r("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.now=function(t){return 0===arguments.length?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){v(t,"clock");var i=t.instant();return n.ofInstant(i,t.zone().rules().offset(i))},n.of=function(){return arguments.length<=2?n.ofTimeAndOffset.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s){return new n(cn.of(t,i,e,r),s)},n.ofTimeAndOffset=function(t,i){return new n(t,i)},n.ofInstant=function(t,i){v(t,"instant"),d(t,vn,"instant"),v(i,"zone"),d(i,G,"zone");var e=i.rules().offset(t),r=t.epochSecond()%cn.SECONDS_PER_DAY;return(r=(r+e.totalSeconds())%cn.SECONDS_PER_DAY)<0&&(r+=cn.SECONDS_PER_DAY),new n(cn.ofSecondOfDay(r,t.nano()),e)},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_OFFSET_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.adjustInto=function(t){return t.with(O.NANO_OF_DAY,this._time.toNanoOfDay()).with(O.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return un.of(t,this._time,this._offset)},i.format=function(t){return v(t,"formatter"),t.format(this,n.FROM)},i.get=function(n){return t.prototype.get.call(this,n)},i.getLong=function(t){return t instanceof O?t===O.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return v(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return v(t,"other"),this._toEpochNano()i?1:0),e},i.isAfter=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return n>i||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ni||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ns.firstDayOfYear(e)+s.length(e)-1&&(s=s.plus(1));var u=i-s.firstDayOfYear(e)+1;return new n(t,s.value(),u)},n.ofEpochDay=function(t){var i,e,r,s,u;void 0===t&&(t=0),u=t+_n,i=0,(u-=60)<0&&(i=400*(e=y.intDiv(u+1,on)-1),u+=-e*on),(r=u-(365*(s=y.intDiv(400*u+591,on))+y.intDiv(s,4)-y.intDiv(s,100)+y.intDiv(s,400)))<0&&(r=u-(365*--s+y.intDiv(s,4)-y.intDiv(s,100)+y.intDiv(s,400))),s+=i;var o=r,_=y.intDiv(5*o+2,153),h=(_+2)%12+1,a=o-y.intDiv(306*_+5,10)+1;return new n(s+=y.intDiv(_,10),h,a)},n.from=function(t){v(t,"temporal");var n=t.query(j.localDate());if(null==n)throw new r("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_LOCAL_DATE),f(null!=i,"formatter",a),i.parse(t,n.FROM)},n._resolvePreviousValid=function(t,i,e){switch(i){case 2:e=Math.min(e,nn.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:e=Math.min(e,30)}return n.of(t,i,e)},n._validate=function(t,n,i){var e;if(O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(n),O.DAY_OF_MONTH.checkValidValue(i),i>28){switch(e=31,n){case 2:e=nn.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:e=30}i>e&&f(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+n+"' '"+i+"'",r)}};var i=n.prototype;return i.isSupported=function(n){return t.prototype.isSupported.call(this,n)},i.range=function(t){if(t instanceof O){if(t.isDateBased()){switch(t){case O.DAY_OF_MONTH:return E.of(1,this.lengthOfMonth());case O.DAY_OF_YEAR:return E.of(1,this.lengthOfYear());case O.ALIGNED_WEEK_OF_MONTH:return E.of(1,this.month()===N.FEBRUARY&&!1===this.isLeapYear()?4:5);case O.YEAR_OF_ERA:return this._year<=0?E.of(1,Xt.MAX_VALUE+1):E.of(1,Xt.MAX_VALUE)}return t.range()}throw new u("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return f(null!=t,"",a),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.DAY_OF_WEEK:return this.dayOfWeek().value();case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return y.intMod(this._day-1,7)+1;case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return y.intMod(this.dayOfYear()-1,7)+1;case O.DAY_OF_MONTH:return this._day;case O.DAY_OF_YEAR:return this.dayOfYear();case O.EPOCH_DAY:return this.toEpochDay();case O.ALIGNED_WEEK_OF_MONTH:return y.intDiv(this._day-1,7)+1;case O.ALIGNED_WEEK_OF_YEAR:return y.intDiv(this.dayOfYear()-1,7)+1;case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._prolepticMonth();case O.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case O.YEAR:return this._year;case O.ERA:return this._year>=1?1:0}throw new u("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return nn.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=y.floorMod(this.toEpochDay()+3,7);return M.of(t+1)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",_),t.adjustInto(this))},i.withFieldValue=function(t,i){if(f(null!=t,"field",a),t instanceof O){var e=t;switch(e.checkValidValue(i),e){case O.DAY_OF_WEEK:return this.plusDays(i-this.dayOfWeek().value());case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_MONTH));case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_YEAR));case O.DAY_OF_MONTH:return this.withDayOfMonth(i);case O.DAY_OF_YEAR:return this.withDayOfYear(i);case O.EPOCH_DAY:return n.ofEpochDay(i);case O.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_MONTH));case O.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_YEAR));case O.MONTH_OF_YEAR:return this.withMonth(i);case O.PROLEPTIC_MONTH:return this.plusMonths(i-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year>=1?i:1-i);case O.YEAR:return this.withYear(i);case O.ERA:return this.getLong(O.ERA)===i?this:this.withYear(1-this._year)}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withYear=function(t){return this._year===t?this:(O.YEAR.checkValidValue(t),n._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var i=t instanceof N?t.value():t;return this._month===i?this:(O.MONTH_OF_YEAR.checkValidValue(i),n._resolvePreviousValid(this._year,i,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:n.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:n.ofYearDay(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n instanceof S){switch(n){case S.DAYS:return this.plusDays(t);case S.WEEKS:return this.plusWeeks(t);case S.MONTHS:return this.plusMonths(t);case S.YEARS:return this.plusYears(t);case S.DECADES:return this.plusYears(y.safeMultiply(t,10));case S.CENTURIES:return this.plusYears(y.safeMultiply(t,100));case S.MILLENNIA:return this.plusYears(y.safeMultiply(t,1e3));case S.ERAS:return this.with(O.ERA,y.safeAdd(this.getLong(O.ERA),t))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var i=O.YEAR.checkValidIntValue(this._year+t);return n._resolvePreviousValid(i,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t,e=O.YEAR.checkValidIntValue(y.floorDiv(i,12)),r=y.floorMod(i,12)+1;return n._resolvePreviousValid(e,r,this._day)},i.plusWeeks=function(t){return this.plusDays(y.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var i=y.safeAdd(this.toEpochDay(),t);return n.ofEpochDay(i)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(n){return v(n,"query"),n===j.localDate()?this:t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,n){return arguments.length<2?this.until1(t):this.until2(t,n)},i.until2=function(t,i){var e=n.from(t);if(i instanceof S){switch(i){case S.DAYS:return this.daysUntil(e);case S.WEEKS:return y.intDiv(this.daysUntil(e),7);case S.MONTHS:return this._monthsUntil(e);case S.YEARS:return y.intDiv(this._monthsUntil(e),12);case S.DECADES:return y.intDiv(this._monthsUntil(e),120);case S.CENTURIES:return y.intDiv(this._monthsUntil(e),1200);case S.MILLENNIA:return y.intDiv(this._monthsUntil(e),12e3);case S.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var n=32*this._prolepticMonth()+this.dayOfMonth(),i=32*t._prolepticMonth()+t.dayOfMonth();return y.intDiv(i-n,32)},i.until1=function(t){var i=n.from(t),e=i._prolepticMonth()-this._prolepticMonth(),r=i._day-this._day;if(e>0&&r<0){e--;var s=this.plusMonths(e);r=i.toEpochDay()-s.toEpochDay()}else e<0&&r>0&&(e++,r-=i.lengthOfMonth());var u=y.intDiv(e,12),o=y.intMod(e,12);return P.of(u,o,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(v(t,"time"),t instanceof cn)return ln.of(this,t);if(t instanceof en)return this._atTimeOffsetTime(t);throw new _("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,n,i,e){return void 0===i&&(i=0),void 0===e&&(e=0),this.atTime1(cn.of(t,n,i,e))},i._atTimeOffsetTime=function(t){return un.of(ln.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this.atStartOfDayWithZone(t):ln.of(this,cn.MIDNIGHT)},i.atStartOfDayWithZone=function(t){v(t,"zone");var n=this.atTime(cn.MIDNIGHT);if(t instanceof Q==0){var i=t.rules().transition(n);null!=i&&i.isGap()&&(n=i.dateTimeAfter())}return sn.of(n,t)},i.toEpochDay=function(){var t=this._year,n=this._month,i=0;return i+=365*t,t>=0?i+=y.intDiv(t+3,4)-y.intDiv(t+99,100)+y.intDiv(t+399,400):i-=y.intDiv(t,-4)-y.intDiv(t,-100)+y.intDiv(t,-400),i+=y.intDiv(367*n-362,12),i+=this.dayOfMonth()-1,n>2&&(i--,nn.isLeapYear(t)||i--),i-_n},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._year-t._year;return 0===n&&0==(n=this._month-t._month)&&(n=this._day-t._day),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,n=this._month,i=this._day;return y.hash(4294965248&t^(t<<11)+(n<<6)+i)},i.toString=function(){var t=this._year,n=this._month,i=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(n<10?"-0"+n:"-"+n)+(i<10?"-0"+i:"-"+i)},i.toJSON=function(){return this.toString()},i.format=function(n){return v(n,"formatter"),d(n,Yt,"formatter"),t.prototype.format.call(this,n)},n}(W),an=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.chronology=function(){return this.toLocalDate().chronology()},i.query=function(n){return n===j.chronology()?this.chronology():n===j.precision()?S.NANOS:n===j.localDate()?hn.ofEpochDay(this.toLocalDate().toEpochDay()):n===j.localTime()?this.toLocalTime():n===j.zone()||n===j.zoneId()||n===j.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return t.with(O.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(O.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},i.toInstant=function(t){return d(t,Q,"zoneId"),vn.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},i.toEpochSecond=function(t){v(t,"offset");var n=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return n-=t.totalSeconds(),y.safeToInt(n)},n}(B),ln=function(t){function n(n,i){var e;return e=t.call(this)||this,d(n,hn,"date"),d(i,cn,"time"),e._date=n,e._time=i,e}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n._ofEpochMillis=function(t,i){var e=y.floorDiv(t,1e3)+i.totalSeconds(),r=y.floorDiv(e,cn.SECONDS_PER_DAY),s=y.floorMod(e,cn.SECONDS_PER_DAY),u=1e6*y.floorMod(t,1e3);return new n(hn.ofEpochDay(r),cn.ofSecondOfDay(s,u))},n.of=function(){return arguments.length<=2?n.ofDateAndTime.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s,u,o){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===u&&(u=0),void 0===o&&(o=0),new n(hn.of(t,i,e),cn.of(r,s,u,o))},n.ofDateAndTime=function(t,i){return v(t,"date"),v(i,"time"),new n(t,i)},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault()),v(t,"instant"),d(t,vn,"instant"),v(i,"zone");var e=i.rules().offset(t);return n.ofEpochSecond(t.epochSecond(),t.nano(),e)},n.ofEpochSecond=function(t,i,e){void 0===t&&(t=0),void 0===i&&(i=0),2===arguments.length&&i instanceof Q&&(e=i,i=0),v(e,"offset");var r=t+e.totalSeconds(),s=y.floorDiv(r,cn.SECONDS_PER_DAY),u=y.floorMod(r,cn.SECONDS_PER_DAY);return new n(hn.ofEpochDay(s),cn.ofSecondOfDay(u,i))},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof sn)return t.toLocalDateTime();try{return new n(hn.from(t),cn.from(t))}catch(n){throw new r("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_LOCAL_DATE_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i._withDateTime=function(t,i){return this._date.equals(t)&&this._time.equals(i)?this:new n(t,i)},i.isSupported=function(t){return t instanceof O||t instanceof S?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof O?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(n){return n instanceof O?n.isTimeBased()?this._time.get(n):this._date.get(n):t.prototype.get.call(this,n)},i.getLong=function(t){return v(t,"field"),t instanceof O?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof hn?this._withDateTime(t,this._time):t instanceof cn?this._withDateTime(this._date,t):t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",_),t.adjustInto(this))},i.withFieldValue=function(t,n){return v(t,"field"),t instanceof O?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,n)):this._withDateTime(this._date.with(t,n),this._time):t.adjustInto(this,n)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var n=this._time.withHour(t);return this._withDateTime(this._date,n)},i.withMinute=function(t){var n=this._time.withMinute(t);return this._withDateTime(this._date,n)},i.withSecond=function(t){var n=this._time.withSecond(t);return this._withDateTime(this._date,n)},i.withNano=function(t){var n=this._time.withNano(t);return this._withDateTime(this._date,n)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),n instanceof S){switch(n){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this.plusDays(y.intDiv(t,cn.MICROS_PER_DAY)).plusNanos(1e3*y.intMod(t,cn.MICROS_PER_DAY));case S.MILLIS:return this.plusDays(y.intDiv(t,cn.MILLIS_PER_DAY)).plusNanos(1e6*y.intMod(t,cn.MILLIS_PER_DAY));case S.SECONDS:return this.plusSeconds(t);case S.MINUTES:return this.plusMinutes(t);case S.HOURS:return this.plusHours(t);case S.HALF_DAYS:return this.plusDays(y.intDiv(t,256)).plusHours(12*y.intMod(t,256))}return this._withDateTime(this._date.plus(t,n),this._time)}return n.addTo(this,t)},i.plusYears=function(t){var n=this._date.plusYears(t);return this._withDateTime(n,this._time)},i.plusMonths=function(t){var n=this._date.plusMonths(t);return this._withDateTime(n,this._time)},i.plusWeeks=function(t){var n=this._date.plusWeeks(t);return this._withDateTime(n,this._time)},i.plusDays=function(t){var n=this._date.plusDays(t);return this._withDateTime(n,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,n,i,e,r,s){if(0===n&&0===i&&0===e&&0===r)return this._withDateTime(t,this._time);var u=y.intDiv(r,cn.NANOS_PER_DAY)+y.intDiv(e,cn.SECONDS_PER_DAY)+y.intDiv(i,cn.MINUTES_PER_DAY)+y.intDiv(n,cn.HOURS_PER_DAY);u*=s;var o=y.intMod(r,cn.NANOS_PER_DAY)+y.intMod(e,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+y.intMod(i,cn.MINUTES_PER_DAY)*cn.NANOS_PER_MINUTE+y.intMod(n,cn.HOURS_PER_DAY)*cn.NANOS_PER_HOUR,_=this._time.toNanoOfDay();o=o*s+_,u+=y.floorDiv(o,cn.NANOS_PER_DAY);var h=y.floorMod(o,cn.NANOS_PER_DAY),a=h===_?this._time:cn.ofNanoOfDay(h);return this._withDateTime(t.plusDays(u),a)},i.query=function(n){return v(n,"query"),n===j.localDate()?this.toLocalDate():t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof S){if(i.isTimeBased()){var r=this._date.daysUntil(e._date),s=e._time.toNanoOfDay()-this._time.toNanoOfDay();r>0&&s<0?(r--,s+=cn.NANOS_PER_DAY):r<0&&s>0&&(r++,s-=cn.NANOS_PER_DAY);var o=r;switch(i){case S.NANOS:return o=y.safeMultiply(o,cn.NANOS_PER_DAY),y.safeAdd(o,s);case S.MICROS:return o=y.safeMultiply(o,cn.MICROS_PER_DAY),y.safeAdd(o,y.intDiv(s,1e3));case S.MILLIS:return o=y.safeMultiply(o,cn.MILLIS_PER_DAY),y.safeAdd(o,y.intDiv(s,1e6));case S.SECONDS:return o=y.safeMultiply(o,cn.SECONDS_PER_DAY),y.safeAdd(o,y.intDiv(s,cn.NANOS_PER_SECOND));case S.MINUTES:return o=y.safeMultiply(o,cn.MINUTES_PER_DAY),y.safeAdd(o,y.intDiv(s,cn.NANOS_PER_MINUTE));case S.HOURS:return o=y.safeMultiply(o,cn.HOURS_PER_DAY),y.safeAdd(o,y.intDiv(s,cn.NANOS_PER_HOUR));case S.HALF_DAYS:return o=y.safeMultiply(o,2),y.safeAdd(o,y.intDiv(s,12*cn.NANOS_PER_HOUR))}throw new u("Unsupported unit: "+i)}var _=e._date,h=e._time;return _.isAfter(this._date)&&h.isBefore(this._time)?_=_.minusDays(1):_.isBefore(this._date)&&h.isAfter(this._time)&&(_=_.plusDays(1)),this._date.until(_,i)}return i.between(this,e)},i.atOffset=function(t){return un.of(this,t)},i.atZone=function(t){return sn.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._date.compareTo(t.toLocalDate());return 0===n&&(n=this._time.compareTo(t.toLocalTime())),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&this._date.equals(t._date)&&this._time.equals(t._time)},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(an),cn=function(t){function n(i,e,r,s){var u;void 0===i&&(i=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===s&&(s=0),u=t.call(this)||this;var o=y.safeToInt(i),_=y.safeToInt(e),h=y.safeToInt(r),a=y.safeToInt(s);return n._validate(o,_,h,a),0===_&&0===h&&0===a?(n.HOURS[o]||(u._hour=o,u._minute=_,u._second=h,u._nano=a,n.HOURS[o]=c(u)),n.HOURS[o]||c(u)):(u._hour=o,u._minute=_,u._second=h,u._nano=a,u)}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return void 0===t&&(t=dn.systemDefaultZone()),v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault());var e=i.rules().offset(t),r=y.intMod(t.epochSecond(),n.SECONDS_PER_DAY);return(r=y.intMod(r+e.totalSeconds(),n.SECONDS_PER_DAY))<0&&(r+=n.SECONDS_PER_DAY),n.ofSecondOfDay(r,t.nano())},n.of=function(t,i,e,r){return new n(t,i,e,r)},n.ofSecondOfDay=function(t,i){void 0===t&&(t=0),void 0===i&&(i=0),O.SECOND_OF_DAY.checkValidValue(t),O.NANO_OF_SECOND.checkValidValue(i);var e=y.intDiv(t,n.SECONDS_PER_HOUR);t-=e*n.SECONDS_PER_HOUR;var r=y.intDiv(t,n.SECONDS_PER_MINUTE);return new n(e,r,t-=r*n.SECONDS_PER_MINUTE,i)},n.ofNanoOfDay=function(t){void 0===t&&(t=0),O.NANO_OF_DAY.checkValidValue(t);var i=y.intDiv(t,n.NANOS_PER_HOUR);t-=i*n.NANOS_PER_HOUR;var e=y.intDiv(t,n.NANOS_PER_MINUTE);t-=e*n.NANOS_PER_MINUTE;var r=y.intDiv(t,n.NANOS_PER_SECOND);return new n(i,e,r,t-=r*n.NANOS_PER_SECOND)},n.from=function(t){v(t,"temporal");var n=t.query(j.localTime());if(null==n)throw new r("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_LOCAL_TIME),v(i,"formatter"),i.parse(t,n.FROM)},n._validate=function(t,n,i,e){O.HOUR_OF_DAY.checkValidValue(t),O.MINUTE_OF_HOUR.checkValidValue(n),O.SECOND_OF_MINUTE.checkValidValue(i),O.NANO_OF_SECOND.checkValidValue(e)};var i=n.prototype;return i.isSupported=function(t){return t instanceof O||t instanceof S?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(n){return v(n),t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return v(t,"field"),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.NANO_OF_SECOND:return this._nano;case O.NANO_OF_DAY:return this.toNanoOfDay();case O.MICRO_OF_SECOND:return y.intDiv(this._nano,1e3);case O.MICRO_OF_DAY:return y.intDiv(this.toNanoOfDay(),1e3);case O.MILLI_OF_SECOND:return y.intDiv(this._nano,1e6);case O.MILLI_OF_DAY:return y.intDiv(this.toNanoOfDay(),1e6);case O.SECOND_OF_MINUTE:return this._second;case O.SECOND_OF_DAY:return this.toSecondOfDay();case O.MINUTE_OF_HOUR:return this._minute;case O.MINUTE_OF_DAY:return 60*this._hour+this._minute;case O.HOUR_OF_AMPM:return y.intMod(this._hour,12);case O.CLOCK_HOUR_OF_AMPM:var n=y.intMod(this._hour,12);return n%12==0?12:n;case O.HOUR_OF_DAY:return this._hour;case O.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case O.AMPM_OF_DAY:return y.intDiv(this._hour,12)}throw new u("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",_),t.adjustInto(this))},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.NANO_OF_SECOND:return this.withNano(i);case O.NANO_OF_DAY:return n.ofNanoOfDay(i);case O.MICRO_OF_SECOND:return this.withNano(1e3*i);case O.MICRO_OF_DAY:return n.ofNanoOfDay(1e3*i);case O.MILLI_OF_SECOND:return this.withNano(1e6*i);case O.MILLI_OF_DAY:return n.ofNanoOfDay(1e6*i);case O.SECOND_OF_MINUTE:return this.withSecond(i);case O.SECOND_OF_DAY:return this.plusSeconds(i-this.toSecondOfDay());case O.MINUTE_OF_HOUR:return this.withMinute(i);case O.MINUTE_OF_DAY:return this.plusMinutes(i-(60*this._hour+this._minute));case O.HOUR_OF_AMPM:return this.plusHours(i-y.intMod(this._hour,12));case O.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===i?0:i)-y.intMod(this._hour,12));case O.HOUR_OF_DAY:return this.withHour(i);case O.CLOCK_HOUR_OF_DAY:return this.withHour(24===i?0:i);case O.AMPM_OF_DAY:return this.plusHours(12*(i-y.intDiv(this._hour,12)))}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new n(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new n(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new n(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new n(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(v(t,"unit"),t===S.NANOS)return this;var i=t.duration();if(i.seconds()>n.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var e=i.toNanos();if(0!==y.intMod(n.NANOS_PER_DAY,e))throw new r("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return n.ofNanoOfDay(y.intDiv(s,e)*e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,i){if(v(i,"unit"),i instanceof S){switch(i){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this.plusNanos(1e3*y.intMod(t,n.MICROS_PER_DAY));case S.MILLIS:return this.plusNanos(1e6*y.intMod(t,n.MILLIS_PER_DAY));case S.SECONDS:return this.plusSeconds(t);case S.MINUTES:return this.plusMinutes(t);case S.HOURS:return this.plusHours(t);case S.HALF_DAYS:return this.plusHours(12*y.intMod(t,2))}throw new u("Unsupported unit: "+i)}return i.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new n(y.intMod(y.intMod(t,n.HOURS_PER_DAY)+this._hour+n.HOURS_PER_DAY,n.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var i=this._hour*n.MINUTES_PER_HOUR+this._minute,e=y.intMod(y.intMod(t,n.MINUTES_PER_DAY)+i+n.MINUTES_PER_DAY,n.MINUTES_PER_DAY);return i===e?this:new n(y.intDiv(e,n.MINUTES_PER_HOUR),y.intMod(e,n.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var i=this._hour*n.SECONDS_PER_HOUR+this._minute*n.SECONDS_PER_MINUTE+this._second,e=y.intMod(y.intMod(t,n.SECONDS_PER_DAY)+i+n.SECONDS_PER_DAY,n.SECONDS_PER_DAY);return i===e?this:new n(y.intDiv(e,n.SECONDS_PER_HOUR),y.intMod(y.intDiv(e,n.SECONDS_PER_MINUTE),n.MINUTES_PER_HOUR),y.intMod(e,n.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var i=this.toNanoOfDay(),e=y.intMod(y.intMod(t,n.NANOS_PER_DAY)+i+n.NANOS_PER_DAY,n.NANOS_PER_DAY);return i===e?this:new n(y.intDiv(e,n.NANOS_PER_HOUR),y.intMod(y.intDiv(e,n.NANOS_PER_MINUTE),n.MINUTES_PER_HOUR),y.intMod(y.intDiv(e,n.NANOS_PER_SECOND),n.SECONDS_PER_MINUTE),y.intMod(e,n.NANOS_PER_SECOND))},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusHours=function(t){return this.plusHours(-1*y.intMod(t,n.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*y.intMod(t,n.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*y.intMod(t,n.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*y.intMod(t,n.NANOS_PER_DAY))},i.query=function(t){return v(t,"query"),t===j.precision()?S.NANOS:t===j.localTime()?this:t===j.chronology()||t===j.zoneId()||t===j.zone()||t===j.offset()||t===j.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(n.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof S){var r=e.toNanoOfDay()-this.toNanoOfDay();switch(i){case S.NANOS:return r;case S.MICROS:return y.intDiv(r,1e3);case S.MILLIS:return y.intDiv(r,1e6);case S.SECONDS:return y.intDiv(r,n.NANOS_PER_SECOND);case S.MINUTES:return y.intDiv(r,n.NANOS_PER_MINUTE);case S.HOURS:return y.intDiv(r,n.NANOS_PER_HOUR);case S.HALF_DAYS:return y.intDiv(r,12*n.NANOS_PER_HOUR)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i.atDate=function(t){return ln.of(t,this)},i.toSecondOfDay=function(){var t=this._hour*n.SECONDS_PER_HOUR;return(t+=this._minute*n.SECONDS_PER_MINUTE)+this._second},i.toNanoOfDay=function(){var t=this._hour*n.NANOS_PER_HOUR;return t+=this._minute*n.NANOS_PER_MINUTE,(t+=this._second*n.NANOS_PER_SECOND)+this._nano},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=y.compareNumbers(this._hour,t._hour);return 0===i&&0===(i=y.compareNumbers(this._minute,t._minute))&&0===(i=y.compareNumbers(this._second,t._second))&&(i=y.compareNumbers(this._nano,t._nano)),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano},i.hashCode=function(){var t=this.toNanoOfDay();return y.hash(t)},i.toString=function(){var t="",n=this._hour,i=this._minute,e=this._second,r=this._nano;return t+=n<10?"0":"",t+=n,t+=i<10?":0":":",t+=i,(e>0||r>0)&&(t+=e<10?":0":":",t+=e,r>0&&(t+=".",0===y.intMod(r,1e6)?t+=(""+(y.intDiv(r,1e6)+1e3)).substring(1):0===y.intMod(r,1e3)?t+=(""+(y.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V);cn.HOURS_PER_DAY=24,cn.MINUTES_PER_HOUR=60,cn.MINUTES_PER_DAY=cn.MINUTES_PER_HOUR*cn.HOURS_PER_DAY,cn.SECONDS_PER_MINUTE=60,cn.SECONDS_PER_HOUR=cn.SECONDS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.SECONDS_PER_DAY=cn.SECONDS_PER_HOUR*cn.HOURS_PER_DAY,cn.MILLIS_PER_DAY=1e3*cn.SECONDS_PER_DAY,cn.MICROS_PER_DAY=1e6*cn.SECONDS_PER_DAY,cn.NANOS_PER_SECOND=1e9,cn.NANOS_PER_MINUTE=cn.NANOS_PER_SECOND*cn.SECONDS_PER_MINUTE,cn.NANOS_PER_HOUR=cn.NANOS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.NANOS_PER_DAY=cn.NANOS_PER_HOUR*cn.HOURS_PER_DAY;var fn=1e6,vn=function(t){function n(i,e){var r;return r=t.call(this)||this,n._validate(i,e),r._seconds=y.safeToInt(i),r._nanos=y.safeToInt(e),r}l(n,t),n.now=function(t){return void 0===t&&(t=dn.systemUTC()),t.instant()},n.ofEpochSecond=function(t,i){void 0===i&&(i=0);var e=t+y.floorDiv(i,cn.NANOS_PER_SECOND),r=y.floorMod(i,cn.NANOS_PER_SECOND);return n._create(e,r)},n.ofEpochMilli=function(t){var i=y.floorDiv(t,1e3),e=y.floorMod(t,1e3);return n._create(i,1e6*e)},n.from=function(t){try{var i=t.getLong(O.INSTANT_SECONDS),e=t.get(O.NANO_OF_SECOND);return n.ofEpochSecond(i,e)}catch(n){throw new r("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,n)}},n.parse=function(t){return Yt.ISO_INSTANT.parse(t,n.FROM)},n._create=function(t,i){return 0===t&&0===i?n.EPOCH:new n(t,i)},n._validate=function(t,i){if(tn.MAX_SECONDS)throw new r("Instant exceeds minimum or maximum instant");if(i<0||i>cn.NANOS_PER_SECOND)throw new r("Instant exceeds minimum or maximum instant")};var i=n.prototype;return i.isSupported=function(t){return t instanceof O?t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND||t===O.MICRO_OF_SECOND||t===O.MILLI_OF_SECOND:t instanceof S?t.isTimeBased()||t===S.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof O){switch(t){case O.NANO_OF_SECOND:return this._nanos;case O.MICRO_OF_SECOND:return y.intDiv(this._nanos,1e3);case O.MILLI_OF_SECOND:return y.intDiv(this._nanos,fn);case O.INSTANT_SECONDS:return this._seconds}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.MILLI_OF_SECOND:var e=i*fn;return e!==this._nanos?n._create(this._seconds,e):this;case O.MICRO_OF_SECOND:var r=1e3*i;return r!==this._nanos?n._create(this._seconds,r):this;case O.NANO_OF_SECOND:return i!==this._nanos?n._create(this._seconds,i):this;case O.INSTANT_SECONDS:return i!==this._seconds?n._create(i,this._nanos):this}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.truncatedTo=function(t){if(v(t,"unit"),t===S.NANOS)return this;var n=t.duration();if(n.seconds()>cn.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var i=n.toNanos();if(0!==y.intMod(cn.NANOS_PER_DAY,i))throw new r("Unit must divide into a standard day without remainder");var e=y.intMod(this._seconds,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+this._nanos,s=y.intDiv(e,i)*i;return this.plusNanos(s-e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k),n instanceof S){switch(n){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this._plus(y.intDiv(t,1e6),1e3*y.intMod(t,1e6));case S.MILLIS:return this.plusMillis(t);case S.SECONDS:return this.plusSeconds(t);case S.MINUTES:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_MINUTE));case S.HOURS:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_HOUR));case S.HALF_DAYS:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_DAY/2));case S.DAYS:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_DAY))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus(y.intDiv(t,1e3),y.intMod(t,1e3)*fn)},i.plusNanos=function(t){return this._plus(0,t)},i._plus=function(t,i){if(0===t&&0===i)return this;var e=this._seconds+t;e+=y.intDiv(i,cn.NANOS_PER_SECOND);var r=this._nanos+i%cn.NANOS_PER_SECOND;return n.ofEpochSecond(e,r)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return this.plusAmountUnit(-1*t,n)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.query=function(t){return v(t,"query"),t===j.precision()?S.NANOS:t===j.localDate()||t===j.localTime()||t===j.chronology()||t===j.zoneId()||t===j.zone()||t===j.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.INSTANT_SECONDS,this._seconds).with(O.NANO_OF_SECOND,this._nanos)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof S){switch(i){case S.NANOS:return this._nanosUntil(e);case S.MICROS:return y.intDiv(this._nanosUntil(e),1e3);case S.MILLIS:return y.safeSubtract(e.toEpochMilli(),this.toEpochMilli());case S.SECONDS:return this._secondsUntil(e);case S.MINUTES:return y.intDiv(this._secondsUntil(e),cn.SECONDS_PER_MINUTE);case S.HOURS:return y.intDiv(this._secondsUntil(e),cn.SECONDS_PER_HOUR);case S.HALF_DAYS:return y.intDiv(this._secondsUntil(e),12*cn.SECONDS_PER_HOUR);case S.DAYS:return y.intDiv(this._secondsUntil(e),cn.SECONDS_PER_DAY)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i._nanosUntil=function(t){var n=y.safeSubtract(t.epochSecond(),this.epochSecond()),i=y.safeMultiply(n,cn.NANOS_PER_SECOND);return y.safeAdd(i,t.nano()-this.nano())},i._secondsUntil=function(t){var n=y.safeSubtract(t.epochSecond(),this.epochSecond()),i=t.nano()-this.nano();return n>0&&i<0?n--:n<0&&i>0&&n++,n},i.atOffset=function(t){return un.ofInstant(this,t)},i.atZone=function(t){return sn.ofInstant(this,t)},i.toEpochMilli=function(){return y.safeMultiply(this._seconds,1e3)+y.intDiv(this._nanos,fn)},i.compareTo=function(t){v(t,"otherInstant"),d(t,n,"otherInstant");var i=y.compareNumbers(this._seconds,t._seconds);return 0!==i?i:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this.epochSecond()===t.epochSecond()&&this.nano()===t.nano()},i.hashCode=function(){return y.hashCode(this._seconds,this._nanos)},i.toString=function(){return Yt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},n}(V),dn=function(){function t(){}t.systemUTC=function(){return new wn(Q.UTC)},t.systemDefaultZone=function(){return new wn(G.systemDefault())},t.system=function(t){return new wn(t)},t.fixed=function(t,n){return new pn(t,n)},t.offset=function(t,n){return new mn(t,n)};var n=t.prototype;return n.millis=function(){w("Clock.millis")},n.instant=function(){w("Clock.instant")},n.zone=function(){w("Clock.zone")},n.withZone=function(){w("Clock.withZone")},t}(),wn=function(t){function n(n){var i;return v(n,"zone"),(i=t.call(this)||this)._zone=n,i}l(n,t);var i=n.prototype;return i.zone=function(){return this._zone},i.millis=function(){return(new Date).getTime()},i.instant=function(){return vn.ofEpochMilli(this.millis())},i.equals=function(t){return t instanceof n&&this._zone.equals(t._zone)},i.withZone=function(t){return t.equals(this._zone)?this:new n(t)},i.toString=function(){return"SystemClock["+this._zone.toString()+"]"},n}(dn),pn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._instant=n,e._zoneId=i,e}l(n,t);var i=n.prototype;return i.instant=function(){return this._instant},i.millis=function(){return this._instant.toEpochMilli()},i.zone=function(){return this._zoneId},i.toString=function(){return"FixedClock[]"},i.equals=function(t){return t instanceof n&&this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId)},i.withZone=function(t){return t.equals(this._zoneId)?this:new n(this._instant,t)},n}(dn),mn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._baseClock=n,e._offset=i,e}l(n,t);var i=n.prototype;return i.zone=function(){return this._baseClock.zone()},i.withZone=function(t){return t.equals(this._baseClock.zone())?this:new n(this._baseClock.withZone(t),this._offset)},i.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},i.instant=function(){return this._baseClock.instant().plus(this._offset)},i.equals=function(t){return t instanceof n&&this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset)},i.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},n}(dn),gn=function(){function t(t,n,i){if(v(t,"transition"),v(n,"offsetBefore"),v(i,"offsetAfter"),n.equals(i))throw new _("Offsets must not be equal");if(0!==t.nano())throw new _("Nano-of-second must be zero");this._transition=t instanceof ln?t:ln.ofEpochSecond(t,0,n),this._offsetBefore=n,this._offsetAfter=i}t.of=function(n,i,e){return new t(n,i,e)};var n=t.prototype;return n.instant=function(){return this._transition.toInstant(this._offsetBefore)},n.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},n.dateTimeBefore=function(){return this._transition},n.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},n.offsetBefore=function(){return this._offsetBefore},n.offsetAfter=function(){return this._offsetAfter},n.duration=function(){return x.ofSeconds(this.durationSeconds())},n.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},n.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},n.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},n.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}(),yn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var n=new Date(t.toEpochMilli()).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfEpochMilli=function(t){var n=new Date(t).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfLocalDateTime=function(t){var n=1e3*t.toEpochSecond(Q.UTC),i=new Date(n).getTimezoneOffset(),e=new Date(n+6e4*i).getTimezoneOffset();return Q.ofTotalMinutes(-1*e)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,n){return this.offsetOfLocalDateTime(t).equals(n)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new r("not supported operation")},i.equals=function(t){return this===t||t instanceof n},i.toString=function(){return"SYSTEM"},n}(K),bn=function(t){function n(){var n;return(n=t.call(this)||this)._rules=new yn,n}l(n,t);var i=n.prototype;return i.rules=function(){return this._rules},i.equals=function(t){return this===t},i.id=function(){return"SYSTEM"},n}(G),$n=function(){function t(){}return t.systemDefault=function(){return kn},t.getAvailableZoneIds=function(){return Dt.getAvailableZoneIds()},t.of=function(t){if(v(t,"zoneId"),"Z"===t)return Q.UTC;if(1===t.length)throw new r("Invalid zone: "+t);if(Y.startsWith(t,"+")||Y.startsWith(t,"-"))return Q.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new Mt(t,Q.UTC.rules());if(Y.startsWith(t,"UTC+")||Y.startsWith(t,"GMT+")||Y.startsWith(t,"UTC-")||Y.startsWith(t,"GMT-")){var n=Q.of(t.substring(3));return 0===n.totalSeconds()?new Mt(t.substring(0,3),n.rules()):new Mt(t.substring(0,3)+n.id(),n.rules())}if(Y.startsWith(t,"UT+")||Y.startsWith(t,"UT-")){var i=Q.of(t.substring(2));return 0===i.totalSeconds()?new Mt("UT",i.rules()):new Mt("UT"+i.id(),i.rules())}return"SYSTEM"===t?G.systemDefault():Mt.ofId(t)},t.ofOffset=function(t,n){if(v(t,"prefix"),v(n,"offset"),0===t.length)return n;if("GMT"===t||"UTC"===t||"UT"===t)return 0===n.totalSeconds()?new Mt(t,n.rules()):new Mt(t+n.id(),n.rules());throw new _("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){v(t,"temporal");var n=t.query(j.zone());if(null==n)throw new r("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},t}(),kn=null,xn=!1;xn||(xn=!0,q.MIN_VALUE=-999999,q.MAX_VALUE=999999,x.ZERO=new x(0,0),S.NANOS=new S("Nanos",x.ofNanos(1)),S.MICROS=new S("Micros",x.ofNanos(1e3)),S.MILLIS=new S("Millis",x.ofNanos(1e6)),S.SECONDS=new S("Seconds",x.ofSeconds(1)),S.MINUTES=new S("Minutes",x.ofSeconds(60)),S.HOURS=new S("Hours",x.ofSeconds(3600)),S.HALF_DAYS=new S("HalfDays",x.ofSeconds(43200)),S.DAYS=new S("Days",x.ofSeconds(86400)),S.WEEKS=new S("Weeks",x.ofSeconds(604800)),S.MONTHS=new S("Months",x.ofSeconds(2629746)),S.YEARS=new S("Years",x.ofSeconds(31556952)),S.DECADES=new S("Decades",x.ofSeconds(315569520)),S.CENTURIES=new S("Centuries",x.ofSeconds(3155695200)),S.MILLENNIA=new S("Millennia",x.ofSeconds(31556952e3)),S.ERAS=new S("Eras",x.ofSeconds(31556952*(q.MAX_VALUE+1))),S.FOREVER=new S("Forever",x.ofSeconds(y.MAX_SAFE_INTEGER,999999999)),O.NANO_OF_SECOND=new O("NanoOfSecond",S.NANOS,S.SECONDS,E.of(0,999999999)),O.NANO_OF_DAY=new O("NanoOfDay",S.NANOS,S.DAYS,E.of(0,86399999999999)),O.MICRO_OF_SECOND=new O("MicroOfSecond",S.MICROS,S.SECONDS,E.of(0,999999)),O.MICRO_OF_DAY=new O("MicroOfDay",S.MICROS,S.DAYS,E.of(0,86399999999)),O.MILLI_OF_SECOND=new O("MilliOfSecond",S.MILLIS,S.SECONDS,E.of(0,999)),O.MILLI_OF_DAY=new O("MilliOfDay",S.MILLIS,S.DAYS,E.of(0,86399999)),O.SECOND_OF_MINUTE=new O("SecondOfMinute",S.SECONDS,S.MINUTES,E.of(0,59)),O.SECOND_OF_DAY=new O("SecondOfDay",S.SECONDS,S.DAYS,E.of(0,86399)),O.MINUTE_OF_HOUR=new O("MinuteOfHour",S.MINUTES,S.HOURS,E.of(0,59)),O.MINUTE_OF_DAY=new O("MinuteOfDay",S.MINUTES,S.DAYS,E.of(0,1439)),O.HOUR_OF_AMPM=new O("HourOfAmPm",S.HOURS,S.HALF_DAYS,E.of(0,11)),O.CLOCK_HOUR_OF_AMPM=new O("ClockHourOfAmPm",S.HOURS,S.HALF_DAYS,E.of(1,12)),O.HOUR_OF_DAY=new O("HourOfDay",S.HOURS,S.DAYS,E.of(0,23)),O.CLOCK_HOUR_OF_DAY=new O("ClockHourOfDay",S.HOURS,S.DAYS,E.of(1,24)),O.AMPM_OF_DAY=new O("AmPmOfDay",S.HALF_DAYS,S.DAYS,E.of(0,1)),O.DAY_OF_WEEK=new O("DayOfWeek",S.DAYS,S.WEEKS,E.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_MONTH=new O("AlignedDayOfWeekInMonth",S.DAYS,S.WEEKS,E.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_YEAR=new O("AlignedDayOfWeekInYear",S.DAYS,S.WEEKS,E.of(1,7)),O.DAY_OF_MONTH=new O("DayOfMonth",S.DAYS,S.MONTHS,E.of(1,28,31),"day"),O.DAY_OF_YEAR=new O("DayOfYear",S.DAYS,S.YEARS,E.of(1,365,366)),O.EPOCH_DAY=new O("EpochDay",S.DAYS,S.FOREVER,E.of(Math.floor(365.25*q.MIN_VALUE),Math.floor(365.25*q.MAX_VALUE))),O.ALIGNED_WEEK_OF_MONTH=new O("AlignedWeekOfMonth",S.WEEKS,S.MONTHS,E.of(1,4,5)),O.ALIGNED_WEEK_OF_YEAR=new O("AlignedWeekOfYear",S.WEEKS,S.YEARS,E.of(1,53)),O.MONTH_OF_YEAR=new O("MonthOfYear",S.MONTHS,S.YEARS,E.of(1,12),"month"),O.PROLEPTIC_MONTH=new O("ProlepticMonth",S.MONTHS,S.FOREVER,E.of(12*q.MIN_VALUE,12*q.MAX_VALUE+11)),O.YEAR_OF_ERA=new O("YearOfEra",S.YEARS,S.FOREVER,E.of(1,q.MAX_VALUE,q.MAX_VALUE+1)),O.YEAR=new O("Year",S.YEARS,S.FOREVER,E.of(q.MIN_VALUE,q.MAX_VALUE),"year"),O.ERA=new O("Era",S.ERAS,S.FOREVER,E.of(0,1)),O.INSTANT_SECONDS=new O("InstantSeconds",S.SECONDS,S.FOREVER,E.of(g,m)),O.OFFSET_SECONDS=new O("OffsetSeconds",S.SECONDS,S.FOREVER,E.of(-64800,64800)),function(){cn.HOURS=[];for(var t=0;t<24;t++)cn.of(t,0,0,0);cn.MIN=cn.HOURS[0],cn.MAX=new cn(23,59,59,999999999),cn.MIDNIGHT=cn.HOURS[0],cn.NOON=cn.HOURS[12],cn.FROM=z("LocalTime.FROM",(function(t){return cn.from(t)}))}(),ct=new ot,ft=new _t,vt=new ht,dt=new at,wt=new lt("WeekBasedYears",x.ofSeconds(31556952)),pt=new lt("QuarterYears",x.ofSeconds(7889238)),rt.DAY_OF_QUARTER=ct,rt.QUARTER_OF_YEAR=ft,rt.WEEK_OF_WEEK_BASED_YEAR=vt,rt.WEEK_BASED_YEAR=dt,rt.WEEK_BASED_YEARS=wt,rt.QUARTER_YEARS=pt,hn.prototype.isoWeekOfWeekyear=function(){return this.get(rt.WEEK_OF_WEEK_BASED_YEAR)},hn.prototype.isoWeekyear=function(){return this.get(rt.WEEK_BASED_YEAR)},j.ZONE_ID=z("ZONE_ID",(function(t){return t.query(j.ZONE_ID)})),j.CHRONO=z("CHRONO",(function(t){return t.query(j.CHRONO)})),j.PRECISION=z("PRECISION",(function(t){return t.query(j.PRECISION)})),j.OFFSET=z("OFFSET",(function(t){return t.isSupported(O.OFFSET_SECONDS)?Q.ofTotalSeconds(t.get(O.OFFSET_SECONDS)):null})),j.ZONE=z("ZONE",(function(t){var n=t.query(j.ZONE_ID);return null!=n?n:t.query(j.OFFSET)})),j.LOCAL_DATE=z("LOCAL_DATE",(function(t){return t.isSupported(O.EPOCH_DAY)?hn.ofEpochDay(t.getLong(O.EPOCH_DAY)):null})),j.LOCAL_TIME=z("LOCAL_TIME",(function(t){return t.isSupported(O.NANO_OF_DAY)?cn.ofNanoOfDay(t.getLong(O.NANO_OF_DAY)):null})),M.MONDAY=new M(0,"MONDAY"),M.TUESDAY=new M(1,"TUESDAY"),M.WEDNESDAY=new M(2,"WEDNESDAY"),M.THURSDAY=new M(3,"THURSDAY"),M.FRIDAY=new M(4,"FRIDAY"),M.SATURDAY=new M(5,"SATURDAY"),M.SUNDAY=new M(6,"SUNDAY"),M.FROM=z("DayOfWeek.FROM",(function(t){return M.from(t)})),I=[M.MONDAY,M.TUESDAY,M.WEDNESDAY,M.THURSDAY,M.FRIDAY,M.SATURDAY,M.SUNDAY],vn.MIN_SECONDS=-31619119219200,vn.MAX_SECONDS=31494816403199,vn.EPOCH=new vn(0,0),vn.MIN=vn.ofEpochSecond(vn.MIN_SECONDS,0),vn.MAX=vn.ofEpochSecond(vn.MAX_SECONDS,999999999),vn.FROM=z("Instant.FROM",(function(t){return vn.from(t)})),hn.MIN=hn.of(q.MIN_VALUE,1,1),hn.MAX=hn.of(q.MAX_VALUE,12,31),hn.EPOCH_0=hn.ofEpochDay(0),hn.FROM=z("LocalDate.FROM",(function(t){return hn.from(t)})),ln.MIN=ln.of(hn.MIN,cn.MIN),ln.MAX=ln.of(hn.MAX,cn.MAX),ln.FROM=z("LocalDateTime.FROM",(function(t){return ln.from(t)})),Xt.MIN_VALUE=q.MIN_VALUE,Xt.MAX_VALUE=q.MAX_VALUE,zt=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).toFormatter(),Xt.FROM=z("Year.FROM",(function(t){return Xt.from(t)})),N.JANUARY=new N(1,"JANUARY"),N.FEBRUARY=new N(2,"FEBRUARY"),N.MARCH=new N(3,"MARCH"),N.APRIL=new N(4,"APRIL"),N.MAY=new N(5,"MAY"),N.JUNE=new N(6,"JUNE"),N.JULY=new N(7,"JULY"),N.AUGUST=new N(8,"AUGUST"),N.SEPTEMBER=new N(9,"SEPTEMBER"),N.OCTOBER=new N(10,"OCTOBER"),N.NOVEMBER=new N(11,"NOVEMBER"),N.DECEMBER=new N(12,"DECEMBER"),D=[N.JANUARY,N.FEBRUARY,N.MARCH,N.APRIL,N.MAY,N.JUNE,N.JULY,N.AUGUST,N.SEPTEMBER,N.OCTOBER,N.NOVEMBER,N.DECEMBER],At=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).toFormatter(),Kt.FROM=z("YearMonth.FROM",(function(t){return Kt.from(t)})),Tt=(new Ut).appendLiteral("--").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(),Gt.FROM=z("MonthDay.FROM",(function(t){return Gt.from(t)})),P.ofDays(0),Q.MAX_SECONDS=18*cn.SECONDS_PER_HOUR,Q.UTC=Q.ofTotalSeconds(0),Q.MIN=Q.ofTotalSeconds(-Q.MAX_SECONDS),Q.MAX=Q.ofTotalSeconds(Q.MAX_SECONDS),sn.FROM=z("ZonedDateTime.FROM",(function(t){return sn.from(t)})),kn=new bn,G.systemDefault=$n.systemDefault,G.getAvailableZoneIds=$n.getAvailableZoneIds,G.of=$n.of,G.ofOffset=$n.ofOffset,G.from=$n.from,Q.from=$n.from,G.SYSTEM=kn,G.UTC=Q.ofTotalSeconds(0),nn.INSTANCE=new nn("IsoChronology"),Yt.ISO_LOCAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_LOCAL_TIME=(new Ut).appendValue(O.HOUR_OF_DAY,2).appendLiteral(":").appendValue(O.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(O.SECOND_OF_MINUTE,2).optionalStart().appendFraction(O.NANO_OF_SECOND,0,9,!0).toFormatter(U.STRICT),Yt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_DATE).appendLiteral("T").append(Yt.ISO_LOCAL_TIME).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(U.STRICT),Yt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_ZONED_DATE_TIME=(new Ut).append(Yt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.BASIC_ISO_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendValue(O.MONTH_OF_YEAR,2).appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_ORDINAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.DAY_OF_YEAR).toFormatter(U.STRICT),Yt.ISO_WEEK_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-W").appendValue(O.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(O.DAY_OF_WEEK).toFormatter(U.STRICT),Yt.PARSED_EXCESS_DAYS=z("PARSED_EXCESS_DAYS",(function(t){return t instanceof tt?t.excessDays:P.ZERO})),Yt.PARSED_LEAP_SECOND=z("PARSED_LEAP_SECOND",(function(t){return t instanceof tt&&t.leapSecond})),St.BASE_DATE=hn.of(2e3,1,1),Ut.CompositePrinterParser=$t,Ut.PadPrinterParserDecorator=Ot,Ut.SettingsParser=jt,Ut.CharLiteralPrinterParser=It,Ut.StringLiteralPrinterParser=It,Ut.CharLiteralPrinterParser=bt,Ut.NumberPrinterParser=qt,Ut.ReducedPrinterParser=St,Ut.FractionPrinterParser=kt,Ut.OffsetIdPrinterParser=Et,Ut.ZoneIdPrinterParser=Nt,un.MIN=ln.MIN.atOffset(Q.MAX),un.MAX=ln.MAX.atOffset(Q.MIN),un.FROM=z("OffsetDateTime.FROM",(function(t){return un.from(t)})),en.MIN=en.ofNumbers(0,0,0,0,Q.MAX),en.MAX=en.ofNumbers(23,59,59,999999999,Q.MIN),en.FROM=z("OffsetTime.FROM",(function(t){return en.from(t)})));var qn=function(){function t(t,n){var i;if(t instanceof hn)n=null==n?G.systemDefault():n,i=t.atStartOfDay(n);else if(t instanceof ln)n=null==n?G.systemDefault():n,i=t.atZone(n);else{if(!(t instanceof sn))throw new _("unsupported instance for convert operation:"+t);i=null==n?t:t.withZoneSameInstant(n)}this.instant=i.toInstant()}var n=t.prototype;return n.toDate=function(){return new Date(this.instant.toEpochMilli())},n.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function Sn(t,n){return new qn(t,n)}var Cn=function(t){function n(n,i){var e;return void 0===i&&(i=G.systemDefault()),(e=t.call(this)||this)._zone=i,n instanceof Date?(e._epochMilli=n.getTime(),c(e)):"function"==typeof n.toDate&&n.toDate()instanceof Date?(e._epochMilli=n.toDate().getTime(),c(e)):(f(!1,"date must be either a javascript date or a moment"),e)}l(n,t);var i=n.prototype;return i.query=function(n){return v(n,"query"),n===j.localDate()?hn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===j.localTime()?cn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===j.zone()?this._zone:t.prototype.query.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.NANO_OF_SECOND:return 1e6*y.floorMod(this._epochMilli,1e3);case O.INSTANT_SECONDS:return y.floorDiv(this._epochMilli,1e3)}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.isSupported=function(t){return t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND},n}(T);function En(t,n){return new Cn(t,n)}var On,jn,Tn={assert:p,DateTimeBuilder:tt,DateTimeParseContext:nt,DateTimePrintContext:et,MathUtil:y,StringUtil:Y,StringBuilder:Wt},An={_:Tn,convert:Sn,nativeJs:En,ArithmeticException:o,DateTimeException:r,DateTimeParseException:s,IllegalArgumentException:_,IllegalStateException:h,UnsupportedTemporalTypeException:u,NullPointerException:a,Clock:dn,DayOfWeek:M,Duration:x,Instant:vn,LocalDate:hn,LocalTime:cn,LocalDateTime:ln,OffsetTime:en,OffsetDateTime:un,Month:N,MonthDay:Gt,Period:P,Year:Xt,YearConstants:q,YearMonth:Kt,ZonedDateTime:sn,ZoneOffset:Q,ZoneId:G,ZoneRegion:Mt,ZoneOffsetTransition:gn,ZoneRules:K,ZoneRulesProvider:Dt,ChronoLocalDate:W,ChronoLocalDateTime:an,ChronoZonedDateTime:rn,IsoChronology:nn,ChronoField:O,ChronoUnit:S,IsoFields:rt,Temporal:V,TemporalAccessor:T,TemporalAdjuster:H,TemporalAdjusters:Jt,TemporalAmount:$,TemporalField:C,TemporalQueries:j,TemporalQuery:A,TemporalUnit:k,ValueRange:E,DateTimeFormatter:Yt,DateTimeFormatterBuilder:Ut,DecimalStyle:mt,ResolverStyle:U,SignStyle:gt,TextStyle:yt},zn=(On=An,jn=[],function(t){return~jn.indexOf(t)||(t(On),jn.push(t)),On});An.use=zn},453:function(t,n,i){var e,r,s;r=[n,i(135),i(675),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt,ct,ft,vt,dt,wt,pt,mt,gt,yt,bt,$t,kt,xt,qt,St,Ct,Et,Ot,jt,Tt,At,zt,It,Dt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht=Math.imul,Vt=n.Instant,Bt=n.Clock,Wt=n.Duration,Yt=n.LocalDate,Gt=n.LocalDateTime,Kt=n.LocalTime,Xt=n.ZoneOffset,Jt=n.ZoneId,Zt=n.ChronoField,Qt=n.DateTimeFormatterBuilder,tn=n.ResolverStyle,nn=i.$_$.mb,en=i.$_$.lb,rn=i.$_$.nb,sn=i.$_$.rb,un=i.$_$.t1,on=i.$_$.r1,_n=i.$_$.kb,hn=i.$_$.w9,an=i.$_$.s1,ln=i.$_$.p1,cn=i.$_$.u1,fn=i.$_$.jg,vn=i.$_$.ca,dn=i.$_$.f,wn=i.$_$.h2,pn=i.$_$.g2,mn=i.$_$.sg,gn=i.$_$.mg,yn=i.$_$.la,bn=i.$_$.r2,$n=i.$_$.a5,kn=i.$_$.jh,xn=i.$_$.pb,qn=i.$_$.bg,Sn=i.$_$.tg,Cn=i.$_$.rc,En=i.$_$.ka,On=i.$_$.qc,jn=i.$_$.gg,Tn=i.$_$.na,An=i.$_$.z2,zn=i.$_$.x1,In=i.$_$.wa,Dn=i.$_$.oa,Mn=i.$_$.l,Nn=i.$_$.ma,Rn=i.$_$.t7,Pn=i.$_$.j7,Ln=i.$_$.aa,Fn=i.$_$.k7,Un=i.$_$.fa,Hn=i.$_$.ia,Vn=i.$_$.sc,Bn=i.$_$.ph,Wn=i.$_$.ie,Yn=i.$_$.m,Gn=i.$_$.f7,Kn=i.$_$.s7,Xn=i.$_$.t6,Jn=i.$_$.z9,Zn=i.$_$.yd,Qn=i.$_$.ee,ti=i.$_$.w8,ni=i.$_$.y5,ii=i.$_$.q6,ei=i.$_$.xh,ri=i.$_$.j8,si=i.$_$.d5,ui=i.$_$.db,oi=i.$_$.if,_i=i.$_$.w7,hi=i.$_$.c8,ai=i.$_$.l8,li=i.$_$.a9,ci=i.$_$.ig,fi=i.$_$.n1,vi=i.$_$.e1,di=i.$_$.m7,wi=i.$_$.z7,pi=i.$_$.u8,mi=i.$_$.q5,gi=i.$_$.z6,yi=i.$_$.s6,bi=i.$_$.n4,$i=i.$_$.me,ki=i.$_$.n8,xi=i.$_$.ba,qi=i.$_$.v5,Si=i.$_$.ve,Ci=i.$_$.w5,Ei=i.$_$.da,Oi=i.$_$.f1,ji=i.$_$.je,Ti=i.$_$.o2,Ai=i.$_$.dg,zi=e.$_$.h,Ii=e.$_$.e1,Di=e.$_$.p2,Mi=e.$_$.c,Ni=i.$_$.s9,Ri=i.$_$.ib,Pi=i.$_$.hb,Li=i.$_$.s4,Fi=i.$_$.h,Ui=i.$_$.zf,Hi=i.$_$.g,Vi=i.$_$.q2,Bi=i.$_$.q1,Wi=i.$_$.u4,Yi=i.$_$.g1;function Gi(t,n){for(var i=Mn(t.length),e=0,r=t.length;e0))throw un(sn("A month name can not be empty"));var r=0;if(r0))throw un(sn("A day-of-week name can not be empty"));var r=0;if(r=0)){var s="The minimum number of digits ("+this.k3q_1+") is negative";throw un(sn(s))}if(!(null==this.l3q_1||null==this.k3q_1||this.l3q_1>=this.k3q_1)){var u="The maximum number of digits ("+this.l3q_1+") is less than the minimum number of digits ("+this.k3q_1+")";throw un(sn(u))}}function nu(t,n,i){if(this.v3q_1=t,this.w3q_1=n,this.x3q_1=i,this.y3q_1=this.v3q_1.t3u_1,!(this.w3q_1>=0)){var e="The minimum number of digits ("+this.w3q_1+") is negative";throw un(sn(e))}if(!(this.y3q_1>=this.w3q_1)){var r="The maximum number of digits ("+this.y3q_1+") is less than the minimum number of digits ("+this.w3q_1+")";throw un(sn(r))}if(null!=this.x3q_1&&!(this.x3q_1>this.w3q_1)){var s="The space padding ("+this.x3q_1+") should be more than the minimum number of digits ("+this.w3q_1+")";throw un(sn(s))}}function iu(t){this.u3u_1=t}function eu(t){var n=function(n){return e=n,r=(i=t).d3r_1.n3u_1.k3u(e),null==(s=Gn(i.e3r_1,r-i.d3r_1.o3u_1|0))?"The value "+r+" of "+i.d3r_1.q3u_1+" does not have a corresponding string representation":s;var i,e,r,s};return n.callableName="getStringValue",n}function ru(t,n,i){if(this.d3r_1=t,this.e3r_1=n,this.f3r_1=i,this.e3r_1.n()!==(1+(this.d3r_1.p3u_1-this.d3r_1.o3u_1|0)|0)){var e="The number of values ("+this.e3r_1.n()+") in "+this.e3r_1+" does not match the range of the field ("+(1+(this.d3r_1.p3u_1-this.d3r_1.o3u_1|0)|0)+")";throw un(sn(e))}}function su(t,n,i,e){this.g3t_1=t,this.h3t_1=n,this.i3t_1=i,this.j3t_1=e}function uu(t,n,i,e){n=n===dn?t.m3u():n,i=i===dn?null:i,e=e===dn?null:e,au.call(this),this.x3u_1=t,this.y3u_1=n,this.z3u_1=i,this.a3v_1=e}function ou(t){this.d3v_1=t}function _u(t,n,i,e,r,s){e=e===dn?t.m3u():e,r=r===dn?null:r,s=s===dn?null:s,au.call(this),this.n3u_1=t,this.o3u_1=n,this.p3u_1=i,this.q3u_1=e,this.r3u_1=r,this.s3u_1=s;var u;if(this.p3u_1<10)u=1;else if(this.p3u_1<100)u=2;else{if(!(this.p3u_1<1e3))throw un("Max value "+this.p3u_1+" is too large");u=3}this.t3u_1=u}function hu(){}function au(){}function lu(t){bu.call(this,t),this.n3p_1=nn(bu).p3q.call(this),this.o3p_1=nn(bu).p3p.call(this)}function cu(t){this.g3v_1=t}function fu(t){this.h3v_1=t}function vu(t,n){this.i3v_1=t,this.j3v_1=n;for(var i=ku(this.i3v_1),e=Yn(),r=i.v();r.w();){var s=r.y().o3q().c3v();null==s||e.s(s)}if(this.k3v_1=ti(e),this.k3v_1.d1())throw un(sn("Signed format must contain at least one field with a sign"))}function du(){}function wu(t,n){this.m3v_1=t,this.n3v_1=n}function pu(t){var n=function(n){return t.f3v(n)};return n.callableName="getter",n}function mu(t){var n=function(n){return t.s3v(n)};return n.callableName="test",n}function gu(t,n){this.o3v_1=t,this.p3v_1=n;for(var i=ku(this.p3v_1),e=Mn(ni(i,10)),r=i.v();r.w();){var s=r.y().o3q();e.s(s)}for(var u=ii(e),o=Mn(ni(u,10)),_=u.v();_.w();){var h=_.y(),a=Y.l3v(h);o.s(a)}this.q3v_1=o}function yu(t,n){this.t3v_1=t,this.u3v_1=n}function bu(t){this.q3p_1=t}function $u(){}function ku(t){var n=Yn();return xu(n,t),n.y2()}function xu(t,n){if(n instanceof cu)t.s(n.g3v_1);else if(n instanceof bu)for(var i=n.q3p_1.v();i.w();)xu(t,i.y());else if(!(n instanceof fu))if(n instanceof vu)xu(t,n.i3v_1);else if(n instanceof yu){xu(t,n.t3v_1);for(var e=n.u3v_1.v();e.w();)xu(t,e.y())}else n instanceof gu&&xu(t,n.p3v_1)}function qu(t,n){this.v3v_1=t,this.w3v_1=n}function Su(){}function Cu(t){this.x3v_1=t}function Eu(t,n){this.y3v_1=t,this.z3v_1=n}function Ou(t,n,i){this.a3w_1=t,this.b3w_1=n,this.c3w_1=i}function ju(t){this.d3w_1=t}function Tu(t){this.e3w_1=t}function Au(t,n,i){if(this.f3w_1=t,this.g3w_1=n,this.h3w_1=i,!(this.g3w_1>=0)){var e="The minimum number of digits ("+this.g3w_1+") is negative";throw un(sn(e))}if(!(this.g3w_1<=9)){var r="The minimum number of digits ("+this.g3w_1+") exceeds the length of an Int";throw un(sn(r))}}function zu(t,n){if(this.i3w_1=t,this.j3w_1=n,!(this.j3w_1>=0)){var i="The minimum number of digits ("+this.j3w_1+") is negative";throw un(sn(i))}if(!(this.j3w_1<=9)){var e="The minimum number of digits ("+this.j3w_1+") exceeds the length of an Int";throw un(sn(e))}}function Iu(t){this.k3w_1=t}function Du(t,n,i,e){this.l3w_1=t,this.m3w_1=n,this.n3w_1=i,this.o3w_1=e;var r=this.m3w_1;if(!(1<=r&&r<=9)){var s="The minimum number of digits ("+this.m3w_1+") is not in range 1..9";throw un(sn(s))}var u=this.m3w_1,o=this.n3w_1;if(!(u<=o&&o<=9)){var _="The maximum number of digits ("+this.n3w_1+") is not in range "+this.m3w_1+"..9";throw un(sn(_))}}function Mu(t){this.p3w_1=t}function Nu(t,n,i,e){if(Pu.call(this,t==n?t:null,e),this.s3w_1=t,this.t3w_1=n,this.u3w_1=i,null!=this.s3w_1&&!ui(1,9).ih(this.s3w_1)){var r="Invalid length for field "+this.w3w_1+": "+this.a();throw un(sn(r))}}function Ru(t){Pu.call(this,t.length,"the predefined string "+t),this.a3x_1=t}function Pu(t,n){this.v3w_1=t,this.w3w_1=n}function Lu(){}function Fu(t){this.c3x_1=t}function Uu(t){this.d3x_1=t}function Hu(t){this.e3x_1=t}function Vu(t){this.f3x_1=t}function Bu(t,n,i){var e=t.w3u(n,i);return null==e?null:new Vu(e)}function Wu(t,n,i,e,r){if(r=r!==dn&&r,Pu.call(this,t==n?t:null,e),this.i3x_1=t,this.j3x_1=n,this.k3x_1=i,this.l3x_1=r,null!=this.a()&&!ui(1,9).ih(this.a())){var s="Invalid length for field "+this.w3w_1+": "+this.a();throw un(sn(s))}}function Yu(t,n){this.m3x_1=t,this.n3x_1=n}function Gu(){}function Ku(t,n,i,e,r){return e=e===dn?0:e,r===dn?function(t,n,i,e){var r=Yn(),s=_i([new Xu(i,t,e)]);t:for(;;){var u=hi(s);if(null==u)break t;var o=u,_=o.q3x_1.m3m(),h=o.s3x_1,a=o.r3x_1;n:{new to(t).t3x_1;var l=0,c=a.u3x_1.n()-1|0;if(l<=c)do{var f=l;l=l+1|0;var v=a.u3x_1.h1(f).w3x(_,n,h);if("number"!=typeof v){if(v instanceof Yu){var d=v;r.s(d);break n}var w="Unexpected parse result: "+sn(v);throw zn(sn(w))}h=v}while(l<=c);if(a.v3x_1.d1()){if(h===Ln(n))return _;var p=new Yu(h,Zu);r.s(p)}else{var m=a.v3x_1.n()-1|0;if(0<=m)do{var g=m;m=m+-1|0,s.s(new Xu(_,a.v3x_1.h1(g),h))}while(0<=m)}}}if(r.n()>1){var y=new Ju(Qu);ai(r,y)}throw new io(r)}(t,n,i,e):(null==r?null:new to(r)).x3x.call(new to(t),n,i,e)}function Xu(t,n,i){this.q3x_1=t,this.r3x_1=n,this.s3x_1=i}function Ju(t){this.y3x_1=t}function Zu(){return"There is more input to consume"}function Qu(t,n){var i=n.m3x_1,e=t.m3x_1;return li(i,e)}function to(t){this.t3x_1=t}function no(t,n){this.u3x_1=t,this.v3x_1=n}function io(t){fi(function(t){if(1===t.n())return"Position "+t.h1(0).m3x_1+": "+t.h1(0).n3x_1();var n=vi(Ht(33,t.n()));return di(t,n,", ","Errors: ",dn,dn,dn,uo).toString()}(t),this),hn(this,io)}function eo(t){var n=new no(Xn(),Xn());if(!t.d1())for(var i=t.u1(t.n());i.p1();)n=ro(i.q1(),n);return so(n,Xn())}function ro(t,n){var i;if(t.v3x_1.d1())i=new no(wi(t.u3x_1,n.u3x_1),n.v3x_1);else{for(var e=t.v3x_1,r=Mn(ni(e,10)),s=e.v();s.w();){var u=ro(s.y(),n);r.s(u)}i=new no(t.u3x_1,r)}return i}function so(t,n){for(var i=Yn(),e=null,r=pi(n),s=t.u3x_1.v();s.w();){var u=s.y();u instanceof po?null!=e?e.z(u.z3x_1):e=pi(u.z3x_1):u instanceof bo?r.s(u):(null!=e&&(i.s(new po(e)),e=null),i.s(u))}for(var o=t.v3x_1,_=Yn(),h=o.v();h.w();){var a,l=so(h.y(),r);if(l.u3x_1.d1()){var c=l.v3x_1;a=c.d1()?Kn(l):c}else a=Kn(l);mi(_,a)}var f,v=_.d1()?Kn(new no(r,Xn())):_;if(null==e)f=new no(i,v);else{var d;t:if(In(v,si)&&v.d1())d=!0;else{for(var w=v.v();w.w();){var p=w.y(),m=gi(p.u3x_1);if(!0===(null==m?null:m instanceof po)){d=!1;break t}}d=!0}if(d)i.s(new po(e)),f=new no(i,v);else{for(var g=Mn(ni(v,10)),y=v.v();y.w();){var b=y.y(),$=gi(b.u3x_1),k=new no($ instanceof po?wi(Kn(new po(wi(e,$.z3x_1))),yi(b.u3x_1,1)):null==$?Kn(new po(e)):wi(Kn(new po(e)),b.u3x_1),b.v3x_1);g.s(k)}f=new no(i,g)}}return f}function uo(t){return"position "+t.m3x_1+": '"+t.n3x_1()+"'"}function oo(t,n,i,e,r,s){var u=(null==t?1:t)+((s=s!==dn&&s)?1:0)|0,o=null==n?null:s?n+1|0:n,_=null==o?bi.MAX_VALUE:o,h=null==i?0:i,a=Math.min(_,h);if(u>=a)return $o(s,e,r,u,_);var l,c=$o(s,e,r,u,u),f=u;if(f_){var d=new go($i(" ",h-_|0));l=eo(Rn([new no(Kn(d),Xn()),c]))}else l=h===_?c:new no(Xn(),Rn([$o(s,e,r,h+1|0,_),c]));return l}function _o(t,n){t=t===dn?Yn():t,n=n!==dn&&n,this.c3y_1=t,this.d3y_1=n}function ho(t){this.e3y_1=t}function ao(t){for(var n=t.c3y_1.v();n.w();)ao(n.y().ve());for(var i=Yn(),e=t.c3y_1.v();e.w();){var r=e.y(),s=r.ue(),u=r.ve();if(u.d3y_1||1!==u.c3y_1.n())i.s(ei(s,u));else{var o=ri(u.c3y_1),_=o.ue(),h=o.ve();i.s(ei(s+_,h))}}t.c3y_1.b1();var a=new ho(co),l=ki(i,a);t.c3y_1.z(l)}function lo(t){return function(n){var i=n.se_1;return li(i,t)}}function co(t,n){var i=t.se_1,e=n.se_1;return li(i,e)}function fo(t,n,i){this.f3y_1=n,this.g3y_1=i,this.h3y_1=new _o;for(var e=t.v();e.w();){var r=e.y();if(!(Ln(r)>0)){var s="Found an empty string in "+this.g3y_1;throw un(sn(s))}for(var u=this.h3y_1,o=0,_=r.length;o<_;){var h=Jn(r,o);o=o+1|0;var a,l=u.c3y_1,c=An(h),f=l.n(),v=qi(l,0,f,lo(c));if(v<0){var d=new _o;u.c3y_1.r1((0|-v)-1|0,ei(An(h),d)),a=d}else a=u.c3y_1.h1(v).te_1;u=a}if(u.d3y_1)throw un(sn("The string '"+r+"' was passed several times"));u.d3y_1=!0}ao(this.h3y_1)}function vo(t){for(var n=t.z3x_1,i=Mn(ni(n,10)),e=n.v();e.w();){var r=e.y(),s=r.a(),u=(null==s?"at least one digit":s+" digits")+" for "+r.w3w_1;i.s(u)}var o=i;return t.b3y_1?"a number with at least "+t.a3y_1+" digits: "+o:"a number with exactly "+t.a3y_1+" digits: "+o}function wo(t,n,i,e){return function(){return"Can not interpret the string '"+t+"' as "+n.z3x_1.h1(i).w3w_1+": "+e.b3x()}}function po(t){this.z3x_1=t;for(var n=0,i=this.z3x_1.v();i.w();){var e=n,r=i.y().a();n=e+(null==r?1:r)|0}this.a3y_1=n;var s,u,o;t:{var _=this.z3x_1;if(In(_,si)&&_.d1())s=!1;else{for(var h=_.v();h.w();)if(null==h.y().a()){s=!0;break t}s=!1}}this.b3y_1=s;t:{var a=this.z3x_1;if(In(a,si)&&a.d1())u=!0;else{for(var l=a.v();l.w();){var c=l.y().a();if(!((null==c?bi.MAX_VALUE:c)>0)){u=!1;break t}}u=!0}}if(!u)throw un(sn("Failed requirement."));var f=this.z3x_1;if(In(f,si)&&f.d1())o=0;else{for(var v=0,d=f.v();d.w();)null==d.y().a()&&Ci(v=v+1|0);o=v}if(!(o<=1)){for(var w=this.z3x_1,p=Yn(),m=w.v();m.w();){var g=m.y();null==g.a()&&p.s(g)}for(var y=Mn(ni(p,10)),b=p.v();b.w();){var $=b.y().w3w_1;y.s($)}throw un(sn("At most one variable-length numeric field in a row is allowed, but got several: "+y+". Parsing is undefined: for example, with variable-length month number and variable-length day of month, '111' can be parsed as Jan 11th or Nov 1st."))}}function mo(t,n,i,e){return function(){var r=sn(xi(n,i,1+(i+e|0)|0));return"Expected "+t.i3y_1+" but got "+r}}function go(t){this.i3y_1=t;var n=this.i3y_1;if(!(Ln(n)>0))throw un(sn("Empty string is not allowed"));if(Zn(Jn(this.i3y_1,0))){var i="String '"+this.i3y_1+"' starts with a digit";throw un(sn(i))}if(Zn(Jn(this.i3y_1,this.i3y_1.length-1|0))){var e="String '"+this.i3y_1+"' ends with a digit";throw un(sn(e))}}function yo(t,n,i){this.j3y_1=t,this.k3y_1=n,this.l3y_1=i}function bo(t){this.m3y_1=t}function $o(t,n,i,e,r){if(!(r>=(1+(t?1:0)|0)))throw zn(sn("Check failed."));var s=Yn();return t&&s.s(new go("-")),s.s(new po(Kn(new Wu(e-(t?1:0)|0,r-(t?1:0)|0,n,i,t)))),new no(s.y2(),Xn())}function ko(){return Z||(Z=!0,J=new Int32Array([1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9])),J}function xo(t,n){if(this.w3r_1=t,this.x3r_1=n,!(this.x3r_1>=0)){var i="Digits must be non-negative, but was "+this.x3r_1;throw un(sn(i))}}function qo(){Q=this,this.o3y_1=Ii("kotlinx.datetime.Instant",zi())}function So(){tt=this,this.q3y_1=Ii("kotlinx.datetime.LocalDate",zi())}function Co(){nt=this,this.u3y_1=Ii("kotlinx.datetime.LocalDateTime",zi())}function Eo(){it=this,this.y3y_1=Ii("kotlinx.datetime.LocalTime",zi())}function Oo(){et=this,this.c3z_1=Ii("kotlinx.datetime.UtcOffset",zi())}function jo(){rt=this,this.f3z_1=Ii("kotlinx.datetime.TimeZone",zi())}function To(){st=this,this.i3z_1=Ii("kotlinx.datetime.FixedOffsetTimeZone",zi())}function Ao(){if(ft)return $n;ft=!0,ut=new zo("MONDAY",0),ot=new zo("TUESDAY",1),_t=new zo("WEDNESDAY",2),ht=new zo("THURSDAY",3),at=new zo("FRIDAY",4),lt=new zo("SATURDAY",5),ct=new zo("SUNDAY",6)}function zo(t,n){jn.call(this,t,n)}function Io(t){return ke(t.value())}function Do(){return Ao(),ut}function Mo(){return Ao(),ot}function No(){return Ao(),_t}function Ro(){return Ao(),ht}function Po(){return Ao(),at}function Lo(){return Ao(),lt}function Fo(){return Ao(),ct}function Uo(){dt=this;var t=Vt.ofEpochSecond(s.f6(),999999999);this.i3k_1=new Vo(t);var n=Vt.ofEpochSecond(u.f6(),0);this.j3k_1=new Vo(n),this.k3k_1=new Vo(Vt.MIN),this.l3k_1=new Vo(Vt.MAX)}function Ho(){return null==dt&&new Uo,dt}function Vo(t){Ho(),this.e3o_1=t}function Bo(t){return W_(t,"DateTimeParseException")}function Wo(t){return W_(t,"DateTimeException")}function Yo(){wt=this,this.r3y_1=new Zo(Yt.MIN),this.s3y_1=new Zo(Yt.MAX)}function Go(){return null==wt&&new Yo,wt}function Ko(){pt=this,this.m3k_1=vr()}function Xo(){return null==pt&&new Ko,pt}function Jo(t,n,i){return function(t,n,i,e){var r;try{r=Yt.of(t,n,i)}catch(t){if(t instanceof Error){var s=t;if(Wo(s))throw Bi(s);throw s}throw t}return Zo.call(e,r),e}(t,n,i,_n(nn(Zo)))}function Zo(t){Go(),this.o3k_1=t}function Qo(t,n){return function(t,n,i){var e=Gt.of(t.o3k_1,n.a3o_1);return r_.call(i,e),i}(t,n,_n(nn(r_)))}function t_(){mt=this,this.v3y_1=new r_(Gt.MIN),this.w3y_1=new r_(Gt.MAX)}function n_(){return null==mt&&new t_,mt}function i_(){gt=this,this.s3k_1=Pr()}function e_(){return null==gt&&new i_,gt}function r_(t){n_(),this.t3z_1=t}function s_(t,n,i,e){return function(t,n,i,e,r){var s;i=i===dn?0:i,e=e===dn?0:e;try{s=Kt.of(t,n,i,e)}catch(t){if(t instanceof Error){var u=t;if(Wo(u))throw Bi(u);throw u}throw t}return h_.call(r,s),r}(t,n,i,e,_n(nn(h_)))}function u_(){yt=this,this.z3y_1=new h_(Kt.MIN),this.a3z_1=new h_(Kt.MAX)}function o_(){return null==yt&&new u_,yt}function __(){}function h_(t){o_(),this.a3o_1=t}function a_(){if(It)return $n;It=!0,$t=new l_("JANUARY",0),kt=new l_("FEBRUARY",1),xt=new l_("MARCH",2),qt=new l_("APRIL",3),St=new l_("MAY",4),Ct=new l_("JUNE",5),Et=new l_("JULY",6),Ot=new l_("AUGUST",7),jt=new l_("SEPTEMBER",8),Tt=new l_("OCTOBER",9),At=new l_("NOVEMBER",10),zt=new l_("DECEMBER",11)}function l_(t,n){jn.call(this,t,n)}function c_(){return a_(),$t}function f_(){return a_(),kt}function v_(){return a_(),xt}function d_(){return a_(),qt}function w_(){return a_(),St}function p_(){return a_(),Ct}function m_(){return a_(),Et}function g_(){return a_(),Ot}function y_(){return a_(),jt}function b_(){return a_(),Tt}function $_(){return a_(),At}function k_(){return a_(),zt}function x_(t,n){var i;if(n instanceof Xt)i=E_(new R_(n));else if(n.rules().isFixedOffset()){var e=n.normalized();i=new j_(new R_(e instanceof Xt?e:Sn()),n)}else i=new C_(n);return i}function q_(){Mt=this,this.g3z_1=E_(new R_(Xt.UTC))}function S_(){return null==Mt&&new q_,Mt}function C_(t){S_(),this.a40_1=t}function E_(t){return function(t,n){return j_.call(n,t,t.c3o_1),n}(t,_n(nn(j_)))}function O_(){}function j_(t,n){C_.call(this,n),this.c40_1=t}function T_(t,n){var i;try{i=new R_(t.a40_1.rules().offsetOfInstant(n.e3o_1))}catch(t){if(t instanceof Error){var e=t;if(function(t){return W_(t,"ArithmeticException")}(e))throw Ee(e);throw e}throw t}return i}function A_(){V_();var t=Nt;return En("isoFormat",0,Vn,(function(){return A_()}),null),t.j2()}function z_(){V_();var t=Rt;return En("isoBasicFormat",0,Vn,(function(){return z_()}),null),t.j2()}function I_(){V_();var t=Pt;return En("fourDigitsFormat",0,Vn,(function(){return I_()}),null),t.j2()}function D_(){Lt=this,this.d3z_1=new R_(Xt.UTC)}function M_(){return null==Lt&&new D_,Lt}function N_(){}function R_(t){M_(),this.c3o_1=t}function P_(t,n,i){var e;t=t===dn?null:t,n=n===dn?null:n,i=i===dn?null:i,V_();try{var r;if(null!=t){var s=null==n?0:n;r=new R_(Xt.ofHoursMinutesSeconds(t,s,null==i?0:i))}else if(null!=n){var u=n/60|0,o=n%60|0;r=new R_(Xt.ofHoursMinutesSeconds(u,o,null==i?0:i))}else r=new R_(Xt.ofTotalSeconds(null==i?0:i));e=r}catch(t){if(t instanceof Error){var _=t;throw Wo(_)?Bi(_):_}throw t}return e}function L_(t,n){var i;V_();try{i=n.parse(sn(t)).get(Zt.OFFSET_SECONDS)}catch(t){if(t instanceof Error){var e=t;if(Bo(e))throw qe(e);if(Wo(e))throw qe(e);throw e}throw t}return P_(dn,dn,i)}function F_(){return V_(),(new Qt).parseCaseInsensitive().appendOffsetId().toFormatter(tn.STRICT)}function U_(){return V_(),(new Qt).parseCaseInsensitive().appendOffset("+HHmmss","Z").toFormatter(tn.STRICT)}function H_(){return V_(),(new Qt).parseCaseInsensitive().appendOffset("+HHMM","+0000").toFormatter(tn.STRICT)}function V_(){Ut||(Ut=!0,Nt=Bn(F_),Rt=Bn(U_),Pt=Bn(H_))}function B_(t,n){var i=t.gb(n);if(t.sb(i).ca(new gn(0,0))<0&&t.sb(n).ca(new gn(0,0))>=0)throw Yi("Addition overflows a long: "+t.toString()+" + "+n.toString());return i}function W_(t,n){return t.name==n}return rn(be,"System",en),rn(Ce,"DateTimeFormatException",vn,fn,dn,(function t(){var n,i=(n=_n(nn(Ce)),on(n),Ce.call(n),n);return hn(i,t),i})),rn(Oe,"DateTimeArithmeticException",vn,mn,dn,(function t(){var n,i=(n=_n(nn(Oe)),wn(n),Oe.call(n),n);return hn(i,t),i})),rn(Te,"IllegalTimeZoneException",vn,fn,dn,(function t(){var n,i=(n=_n(nn(Te)),on(n),Te.call(n),n);return hn(i,t),i})),rn(Jr,"TimeFieldContainer",Tn),rn($s,"UtcOffsetFieldContainer",Tn),rn(Ie,"DateTimeComponentsContents",vn,dn,[Jr,$s]),rn(Ke,"Companion",en),rn(Xe,"Formats",en),rn(Je,"DateTimeComponents",vn),rn(cr,"AbstractDateTimeFormatBuilder",Tn),rn(ur,"WithDate",Tn),rn(Sr,"AbstractWithDateBuilder",Tn,dn,[ur]),rn(or,"WithTime",Tn),rn(es,"AbstractWithTimeBuilder",Tn,dn,[or]),rn(Vr,"AbstractWithDateTimeBuilder",Tn,dn,[Sr,es,or,ur]),rn(_r,"WithUtcOffset",Tn),rn(Ts,"AbstractWithOffsetBuilder",Tn,dn,[_r]),rn(Ze,"Builder",vn,dn,[cr,Vr,Ts,_r,or,ur]),rn(nr,"AbstractDateTimeFormat",vn),rn(Qe,"DateTimeComponentsFormat",vn,nr),rn(tr,"TwoDigitNumber",vn),rn(er,"Padding",vn,jn),rn(dr,"IncompleteLocalDate",vn,dn,dn,dr),rn(wr,"Companion",en),rn(mr,"MonthNames",vn),rn(gr,"Companion",en),rn(br,"DayOfWeekNames",vn),rn($r,"Companion",en),rn(kr,"Builder",vn,dn,[cr,Sr]),rn(xr,"LocalDateFormat",vn,nr),rn(tu,"SignedIntFieldFormatDirective",vn),rn(Cr,"YearDirective",vn,tu),rn(nu,"UnsignedIntFieldFormatDirective",vn),rn(Er,"MonthDirective",vn,nu),rn(ru,"NamedUnsignedIntFieldFormatDirective",vn),rn(Or,"MonthNameDirective",vn,ru),rn(jr,"DayDirective",vn,nu),rn(Tr,"DayOfWeekDirective",vn,ru),rn(Ar,"DateFields",en),rn(Lr,"Companion",en),rn(Fr,"Builder",vn,dn,[cr,Vr]),rn(Ur,"LocalDateTimeFormat",vn,nr),rn(Hr,"IncompleteLocalDateTime",vn,dn,[Jr],Hr),rn(Zr,"IncompleteLocalTime",vn,dn,[Jr],Zr),rn(Qr,"AmPmMarker",vn,jn),rn(ts,"Companion",en),rn(ns,"Builder",vn,dn,[cr,es]),rn(is,"LocalTimeFormat",vn,nr),rn(rs,"HourDirective",vn,nu),rn(ss,"MinuteDirective",vn,nu),rn(us,"SecondDirective",vn,nu),rn(os,"Companion",en),rn(su,"DecimalFractionFieldFormatDirective",vn),rn(hs,"FractionalSecondDirective",vn,su),rn(as,"TimeFields",en),rn(ks,"IncompleteUtcOffset",vn,dn,[$s],ks),rn(xs,"UtcOffsetWholeHoursDirective",vn,nu),rn(qs,"Companion",en),rn(Ss,"Builder",vn,dn,[cr,Ts]),rn(Cs,"UtcOffsetFormat",vn,nr),rn(Es,dn,vn),rn(Os,"OffsetFields",en),rn(As,"UtcOffsetMinuteOfHourDirective",vn,nu),rn(zs,"UtcOffsetSecondOfMinuteDirective",vn,nu),rn(Qs,"AppendableFormatStructure",vn,dn,dn,Qs),rn(iu,"AssignableString",vn),rn(au,"AbstractFieldSpec",vn),rn(uu,"GenericFieldSpec",vn,au),rn(hu,"Accessor",Tn),rn(ou,"PropertyAccessor",vn,dn,[hu]),rn(_u,"UnsignedFieldSpec",vn,au),rn(bu,"ConcatenatedFormatStructure",vn),rn(lu,"CachedFormatStructure",vn,bu),rn($u,"NonConcatenatedFormatStructure",Tn),rn(cu,"BasicFormatStructure",vn,dn,[$u]),rn(fu,"ConstantFormatStructure",vn,dn,[$u]),rn(vu,"SignedFormatStructure",vn,dn,[$u]),rn(du,"Companion",en),rn(wu,"PropertyWithDefault",vn),rn(gu,"OptionalFormatStructure",vn,dn,[$u]),rn(yu,"AlternativesParsingFormatStructure",vn,dn,[$u]),rn(qu,"ComparisonPredicate",vn),rn(Su,"Truth",en),rn(Cu,"ConjunctionPredicate",vn),rn(Eu,"SpacePaddedFormatter",vn),rn(Ou,"SignedFormatter",vn),rn(ju,"ConditionalFormatter",vn),rn(Tu,"ConcatenatedFormatter",vn),rn(Au,"SignedIntFormatterStructure",vn),rn(zu,"UnsignedIntFormatterStructure",vn),rn(Iu,"StringFormatterStructure",vn),rn(Du,"DecimalFractionFormatterStructure",vn),rn(Mu,"ConstantStringFormatterStructure",vn),rn(Pu,"NumberConsumer",vn),rn(Nu,"FractionPartConsumer",vn,Pu),rn(Ru,"ConstantNumberConsumer",vn,Pu),rn(Lu,"ExpectedInt",en),rn(Fu,"TooManyDigits",vn),rn(Uu,"TooFewDigits",vn),rn(Hu,"WrongConstant",vn),rn(Vu,"Conflicting",vn),rn(Wu,"UnsignedIntConsumer",vn,Pu),rn(Yu,"ParseError",vn),rn(Gu,"Companion",en),rn(Xu,"ParserState",vn),rn(Ju,"sam$kotlin_Comparator$0",vn),rn(to,"Parser",vn),rn(no,"ParserStructure",vn),rn(io,"ParseException",vn,ci),rn(_o,"TrieNode",vn,dn,dn,_o),rn(ho,"sam$kotlin_Comparator$0",vn),rn(fo,"StringSetParserOperation",vn),rn(po,"NumberSpanParserOperation",vn),rn(go,"PlainStringParserOperation",vn),rn(yo,"SignParser",vn),rn(bo,"UnconditionalModification",vn),rn(xo,"DecimalFraction",vn,dn,[Ai]),rn(qo,"InstantIso8601Serializer",en,dn,[Di]),rn(So,"LocalDateIso8601Serializer",en,dn,[Di]),rn(Co,"LocalDateTimeIso8601Serializer",en,dn,[Di]),rn(Eo,"LocalTimeIso8601Serializer",en,dn,[Di]),rn(Oo,"UtcOffsetSerializer",en,dn,[Di]),rn(jo,"TimeZoneSerializer",en,dn,[Di]),rn(To,"FixedOffsetTimeZoneSerializer",en,dn,[Di]),rn(zo,"DayOfWeek",vn,jn),rn(Uo,"Companion",en),rn(Vo,"Instant",vn,dn,[Ai],dn,dn,{0:function(){return null==Q&&new qo,Q}}),rn(Yo,"Companion",en),rn(Ko,"Formats",en),rn(Zo,"LocalDate",vn,dn,[Ai],dn,dn,{0:function(){return null==tt&&new So,tt}}),rn(t_,"Companion",en),rn(i_,"Formats",en),rn(r_,"LocalDateTime",vn,dn,[Ai],dn,dn,{0:function(){return null==nt&&new Co,nt}}),rn(u_,"Companion",en),rn(__,"Formats",en),rn(h_,"LocalTime",vn,dn,[Ai],dn,dn,{0:function(){return null==it&&new Eo,it}}),rn(l_,"Month",vn,jn),rn(q_,"Companion",en),rn(C_,"TimeZone",vn,dn,dn,dn,dn,{0:function(){return null==rt&&new jo,rt}}),rn(O_,"Companion",en),rn(j_,"FixedOffsetTimeZone",vn,C_,dn,dn,dn,{0:function(){return null==st&&new To,st}}),rn(D_,"Companion",en),rn(N_,"Formats",en),rn(R_,"UtcOffset",vn,dn,dn,dn,dn,{0:function(){return null==et&&new Oo,et}}),nn(be).h3k=function(){return Ho().h3k()},nn(Ie).x3k=function(t){this.t3k_1.a3l_1=t},nn(Ie).r3k=function(){return this.t3k_1.a3l_1},nn(Ie).c3l=function(t){this.t3k_1.b3l_1=t},nn(Ie).d3l=function(){return this.t3k_1.b3l_1},nn(Ie).e3l=function(t){this.t3k_1.z3k_1=t},nn(Ie).q3k=function(){return this.t3k_1.z3k_1},nn(Ie).f3l=function(t){this.t3k_1.y3k_1=t},nn(Ie).p3k=function(){return this.t3k_1.y3k_1},nn(Ie).g3l=function(t){this.u3k_1.j3l_1=t},nn(Ie).n3l=function(){return this.u3k_1.j3l_1},nn(Ie).o3l=function(t){this.u3k_1.o3l(t)},nn(Ie).p3l=function(){return this.u3k_1.p3l()},nn(Ie).q3l=function(t){this.u3k_1.h3l_1=t},nn(Ie).r3l=function(){return this.u3k_1.h3l_1},nn(Ie).s3l=function(t){this.u3k_1.i3l_1=t},nn(Ie).t3l=function(){return this.u3k_1.i3l_1},nn(Ie).u3l=function(t){this.u3k_1.k3l_1=t},nn(Ie).v3l=function(){return this.u3k_1.k3l_1},nn(Ie).w3l=function(t){this.u3k_1.m3l_1=t},nn(Ie).x3l=function(){return this.u3k_1.m3l_1},nn(Ie).y3l=function(t){this.u3k_1.l3l_1=t},nn(Ie).z3l=function(){return this.u3k_1.l3l_1},nn(Ie).a3m=function(t){this.v3k_1.b3m_1=t},nn(Ie).f3m=function(){return this.v3k_1.b3m_1},nn(Ie).g3m=function(t){this.v3k_1.d3m_1=t},nn(Ie).h3m=function(){return this.v3k_1.d3m_1},nn(Ie).i3m=function(t){this.v3k_1.e3m_1=t},nn(Ie).j3m=function(){return this.v3k_1.e3m_1},nn(Ie).k3m=function(t){this.v3k_1.c3m_1=t},nn(Ie).l3m=function(){return this.v3k_1.c3m_1},nn(Ie).m3m=function(){return new Ie(this.t3k_1.m3m(),this.u3k_1.m3m(),this.v3k_1.m3m(),this.w3k_1)},nn(Ie).equals=function(t){return!!(t instanceof Ie&&t.t3k_1.equals(this.t3k_1)&&t.u3k_1.equals(this.u3k_1)&&t.v3k_1.equals(this.v3k_1))&&t.w3k_1==this.w3k_1},nn(Ie).hashCode=function(){var t=this.t3k_1.hashCode()^this.u3k_1.hashCode()^this.v3k_1.hashCode(),n=this.w3k_1,i=null==n?null:yn(n);return t^(null==i?0:i)},nn(Ke).e3n=function(t){var n=new Ze(new Qs);return t(n),new Qe(n.y2())},nn(Je).f3l=function(t){var n=this.i3n_1;return En("year",1,Cn,(function(t){return t.p3k()}),(function(t,n){return t.f3l(n)})),n.set(t),$n},nn(Je).p3k=function(){var t=this.i3n_1;return En("year",1,Cn,(function(t){return t.p3k()}),(function(t,n){return t.f3l(n)})),t.get()},nn(Je).x3l=function(){return this.h3n_1.u3k_1.m3l_1},nn(Je).v3n=function(){return this.h3n_1.v3k_1.v3n()},nn(Je).w3n=function(){return this.h3n_1.u3k_1.w3n()},nn(Je).x3n=function(){var t,n=this.v3n(),i=this.w3n(),e=this.h3n_1.t3k_1.m3m();e.y3k_1=qr(e.y3k_1,"year")%1e4|0;try{var r=function(t,n){if(n.equals(new gn(-1,-1))){if(Wi(),t.equals(new gn(0,-2147483648)))throw Yi("Multiplication overflows a long: "+t.toString()+" * "+n.toString());return t.lb()}if(n.equals(new gn(0,0)))return new gn(0,0);if(n.equals(new gn(1,0)))return t;var i=t.ba(n);if(!i.aa(n).equals(t))throw Yi("Multiplication overflows a long: "+t.toString()+" * "+n.toString());return i}(xn(kn(this.p3k())/1e4|0),H),s=xn(e.y3n().z3n()),u=V,o=s.ba(xn(u)),_=i.b3o(),h=o.gb(xn(_)),a=n.d3o();t=B_(r,h.hb(xn(a)))}catch(t){if(t instanceof qn)throw Se("The parsed date is outside the range representable by Instant",t);throw t}var l=t;if(l.ca(Ho().k3k_1.f3o())<0||l.ca(Ho().l3k_1.f3o())>0)throw xe("The parsed date is outside the range representable by Instant");var c=Ho(),f=this.x3l();return c.g3o(l,null==f?0:f)},nn(Ze).i3o=function(){return this.h3o_1},nn(Ze).j3o=function(t){this.h3o_1.l3o(t)},nn(Ze).m3o=function(t){this.h3o_1.l3o(t)},nn(Ze).n3o=function(){return new Ze(new Qs)},nn(Qe).g3p=function(){return this.f3p_1},nn(Qe).h3p=function(t){return new Je(t)},nn(Qe).i3p=function(t){return this.h3p(t instanceof Ie?t:Sn())},nn(Qe).j3p=function(){return ze()},nn(nr).k3p=function(t){var n;try{n=Ku(this.g3p().p3p(),t,this.j3p())}catch(n){if(n instanceof io)throw Se("Failed to parse value from '"+t+"'",n);throw n}var i=n;try{return this.i3p(i)}catch(n){if(n instanceof fn){var e=n,r=e.message;throw Se(null==r?"The value parsed from '"+t+"' is invalid":r+" (when parsing '"+t+"')",e)}throw n}},nn(dr).f3l=function(t){this.y3k_1=t},nn(dr).p3k=function(){return this.y3k_1},nn(dr).e3l=function(t){this.z3k_1=t},nn(dr).q3k=function(){return this.z3k_1},nn(dr).x3k=function(t){this.a3l_1=t},nn(dr).r3k=function(){return this.a3l_1},nn(dr).c3l=function(t){this.b3l_1=t},nn(dr).d3l=function(){return this.b3l_1},nn(dr).y3n=function(){var t=Jo(qr(this.y3k_1,"year"),qr(this.z3k_1,"monthNumber"),qr(this.a3l_1,"dayOfMonth")),n=this.b3l_1;if(null==n);else if(n!==$e(t.r3p()))throw xe("Can not create a LocalDate from the given input: the day of week is "+ke(n)+" but the date is "+t+", which is a "+t.r3p());return t},nn(dr).m3m=function(){return new dr(this.y3k_1,this.z3k_1,this.a3l_1,this.b3l_1)},nn(dr).equals=function(t){return!!(t instanceof dr&&this.y3k_1==t.y3k_1&&this.z3k_1==t.z3k_1&&this.a3l_1==t.a3l_1)&&this.b3l_1==t.b3l_1},nn(dr).hashCode=function(){var t=this.y3k_1,n=null==t?null:Nn(t),i=Ht(null==n?0:n,31),e=this.z3k_1,r=null==e?null:Nn(e),s=i+Ht(null==r?0:r,31)|0,u=this.a3l_1,o=null==u?null:Nn(u),_=s+Ht(null==o?0:o,31)|0,h=this.b3l_1,a=null==h?null:Nn(h);return _+Ht(null==a?0:a,31)|0},nn(dr).toString=function(){var t=this.y3k_1,n=sn(null==t?"??":t),i=this.z3k_1,e=sn(null==i?"??":i),r=this.a3l_1,s=sn(null==r?"??":r),u=this.b3l_1;return n+"-"+e+"-"+s+" (day of week is "+sn(null==u?"??":u)+")"},nn(mr).toString=function(){return Fn(this.s3p_1,", ","MonthNames(",")",dn,dn,((t=function(t){return sn(t)}).callableName="toString",t));var t},nn(mr).equals=function(t){return t instanceof mr&&Un(this.s3p_1,t.s3p_1)},nn(mr).hashCode=function(){return Nn(this.s3p_1)},nn(br).toString=function(){return Fn(this.t3p_1,", ","DayOfWeekNames(",")",dn,dn,((t=function(t){return sn(t)}).callableName="toString",t));var t},nn(br).equals=function(t){return t instanceof br&&Un(this.t3p_1,t.t3p_1)},nn(br).hashCode=function(){return Nn(this.t3p_1)},nn($r).u3p=function(t){var n=new kr(new Qs);return t(n),new xr(n.y2())},nn(kr).i3o=function(){return this.v3p_1},nn(kr).q3o=function(t){return this.v3p_1.l3o(t)},nn(kr).n3o=function(){return new kr(new Qs)},nn(xr).g3p=function(){return this.w3p_1},nn(xr).x3p=function(t){return t.y3n()},nn(xr).i3p=function(t){return this.x3p(t instanceof dr?t:Sn())},nn(xr).j3p=function(){return Rr(),p},nn(Cr).equals=function(t){return!!(t instanceof Cr&&this.h3q_1.equals(t.h3q_1))&&this.i3q_1===t.i3q_1},nn(Cr).hashCode=function(){return Ht(this.h3q_1.hashCode(),31)+Hn(this.i3q_1)|0},nn(Er).equals=function(t){return t instanceof Er&&this.u3q_1.equals(t.u3q_1)},nn(Er).hashCode=function(){return this.u3q_1.hashCode()},nn(Or).equals=function(t){return t instanceof Or&&Un(this.c3r_1.s3p_1,t.c3r_1.s3p_1)},nn(Or).hashCode=function(){return Nn(this.c3r_1.s3p_1)},nn(jr).equals=function(t){return t instanceof jr&&this.k3r_1.equals(t.k3r_1)},nn(jr).hashCode=function(){return this.k3r_1.hashCode()},nn(Tr).equals=function(t){return t instanceof Tr&&Un(this.o3r_1.t3p_1,t.o3r_1.t3p_1)},nn(Tr).hashCode=function(){return Nn(this.o3r_1.t3p_1)},nn(Lr).p3r=function(t){var n=new Fr(new Qs);return t(n),new Ur(n.y2())},nn(Fr).i3o=function(){return this.q3r_1},nn(Fr).j3o=function(t){this.q3r_1.l3o(t)},nn(Fr).n3o=function(){return new Fr(new Qs)},nn(Ur).g3p=function(){return this.r3r_1},nn(Ur).s3r=function(t){return t.v3r()},nn(Ur).i3p=function(t){return this.s3r(t instanceof Hr?t:Sn())},nn(Ur).j3p=function(){return Kr(),x},nn(Hr).x3k=function(t){this.t3r_1.a3l_1=t},nn(Hr).r3k=function(){return this.t3r_1.a3l_1},nn(Hr).c3l=function(t){this.t3r_1.b3l_1=t},nn(Hr).d3l=function(){return this.t3r_1.b3l_1},nn(Hr).e3l=function(t){this.t3r_1.z3k_1=t},nn(Hr).q3k=function(){return this.t3r_1.z3k_1},nn(Hr).f3l=function(t){this.t3r_1.y3k_1=t},nn(Hr).p3k=function(){return this.t3r_1.y3k_1},nn(Hr).g3l=function(t){this.u3r_1.j3l_1=t},nn(Hr).n3l=function(){return this.u3r_1.j3l_1},nn(Hr).o3l=function(t){this.u3r_1.o3l(t)},nn(Hr).p3l=function(){return this.u3r_1.p3l()},nn(Hr).q3l=function(t){this.u3r_1.h3l_1=t},nn(Hr).r3l=function(){return this.u3r_1.h3l_1},nn(Hr).s3l=function(t){this.u3r_1.i3l_1=t},nn(Hr).t3l=function(){return this.u3r_1.i3l_1},nn(Hr).u3l=function(t){this.u3r_1.k3l_1=t},nn(Hr).v3l=function(){return this.u3r_1.k3l_1},nn(Hr).w3l=function(t){this.u3r_1.m3l_1=t},nn(Hr).x3l=function(){return this.u3r_1.m3l_1},nn(Hr).y3l=function(t){this.u3r_1.l3l_1=t},nn(Hr).z3l=function(){return this.u3r_1.l3l_1},nn(Hr).v3r=function(){return Qo(this.t3r_1.y3n(),this.u3r_1.w3n())},nn(Hr).m3m=function(){return new Hr(this.t3r_1.m3m(),this.u3r_1.m3m())},nn(Zr).q3l=function(t){this.h3l_1=t},nn(Zr).r3l=function(){return this.h3l_1},nn(Zr).s3l=function(t){this.i3l_1=t},nn(Zr).t3l=function(){return this.i3l_1},nn(Zr).g3l=function(t){this.j3l_1=t},nn(Zr).n3l=function(){return this.j3l_1},nn(Zr).u3l=function(t){this.k3l_1=t},nn(Zr).v3l=function(){return this.k3l_1},nn(Zr).y3l=function(t){this.l3l_1=t},nn(Zr).z3l=function(){return this.l3l_1},nn(Zr).w3l=function(t){this.m3l_1=t},nn(Zr).x3l=function(){return this.m3l_1},nn(Zr).w3n=function(){var t,n=this.h3l_1;if(null==n)t=null;else{var i=this.i3l_1;if(null==i);else if((1+((n+11|0)%12|0)|0)!==i)throw un(sn("Inconsistent hour and hour-of-am-pm: hour is "+n+", but hour-of-am-pm is "+i));var e=this.j3l_1;if(null==e);else if(e.equals(ps())!==n>=12)throw un(sn("Inconsistent hour and the AM/PM marker: hour is "+n+", but the AM/PM marker is "+e));t=n}var r,s=t;if(null==s){var u,o=this.i3l_1;if(null==o)u=null;else{var _=this.j3l_1;u=null==_?null:(12===o?0:o)+(_.equals(ps())?12:0)|0}r=u}else r=s;var h=r;if(null==h)throw xe("Incomplete time: missing hour");var a=h,l=qr(this.k3l_1,"minute"),c=this.l3l_1,f=null==c?0:c,v=this.m3l_1;return s_(a,l,f,null==v?0:v)},nn(Zr).m3m=function(){return new Zr(this.h3l_1,this.i3l_1,this.j3l_1,this.k3l_1,this.l3l_1,this.m3l_1)},nn(Zr).equals=function(t){return!!(t instanceof Zr&&this.h3l_1==t.h3l_1&&this.i3l_1==t.i3l_1&&Un(this.j3l_1,t.j3l_1)&&this.k3l_1==t.k3l_1&&this.l3l_1==t.l3l_1)&&this.m3l_1==t.m3l_1},nn(Zr).hashCode=function(){var t=this.h3l_1,n=Ht(null==t?0:t,31),i=this.i3l_1,e=n+Ht(null==i?0:i,31)|0,r=this.j3l_1,s=null==r?null:r.hashCode(),u=e+Ht(null==s?0:s,31)|0,o=this.k3l_1,_=u+Ht(null==o?0:o,31)|0,h=this.l3l_1,a=_+Ht(null==h?0:h,31)|0,l=this.m3l_1;return a+(null==l?0:l)|0},nn(Zr).toString=function(){var t,n=this.h3l_1,i=sn(null==n?"??":n),e=this.k3l_1,r=sn(null==e?"??":e),s=this.l3l_1,u=sn(null==s?"??":s),o=this.m3l_1;if(null==o)t=null;else{var _=o.toString();t=Wn(_,9-_.length|0,bn(48))}return i+":"+r+":"+u+"."+(null==t?"???":t)},nn(ts).z3r=function(t){var n=new ns(new Qs);return t(n),new is(n.y2())},nn(ns).i3o=function(){return this.a3s_1},nn(ns).r3o=function(t){this.a3s_1.l3o(t)},nn(ns).n3o=function(){return new ns(new Qs)},nn(is).g3p=function(){return this.b3s_1},nn(is).c3s=function(t){return t.w3n()},nn(is).i3p=function(t){return this.c3s(t instanceof Zr?t:Sn())},nn(is).j3p=function(){return ms(),E},nn(rs).equals=function(t){return t instanceof rs&&this.n3s_1.equals(t.n3s_1)},nn(rs).hashCode=function(){return this.n3s_1.hashCode()},nn(ss).equals=function(t){return t instanceof ss&&this.s3s_1.equals(t.s3s_1)},nn(ss).hashCode=function(){return this.s3s_1.hashCode()},nn(us).equals=function(t){return t instanceof us&&this.x3s_1.equals(t.x3s_1)},nn(us).hashCode=function(){return this.x3s_1.hashCode()},nn(hs).equals=function(t){return!!(t instanceof hs&&this.e3t_1===t.e3t_1)&&this.f3t_1===t.f3t_1},nn(hs).hashCode=function(){return Ht(31,this.e3t_1)+this.f3t_1|0},nn(ks).a3m=function(t){this.b3m_1=t},nn(ks).f3m=function(){return this.b3m_1},nn(ks).k3m=function(t){this.c3m_1=t},nn(ks).l3m=function(){return this.c3m_1},nn(ks).g3m=function(t){this.d3m_1=t},nn(ks).h3m=function(){return this.d3m_1},nn(ks).i3m=function(t){this.e3m_1=t},nn(ks).j3m=function(){return this.e3m_1},nn(ks).v3n=function(){var t=!0===this.b3m_1?-1:1,n=this.c3m_1,i=null==n?null:Ht(n,t),e=this.d3m_1,r=null==e?null:Ht(e,t),s=this.e3m_1;return P_(i,r,null==s?null:Ht(s,t))},nn(ks).equals=function(t){return!!(t instanceof ks&&this.b3m_1==t.b3m_1&&this.c3m_1==t.c3m_1&&this.d3m_1==t.d3m_1)&&this.e3m_1==t.e3m_1},nn(ks).hashCode=function(){var t=this.b3m_1,n=null==t?null:Nn(t),i=null==n?0:n,e=this.c3m_1,r=null==e?null:Nn(e),s=i+(null==r?0:r)|0,u=this.d3m_1,o=null==u?null:Nn(u),_=s+(null==o?0:o)|0,h=this.e3m_1,a=null==h?null:Nn(h);return _+(null==a?0:a)|0},nn(ks).m3m=function(){return new ks(this.b3m_1,this.c3m_1,this.d3m_1,this.e3m_1)},nn(ks).toString=function(){var t,n=this.b3m_1,i=null==(t=null==n?null:n?"-":"+")?" ":t,e=this.c3m_1,r=sn(null==e?"??":e),s=this.d3m_1,u=sn(null==s?"??":s),o=this.e3m_1;return i+r+":"+u+":"+sn(null==o?"??":o)},nn(xs).equals=function(t){return t instanceof xs&&this.s3t_1.equals(t.s3t_1)},nn(xs).hashCode=function(){return this.s3t_1.hashCode()},nn(qs).t3t=function(t){var n=new Ss(new Qs);return t(n),new Cs(n.y2())},nn(Ss).i3o=function(){return this.u3t_1},nn(Ss).m3o=function(t){this.u3t_1.l3o(t)},nn(Ss).n3o=function(){return new Ss(new Qs)},nn(Cs).g3p=function(){return this.v3t_1},nn(Cs).w3t=function(t){return t.v3n()},nn(Cs).i3p=function(t){return this.w3t(t instanceof ks?t:Sn())},nn(Cs).j3p=function(){return Ks(),R},nn(Es).f3m=function(){return this.x3t_1},nn(Es).y3t=function(t){var n,i,e=t.l3m();if(0===(null==e?0:e)){var r=t.h3m();i=0===(null==r?0:r)}else i=!1;if(i){var s=t.j3m();n=0===(null==s?0:s)}else n=!1;return n},nn(Es).z3t=function(t){return this.y3t(null!=t&&In(t,$s)?t:Sn())},nn(As).equals=function(t){return t instanceof As&&this.e3u_1.equals(t.e3u_1)},nn(As).hashCode=function(){return this.e3u_1.hashCode()},nn(zs).equals=function(t){return t instanceof zs&&this.j3u_1.equals(t.j3u_1)},nn(zs).hashCode=function(){return this.j3u_1.hashCode()},nn(Qs).y2=function(){return new bu(this.k3o_1)},nn(Qs).l3o=function(t){if(In(t,$u))this.k3o_1.s(t);else if(t instanceof bu)for(var n=t.q3p_1.v();n.w();){var i=n.y();this.k3o_1.s(i)}},nn(tu).o3q=function(){return this.j3q_1},nn(tu).p3q=function(){var t,n,i=(t=this.j3q_1.l3u(),(n=function(n){return t.k3u(n)}).callableName="getterNotNull",n),e=this.k3q_1,r=new Au(i,null==e?0:e,this.n3q_1);return null!=this.m3q_1?new Eu(r,this.m3q_1):r},nn(tu).p3p=function(){return function(t,n,i,e,r,s){var u=_i([oo(t,n,i,e,r,!0)]);return null!=s?(u.s(oo(t,s,i,e,r)),u.s(new no(Rn([new go("+"),new po(Kn(new Wu(s+1|0,n,e,r,!1)))]),Xn()))):u.s(oo(t,n,i,e,r)),new no(Xn(),u)}(this.k3q_1,this.l3q_1,this.m3q_1,this.j3q_1.l3u(),this.j3q_1.m3u(),this.n3q_1)},nn(nu).o3q=function(){return this.v3q_1},nn(nu).p3q=function(){var t,n,i=new zu((t=this.v3q_1.n3u_1,(n=function(n){return t.k3u(n)}).callableName="getterNotNull",n),this.w3q_1);return null!=this.x3q_1?new Eu(i,this.x3q_1):i},nn(nu).p3p=function(){return oo(this.w3q_1,this.y3q_1,this.x3q_1,this.v3q_1.n3u_1,this.v3q_1.q3u_1)},nn(iu).v3u=function(t,n){var i=this.u3u_1.d3r_1.n3u_1.w3u(t,this.u3u_1.e3r_1.t1(n)+this.u3u_1.d3r_1.o3u_1|0);return null==i?null:this.u3u_1.e3r_1.h1(i-this.u3u_1.d3r_1.o3u_1|0)},nn(iu).w3u=function(t,n){var i=null==t||null!=t?t:Sn();return this.v3u(i,null!=n&&"string"==typeof n?n:Sn())},nn(iu).m3u=function(){return this.u3u_1.f3r_1},nn(ru).o3q=function(){return this.d3r_1},nn(ru).p3q=function(){return new Iu(eu(this))},nn(ru).p3p=function(){return new no(Kn(new fo(this.e3r_1,new iu(this),"one of "+this.e3r_1+" for "+this.f3r_1)),Xn())},nn(su).o3q=function(){return this.g3t_1},nn(su).p3q=function(){return new Du((t=this.g3t_1.l3u(),(n=function(n){return t.k3u(n)}).callableName="getterNotNull",n),this.h3t_1,this.i3t_1,this.j3t_1);var t,n},nn(su).p3p=function(){return new no(Kn(new po(Kn(new Nu(this.h3t_1,this.i3t_1,this.g3t_1.l3u(),this.g3t_1.m3u())))),Xn())},nn(uu).l3u=function(){return this.x3u_1},nn(uu).m3u=function(){return this.y3u_1},nn(uu).b3v=function(){return this.z3u_1},nn(uu).c3v=function(){return this.a3v_1},nn(ou).m3u=function(){return this.d3v_1.callableName},nn(ou).e3v=function(t,n){var i,e=this.d3v_1.get(t);return null===e?(this.d3v_1.set(t,n),i=null):i=Un(e,n)?null:e,i},nn(ou).w3u=function(t,n){var i=null==t||null!=t?t:Sn();return this.e3v(i,null==n||null!=n?n:Sn())},nn(ou).f3v=function(t){return this.d3v_1.get(t)},nn(_u).l3u=function(){return this.n3u_1},nn(_u).m3u=function(){return this.q3u_1},nn(_u).b3v=function(){return this.r3u_1},nn(_u).c3v=function(){return this.s3u_1},nn(au).toString=function(){return"The field "+this.m3u()+" (default value is "+this.b3v()+")"},nn(lu).p3q=function(){return this.n3p_1},nn(lu).p3p=function(){return this.o3p_1},nn(cu).toString=function(){return"BasicFormatStructure("+this.g3v_1+")"},nn(cu).equals=function(t){return t instanceof cu&&Un(this.g3v_1,t.g3v_1)},nn(cu).hashCode=function(){return Nn(this.g3v_1)},nn(cu).p3p=function(){return this.g3v_1.p3p()},nn(cu).p3q=function(){return this.g3v_1.p3q()},nn(fu).toString=function(){return"ConstantFormatStructure("+this.h3v_1+")"},nn(fu).equals=function(t){return t instanceof fu&&this.h3v_1===t.h3v_1},nn(fu).hashCode=function(){return yn(this.h3v_1)},nn(fu).p3p=function(){var t,n=this.h3v_1;if(0===Ln(n))t=Xn();else{var i,e=Yn();if(Zn(Jn(this.h3v_1,0))){var r,s;t:{var u=this.h3v_1,o=0,_=u.length;if(o<_)do{var h=o;o=o+1|0;var a=Jn(u,h);if(!Zn(a)){r=u.substring(0,h);break t}}while(o<_);r=u}e.s(new po(Kn(new Ru(r))));t:{var l=this.h3v_1,c=0,f=Ln(l)-1|0;if(c<=f)do{var v=c;c=c+1|0;var d=Jn(l,v);if(!Zn(d)){s=l.substring(v);break t}}while(c<=f);s=""}i=s}else i=this.h3v_1;var w=i;if(Ln(w)>0)if(Zn(Jn(w,w.length-1|0))){var p,m;t:{var g=Qn(w);if(0<=g)do{var y=g;g=g+-1|0;var b=Jn(w,y);if(!Zn(b)){var $=y+1|0;p=w.substring(0,$);break t}}while(0<=g);p=""}e.s(new go(p));t:{var k=Qn(w);if(0<=k)do{var x=k;k=k+-1|0;var q=Jn(w,x);if(!Zn(q)){var S=x+1|0;m=w.substring(S);break t}}while(0<=k);m=w}e.s(new po(Kn(new Ru(m))))}else e.s(new go(w));t=e.y2()}return new no(t,Xn())},nn(fu).p3q=function(){return new Mu(this.h3v_1)},nn(vu).toString=function(){return"SignedFormatStructure("+this.i3v_1+")"},nn(vu).equals=function(t){return!!(t instanceof vu&&Un(this.i3v_1,t.i3v_1))&&this.j3v_1===t.j3v_1},nn(vu).hashCode=function(){return Ht(31,Nn(this.i3v_1))+Hn(this.j3v_1)|0},nn(vu).p3p=function(){return eo(Rn([new no(Kn(new yo((t=this,function(n,i){for(var e=t.k3v_1.v();e.w();){var r=e.y(),s=!0===r.f3m().f3v(n);r.f3m().w3u(n,!(i===s))}return $n}),this.j3v_1,"sign for "+this.k3v_1)),Xn()),this.i3v_1.p3p()]));var t},nn(vu).p3q=function(){return new Ou(this.i3v_1.p3q(),(t=this,n=function(n){return function(t,n){var i=!1,e=t.k3v_1.v();t:for(;e.w();){var r=e.y();if(!0!==r.f3m().f3v(n)){if(r.z3t(n))continue t;return!1}i=!0}return i}(t,n)},n.callableName="checkIfAllNegative",n),this.j3v_1);var t,n},nn(du).l3v=function(t){var n=t.b3v();if(null==n){var i="The field '"+t.m3u()+"' does not define a default value";throw un(sn(i))}return new wu(t.l3u(),n)},nn(gu).toString=function(){return"Optional("+this.o3v_1+", "+this.p3v_1+")"},nn(gu).equals=function(t){return!!(t instanceof gu&&this.o3v_1===t.o3v_1)&&Un(this.p3v_1,t.p3v_1)},nn(gu).hashCode=function(){return Ht(31,yn(this.o3v_1))+Nn(this.p3v_1)|0},nn(gu).p3p=function(){var t,n,i=Xn(),e=this.p3v_1.p3p(),r=new fu(this.o3v_1).p3p();return t=this.q3v_1.d1()?Xn():Kn(new bo((n=this,function(t){for(var i=n.q3v_1.v();i.w();){var e=i.y();e.m3v_1.w3u(t,e.n3v_1)}return $n}))),new no(i,Rn([e,eo(Rn([r,new no(t,Xn())]))]))},nn(gu).p3q=function(){for(var t=this.p3v_1.p3q(),n=this.q3v_1,i=Mn(ni(n,10)),e=n.v();e.w();){var r=e.y(),s=new qu(r.n3v_1,pu(r.m3v_1));i.s(s)}var u,o,_,h,a=(o=i).d1()?G:1===o.n()?ri(o):new Cu(o);if(a instanceof Su)u=new Mu(this.o3v_1);else{var l=ei((_=a,(h=function(t){return _.r3v(t)}).callableName="test",h),new Mu(this.o3v_1));u=new ju(Rn([l,ei(mu(G),t)]))}return u},nn(yu).toString=function(){return"AlternativesParsing("+this.u3v_1+")"},nn(yu).equals=function(t){return!!(t instanceof yu&&Un(this.t3v_1,t.t3v_1))&&Un(this.u3v_1,t.u3v_1)},nn(yu).hashCode=function(){return Ht(31,Nn(this.t3v_1))+Nn(this.u3v_1)|0},nn(yu).p3p=function(){var t=Xn(),n=Yn();n.s(this.t3v_1.p3p());for(var i=this.u3v_1.v();i.w();){var e=i.y();n.s(e.p3p())}return new no(t,n.y2())},nn(yu).p3q=function(){return this.t3v_1.p3q()},nn(bu).toString=function(){return"ConcatenatedFormatStructure("+Fn(this.q3p_1,", ")+")"},nn(bu).equals=function(t){return t instanceof bu&&Un(this.q3p_1,t.q3p_1)},nn(bu).hashCode=function(){return Nn(this.q3p_1)},nn(bu).p3p=function(){for(var t=this.q3p_1,n=Mn(ni(t,10)),i=t.v();i.w();){var e=i.y().p3p();n.s(e)}return eo(n)},nn(bu).p3q=function(){for(var t=this.q3p_1,n=Mn(ni(t,10)),i=t.v();i.w();){var e=i.y().p3q();n.s(e)}var r=n;return 1===r.n()?ri(r):new Tu(r)},nn(qu).r3v=function(t){return Un(this.w3v_1(t),this.v3v_1)},nn(Su).s3v=function(t){return!0},nn(Su).r3v=function(t){return this.s3v(null==t||null!=t?t:Sn())},nn(Cu).r3v=function(t){var n;t:{var i=this.x3v_1;if(In(i,si)&&i.d1())n=!0;else{for(var e=i.v();e.w();)if(!e.y().r3v(t)){n=!1;break t}n=!0}}return n},nn(Nu).x3w=function(t,n){var i;if(null!=this.s3w_1&&n.lengththis.t3w_1)i=new Fu(this.t3w_1);else{var e=oi(n);i=null==e?new Fu(9):Bu(this.u3w_1,t,new xo(e,n.length))}return i},nn(Ru).x3w=function(t,n){return n===this.a3x_1?null:new Hu(this.a3x_1)},nn(Pu).a=function(){return this.v3w_1},nn(Lu).b3x=function(){return"expected an Int value"},nn(Fu).b3x=function(){return"expected at most "+this.c3x_1+" digits"},nn(Uu).b3x=function(){return"expected at least "+this.d3x_1+" digits"},nn(Hu).b3x=function(){return"expected '"+this.e3x_1+"'"},nn(Vu).b3x=function(){return"attempted to overwrite the existing value '"+sn(this.f3x_1)+"'"},nn(Wu).x3w=function(t,n){var i;if(null!=this.j3x_1&&n.length>this.j3x_1)i=new Fu(this.j3x_1);else if(null!=this.i3x_1&&n.lengthLn(n))return X.p3x(i,(e=this,function(){return"Unexpected end of input: yet to parse "+vo(e)}));for(var e,r={_v:0};(i+r._v|0)Ln(n))return X.p3x(i,(e=this,function(){return"Unexpected end of input: yet to parse '"+e.i3y_1+"'"}));var e,r=0,s=Ln(this.i3y_1)-1|0;if(r<=s)do{var u=r;if(r=r+1|0,Jn(n,i+u|0)!==Jn(this.i3y_1,u))return X.p3x(i,mo(this,n,i,u))}while(r<=s);return X.o3x(i+this.i3y_1.length|0)},nn(go).toString=function(){return"'"+this.i3y_1+"'"},nn(yo).w3x=function(t,n,i){if(i>=Ln(n))return X.o3x(i);var e,r,s=Jn(n,i);return s===bn(45)?(this.j3y_1(t,!0),X.o3x(i+1|0)):s===bn(43)&&this.k3y_1?(this.j3y_1(t,!1),X.o3x(i+1|0)):X.p3x(i,(e=this,r=s,function(){return"Expected "+e.l3y_1+" but got "+An(r)}))},nn(yo).toString=function(){return this.l3y_1},nn(bo).w3x=function(t,n,i){return this.m3y_1(t),X.o3x(i)},nn(xo).y3r=function(t){return t===this.x3r_1?this.w3r_1:t>this.x3r_1?Ht(this.w3r_1,ko()[t-this.x3r_1|0]):this.w3r_1/ko()[this.x3r_1-t|0]|0},nn(xo).n3y=function(t){var n=this.x3r_1,i=t.x3r_1,e=Math.max(n,i);return Ei(this.y3r(e),t.y3r(e))},nn(xo).d=function(t){return this.n3y(t instanceof xo?t:Sn())},nn(xo).equals=function(t){return t instanceof xo&&0===this.n3y(t)},nn(xo).toString=function(){var t=Oi(),n=ko()[this.x3r_1];return t.v7(this.w3r_1/n|0),t.s5(bn(46)),t.r5(ji((n+(this.w3r_1%n|0)|0).toString(),"1")),t.toString()},nn(xo).hashCode=function(){throw Ti("DecimalFraction is not supposed to be used as a hash key")},nn(qo).n34=function(){return this.o3y_1},nn(qo).o34=function(t){return Ho().p3y(t.i37())},nn(So).n34=function(){return this.q3y_1},nn(So).o34=function(t){return Go().t3y(t.i37())},nn(Co).n34=function(){return this.u3y_1},nn(Co).o34=function(t){return n_().x3y(t.i37())},nn(Eo).n34=function(){return this.y3y_1},nn(Eo).o34=function(t){return o_().b3z(t.i37())},nn(Oo).n34=function(){return this.c3z_1},nn(Oo).o34=function(t){return M_().e3z(t.i37())},nn(jo).n34=function(){return this.f3z_1},nn(jo).o34=function(t){return S_().h3z(t.i37())},nn(To).n34=function(){return this.i3z_1},nn(To).o34=function(t){var n=S_().h3z(t.i37());if(n instanceof j_)return n;throw Mi("Timezone identifier '"+n+"' does not correspond to a fixed-offset timezone")},nn(Uo).h3k=function(){return new Vo(Bt.systemUTC().instant())},nn(Uo).j3z=function(t){var n;try{var i=Js(),e=t.aa(xn(i)),r=Js(),s=t.ib(xn(r)),u=Xs(),o=s.ba(xn(u));n=this.k3z(e,o)}catch(i){if(!(i instanceof Error))throw i;var _=i;if(!Wo(_))throw _;n=t.ca(new gn(0,0))>0?this.l3k_1:this.k3k_1}return n},nn(Uo).l3z=function(t,n){var i;try{i=n.k3p(t).x3n()}catch(n){if(n instanceof fn)throw Se("Failed to parse an instant from '"+t+"'",n);throw n}return i},nn(Uo).p3y=function(t,n,i){return n=n===dn?(null==h&&new Xe,h).f3n_1:n,i===dn?this.l3z(t,n):i.l3z.call(this,t,n)},nn(Uo).k3z=function(t,n){var i;try{var e=xn(Zs()),r=n.aa(e);n.sb(e).ca(new gn(0,0))<0&&!r.ba(e).equals(n)&&(r=r.kb());var s=B_(t,r),u=xn(Zs()),o=n.ib(u),_=o.gb(u.qb(o.sb(u).qb(o.rb(o.lb())).ob(63))).la();i=new Vo(Vt.ofEpochSecond(s.f6(),_))}catch(n){if(!(n instanceof Error))throw n;var h=n;if(!(Wo(h)||h instanceof qn))throw h;i=t.ca(new gn(0,0))>0?this.l3k_1:this.k3k_1}return i},nn(Uo).g3o=function(t,n){var i;try{i=new Vo(Vt.ofEpochSecond(t.f6(),n))}catch(n){if(!(n instanceof Error))throw n;var e=n;if(!Wo(e))throw e;i=t.ca(new gn(0,0))>0?this.l3k_1:this.k3k_1}return i},nn(Vo).f3o=function(){return Ri(this.e3o_1.epochSecond())},nn(Vo).m3z=function(){return Pi(this.e3o_1.nano())},nn(Vo).n3z=function(){var t=this.f3o(),n=Js(),i=t.ba(xn(n)),e=this.m3z()/Xs()|0;return i.gb(xn(e))},nn(Vo).o3z=function(t){var n=Wt.between(t.e3o_1,this.e3o_1);Li();var i=n.seconds(),e=Ui(i,Fi());Li();var r=n.nano(),s=Ui(r,Hi());return Vi(e,s)},nn(Vo).p3z=function(t){return this.e3o_1.compareTo(t.e3o_1)},nn(Vo).d=function(t){return this.p3z(t instanceof Vo?t:Sn())},nn(Vo).equals=function(t){return this===t||t instanceof Vo&&(this.e3o_1===t.e3o_1||this.e3o_1.equals(t.e3o_1))},nn(Vo).hashCode=function(){return this.e3o_1.hashCode()},nn(Vo).toString=function(){return this.e3o_1.toString()},nn(Yo).q3z=function(t,n){var i;if(n===Xo().n3k()){var e;try{e=new Zo(Yt.parse(sn(t)))}catch(t){if(t instanceof Error){var r=t;if(Bo(r))throw qe(r);throw r}throw t}i=e}else i=n.k3p(t);return i},nn(Yo).t3y=function(t,n,i){return n=n===dn?Xo().n3k():n,i===dn?this.q3z(t,n):i.q3z.call(this,t,n)},nn(Ko).n3k=function(){return fr()},nn(Zo).p3k=function(){return this.o3k_1.year()},nn(Zo).q3k=function(){return this.o3k_1.monthValue()},nn(Zo).r3k=function(){return this.o3k_1.dayOfMonth()},nn(Zo).r3p=function(){return Io(this.o3k_1.dayOfWeek())},nn(Zo).equals=function(t){return this===t||t instanceof Zo&&(this.o3k_1===t.o3k_1||this.o3k_1.equals(t.o3k_1))},nn(Zo).hashCode=function(){return this.o3k_1.hashCode()},nn(Zo).toString=function(){return this.o3k_1.toString()},nn(Zo).r3z=function(t){return this.o3k_1.compareTo(t.o3k_1)},nn(Zo).d=function(t){return this.r3z(t instanceof Zo?t:Sn())},nn(Zo).z3n=function(){return Pi(this.o3k_1.toEpochDay())},nn(t_).s3z=function(t,n){var i;if(n===e_().s3k_1){var e;try{e=new r_(Gt.parse(sn(t)))}catch(t){if(t instanceof Error){var r=t;if(Bo(r))throw qe(r);throw r}throw t}i=e}else i=n.k3p(t);return i},nn(t_).x3y=function(t,n,i){return n=n===dn?e_().s3k_1:n,i===dn?this.s3z(t,n):i.s3z.call(this,t,n)},nn(r_).p3k=function(){return this.t3z_1.year()},nn(r_).q3k=function(){return this.t3z_1.monthValue()},nn(r_).u3z=function(){return Ae(this.t3z_1.month().value())},nn(r_).r3k=function(){return this.t3z_1.dayOfMonth()},nn(r_).r3p=function(){return Io(this.t3z_1.dayOfWeek())},nn(r_).v3z=function(){return this.t3z_1.dayOfYear()},nn(r_).r3l=function(){return this.t3z_1.hour()},nn(r_).v3l=function(){return this.t3z_1.minute()},nn(r_).z3l=function(){return this.t3z_1.second()},nn(r_).x3l=function(){return Pi(this.t3z_1.nano())},nn(r_).equals=function(t){return this===t||t instanceof r_&&(this.t3z_1===t.t3z_1||this.t3z_1.equals(t.t3z_1))},nn(r_).hashCode=function(){return this.t3z_1.hashCode()},nn(r_).toString=function(){return this.t3z_1.toString()},nn(r_).w3z=function(t){return this.t3z_1.compareTo(t.t3z_1)},nn(r_).d=function(t){return this.w3z(t instanceof r_?t:Sn())},nn(u_).x3z=function(t,n){var i;if(n===bt.n3k()){var e;try{e=new h_(Kt.parse(sn(t)))}catch(t){if(t instanceof Error){var r=t;if(Bo(r))throw qe(r);throw r}throw t}i=e}else i=n.k3p(t);return i},nn(u_).b3z=function(t,n,i){return n=n===dn?bt.n3k():n,i===dn?this.x3z(t,n):i.x3z.call(this,t,n)},nn(__).n3k=function(){return Xr()},nn(h_).b3o=function(){return this.a3o_1.toSecondOfDay()},nn(h_).equals=function(t){return this===t||t instanceof h_&&(this.a3o_1===t.a3o_1||this.a3o_1.equals(t.a3o_1))},nn(h_).hashCode=function(){return this.a3o_1.hashCode()},nn(h_).toString=function(){return this.a3o_1.toString()},nn(h_).y3z=function(t){return this.a3o_1.compareTo(t.a3o_1)},nn(h_).d=function(t){return this.y3z(t instanceof h_?t:Sn())},nn(q_).z3z=function(){return x_(0,Jt.systemDefault())},nn(q_).h3z=function(t){var n;try{n=x_(0,Jt.of(t))}catch(t){if(t instanceof Error){var i=t;if(Wo(i))throw je(i);throw i}throw t}return n},nn(C_).equals=function(t){return this===t||t instanceof C_&&(this.a40_1===t.a40_1||this.a40_1.equals(t.a40_1))},nn(C_).hashCode=function(){return this.a40_1.hashCode()},nn(C_).toString=function(){return this.a40_1.toString()},nn(D_).d40=function(t,n){return n===Ft.n3k()?L_(t,A_()):n===Ft.e40()?L_(t,z_()):n===Ft.d3n()?L_(t,I_()):n.k3p(t)},nn(D_).e3z=function(t,n,i){return n=n===dn?Ft.n3k():n,i===dn?this.d40(t,n):i.d40.call(this,t,n)},nn(N_).n3k=function(){return gs()},nn(N_).e40=function(){return ys()},nn(N_).d3n=function(){return bs()},nn(R_).d3o=function(){return this.c3o_1.totalSeconds()},nn(R_).hashCode=function(){return this.c3o_1.hashCode()},nn(R_).equals=function(t){return t instanceof R_&&(this.c3o_1===t.c3o_1||this.c3o_1.equals(t.c3o_1))},nn(R_).toString=function(){return this.c3o_1.toString()},nn(Ze).o3o=Gi,nn(Ze).p3o=Ki,nn(Ze).z3m=Xi,nn(Ze).y2=Ji,nn(Ze).q3o=fe,nn(Ze).r3o=ve,nn(Ze).s3o=ne,nn(Ze).y3m=Zi,nn(Ze).t3o=ie,nn(Ze).u3o=Qi,nn(Ze).x3m=function(t){return this.q3o(new cu(new Or(t)))},nn(Ze).u3m=ee,nn(Ze).v3o=te,nn(Ze).c3n=function(t){return this.q3o(new cu(new Tr(t)))},nn(Ze).n3m=re,nn(Ze).w3o=_e,nn(Ze).o3m=se,nn(Ze).x3o=he,nn(Ze).p3m=ue,nn(Ze).y3o=ae,nn(Ze).q3m=oe,nn(Ze).r3m=le,nn(Ze).z3o=ce,nn(Ze).a3p=me,nn(Ze).s3m=de,nn(Ze).b3p=ge,nn(Ze).c3p=we,nn(Ze).d3p=ye,nn(Ze).e3p=pe,nn(Ze).t3m=function(t){var n;return t instanceof Cs&&(this.m3o(t.v3t_1),n=$n),n},nn(kr).o3o=Gi,nn(kr).p3o=Ki,nn(kr).z3m=Xi,nn(kr).y2=Ji,nn(kr).s3o=ne,nn(kr).y3m=Zi,nn(kr).t3o=ie,nn(kr).u3o=Qi,nn(kr).u3m=ee,nn(kr).v3o=te,nn(Fr).o3o=Gi,nn(Fr).p3o=Ki,nn(Fr).z3m=Xi,nn(Fr).y2=Ji,nn(Fr).q3o=fe,nn(Fr).r3o=ve,nn(Fr).s3o=ne,nn(Fr).y3m=Zi,nn(Fr).t3o=ie,nn(Fr).u3o=Qi,nn(Fr).u3m=ee,nn(Fr).v3o=te,nn(Fr).n3m=re,nn(Fr).w3o=_e,nn(Fr).o3m=se,nn(Fr).x3o=he,nn(Fr).p3m=ue,nn(Fr).y3o=ae,nn(Fr).q3m=oe,nn(Fr).r3m=le,nn(Fr).z3o=ce,nn(Zr).o3l=function(t){this.w3l(null==t?null:t.y3r(9))},nn(Zr).p3l=function(){var t=this.x3l();return null==t?null:new xo(t,9)},nn(ns).o3o=Gi,nn(ns).p3o=Ki,nn(ns).z3m=Xi,nn(ns).y2=Ji,nn(ns).w3o=_e,nn(ns).o3m=se,nn(ns).x3o=he,nn(ns).p3m=ue,nn(ns).y3o=ae,nn(ns).q3m=oe,nn(ns).r3m=le,nn(Ss).o3o=Gi,nn(Ss).p3o=Ki,nn(Ss).z3m=Xi,nn(Ss).y2=Ji,nn(Ss).a3p=me,nn(Ss).s3m=de,nn(Ss).b3p=ge,nn(Ss).c3p=we,nn(Ss).d3p=ye,nn(Ss).e3p=pe,nn(ou).k3u=function(t){var n=this.f3v(t);if(null==n)throw zn("Field "+this.m3u()+" is not set");return n},r=new be,s=new gn(-931914497,-750),u=new gn(1151527680,720),_=new Ke,y=new $r,q=new Lr,T=new ts,P=new qs,U=1e6,H=new gn(2036907392,73),V=86400,B=1e3,W=1e9,Y=new du,G=new Su,K=new Lu,X=new Gu,bt=new __,new O_,Ft=new N_,t.$_$=t.$_$||{},t.$_$.a=r,t.$_$.b=Ho,t.$_$.c=S_,t.$_$.d=Vo,t.$_$.e=r_,t.$_$.f=Zo,t.$_$.g=function(t,n,i,e,r){return e=e===dn?0:e,r=r===dn?0:r,function(t,n,i,e,r,s,u){return function(t,n,i,e,r,s,u,o){var _;s=s===dn?0:s,u=u===dn?0:u;try{_=Gt.of(t,n,i,e,r,s,u)}catch(t){if(t instanceof Error){var h=t;if(Wo(h))throw Bi(h);throw h}throw t}return r_.call(o,_),o}(t,n,i,e,r,s,u,_n(nn(r_)))}(t.p3k(),t.q3k(),t.r3k(),n,i,e,r)},t.$_$.h=$e,t.$_$.i=function(t){return t.y9_1+1|0},t.$_$.j=T_,t.$_$.k=function(t,n){return T_(n,t)},t.$_$.l=function(t,n){return new Vo(t.t3z_1.atZone(n.a40_1).toInstant())},t.$_$.m=function(t,n){var i;try{i=new r_(Gt.ofInstant(t.e3o_1,n.a40_1))}catch(t){if(t instanceof Error){var e=t;if(Wo(e))throw Ee(e);throw e}throw t}return i},t})?e.apply(n,r):e)||(t.exports=s)},960:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(585),i(485)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,u){"use strict";var o,_=n.$_$.c,h=e.$_$.tg,a=n.$_$.d,l=e.$_$.mb,c=e.$_$.lb,f=e.$_$.nb,v=e.$_$.ca,d=r.$_$.a,w=s.$_$.s,p=s.$_$.o,m=e.$_$.a5,g=s.$_$.p1,y=s.$_$.n1,b=s.$_$.g1,$=s.$_$.r,k=s.$_$.a,x=s.$_$.u,q=s.$_$.x,S=s.$_$.h1,C=s.$_$.w,E=s.$_$.p,O=s.$_$.y,j=s.$_$.o1,T=s.$_$.i1,A=s.$_$.l1,z=s.$_$.j1,I=s.$_$.q,D=e.$_$.t7,M=s.$_$.b1,N=s.$_$.v1,R=s.$_$.c1,P=s.$_$.w1,L=s.$_$.u1,F=s.$_$.d1,U=s.$_$.m1,H=s.$_$.v,V=s.$_$.a1,B=s.$_$.b,W=s.$_$.q1,Y=s.$_$.e1,G=s.$_$.k1,K=e.$_$.q9,X=u.$_$.x,J=e.$_$.wa,Z=s.$_$.s1,Q=e.$_$.s7,tt=e.$_$.f,nt=e.$_$.c9,it=s.$_$.y1,et=u.$_$.j1,rt=s.$_$.x1,st=u.$_$.l1,ut=s.$_$.t1,ot=s.$_$.f1,_t=e.$_$.xh,ht=e.$_$.v7,at=s.$_$.n,lt=s.$_$.m,ct=s.$_$.t,ft=s.$_$.r1,vt=s.$_$.l,dt=e.$_$.b7,wt=e.$_$.jh,pt=s.$_$.z,mt=s.$_$.d,gt=s.$_$.c,yt=s.$_$.j,bt=s.$_$.i,$t=s.$_$.h,kt=s.$_$.e,xt=s.$_$.f,qt=s.$_$.g,St=s.$_$.k;function Ct(){o=this,this.ja5_1=new _;var t=i(79),n=null!=t&&"string"==typeof t?t:h();this.ka5_1=a("airport_terminal.png",n);var e=i(918),r=null!=e&&"string"==typeof e?e:h();this.la5_1=a("aircraft_fighter.png",r);var s=i(513),u=null!=s&&"string"==typeof s?s:h();this.ma5_1=a("aircraft_fixwing.png",u);var l=i(36),c=null!=l&&"string"==typeof l?l:h();this.na5_1=a("pattern_sample_houndstooth.png",c);var f=i(520),v=null!=f&&"string"==typeof f?f:h();this.oa5_1=a("worldwind_logo.png",v);var d=i(105),w=null!=d&&"string"==typeof d?d:h();this.pa5_1=a("ehipcc.png",w)}function Et(){return null==o&&new Ct,o}function Ot(){this.qa5_1=null}function jt(t){Ot.call(this),this.wa5_1=t,this.xa5_1=null,this.ya5_1=null}function Tt(t){Ot.call(this),this.aa6_1=t}function At(t){Ot.call(this),this.ca6_1=t,this.da6_1=new $}function zt(t){Ot.call(this),this.fa6_1=t;var n=new x("Ellipses"),i=new q(g.e6d(45,-120,0),5e5,3e5);i.x78(S()),i.y78(!0),n.m6z(i);var e=new q(g.e6d(45,-100,0),5e5,3e5),r=e.h2a();r.k8z(new C(1,1,1,.5)),r.p7b_1=3,e.x78(S()),e.y78(!0),n.m6z(e);var s=new q(g.e6d(35,-120,0),5e5,3e5);s.x78(S()),s.y78(!0);var u=y().p5r(45);s.m8q(u),n.m6z(s);var o=new q(g.e6d(35,-100,0),4e5,4e5);o.x78(S()),o.y78(!0),n.m6z(o),n.m6z(new q(g.e6d(25,-120,2e5),5e5,3e5));var _=new q(g.e6d(25,-100,2e5),5e5,3e5),h=_.h2a();h.k8z(new C(1,1,1,.5)),h.l7b_1=!0,_.u8n(!0),n.m6z(_),this.ga6_1=n}function It(t){Ot.call(this),this.ia6_1=t,this.ja6_1=new E}function Dt(t){Ot.call(this),this.la6_1=t;var n=new x("Labels"),i=new O(g.e6d(38.8977,-77.0365,0),"The White House");i.x78(S()),n.m6z(i);var e=new O(g.e6d(38.881389,-77.036944,0),"Thomas Jefferson Memorial");e.x78(S());var r=e.g79_1;r.f7b(new C(0,0,0,1)),r.g7b(new C(1,1,1,1)),r.x7a_1=5,n.m6z(e);var s=new O(g.e6d(38.8893,-77.050111,0),"Lincoln Memorial");s.x78(S()),s.g79_1.u7h(j.w6c()),n.m6z(s);var u=new O(g.e6d(38.889803,-77.009114,0),"United States Capitol");u.x78(S()),u.g79_1.u7h(j.u6c()),n.m6z(u);var o=new O(g.e6d(38.907192,-77.036871,0),"Washington");o.x78(S()),o.g79_1.h7b(A("arial",T(),28)),n.m6z(o);var _=new O(g.e6d(38.89,-77.023611,0),"National Mall");_.x78(S()),_.k79_1=z(),n.m6z(_),this.ma6_1=n}function Mt(t){Ot.call(this),this.oa6_1=t}function Nt(t){Ot.call(this),this.qa6_1=t,this.ra6_1=new I}function Rt(t){Ot.call(this),this.ta6_1=t;var n=new x("Paths");n.m6z(new M(D([g.e6d(50,-180,1e5),g.e6d(30,-100,1e6),g.e6d(50,-40,1e5)])));var i=new M(D([g.e6d(40,-180,0),g.e6d(20,-100,0),g.e6d(40,-40,0)]));i.x78(S()),i.y78(!0),n.m6z(i);var e=new M(D([g.e6d(30,-180,1e5),g.e6d(10,-100,1e6),g.e6d(30,-40,1e5)]));e.u8n(!0),n.m6z(e);var r=new M(D([g.e6d(20,-180,1e5),g.e6d(0,-100,1e6),g.e6d(20,-40,1e5)])),s=r.h2a();s.l7b_1=!0,s.k8z(new C(1,1,1,.5)),s.p7b_1=3,r.u8n(!0),n.m6z(r),this.ua6_1=n}function Pt(t){Ot.call(this),this.wa6_1=t;var n=new x("Placemarks"),i=N().g8u(g.e6d(34.281,-119.293,0),new C(0,1,1,1),20);i.x78(S()),n.m6z(i);var e=new R(g.e6d(34.26,-119.2,5e3)),r=e,s=P.a8w(L().o6z(Et().ma5_1));s.i8u_1=1.5,r.x8u_1=s,n.m6z(e);var u=new R(g.e6d(34.2,-119.208,0));u.x78(S());var o=u,_=P.z8v(L().o6z(Et().ka5_1));_.b8w(j.v6c()),_.i8u_1=2,o.x8u_1=_,u.m8i("Oxnard Airport"),n.m6z(u);var h=new R(g.e6d(34.3,-119.25,0));h.x78(S());var a=h,l=P.z8v(L().o6z(Et().pa5_1));l.b8w(j.v6c()),a.x8u_1=l,n.m6z(h),this.xa6_1=n}function Lt(t){Ot.call(this),this.za6_1=t;var n=new x("Polygons");n.m6z(new F(D([g.e6d(40,-135,5e5),g.e6d(45,-140,7e5),g.e6d(50,-130,9e5),g.e6d(45,-120,7e5),g.e6d(40,-125,5e5)])));var i=new F(D([g.e6d(40,-105,0),g.e6d(45,-110,0),g.e6d(50,-100,0),g.e6d(45,-90,0),g.e6d(40,-95,0)]));i.x78(S()),i.y78(!0),n.m6z(i);var e=new F(D([g.e6d(20,-135,5e5),g.e6d(25,-140,7e5),g.e6d(30,-130,9e5),g.e6d(25,-120,7e5),g.e6d(20,-125,5e5)]));e.u8n(!0),n.m6z(e);var r=new F(D([g.e6d(20,-105,5e5),g.e6d(25,-110,7e5),g.e6d(30,-100,9e5),g.e6d(25,-90,7e5),g.e6d(20,-95,5e5)])),s=r.h2a();s.l7b_1=!0,s.k8z(new C(1,1,1,.5)),s.p7b_1=3,r.u8n(!0),n.m6z(r);var u=new F;u.y8y(D([g.e6d(0,-135,5e5),g.e6d(5,-140,7e5),g.e6d(10,-130,9e5),g.e6d(5,-120,7e5),g.e6d(0,-125,5e5)])),u.y8y(D([g.e6d(2.5,-130,6e5),g.e6d(5,-135,7e5),g.e6d(7.5,-130,8e5),g.e6d(5,-125,7e5)])),n.m6z(u);var o=new F,_=o.h2a();_.l7b_1=!0,_.k8z(new C(1,1,1,.5)),_.p7b_1=3,o.y8y(D([g.e6d(0,-105,5e5),g.e6d(5,-110,7e5),g.e6d(10,-100,9e5),g.e6d(5,-90,7e5),g.e6d(0,-95,5e5)])),o.y8y(D([g.e6d(2.5,-100,6e5),g.e6d(5,-105,7e5),g.e6d(7.5,-100,8e5),g.e6d(5,-95,7e5)])),o.u8n(!0),n.m6z(o),this.aa7_1=n}function Ft(t){Ot.call(this),this.ca7_1=t;var n=new x("Dash and fill"),i=U();i.p7b_1=4;var e=i,r=new M(D([g.e6d(60,-100,1e5),g.e6d(30,-120,1e5),g.e6d(0,-100,1e5)]));r.h2a().l8z(e).r7b_1=L().y7b(2,-3856),n.m6z(r);var s=new M(D([g.e6d(60,-90,5e4),g.e6d(30,-110,5e4),g.e6d(0,-90,5e4)]));s.h2a().l8z(e).r7b_1=L().y7b(4,-3856),n.m6z(s);var u=new M(D([g.e6d(60,-80,0),g.e6d(30,-100,0),g.e6d(0,-80,0)]));u.h2a().l8z(e).r7b_1=L().y7b(8,-8202),u.x78(S()),u.y78(!0),n.m6z(u);var o=new q(g.e6d(40,-70,1e5),15e5,8e5);o.h2a().l8z(e).q7b_1=L().o6z(Et().na5_1),n.m6z(o);var _=new F(D([g.e6d(25,-85,0),g.e6d(10,-80,0),g.e6d(10,-60,0),g.e6d(25,-55,0)])),h=_.h2a().l8z(e);h.q7b_1=L().o6z(Et().na5_1),h.r7b_1=L().y7b(8,-8202),_.x78(S()),_.y78(!0),n.m6z(_),this.da7_1=n}function Ut(t){Ot.call(this),this.fa7_1=t,this.ga7_1=new H}function Ht(t){Ot.call(this),this.ia7_1=t;var n=new x("Sightline"),i=g.e6d(46.23,-122.19,2500),e=new V(i,1e4);e.h2a().k8z(new C(0,1,0,.5)),e.v8r_1.k8z(new C(.1,.1,.1,.8)),n.m6z(e);var r=new R(i),s=r.x8u_1;s.h8u_1=L().o6z(Et().ma5_1),s.b8w(j.v6c()),s.i8u_1=2,s.l8u_1=!0,n.m6z(r),this.ja7_1=n}function Vt(t){Ot.call(this),this.la7_1=t;var n=new x("Surface image");n.m6z(new Y(W.i6d(37.46,15.5,.5,.6),L().o6z(Et().oa5_1))),n.m6z(new Y(W.i6d(37.46543388598137,14.60128369746704,.45360804083528,.75704283995502),L().a7v("https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg"))),this.ma7_1=n}function Bt(t){Ot.call(this),this.oa7_1=t,this.pa7_1=G("https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer","DEP3Elevation","geotiff",W.i6d(25,-125,25,60),y().l69(.3333333333333333))}function Wt(t,n){this.ya7_1=t,K.call(this,n)}function Yt(t,n){Ot.call(this),this.ba8_1=t,this.ca8_1=n,this.da8_1=null,this.ea8_1=null}function Gt(t,n){this.na8_1=t,K.call(this,n)}function Kt(t,n){Ot.call(this),this.qa8_1=t,this.ra8_1=n,this.sa8_1=null,this.ta8_1=null}function Xt(){window.onload=Jt}function Jt(t){var n,i,e,r,s=document.getElementById("WorldWindow"),u=new ot(s instanceof HTMLCanvasElement?s:h()),o=document.getElementById("Tutorials"),_=o instanceof HTMLSelectElement?o:h(),a=document.getElementById("Projections"),l=a instanceof HTMLSelectElement?a:h(),c=document.getElementById("Actions"),f=c instanceof HTMLDivElement?c:h(),v=ht([_t("Basic globe",new jt(u.g9e())),_t("Set camera view",new Tt(u.g9e())),_t('Set "look at" view',new Mt(u.g9e())),_t("Placemarks",new Pt(u.g9e())),_t("Paths",new Rt(u.g9e())),_t("Polygons",new Lt(u.g9e())),_t("Ellipses",new zt(u.g9e())),_t("Dash and fill",new Ft(u.g9e())),_t("Labels",new Dt(u.g9e())),_t("Sight line",new Ht(u.g9e())),_t("Surface image",new Vt(u.g9e())),_t("Show tessellation",new Ut(u.g9e())),_t("MGRS Graticule",new Nt(u.g9e())),_t("Gauss-Kruger Graticule",new It(u.g9e())),_t("WMS Layer",new Yt(u.g9e(),u.f9i())),_t("WMTS Layer",new Kt(u.g9e(),u.f9i())),_t("WCS Elevation",new Bt(u.g9e())),_t("Elevation Heatmap",new At(u.g9e()))]),d=ht([_t("WGS84 Projection",new at),_t("Mercator Projection",new lt)]),g={_v:null},y=u.g9e().n5h_1;y.p70(new ct),y.p70(ft().k7v("https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}","image/jpeg",tt,"Google Satellite")),y.p70(new w),y.p70(new p),u.g9e().j5h_1.m5j_1.v6p(new vt),u.g9i().w9u_1=new nn;for(var b=v.d2().v();b.w();){var $=b.y(),k=document.createElement("option"),x=k instanceof HTMLOptionElement?k:h();x.value=$,x.innerHTML=$,_.append(x)}for(var q=d.d2().v();q.w();){var S=q.y(),C=document.createElement("option"),E=C instanceof HTMLOptionElement?C:h();E.value=S,E.innerHTML=S,l.append(E)}return _.onchange=(n=g,i=v,e=f,r=u,function(t){var s=t.target;return Qt(n,i,e,r,(s instanceof HTMLSelectElement?s:h()).value),m}),l.onchange=function(t,n){return function(i){var e=i.target;return tn(t,n,(e instanceof HTMLSelectElement?e:h()).value),m}}(u,d),Qt(g,v,f,u,dt(v.d2())),tn(u,d,dt(d.d2())),m}function Zt(t,n,i,e){var r,s,u,o=document.createElement("button"),_=o instanceof HTMLButtonElement?o:h();_.innerHTML=e,t.append(_),_.onclick=(r=e,s=n,u=i,function(t){return function(t,n,i){var e=t._v;if(null==e);else{var r=n.q2(e);null!=r&&r.sa5(i)}}(s,u,r),m})}function Qt(t,n,i,e,r){var s=t._v;if(null==s);else{var u=n.q2(s);null!=u&&u.ua5()}t._v=r;var o=n.q2(r);if(null==o);else{o.ta5(),i.innerHTML="";var _=o.ra5();if(null==_);else for(var h=_.v();h.w();)Zt(i,t,n,h.y());var a=o.ra5();i.hidden=!(!1===(null==a?null:a.d1()))}e.h5h()}function tn(t,n,i){t.g9e().j5h_1.l5j_1=wt(n.q2(i)),t.h5h()}function nn(){}return f(Ct,"images",c),f(Ot,"AbstractTutorial",v),f(jt,"BasicTutorial",v,Ot),f(Tt,"CameraViewTutorial",v,Ot),f(At,"ElevationHeatmapTutorial",v,Ot),f(zt,"EllipsesTutorial",v,Ot),f(It,"GKGraticuleTutorial",v,Ot),f(Dt,"LabelsTutorial",v,Ot),f(Mt,"LookAtViewTutorial",v,Ot),f(Nt,"MGRSGraticuleTutorial",v,Ot),f(Rt,"PathsTutorial",v,Ot),f(Pt,"PlacemarksTutorial",v,Ot),f(Lt,"PolygonsTutorial",v,Ot),f(Ft,"ShapesDashAndFillTutorial",v,Ot),f(Ut,"ShowTessellationTutorial",v,Ot),f(Ht,"SightlineTutorial",v,Ot),f(Vt,"SurfaceImageTutorial",v,Ot),f(Bt,"WcsElevationTutorial",v,Ot),f(Wt,"WmsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Yt,"WmsLayerTutorial",v,Ot),f(Gt,"WmtsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Kt,"WmtsLayerTutorial",v,Ot),f(nn,tt,v,tt,[St]),l(Ot).ra5=function(){return this.qa5_1},l(Ot).sa5=function(t){},l(Ot).ta5=function(){},l(Ot).ua5=function(){},l(jt).ta5=function(){l(Ot).ta5.call(this);var t=this.wa5_1.n5h_1,n=d.h3k(),i=t.n70(t.o70("StarField")),e=i instanceof w?i:h();e.i7w_1=n,this.xa5_1=e;var r=t.n70(t.o70("Atmosphere")),s=r instanceof p?r:h();s.l73_1=n,this.ya5_1=s},l(jt).ua5=function(){l(Ot).ua5.call(this);var t=this.xa5_1;null!=t&&(t.i7w_1=null);var n=this.ya5_1;null!=n&&(n.l73_1=null)},l(Tt).ta5=function(){var t,n,i,e,r,s,u,o,_;l(Ot).ta5.call(this),t=this,n=g.e6d(34.2,-119.2,3e3),i=g.e6d(34.1192744,-119.119585,4),e=n.q6b(i),r=n.r6b(i)*t.aa6_1.j5h_1.h6p(n.m5i_1,n.n5i_1),s=y(),u=r/n.q5i_1,o=Math.atan(u),_=s.u5n(o),t.aa6_1.o5h_1.t6a(n.m5i_1,n.n5i_1,n.q5i_1,b(),e,_,y().v5m_1)},l(At).ta5=function(){l(Ot).ta5.call(this),this.ca6_1.n5h_1.p70(this.da6_1);var t=g.e6d(50.4501,30.5234,0),n=b(),i=y().v5m_1,e=y().p5r(0);this.ca6_1.m5m(new k(t,n,1e4,i,e,y().v5m_1))},l(At).ua5=function(){l(Ot).ua5.call(this),this.ca6_1.n5h_1.q70(this.da6_1)},l(zt).ta5=function(){l(Ot).ta5.call(this),this.fa6_1.n5h_1.p70(this.ga6_1);var t=this.fa6_1.o5h_1,n=y().p5r(30),i=y().p5r(-110);t.t6a(n,i,1.1*this.fa6_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(zt).ua5=function(){l(Ot).ua5.call(this),this.fa6_1.n5h_1.q70(this.ga6_1)},l(It).ta5=function(){l(Ot).ta5.call(this),this.ia6_1.n5h_1.p70(this.ja6_1)},l(It).ua5=function(){l(Ot).ua5.call(this),this.ia6_1.n5h_1.q70(this.ja6_1)},l(Dt).ta5=function(){l(Ot).ta5.call(this),this.la6_1.n5h_1.p70(this.ma6_1);var t=this.la6_1.o5h_1,n=y().p5r(38.89),i=y().p5r(-77.023611);t.t6a(n,i,1e4,b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Dt).ua5=function(){l(Ot).ua5.call(this),this.la6_1.n5h_1.q70(this.ma6_1)},l(Mt).ta5=function(){var t,n,i,e,r,s,u,o,_,h,a,c;l(Ot).ta5.call(this),t=this,n=g.e6d(34.0158333,-118.4513056,2500),i=g.e6d(33.9424368,-118.4081222,38.7),e=n.q6b(i),r=n.r6b(i)*t.oa6_1.j5h_1.h6p(n.m5i_1,n.n5i_1),s=n.q5i_1-i.q5i_1,u=s*s+r*r,o=Math.sqrt(u),_=y(),h=r/n.q5i_1,a=Math.atan(h),c=_.u5n(a),t.oa6_1.m5m(new k(i,b(),o,e,c,y().v5m_1))},l(Nt).ta5=function(){l(Ot).ta5.call(this),this.qa6_1.n5h_1.p70(this.ra6_1)},l(Nt).ua5=function(){l(Ot).ua5.call(this),this.qa6_1.n5h_1.q70(this.ra6_1)},l(Rt).ta5=function(){l(Ot).ta5.call(this),this.ta6_1.n5h_1.p70(this.ua6_1);var t=this.ta6_1.o5h_1,n=y().p5r(30),i=y().p5r(-100);t.t6a(n,i,1.1*this.ta6_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Rt).ua5=function(){l(Ot).ua5.call(this),this.ta6_1.n5h_1.q70(this.ua6_1)},l(Pt).ta5=function(){l(Ot).ta5.call(this),this.wa6_1.n5h_1.p70(this.xa6_1);var t=g.e6d(34.2,-119.208,0),n=b(),i=y().v5m_1,e=y().p5r(80);this.wa6_1.m5m(new k(t,n,1e4,i,e,y().v5m_1))},l(Pt).ua5=function(){l(Ot).ua5.call(this),this.wa6_1.n5h_1.q70(this.xa6_1)},l(Lt).ta5=function(){l(Ot).ta5.call(this),this.za6_1.n5h_1.p70(this.aa7_1);var t=this.za6_1.o5h_1,n=y().p5r(30),i=y().p5r(-115);t.t6a(n,i,1.1*this.za6_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Lt).ua5=function(){l(Ot).ua5.call(this),this.za6_1.n5h_1.q70(this.aa7_1)},l(Ft).ta5=function(){l(Ot).ta5.call(this),this.ca7_1.n5h_1.p70(this.da7_1);var t=this.ca7_1.o5h_1,n=y().p5r(30),i=y().p5r(-85);t.t6a(n,i,1.1*this.ca7_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Ft).ua5=function(){l(Ot).ua5.call(this),this.ca7_1.n5h_1.q70(this.da7_1)},l(Ut).ta5=function(){l(Ot).ta5.call(this),this.fa7_1.n5h_1.p70(this.ga7_1)},l(Ut).ua5=function(){l(Ot).ua5.call(this),this.fa7_1.n5h_1.q70(this.ga7_1)},l(Ht).ta5=function(){l(Ot).ta5.call(this),this.ia7_1.n5h_1.p70(this.ja7_1);var t=y().p5r(46.23),n=y().p5r(-122.19),i=new B(t,n,500),e=b(),r=y().p5r(45),s=y().p5r(70),u=y().p5r(0);this.ia7_1.m5m(new k(i,e,15e3,r,s,u))},l(Ht).ua5=function(){l(Ot).ua5.call(this),this.ia7_1.n5h_1.q70(this.ja7_1)},l(Vt).ta5=function(){l(Ot).ta5.call(this),this.la7_1.n5h_1.p70(this.ma7_1);var t=this.la7_1.o5h_1,n=y().p5r(37.46543388598137),i=y().p5r(14.97980511744455);t.t6a(n,i,4e5,b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Vt).ua5=function(){l(Ot).ua5.call(this),this.la7_1.n5h_1.q70(this.ma7_1)},l(Bt).ta5=function(){l(Ot).ta5.call(this);for(var t=this.oa7_1.j5h_1.m5j_1,n=t.v();n.w();)n.y().f6q(!1);t.v6p(this.pa7_1),function(t){var n=g.e6d(46.852886,-121.760374,4392),i=g.e6d(46.912,-121.527,2e3),e=i.q6b(n),r=n.r6b(i)*t.oa7_1.j5h_1.h6p(n.m5i_1,n.n5i_1),s=y(),u=r/i.q5i_1,o=Math.atan(u),_=s.u5n(o);t.oa7_1.o5h_1.t6a(i.m5i_1,i.n5i_1,i.q5i_1,b(),e,_,y().v5m_1)}(this)},l(Bt).ua5=function(){l(Ot).ua5.call(this);var t=this.oa7_1.j5h_1.m5j_1;t.w6p(this.pa7_1);for(var n=t.v();n.w();)n.y().f6q(!0)},l(Wt).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=m,i.fc_1=null,i.pc()},l(Wt).cd=function(t,n){return this.a1h(null!=t&&J(t,X)?t:h(),n)},l(Wt).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.dc_1=2,this.cc_1=1,(t=Z().g84("https://neo.gsfc.nasa.gov/wms/wms",Q("MOD_LSTD_CLIM_M"),tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.za7_1)&&(this.ya7_1.da8_1=n,this.ya7_1.ba8_1.n5h_1.p70(n),it().h5h()),rt.t64(rt.v5i_1,"WMS layer creation succeeded"),this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var i=this.fc_1;rt.fa5(rt.t5i_1,"WMS layer creation failed",i),this.cc_1=4;continue t}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,m}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},l(Wt).b1h=function(t,n){var i=new Wt(this.ya7_1,n);return i.za7_1=t,i},l(Yt).ta5=function(){var t,n;l(Ot).ta5.call(this),this.ea8_1=st(this.ca8_1,tt,tt,(t=new Wt(this,null),(n=function(n,i){return t.a1h(n,i)}).$arity=1,n));var i=this.ba8_1.o5h_1;i.g5i_1.q5i_1=1.1*this.ba8_1.f5i(),i.i5i_1=y().v5m_1,i.j5i_1=y().v5m_1,i.k5i_1=y().v5m_1},l(Yt).ua5=function(){l(Ot).ua5.call(this);var t=this.ea8_1;null==t||t.on();var n=this.da8_1;null==n||this.ba8_1.n5h_1.q70(n),this.da8_1=null},l(Gt).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=m,i.fc_1=null,i.pc()},l(Gt).cd=function(t,n){return this.a1h(null!=t&&J(t,X)?t:h(),n)},l(Gt).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.dc_1=2,this.cc_1=1,(t=ut().n8a("https://tiles.geoservice.dlr.de/service/wmts","hillshade",tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.oa8_1)&&(this.na8_1.sa8_1=n,this.na8_1.qa8_1.n5h_1.p70(n),it().h5h()),rt.t64(rt.v5i_1,"WMTS layer creation succeeded"),this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var i=this.fc_1;rt.fa5(rt.t5i_1,"WMTS layer creation failed",i),this.cc_1=4;continue t}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,m}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},l(Gt).b1h=function(t,n){var i=new Gt(this.na8_1,n);return i.oa8_1=t,i},l(Kt).ta5=function(){var t,n;l(Ot).ta5.call(this),this.ta8_1=st(this.ra8_1,tt,tt,(t=new Gt(this,null),(n=function(n,i){return t.a1h(n,i)}).$arity=1,n));var i=this.qa8_1.o5h_1;i.g5i_1.q5i_1=1.1*this.qa8_1.f5i(),i.i5i_1=y().v5m_1,i.j5i_1=y().v5m_1,i.k5i_1=y().v5m_1},l(Kt).ua5=function(){l(Ot).ua5.call(this);var t=this.ta8_1;null==t||t.on();var n=this.sa8_1;null==n||this.qa8_1.n5h_1.q70(n),this.sa8_1=null},l(nn).w6o=function(t){return J(t,pt)},l(nn).z6o=function(t){return J(t,pt)},l(nn).s6o=mt,l(nn).t6o=gt,l(nn).u6o=yt,l(nn).v6o=bt,l(nn).x6o=$t,l(nn).y6o=kt,l(nn).a6p=xt,l(nn).b6p=qt,function(t){var n=t.earth||(t.earth={}),i=n.worldwind||(n.worldwind={});(i.tutorials||(i.tutorials={})).main=Xt}(t),Xt(),t})?e.apply(n,r):e)||(t.exports=s)},585:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(485),i(755),i(800),i(639),i(787),i(997),i(229),i(931),i(852)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,u,o,_,h,a,l,c,f){"use strict";var v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt,ct,ft,vt,dt,wt,pt,mt,gt,yt,bt,$t,kt,xt,qt,St,Ct,Et,Ot,jt,Tt,At,zt,It,Dt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht,Vt,Bt,Wt,Yt,Gt,Kt,Xt,Jt,Zt,Qt,tn,nn,en,rn,sn,un,on,_n,hn,an,ln,cn,fn,vn,dn,wn,pn,mn,gn,yn,bn,$n,kn,xn,qn,Sn,Cn,En,On,jn,Tn,An,zn,In,Dn,Mn,Nn,Rn,Pn,Ln,Fn,Un,Hn,Vn,Bn,Wn,Yn,Gn,Kn,Xn,Jn,Zn,Qn,ti,ni,ii,ei,ri,si,ui,oi,_i,hi,ai,li,ci,fi,vi,di,wi,pi,mi,gi,yi,bi,$i,ki,xi,qi,Si,Ci,Ei,Oi,ji,Ti,Ai,zi,Ii,Di,Mi,Ni,Ri,Pi,Li,Fi,Ui,Hi,Vi,Bi,Wi,Yi,Gi,Ki,Xi,Ji,Zi,Qi,te,ne,ie,ee,re,se,ue,oe,_e,he,ae,le,ce,fe,ve,de,we,pe,me,ge,ye,be,$e,ke,xe,qe,Se,Ce,Ee,Oe,je,Te,Ae,ze,Ie,De,Me,Ne,Re,Pe,Le,Fe,Ue,He,Ve,Be,We,Ye,Ge,Ke,Xe,Je,Ze,Qe,tr,nr,ir,er,rr,sr,ur,or,_r,hr,ar,lr,cr,fr,vr,dr,wr,pr,mr,gr,yr,br,$r,kr,xr,qr,Sr,Cr,Er,Or,jr,Tr,Ar=Math.imul,zr=Math.sign,Ir=Math.log10,Dr=Math.sinh,Mr=n.$_$.c,Nr=e.$_$.tg,Rr=n.$_$.d,Pr=e.$_$.mb,Lr=e.$_$.lb,Fr=e.$_$.nb,Ur=n.$_$.a,Hr=e.$_$.mg,Vr=r.$_$.b,Br=e.$_$.ca,Wr=e.$_$.f,Yr=e.$_$.ub,Gr=e.$_$.rb,Kr=e.$_$.v,Xr=e.$_$.a5,Jr=e.$_$.k7,Zr=s.$_$.o,Qr=s.$_$.p,ts=e.$_$.na,ns=r.$_$.c,is=e.$_$.t1,es=e.$_$.jg,rs=e.$_$.d5,ss=e.$_$.wa,us=e.$_$.jh,os=e.$_$.fc,_s=e.$_$.sb,hs=e.$_$.ha,as=e.$_$.m,ls=e.$_$.x6,cs=e.$_$.y6,fs=e.$_$.x1,vs=e.$_$.x,ds=e.$_$.gg,ws=e.$_$.da,ps=e.$_$.r5,ms=e.$_$.m8,gs=e.$_$.p6,ys=e.$_$.d,bs=(e.$_$.l4,e.$_$.ig),$s=e.$_$.nh,ks=e.$_$.hb,xs=e.$_$.gb,qs=e.$_$.fa,Ss=e.$_$.ja,Cs=e.$_$.dg,Es=e.$_$.oc,Os=e.$_$.nc,js=e.$_$.w6,Ts=e.$_$.t9,As=e.$_$.kb,zs=e.$_$.xh,Is=e.$_$.v7,Ds=r.$_$.a,Ms=r.$_$.k,Ns=e.$_$.c6,Rs=e.$_$.e6,Ps=e.$_$.pb,Ls=e.$_$.t6,Fs=e.$_$.tb,Us=e.$_$.ib,Hs=e.$_$.z9,Vs=e.$_$.z2,Bs=e.$_$.id,Ws=e.$_$.la,Ys=e.$_$.qh,Gs=e.$_$.vh,Ks=e.$_$.q9,Xs=s.$_$.x,Js=e.$_$.c9,Zs=e.$_$.s4,Qs=e.$_$.h,tu=e.$_$.ag,nu=s.$_$.b1,iu=s.$_$.e1,eu=e.$_$.gc,ru=s.$_$.l1,su=e.$_$.ic,uu=e.$_$.r8,ou=(e.$_$.m4,e.$_$.c2),_u=e.$_$.rh,hu=e.$_$.a9,au=e.$_$.l8,lu=e.$_$.e,cu=e.$_$.qb,fu=e.$_$.ph,vu=e.$_$.tc,du=e.$_$.ka,wu=e.$_$.p,pu=e.$_$.m5,mu=e.$_$.t7,gu=e.$_$.ec,yu=e.$_$.yb,bu=e.$_$.y5,$u=e.$_$.l,ku=e.$_$.te,xu=e.$_$.aa,qu=e.$_$.w7,Su=e.$_$.af,Cu=e.$_$.qg,Eu=e.$_$.k5,Ou=e.$_$.kd,ju=e.$_$.n,Tu=e.$_$.bc,Au=e.$_$.rd,zu=e.$_$.f1,Iu=e.$_$.ff,Du=e.$_$.r2,Mu=e.$_$.q4,Nu=e.$_$.le,Ru=e.$_$.se,Pu=u.$_$.g2,Lu=u.$_$.t,Fu=u.$_$.s,Uu=u.$_$.e,Hu=u.$_$.b2,Vu=u.$_$.c2,Bu=u.$_$.j2,Wu=u.$_$.z1,Yu=u.$_$.r,Gu=e.$_$.ma,Ku=o.$_$.a,Xu=e.$_$.gh,Ju=e.$_$.a,Zu=u.$_$.v2,Qu=u.$_$.p2,to=e.$_$.cc,no=e.$_$.f6,io=e.$_$.ac,eo=_.$_$.a,ro=s.$_$.j,so=s.$_$.c,uo=h.$_$.d,oo=h.$_$.e,_o=h.$_$.c,ho=a.$_$.f,ao=h.$_$.f,lo=h.$_$.a,co=l.$_$.u,fo=c.$_$.a,vo=e.$_$.w8,wo=e.$_$.v8,po=e.$_$.ne,mo=e.$_$.d1,go=e.$_$.hf,yo=e.$_$.pg,bo=c.$_$.d,$o=c.$_$.e,ko=u.$_$.w,xo=u.$_$.q,qo=e.$_$.q5,So=e.$_$.z5,Co=c.$_$.f,Eo=u.$_$.p,Oo=e.$_$.ia,jo=c.$_$.b,To=e.$_$.s7,Ao=e.$_$.z7,zo=u.$_$.e2,Io=e.$_$.v6,Do=c.$_$.c,Mo=e.$_$.ua,No=e.$_$.n4,Ro=e.$_$.o4,Po=e.$_$.jb,Lo=e.$_$.x8,Fo=e.$_$.zb,Uo=e.$_$.v9,Ho=e.$_$.p2,Vo=e.$_$.c7,Bo=e.$_$.n8,Wo=r.$_$.m,Yo=e.$_$.vb,Go=e.$_$.w2,Ko=e.$_$.qe,Xo=e.$_$.wd,Jo=e.$_$.ld,Zo=e.$_$.x9,Qo=e.$_$.re,t_=r.$_$.l,n_=r.$_$.j,i_=r.$_$.i,e_=e.$_$.pf,r_=e.$_$.jf,s_=e.$_$.bf,u_=r.$_$.h,o_=r.$_$.g,__=r.$_$.f,h_=r.$_$.e,a_=r.$_$.d,l_=e.$_$.i2,c_=e.$_$.sh,f_=h.$_$.g,v_=h.$_$.b,d_=f.$_$.a,w_=e.$_$.uh,p_=e.$_$.eb,m_=e.$_$.db,g_=e.$_$.wb,y_=e.$_$.jc,b_=e.$_$.og,$_=e.$_$.e7,k_=e.$_$.fb,x_=e.$_$.cg,q_=s.$_$.a,S_=e.$_$.p4,C_=e.$_$.sd,E_=e.$_$.dh,O_=e.$_$.ya,j_=e.$_$.of,T_=n.$_$.b,A_=e.$_$.th;function z_(){v=this,this.n5f_1=new Mr;var t=i(257),n=null!=t&&"string"==typeof t?t:Nr();this.o5f_1=Rr("sun_texture.png",n);var e=i(926),r=null!=e&&"string"==typeof e?e:Nr();this.p5f_1=Rr("dnb_land_ocean_ice_2012.png",r);var s=i(709),u=null!=s&&"string"==typeof s?s:Nr();this.q5f_1=Rr("worldwind_worldtopobathy2004053.png",u)}function I_(){return null==v&&new z_,v}function D_(){d=this,this.r5f_1=new Mr;var t=i(735);this.s5f_1=new Ur(null!=t&&"string"==typeof t?t:Nr())}function M_(t){this.t5f_1=t,this.u5f_1=new Hr(20,0),this.v5f_1=3e3,this.w5f_1=ba(),this.x5f_1=null,this.y5f_1=null,this.z5f_1=null,this.a5g_1=null,this.b5g_1=Vr().i3k_1,this.c5g_1=0,this.d5g_1=Vr().i3k_1,this.e5g_1=0,this.f5g_1=0}function N_(){}function R_(t,n,i,e){i=i===Wr?null:i,e=e===Wr?null:e,this.p5g_1=t,this.q5g_1=n,this.r5g_1=i,this.s5g_1=e,this.t5g_1=!1}function P_(t){return t.toString()}function L_(){this.w5g_1=Kr()}function F_(){}function U_(){}function H_(){m=this,this.e5h_1=10,this.f5h_1=Zr(Wr,1),this.g5h_1=Qr(this.f5h_1)}function V_(){return null==m&&new H_,m}function B_(){}function W_(t,n,i,e,r,s){V_(),i=i===Wr?new Zl:i,e=e===Wr?new dc:e,r=r===Wr?new Th:r,s=s===Wr?null:s,this.i5h_1=n,this.j5h_1=i,this.k5h_1=e,this.l5h_1=r,this.m5h_1=s,this.n5h_1=new $c,this.o5h_1=new ha,this.p5h_1=new M_(this),this.q5h_1=il(),this.r5h_1=!0,this.s5h_1=1,this.t5h_1=1,this.u5h_1=16e4,this.v5h_1=new by,this.w5h_1=new K_(t),this.x5h_1=0,this.y5h_1=Oa(),this.z5h_1=Oa(),this.a5i_1=tl(),this.b5i_1=da();var u=ga().e5i(ns().z3z()),o=1.1*this.f5i();this.o5h_1.g5i_1.r5i(u.m5i_1,u.n5i_1,o)}function Y_(){}function G_(){this.s5r_1=Jl(),this.t5r_1=Ba(),this.u5r_1=tl(),this.v5r_1=Ha(),this.w5r_1=Ha(),this.x5r_1=null,this.y5r_1=null,this.z5r_1=null,this.a5s_1=null,this.b5s_1=null}function K_(t){this.x5j_1=t,this.y5j_1=tl(),this.z5j_1=il(),this.a5k_1=Oa(),this.b5k_1=Oa(),this.c5k_1=Oa(),this.d5k_1=Oa(),this.e5k_1=null,this.f5k_1=null,this.g5k_1=null,this.h5k_1=null,this.i5k_1=null,this.j5k_1=!1,this.k5k_1=aS().d5t_1,this.l5k_1=Zq().e5t_1,this.m5k_1=rx();for(var n=0,i=hs(Array(32),null);n<32;)i[n]=oS().f5t_1,n=n+1|0;this.n5k_1=i,this.o5k_1=rS().g5t_1,this.p5k_1=rS().g5t_1,this.q5k_1=null,this.r5k_1=null,this.s5k_1=null,this.t5k_1=new Int8Array(4),this.u5k_1=new Int8Array(4),this.v5k_1=new Ey(Vk(),je),this.w5k_1=as()}function X_(){this.l5v_1=4}function J_(){this.m5v_1=0,this.n5v_1=0,this.o5v_1=0,this.p5v_1=0,this.q5v_1=_y(),this.r5v_1=1,this.s5v_1=0,this.t5v_1=null,this.u5v_1=qa(),this.v5v_1=new Z_}function Z_(){this.w5v_1=0,this.x5v_1=0}function Q_(){this.y5v_1=null,this.z5v_1=null,this.a5w_1=null,this.b5w_1=tl(),this.c5w_1=0,this.d5w_1=!0,this.e5w_1=!0,this.f5w_1=!0,this.g5w_1=0,this.h5w_1=!1,this.i5w_1=_y(),this.j5w_1=1,this.k5w_1=1,this.l5w_1=null,this.m5w_1=qa(),this.n5w_1=new Z_,this.o5w_1=0;for(var t=0,n=hs(Array(4),null);t<4;)n[t]=new J_,t=t+1|0;this.p5w_1=n}function th(){if(k)return Xr;k=!0,y=new nh("BACKGROUND",0),b=new nh("SURFACE",1),$=new nh("SHAPE",2),new nh("SCREEN",3)}function nh(t,n){ds.call(this,t,n)}function ih(){return th(),y}function eh(){return th(),b}function rh(){}function sh(){this.b5x_1=new Float32Array(2);for(var t=0,n=hs(Array(5),null);t<5;)n[t]=_y(),t=t+1|0;this.c5x_1=n,this.d5x_1=1,this.e5x_1=Jl(),this.f5x_1=null,this.g5x_1=null}function uh(){}function oh(){this.h5y_1=new Float32Array(40),this.i5y_1=Oa(),this.j5y_1=_y(),this.k5y_1=1,this.l5y_1=1,this.m5y_1=!0,this.n5y_1=null,this.o5y_1=null}function _h(){this.d60_1=12}function hh(){this.e60_1=null,this.f60_1=ih(),this.g60_1=0,this.h60_1=0}function ah(t){this.j60_1=t}function lh(t,n){var i=us(t).f60_1.z9(us(n).f60_1);return 0===i&&(i=ws(t.g60_1,n.g60_1)),0===i&&(i=ws(t.h60_1,n.h60_1)),i}function ch(){this.i5t_1=0,this.j5t_1=0;var t=this.i5t_1;this.k5t_1=hs(Array(t),null);var n=lh;this.l5t_1=new ah(n)}function fh(){}function vh(){this.p60_1=Oa(),this.q60_1=_y(),this.r60_1=1,this.s60_1=!0,this.t60_1=null,this.u60_1=null,this.v60_1=null,this.w60_1=Oa()}function dh(){}function wh(){this.y61_1=new Q_,this.z61_1=null,this.a62_1=Oa()}function ph(){}function mh(){this.i62_1=Oa(),this.j62_1=0,this.k62_1=new cy(0,0,0,0),this.l62_1=new cy(0,0,0,0),this.m62_1=null,this.n62_1=null,this.o62_1=Oa(),this.p62_1=Oa(),this.q62_1=Oa(),this.r62_1=[Oa().s62(0,0,1,Fh().x5m_1).l5r(1,0,0,Fh().w5m_1),Oa().s62(0,0,1,Fh().w5m_1).l5r(1,0,0,Fh().w5m_1),Oa().s62(1,0,0,Fh().w5m_1),Oa().s62(0,0,1,Fh().y5m_1).l5r(1,0,0,Fh().w5m_1),Oa()]}function gh(){this.o63_1=0}function yh(){this.q63_1=Oa(),this.r63_1=0,this.s63_1=0,this.t63_1=0,this.u63_1=0,this.v63_1=!1,this.w63_1=0,this.x63_1=null,this.y63_1=null,this.z63_1=null,this.a64_1=null,this.b64_1=null}function bh(){}function $h(){this.v64_1=_y(),this.w64_1=1,this.x64_1=null,this.y64_1=null,this.z64_1=Oa()}function kh(){}function xh(){this.b65_1=Jl(),this.c65_1=Ba(),this.d65_1=new Q_,this.e65_1=null,this.f65_1=Oa(),this.g65_1=Oa(),this.h65_1=qa(),this.i65_1=_y(),this.j65_1=1}function qh(){}function Sh(t,n){var i=t.b66_1;return!0===(null==i?null:i.v61(n))}function Ch(){this.v65_1=Jl(),this.w65_1=Ba(),this.x65_1=Ba(),this.y65_1=_y(),this.z65_1=1,this.a66_1=qa(),this.b66_1=null,this.c66_1=null,this.d66_1=null}function Eh(){}function Oh(){}function jh(){this.f67_1=_y(),this.g67_1=1,this.h67_1=null,this.i67_1=null,this.j67_1=Oa(),this.k67_1=Oa()}function Th(){this.m67_1=Kr(),this.n67_1=_y(),this.o67_1=tl(),this.p67_1=Pa(),this.q67_1=new oa,this.r67_1=Ba().u67(),this.s67_1=tl(),this.t67_1=da()}function Ah(){}function zh(){this.j5o_1=il(),this.k5o_1=Oa(),this.l5o_1=Oa(),this.m5o_1=new ch,this.n5o_1=new ch,this.o5o_1=null,this.p5o_1=null,this.q5o_1=null,this.r5o_1=null,this.s5o_1=null,this.t5o_1=!1,this.u5o_1=null}function Ih(){if(M)return Xr;M=!0,I=new Dh("ABSOLUTE",0),D=new Dh("CLAMP_TO_GROUND",1),new Dh("RELATIVE_TO_GROUND",2)}function Dh(t,n){ds.call(this,t,n)}function Mh(){return Ih(),I}function Nh(){return Ih(),D}function Rh(t){if($s(t)){var n=kr.y5i(kr.t5i_1,"Angle","init","NaN is not supported!");throw is(Gr(n))}return t}function Ph(t){return Fh().j69(t)}function Lh(){N=this,this.v5m_1=this.p5r(0),this.w5m_1=this.p5r(90),this.x5m_1=this.p5r(-90),this.y5m_1=this.p5r(180),this.z5m_1=this.p5r(-180),this.a5n_1=this.p5r(360),this.b5n_1=this.p5r(-360);this.c5n_1=this.p5r(.016666666666666666);this.d5n_1=this.p5r(.0002777777777777778),this.e5n_1=.017453292519943295,this.f5n_1=57.29577951308232,this.g5n_1=60,this.h5n_1=.016666666666666666,this.i5n_1=3600,this.j5n_1=.0002777777777777778,this.k5n_1=.017453292519943295,this.l5n_1=57.29577951308232,this.m5n_1=17.77777777777778,this.n5n_1=.05625,this.o5n_1=16.666666666666668,this.p5n_1=.06,this.q5n_1=17.5,this.r5n_1=.06,this.s5n_1=60,this.t5n_1=.016666666666666666}function Fh(){return null==N&&new Lh,N}function Uh(t,n){return Fh().p5r(t+n)}function Hh(t,n){return Fh().p5r(t+n)}function Vh(t,n){return Fh().u5n(Ph(t)+n)}function Bh(t,n){return Fh().p5r(t-n)}function Wh(t,n){return Fh().p5r(t-n)}function Yh(t,n){if(qs(n,0)){var i=kr.y5i(kr.t5i_1,"Angle","div","divideByZero");throw is(Gr(i))}return Fh().p5r(t/xs(n))}function Gh(t){return Rh(-t)}function Kh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Fh(),e=Fh().m69(t);n=i.p5r(e)}return n}function Xh(t){var n;if(-90<=t&&t<=90)n=t;else{var i=Fh(),e=Fh().o69(t);n=i.p5r(e)}return n}function Jh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Fh(),e=Fh().p69(t);n=i.p5r(e)}return n}function Zh(t){var n=Fh(),i=os(t,-90,90);return n.p5r(i)}function Qh(t){var n=Fh(),i=os(t,-180,180);return n.p5r(i)}function ta(t,n){return ws(t,n)}function na(t){return Ss(t)}function ia(t){Fh(),this.v69_1=t}function ea(t,n,i,e,r,s,u,o){var _=o.u5m(n);i[0]>_&&(i[0]=_),i[1]<_&&(i[1]=_);var h=o.u5m(e);r[0]>h&&(r[0]=h),r[1]a&&(u[0]=a),u[1]=72&&e<84.5)t.k6g_1=23;else if(e>-80.5&&e<72){var r=(n+1.3962634015954636)/.13962634015954636+1e-12;t.k6g_1=ks(gl().x6i_1[ks(r)][0])}else i|=1;return i}(t,i);if(a[0]=t.k6g_1,0===f){for(1e7===(o=h)&&(o-=1);o>=2e6;)o-=2e6;(o+=t.j6g_1)>=2e6&&(o-=2e6),a[2]=ks(o/1e5),a[2]>7&&(a[2]=a[2]+1|0),a[2]>13&&(a[2]=a[2]+1|0),u=_,21===a[0]&&31===n&&5e5===u&&(u-=1),a[1]=t.h6g_1+(ks(u/1e5)-1|0)|0,9===t.h6g_1&&a[1]>13&&(a[1]=a[1]+1|0),$l(t,n,a,_,h,s)}return f}function bl(t,n){var i=Math.floor(n),e=n-i,r=Us(i);return(e>.5||.5===e&&r.ib(Ps(2)).equals(new Hr(1,0)))&&(r=r.jb()),r.f6()}function $l(t,n,i,e,r,s){var u=e,o=r;t.g6g_1=0!==n?N$("%02d",[n]):" ";var _=0;if(_<=2)do{var h=_;if(_=_+1|0,i[h]<0||i[h]>26)return Xr;t.g6g_1=t.g6g_1+Vs(Hs("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i[h]))}while(_<=2);var a=5-s|0,l=Math.pow(10,a);(u%=1e5)>=99999.5&&(u=99999);var c=ks(u/l),f=new Bs(c.toString());if(f.a()>s)f=new Bs(f.b8(0,s-1|0));else{var v=0,d=s-f.a()|0;if(v=99999.5&&(o=99999);var w=ks(o/l),p=new Bs(w.toString());if(p.a()>s)p=new Bs(p.b8(0,s-1|0));else{var m=0,g=s-p.a()|0;if(mo&&u<=20;)u=u+1|0,Fc(0,_,e)h&&_<=20))break t;_=_+1|0;var v=a.m5i_1-e,d=zr(v),w=c.m5i_1-e;d!==zr(w)?l=c:a=c,c=Lc(0,a,l)}r=c}return null!=r&&(r=new ya(e,r.n5i_1)),r}function Lc(t,n,i){var e=n.q6b(i),r=n.r6b(i);return n.s6b(e,r/2,pa())}function Fc(t,n,i){var e=n.n5i_1-i,r=Math.abs(e);return r<180?r:360-r}function Uc(){St=this,this.q77_1=Fh().p5r(-70),this.r77_1=Fh().p5r(70)}function Hc(){return null==St&&new Uc,St}function Vc(t){Hc(),gc.call(this,t),this.a77_1=!1,this.b77_1=new Zc,this.c77_1=tl(),this.d77_1=tl(),this.e77_1=0,this.f77_1=0,this.g77_1=0,this.h77_1=0,this.i77_1=null,this.j77_1=null,this.s77()}function Bc(t,n){Lb.call(this,n),this.a7a_1=t,this.b7a_1=as(),this.c7a_1=!0,this.d7a_1=tl()}function Wc(){this.k7a_1="DrawGraticule",this.l7a_1="GraticuleLineColor",this.m7a_1="GraticuleLineWidth",this.n7a_1="GraticuleLineStyle",this.o7a_1="DrawLabels",this.p7a_1="LabelColor",this.q7a_1="LabelFont"}function Yc(){this.r7a_1=wu()}function Gc(t,n){if(null==n.d1p("DrawGraticule")){n.g2("DrawGraticule",!0)}if(null==n.d1p("GraticuleLineColor")){var i=hy(255,255,255);n.g2("GraticuleLineColor",i)}if(null==n.d1p("GraticuleLineWidth")){n.g2("GraticuleLineWidth",.5)}if(null==n.d1p("GraticuleLineStyle")){var e=(function(){if(Et)return Xr;Et=!0,Ct=new uf("SOLID",0,0,0),new uf("DASHED",1,1,-32),new uf("DOTTED",2,2,-13108),new uf("DASH_DOTTED",3,2,-52)}(),Ct);n.g2("GraticuleLineStyle",e)}if(null==n.d1p("DrawLabels")){n.g2("DrawLabels",!0)}if(null==n.d1p("LabelColor")){var r=hy(255,255,255);n.g2("LabelColor",r)}if(null==n.d1p("LabelFont")){var s=Oq("arial",wy(),12);n.g2("LabelFont",s)}}function Kc(t,n,i,e){if(null!=n){var r=n.d1p("LabelColor");if(r instanceof cy){var s=Jc(0,r,e),u=new Float32Array(3);s.w7a(u);var o=u[2]<.5?1:0;i.g79_1.f7b(s),i.g79_1.g7b(new cy(o,o,o,s.n5g_1))}(r=n.d1p("LabelFont"))instanceof jq&&i.g79_1.h7b(r)}}function Xc(t,n,i,e,r){null!=i&&e.i7b(function(t,n,i,e){var r,s=t.m77_1.q2(n);if(null==s){var u=function(t,n,i){var e=Cb();e.j7b_1=!1,e.k7b_1=!0;var r=n.d1p("GraticuleLineColor");r instanceof cy&&e.g7b(Jc(0,r,i));var s=n.d1p("GraticuleLineWidth");null!=s&&"number"==typeof s&&(e.p7b_1=s);var u=n.d1p("GraticuleLineStyle");return u instanceof uf&&u.w7b_1>0&&(e.r7b_1=Pq().y7b(u.w7b_1,u.x7b_1)),e}(0,i,e);t.m77_1.g2(n,u),r=u}else r=s;return r}(t,n,i,r))}function Jc(t,n,i){return i>=1?n:new cy(n.k5g_1,n.l5g_1,n.m5g_1,n.n5g_1*i)}function Zc(){this.k77_1=Kr(),this.l77_1=Kr(),this.m77_1=Kr(),this.n77_1=null}function Qc(t,n,i){return function(t,n,i,e){return nf.call(e,t,n,i,Fh().v5m_1),e}(t,n,i,As(Pr(nf)))}function tf(){this.z7b_1="GridElement_Line",this.a7c_1="GridElement_LineNorth",this.b7c_1="GridElement_LineSouth",this.c7c_1="GridElement_LineWest",this.d7c_1="GridElement_LineEast",this.e7c_1="GridElement_LineNorthing",this.f7c_1="GridElement_LineEasting",this.g7c_1="GridElement_GridZoneLabel",this.h7c_1="GridElement_LongitudeLabel",this.i7c_1="GridElement_LatitudeLabel"}function nf(t,n,i,e){this.j7c_1=t,this.k7c_1=n,this.l7c_1=i,this.m7c_1=e}function ef(){}function rf(t,n){var i=as(),e=t.s7c_1.r7c(n.p68().e5s()),r=function(t,n){var i=t.s7c_1.p7c(n.o65_1),e=t.s7c_1.p7c(n.p65_1);return new el(i,t.s7c_1.q7c(n.m65_1),e,t.s7c_1.q7c(n.n65_1))}(t,e),s=r.s5j_1,u=r.u5j_1;if(s<=u)do{var o=s;s=s+1|0;var _=r.r5j_1,h=r.t5j_1;if(_<=h)do{var a=_;_=_+1|0;var l,c=t.v7c_1[o][a];if(null==c){var f=t.s7c_1.n7c(t.s7c_1.o7c(o,a));t.v7c_1[o][a]=f,l=f}else l=c;var v=l;v.f7a(n)?i.s(v):v.i7a()}while(a!==h)}while(o!==u);return i}function sf(t,n,i){this.s7c_1=t,this.t7c_1=n,this.u7c_1=i;for(var e=0,r=this.t7c_1,s=hs(Array(r),null);e=3||9===t.f7g_1&&t.g7g_1>=4}(t)&&function(t){var n=t.d7g_1.o65_1,i=t.d7g_1.m65_1,e=as(),r=t.d7g_1.q65()/3,s=0;if(s<=3)do{var u=s;s=s+1|0,e.s(t.e7a().k7f(new Ua(i,Hh(n,u*r),0)))}while(s<=3);var o=t.e7a().a78(e,wb());t.b7a_1.s(new nf(t.t6u_1,o,"GridElement_LineNorth",i))}(t)}function vf(t,n,i,e,r,s){e=e===Wr?"":e,r=r===Wr?0:r,s=s===Wr?0:s,Bc.call(this,t,t.j7f(n)),this.d7g_1=n,this.e7g_1=i,this.f7g_1=r,this.g7g_1=s,this.h7g_1=jt.k7h(this.d7g_1.j6a(),this.d7g_1.k6a(),this.e7g_1,e),this.i7g_1=null,this.j7g_1=null,this.k7g_1=!0}function df(t,n,i){if(n>=88)return _f().p7e_1[45];if(n<-88)return _f().p7e_1[0];var e=t.m7h(i);return _f().p7e_1[t.n7h(n)]+"-"+Gr(e<9?"0"+(e+1|0):e+1|0)}function wf(){this.b7h_1=88,this.c7h_1=180,this.d7h_1=4,this.e7h_1=6,this.f7h_1=.6666666666666667,this.g7h_1=.33333333333333337,this.h7h_1=.16666666666666669,this.i7h_1=.08333333333333334,this.j7h_1=.04166666666666667}function pf(t,n,i,e,r){var s=function(t,n){var i=n*t.x7g_1/1e3,e=Math.abs(i);return Su("0"+ks(e),2)}(t,"Y"===r?i:e),u=t.e7a().z78(n,s,t.x7g_1);u.g79_1.u7h(U.t6c()),u.a7i("label.name",r),u.a7i("label.scale.type",ks(t.x7g_1)),u.a7i("label.x",e*t.x7g_1),u.a7i("label.y",i*t.x7g_1),t.b7a_1.s(Qc(t.t6u_1,u,"metric.label"))}function mf(t,n,i){null!=n&&null!=i&&yf(t,kf(t,n),kf(t,i))}function gf(t,n,i){null!=n&&yf(t,i,kf(t,n))}function yf(t,n,i){var e=t.e7a().a78(qu([n,i]),wb());t.b7a_1.s(new nf(t.t6u_1,e,function(t){var n;return 1e3===t.x7g_1?(_f(),n="GK.Metric.Grid.1000x1000"):(_f(),n="GK.Metric.Grid.2000x2000"),n}(t),t.t6u_1.p65_1))}function bf(t,n,i,e,r,s,u){return jt.o7h(n.j6f_1,n.k6f_1,i.j6f_1,i.k6f_1,e,r,s,u)}function $f(t,n,i){var e=G.f6f(n,i);return t.e7a().k7f(new Ua(e.h6f_1,e.i6f_1,0))}function kf(t,n){return t.e7a().k7f(new Ua(n.h6f_1,n.i6f_1,0))}function xf(t,n,i,e){this.q7h_1=t,this.r7h_1=n,this.s7h_1=i,this.t7h_1=e}function qf(){this.b7i_1=1e3,this.c7i_1="metric.label"}function Sf(t,n,i,e){Bc.call(this,t,n),this.x7g_1=e,this.y7g_1=jt.l7h(i.k6a()),this.z7g_1=new xf(G.y6e(i.m65_1,i.o65_1,this.y7g_1),G.y6e(i.m65_1,60!==this.y7g_1?i.p65_1:Wh(i.p65_1,1e-12),this.y7g_1),G.y6e(i.n65_1,60!==this.y7g_1?i.p65_1:Wh(i.p65_1,1e-12),this.y7g_1),G.y6e(i.n65_1,i.o65_1,this.y7g_1))}function Cf(t,n){if("X"===n)for(var i=t.g7f_1.v();i.w();){var e=i.y();t.e7f_1.k2(e)}if("Y"===n)for(var r=t.g7f_1.v();r.w();){var s=r.y();t.f7f_1.k2(s)}t.g7f_1.b1()}function Ef(t,n,i,e,r){var s=i.d7i("label.scale.type");if(null==s)return Xr;var u=s;if("Y"===n){var o=i.d7i("label.y");if(null==o)return Xr;var _=o,h=G.f6f(e,_);if(function(t,n,i){return!(ks(i/1e6)===jt.l7h(n.i6f_1))}(0,h,_))return Xr;i.e7i(t.d7f_1.m7f(new Ua(h.h6f_1,h.i6f_1,0),i.h79_1))}else if("X"===n){var a=i.d7i("label.x");if(null==a)return Xr;var l=a,c=G.f6f(l,r);i.e7i(t.d7f_1.m7f(new Ua(c.h6f_1,c.i6f_1,0),i.h79_1))}t.d7f_1.u77(i,function(t,n){return 1e3===n?"label.1000":"label.2000"}(0,u))}function Of(t,n,i,e){return!!function(t,n,i){var e;if(0===i)e=!0;else{var r=n.d7i("label.scale.type");e=i>(null==r?0:r)}return e}(0,i,e)||function(t,n,i,e){return n.m5p_1.z5q(n.w67().f5m(i.m5i_1,i.n5i_1,0,tl()))>function(t,n){return 1e3===n?t.d7f_1.q7d_1:t.d7f_1.r7d_1}(t,e)}(t,n,i.h79_1,e)}function jf(){this.f7i_1="label.name",this.g7i_1="X",this.h7i_1="Y",this.i7i_1="label.x",this.j7i_1="label.y",this.k7i_1="label.scale.type",this.l7i_1="label.1000",this.m7i_1="label.2000"}function Tf(t){this.d7f_1=t,this.e7f_1=Kr(),this.f7f_1=Kr(),this.g7f_1=as()}function Af(t){Bc.call(this,t,Ba().u67())}function zf(){this.n7i_1=-80,this.o7i_1=84,this.p7i_1="Graticule.UTM.100000m",this.q7i_1="Graticule.UTM.10000m",this.r7i_1="Graticule.UTM.1000m",this.s7i_1="Graticule.UTM.100m",this.t7i_1="Graticule.UTM.10m",this.u7i_1="Graticule.UTM.1m",this.v7i_1=1e5}function If(t,n,i){Vc.call(this,t);var e=new Jf(this);e.x7i_1=n,e.b7j(i),this.t7j_1=e,this.u7j_1=mu(["Graticule.UTM.100000m","Graticule.UTM.10000m","Graticule.UTM.1000m","Graticule.UTM.100m","Graticule.UTM.10m","Graticule.UTM.1m"])}function Df(t,n){for(var i=function(t,n){var i=as(),e=n.p68().e5s(),r=function(t,n){var i=null;if(n.m65_1<84&&n.n65_1>-80){var e=yu(n.m65_1,-80),r=Tu(n.n65_1,84),s=W.i6d(e,n.o65_1,r-e,n.q65()),u=Mf(0,s.o65_1),o=Mf(0,s.p65_1),_=Nf(0,s.m65_1),h=Nf(0,s.n65_1);_<=17&&h>=17&&30===o&&(o=31),_<=19&&h>=19&&(31===u&&(u=30),31===o&&(o=32),33===u&&(u=32),33===o&&(o=34),35===u&&(u=34),35===o&&(o=36)),i=new el(u,_,o,h)}return i}(0,e);if(null!=r){var s=r.s5j_1,u=r.u5j_1;if(s<=u)do{var o=s;s=s+1|0;var _=r.r5j_1,h=r.t5j_1;if(_<=h)do{var a=_;if(_=_+1|0,19!==o||31!==a&&33!==a&&35!==a){var l,c=t.q7n_1[o][a];if(null==c){var f=new Hf(t,Rf(0,o,a));t.q7n_1[o][a]=f,l=f}else l=c;var v=l;v.f7a(n)?i.s(v):v.i7a()}}while(a!==h)}while(o!==u)}return e.n65_1>84&&(null==t.r7n_1[2]&&(t.r7n_1[2]=new Hf(t,W.i6d(84,-180,6,180))),null==t.r7n_1[3]&&(t.r7n_1[3]=new Hf(t,W.i6d(84,0,6,180))),i.s(us(t.r7n_1[2])),i.s(us(t.r7n_1[3]))),e.m65_1<-80&&(null==t.r7n_1[0]&&(t.r7n_1[0]=new Hf(t,W.i6d(-90,-180,10,180))),null==t.r7n_1[1]&&(t.r7n_1[1]=new Hf(t,W.i6d(-90,0,10,180))),i.s(us(t.r7n_1[0])),i.s(us(t.r7n_1[1]))),i}(t,n).v();i.w();)i.y().v77(n)}function Mf(t,n){var i=(n+180)/6,e=Math.floor(i);return gu(ks(e),59)}function Nf(t,n){var i=(n+80)/8,e=Math.floor(i);return gu(ks(e),19)}function Rf(t,n,i){var e=-80+Ar(n,8)|0,r=e+(72!==e?8:12)|0,s=-180+Ar(i,6)|0,u=s+6|0;return 17===n&&30===i?u=u-3|0:17===n&&31===i?s=s-3|0:19===n&&30===i?u=u+3|0:19===n&&31===i?(s=s+3|0,u=u-3|0):19===n&&32===i?(s=s-3|0,u=u+3|0):19===n&&33===i?(s=s+3|0,u=u-3|0):19===n&&34===i?(s=s-3|0,u=u+3|0):19===n&&35===i?(s=s+3|0,u=u-3|0):19===n&&36===i&&(s=s-3|0),W.i6d(e,s,r-e|0,u-s|0)}function Pf(){this.u7n_1=1e6,this.v7n_1=5e5,this.w7n_1="Graticule.MGRS.Overview",this.x7n_1="Graticule.MGRS.GridZone",this.y7n_1=5e6}function Lf(){If.call(this,"MGRS Graticule",1e5,1e5);for(var t=0,n=hs(Array(20),null);t<20;)n[t]=hs(Array(60),null),t=t+1|0;this.q7n_1=n,this.r7n_1=hs(Array(4),null),this.s7n_1=new Wf(this);var i=qu(["Graticule.MGRS.Overview","Graticule.MGRS.GridZone"]);i.z(Pr(If).v7j.call(this)),this.t7n_1=i}function Ff(t,n){var i=Fh().k69(1567855942887398e-21),e=null;n.l7o(new Ua(n.y7k_1.m5i_1,n.y7k_1.n5i_1,0))?e=tt.x6e(n.y7k_1.m5i_1,n.y7k_1.n5i_1):n.l7o(n.t7k_1)?e=tt.x6e(Zh(Hh(n.t7k_1.m5i_1,i)),Qh(Hh(n.t7k_1.n5i_1,i))):n.l7o(n.u7k_1)?e=tt.x6e(Zh(Hh(n.u7k_1.m5i_1,i)),Qh(Wh(n.u7k_1.n5i_1,i))):n.l7o(n.v7k_1)?e=tt.x6e(Zh(Wh(n.v7k_1.m5i_1,i)),Qh(Hh(n.v7k_1.n5i_1,i))):n.l7o(n.w7k_1)&&(e=tt.x6e(Zh(Wh(n.w7k_1.m5i_1,i)),Qh(Wh(n.w7k_1.n5i_1,i)))),null!=e&&(n.c7m_1=e.toString().substring(3,5))}function Uf(){this.m7o_1=1e5,this.n7o_1=2e6,this.o7o_1=1e6}function Hf(t,n){Bc.call(this,t,n);var i;i=n.n65_1>84||n.m65_1<-80,this.s7m_1=i,this.w7m_1=null;var e=tt.x6e(n.j6a(),n.k6a());if(this.s7m_1)this.t7m_1=e.toString().substring(2,3),this.u7m_1=n.m65_1>0?vl():dl(),this.v7m_1=0;else{this.t7m_1=e.toString().substring(0,3);var r=rt.x6e(n.j6a(),n.k6a());this.u7m_1=r.b6j_1,this.v7m_1=r.a6j_1}}function Vf(){Tt=this;var t=new Int32Array([3,56,64]),n=new Int32Array([6,64,72]),i=new Int32Array([9,72,84]),e=new Int32Array([21,72,84]);this.p7o_1=[t,n,i,e,new Int32Array([33,72,84])],this.q7o_1="CDEFGHJKLMNPQRSTUVWX"}function Bf(){return null==Tt&&new Vf,Tt}function Wf(t){Bf(),Bc.call(this,t,Ba())}function Yf(){this.r7o_1=1e6,this.s7o_1=0,this.t7o_1=1e7,this.u7o_1=0,this.v7o_1=vl(),this.w7o_1=dl()}function Gf(t){var n=t.a7j_1;if(null!=n)return n;Gs("extremes")}function Kf(t,n,i){var e=t.w7i_1.p77(n);return n.m5p_1.z5q(i)<5*e}function Xf(){this.x7o_1=-.5,this.y7o_1=-.5,this.z7o_1=5}function Jf(t){this.w7i_1=t,this.x7i_1=1e7,this.y7i_1=1e5,this.z7i_1=0}function Zf(t,n,i,e,r,s,u){iv.call(this,t,n,i,e,r,s,u),this.b7q_1=null}function Qf(t){return!!(t.l7o(t.v7k_1)&&t.l7o(t.w7k_1)&&t.l7o(t.t7k_1))&&t.l7o(t.u7k_1)}function tv(t){var n=mu([t.t7k_1,t.u7k_1,t.v7k_1,t.w7k_1]);if(!function(t,n){for(var i=null,e=n.v();e.w();){var r=e.y();if(null!=i){var s=i.n5i_1,u=zr(s),o=r.n5i_1;if(u!==zr(o)){var _=i.n5i_1-r.n5i_1,h=Math.abs(_);if(h>180&&h<360)return!0}}i=r}return!1}(0,n))return n;for(var i,e=0,r=n.v();r.w();){var s=r.y(),u=s.n5i_1;if(180!==Math.abs(u)){var o=s.n5i_1;e=zr(o)}}if(0===e)return n;var _,h=t.t7k_1.n5i_1;if(180===Math.abs(h)){var a=t.t7k_1.n5i_1;i=!(zr(a)===e)}else i=!1;i&&(t.t7k_1=new Ua(t.t7k_1.m5i_1,Gh(t.t7k_1.n5i_1),t.t7k_1.q5i_1));var l,c=t.u7k_1.n5i_1;if(180===Math.abs(c)){var f=t.u7k_1.n5i_1;_=!(zr(f)===e)}else _=!1;_&&(t.u7k_1=new Ua(t.u7k_1.m5i_1,Gh(t.u7k_1.n5i_1),t.u7k_1.q5i_1));var v,d=t.v7k_1.n5i_1;if(180===Math.abs(d)){var w=t.v7k_1.n5i_1;l=!(zr(w)===e)}else l=!1;l&&(t.v7k_1=new Ua(t.v7k_1.m5i_1,Gh(t.v7k_1.n5i_1),t.v7k_1.q5i_1));var p=t.w7k_1.n5i_1;if(180===Math.abs(p)){var m=t.w7k_1.n5i_1;v=!(zr(m)===e)}else v=!1;return v&&(t.w7k_1=new Ua(t.w7k_1.m5i_1,Gh(t.w7k_1.n5i_1),t.w7k_1.q5i_1)),mu([t.t7k_1,t.u7k_1,t.v7k_1,t.w7k_1])}function nv(){this.e7q_1=100}function iv(t,n,i,e,r,s,u){Bc.call(this,t,Ba()),this.m7k_1=n,this.n7k_1=i,this.o7k_1=e,this.p7k_1=r,this.q7k_1=s,this.r7k_1=u,this.s7k_1=t.y7j(this.m7k_1,this.n7k_1,this.p7k_1+this.r7k_1/2,this.q7k_1+this.r7k_1/2),this.t7k_1=t.y7j(this.m7k_1,this.n7k_1,this.p7k_1,this.q7k_1),this.u7k_1=t.y7j(this.m7k_1,this.n7k_1,this.p7k_1+this.r7k_1,this.q7k_1),this.v7k_1=t.y7j(this.m7k_1,this.n7k_1,this.p7k_1,this.q7k_1+this.r7k_1),this.w7k_1=t.y7j(this.m7k_1,this.n7k_1,this.p7k_1+this.r7k_1,this.q7k_1+this.r7k_1);var o=function(t,n){for(var i=Fh().w5m_1,e=Fh().y5m_1,r=Fh().x5m_1,s=Fh().z5m_1,u=n.v();u.w();){var o=u.y(),_=o.m5i_1;_r&&(r=_);var h=o.n5i_1;hs&&(s=h)}return new Ga(i,r,e,s)}(0,tv(this));Qf(this)||o.l6d(this.o7k_1),this.t6u_1.f66(o),this.x7k_1=o,this.y7k_1=this.x7k_1.k6d(pa()),this.z7k_1=!Qf(this),this.a7l_1=!(this.l7o(this.v7k_1)||this.l7o(this.w7k_1)||this.l7o(this.t7k_1)||this.l7o(this.u7k_1))}function ev(t,n){var i=t.d7m_1;return!0===(null==i?null:i.f7a(n))}function rv(t,n){var i=t.e7m_1;return!0===(null==i?null:i.f7a(n))}function sv(t,n,i,e,r,s,u){iv.call(this,t,n,i,e,r,s,u),this.c7m_1=null,this.d7m_1=null,this.e7m_1=null,this.f7m_1=null}function uv(){gc.call(this,"Elevation Heatmap"),this.m7q_1=!1,this.n7q_1=.5,this.o7q_1=[new cy(0,0,1),new cy(0,1,1),new cy(0,1,0),new cy(1,1,0),new cy(1,0,0)],this.p7q_1=!0,this.q7q_1=3,this.r7q_1=new Float32Array(2)}function ov(){Hy.call(this),this.o5x_1=["uniform mat4 mvpMatrix;\nuniform float scale;\nuniform float offset;\n\nattribute vec4 vertexPoint;\nattribute float vertexHeight;\n\nvarying float height;\n\nvoid main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform vec3 color0;\nuniform vec3 color1;\nuniform vec3 color2;\nuniform vec3 color3;\nuniform vec3 color4;\nuniform float opacity;\n\nvarying float height;\n\nvoid main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n}"],this.p5x_1=["vertexPoint","vertexTexCoord"],this.q5x_1=Oa(),this.r5x_1=nS().e72_1,this.s5x_1=nS().e72_1,this.t5x_1=nS().e72_1,this.u5x_1=nS().e72_1,this.v5x_1=nS().e72_1,this.w5x_1=nS().e72_1,this.x5x_1=nS().e72_1,this.y5x_1=nS().e72_1,this.z5x_1=nS().e72_1,this.a5y_1=new Float32Array(16)}function _v(){}function hv(t,n,i,e){Bq.call(this,t,n,i,e)}function av(t,n){return(n+180)/360}function lv(t,n){var i=Ph(n),e=Math.tan(i),r=Ph(n),s=e+1/Math.cos(r);return(1+Math.log(s)/_s())/2}function cv(t,n){return t.q65()/n}function fv(t,n){return t.r65()/n}function vv(){}function dv(t,n,i,e){t=t===Wr?-1:t,n=n===Wr?1:n,i=i===Wr?Fh().z5m_1:i,e=e===Wr?Fh().y5m_1:e,Ga.call(this,zt.h7s(t),zt.h7s(n),i,e),this.y7q_1=t,this.z7q_1=n}function wv(){}function pv(){}function mv(t,n){t=t===Wr?null:t,n=n===Wr?null:n,bq.call(this,t,n)}function gv(t,n){Ib.call(this,t,n)}function yv(){this.h7u_1="XYZ"}function bv(t,n,i,e,r){n=n===Wr?"image/png":n,i=i!==Wr&&i,e=e===Wr?null:e,r=r===Wr?null:r,mv.call(this,e,r),this.s7u_1=t,this.t7u_1=n,this.u7u_1=i,this.v7u_1="XYZ"}function $v(t,n,i){this.x7u_1=t,this.y7u_1=n,this.z7u_1=i,this.w7u_1="Web Mercator"}function kv(){Dt=this,this.b7v_1=Du(123),this.c7v_1=Du(125),this.d7v_1="{i}",this.e7v_1="{x}",this.f7v_1="{y}",this.g7v_1="{z}",this.h7v_1="{lang}",this.i7v_1="{rand="}function xv(){Mt=this;var t=new Pu("earth.worldwind.layer.starfield.StarFieldLayer.StarMetadata",this,6);t.x3c("name",!1),t.x3c("description",!1),t.x3c("datatype",!1),t.x3c("arraysize",!1),t.x3c("unit",!1),t.x3c("ucd",!1),this.l7v_1=t}function qv(){return null==Mt&&new xv,Mt}function Sv(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 63!=(63&t)&&Bu(t,63,qv().l7v_1),_.m7v_1=n,_.n7v_1=i,_.o7v_1=e,_.p7v_1=r,_.q7v_1=s,_.r7v_1=u,_}(t,n,i,e,r,s,u,0,As(Pr(Av)))}function Cv(){Nt=this,this.s7v_1=[new Wu(qv()),new Wu(new Wu(Yu()))]}function Ev(){return null==Nt&&new Cv,Nt}function Ov(){Rt=this;var t=new Pu("earth.worldwind.layer.starfield.StarFieldLayer.StarData",this,2);t.x3c("metadata",!1),t.x3c("data",!1),this.t7v_1=t}function jv(){return null==Rt&&new Ov,Rt}function Tv(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,jv().t7v_1),r.u7v_1=n,r.v7v_1=i,r}(t,n,i,0,As(Pr(zv)))}function Av(){}function zv(t,n){Ev(),this.u7v_1=t,this.v7v_1=n}function Iv(t){t=t===Wr?(null==d&&new D_,d).s5f_1:t,gc.call(this,"StarField"),this.d7w_1=!1,this.e7w_1=t,this.f7w_1=Pq().o6z(I_().o5f_1),this.g7w_1=128,this.h7w_1=!0,this.i7w_1=null,this.j7w_1=this.t7w(),this.k7w_1=0,this.l7w_1=null,this.m7w_1=34028235e31,this.n7w_1=14e-46,this.o7w_1=0,this.p7w_1=!1,this.q7w_1=1e7,this.r7w_1=this.t7w(),this.s7w_1=new Float32Array(4)}function Dv(){Hy.call(this),this.h64_1=["//.x = declination\n//.y = right ascension\n//.z = point size\n//.w = magnitude\nattribute vec4 vertexPoint;\n\nuniform mat4 mvpMatrix;\n/* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\nuniform float numDays;\nuniform vec2 magnitudeRange;\n\nvarying float magnitudeWeight;\n\n/* normalizes an angle between 0.0 and 359.0 */\nfloat normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n}\n\n/* transforms declination and right ascension in cartesian coordinates */\nvec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n}\n\n/* normalizes a value between 0.0 and 1.0 */\nfloat normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n}\n\nvoid main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n}","precision mediump float;\n\nuniform sampler2D textureSampler;\nuniform int textureEnabled;\n\nvarying float magnitudeWeight;\n\nconst vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\nconst vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\nvoid main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n/* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n}"],this.i64_1=["vertexPoint"],this.j64_1=nS().e72_1,this.k64_1=nS().e72_1,this.l64_1=nS().e72_1,this.m64_1=nS().e72_1,this.n64_1=nS().e72_1,this.o64_1=new Float32Array(16)}function Mv(){this.e7x_1="WCS 1.0.0"}function Nv(t,n,i,e,r){yq.call(this,e,r),this.t7x_1=t,this.u7x_1=n,this.v7x_1=i,this.w7x_1="WCS 1.0.0"}function Rv(t,n,i,e){e=e===Wr?"EPSG:4326":e,this.x7x_1=t,this.y7x_1=n,this.z7x_1=i,this.a7y_1=e,this.b7y_1="WCS 1.0.0"}function Pv(t){this.n7y_1=t,this.m7y_1="WMS 1.3.0"}function Lv(){this.y7y_1="WMS"}function Fv(t,n,i,e,r){yq.call(this,e,r),this.n7z_1=t,this.o7z_1=n,this.p7z_1=i,this.q7z_1="WMS"}function Uv(){this.r7z_1="WMS"}function Hv(t,n,i,e,r){e=e===Wr?null:e,r=r===Wr?null:r,bq.call(this,e,r),this.c80_1=t,this.d80_1=n,this.e80_1=i,this.f80_1="WMS"}function Vv(t,n){this.e7y_1=t,this.f7y_1=n,this.g7y_1="1.3.0",this.h7y_1=null,this.i7y_1="EPSG:4326",this.j7y_1=null,this.k7y_1=!0,this.l7y_1=null}function Bv(t,n,i){var e,r,s=ro().vs_1;return so(s,(e=new Gv(n,null),r=function(t,n){return e.n83(t,n)},r.$arity=1,r),i)}function Wv(t,n,i,e,r){for(var s=as(),u=e.v();u.w();){var o=u.y().e81_1;null==o||s.s(o)}return new Hv(n,i,Jr(s,","),null==r?Jr(e,",",Wr,Wr,Wr,Wr,Kv):r,function(t,n){var i=n.h1(0).d82(),e=null==i?null:i.i82(),r=null==e?null:e.l82_1,s=null==r?null:r.x82_1;if(!(null==s||s>=n.n())){var u=kr.h6e("WmsLayerFactory","createFromWmsAsync","The number of layers specified exceeds the services limit");throw is(Gr(u))}var o=t.b83(n),_=t.c83(n);return new Ib(nd(o),(h=_,function(t,n){return Vb(t.q84_1,t.r84_1,t.s84_1,t.t84_1,t.v84_1,t.w84_1,t.u84_1,n),n}(h,As(Pr(Wb)))));var h}(t,e))}function Yv(t){var n=t,i=t.t54();return i.k56(),n.c54_1=i.y2(),Xr}function Gv(t,n){this.l83_1=t,Ks.call(this,n)}function Kv(t){return t.f81_1}function Xv(t){var n=t.e81_1;return null==n?"":n}function Jv(t,n,i,e,r,s){Ks.call(this,s),this.w83_1=t,this.x83_1=n,this.y83_1=i,this.z83_1=e,this.a84_1=r}function Zv(t,n,i){Ks.call(this,i),this.o80_1=t,this.p80_1=n}function Qv(){Pt=this,this.y82_1=20,this.z82_1=mu(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.a83_1=fo(Wr,Yv)}function td(){return null==Pt&&new Qv,Pt}function nd(t){return function(t,n){return id.call(n,t.e7y_1,t.g7y_1,t.f7y_1,t.h7y_1),n.s7y_1=t.i7y_1,n.t7y_1=t.j7y_1,n.u7y_1=t.k7y_1,n.v7y_1=t.l7y_1,n}(t,As(Pr(id)))}function id(t,n,i,e){this.o7y_1=t,this.p7y_1=n,this.q7y_1=i,this.r7y_1=e,this.s7y_1="EPSG:4326",this.t7y_1=null,this.u7y_1=!0,this.v7y_1=null,this.w7y_1="WMS 1.3.0"}function ed(){this.y84_1="WMTS"}function rd(t,n,i,e,r){e=e===Wr?null:e,r=r===Wr?null:r,bq.call(this,e,r),this.j85_1=t,this.k85_1=n,this.l85_1=i,this.m85_1="WMTS",this.n85_1=!0}function sd(t,n,i){var e,r,s=ro().vs_1;return so(s,(e=new hd(n,null),r=function(t,n){return e.u89(t,n)},r.$arity=1,r),i)}function ud(t,n,i,e,r){return new rd(n,i,e.o86_1,null==r?e.l86_1:r,function(t,n){var i=function(t,n){var i=n.v();t:for(;i.w();){var e,r=i.y();switch(r.e88_1){case"urn:ogc:def:crs:OGC:1.3:CRS84":case"http://www.opengis.net/def/crs/OGC/1.3/CRS84":e=!0;break;case"urn:ogc:def:crs:EPSG::4326":e=!1;break;default:continue t}var s=e,u=as(),o=0,_=0,h=0,a=0,l=0,c=0,f=0,v=0,d=0,w=null,p=r.h88_1.v();n:for(;p.w();){var m=p.y();if(null==w||m.n88_1===w){var g=m.n88_1,y=mo("\\s+").t8(g,0);if(2===y.n()&&!(0!==a&&a!==m.o88_1||0!==l&&l!==m.p88_1)){if(0!==d&&Ar(2,d)!==m.q88_1)break n;if(0!==v&&Ar(2,v)!==m.r88_1)break n;if(u.d1()){try{s?(o=go(y.h1(0)),_=go(y.h1(1))):(o=go(y.h1(1)),_=go(y.h1(0)))}catch(t){if(t instanceof yo){kr.y5i(kr.u5i_1,"WmtsLayerFactory","determineTileSchemeCompatibleTileMatrixSet","Unable to parse TopLeftCorner values");continue n}throw t}h=m.m88_1,a=m.o88_1,l=m.o88_1,c=m.q88_1,f=m.r88_1}u.s(m.l88_1),v=m.r88_1,d=m.q88_1,w=m.n88_1}}}if(!u.d1())return new od(r.d88_1,u,h,o,_,a,l,c,f)}return null}(0,n.z86());if(null==i){var e=kr.h6e("WmtsLayerFactory","createWmtsLayer","Tile Schemes Not Compatible");throw fs(Gr(e))}var r=i;return new Ib(function(t,n,i){for(var e=n.w86_1.v();e.w();){var r=e.y();if(t.v87_1.r(r.a87_1))return new dd(po(po(r.c87_1,"{style}",n.s86_1.h1(0).g87_1),"{TileMatrixSet}",i.j87_1),i.k87_1,i.r87_1,r.a87_1)}var s,u=function(t,n){var i=n.i82().w88_1;if(null==i)return null;var e=i.b89();if(null==e)return null;var r=e.d89_1;if(r.d1())return null;var s=r.h1(0).f89();if(s.d1())return null;var u=s.h1(0).h89_1;return u.d1()?null:u.h1(0).j89_1.r("KVP")?s.h1(0).g89_1:null}(0,n);if(null==u){var o=kr.h6e("WmtsLayerFactory","getWmtsTileFactory","No KVP Get Support");throw fs(Gr(o))}t:{for(var _=t.v87_1.v();_.w();){var h=_.y();if(n.t86_1.r(h)){s=h;break t}}s=null}var a=s;if(null==a){var l=kr.h6e("WmtsLayerFactory","getWmtsTileFactory","Image Formats Not Compatible");throw fs(Gr(l))}var c=a,f=n.s86_1.h1(0).g87_1;return new dd(function(t,n,i,e,r,s){return Gr(eo().f1u(n).y5a().a5a("VERSION","1.0.0").a5a("SERVICE","WMTS").a5a("REQUEST","GetTile").a5a("LAYER",i).a5a("STYLE",r).a5a("FORMAT",e).a5a("TILEMATRIXSET",s).y2())+"&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}"}(0,u,n.o86_1,c,f,i.j87_1),i.k87_1,i.r87_1,c)}(t,n,r),function(t,n,i){var e=n.q86_1,r=null==e?null:e.e5s();if(null==r){var s=kr.h6e("WmtsLayerFactory","createWmtsLevelSet","WGS84BoundingBox not defined for layer: "+n.o86_1);throw fs(Gr(s))}var u=r,o=i.l87_1/Fh().j69(la().u6a_1.w6a_1)*28e-5,_=i.o87_1*o,h=i.p87_1*o,a=i.m87_1+_*i.q87_1,l=i.n87_1-h*i.r87_1,c=a-i.m87_1,f=i.n87_1-l;return Bb(u,W.i6d(l,i.m87_1,f,c),ga().n6b(f/i.r87_1,c/i.q87_1),i.k87_1.n(),i.o87_1,i.p87_1)}(0,n,r))}(t,e))}function od(t,n,i,e,r,s,u,o,_){this.j87_1=t,this.k87_1=n,this.l87_1=i,this.m87_1=e,this.n87_1=r,this.o87_1=s,this.p87_1=u,this.q87_1=o,this.r87_1=_}function _d(t){var n=t,i=t.t54();return i.k56(),n.c54_1=i.y2(),Xr}function hd(t,n){this.s89_1=t,Ks.call(this,n)}function ad(t,n,i,e,r,s){Ks.call(this,s),this.d8a_1=t,this.e8a_1=n,this.f8a_1=i,this.g8a_1=e,this.h8a_1=r}function ld(t,n,i){Ks.call(this,i),this.w85_1=t,this.x85_1=n}function cd(){Lt=this,this.s87_1=28e-5,this.t87_1="{style}",this.u87_1="{TileMatrixSet}",this.v87_1=mu(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.w87_1=fo(Wr,_d)}function fd(){return null==Lt&&new cd,Lt}function vd(){this.o8a_1="{TileMatrix}",this.p8a_1="{TileRow}",this.q8a_1="{TileCol}"}function dd(t,n,i,e){this.r8a_1=t,this.s8a_1=n,this.t8a_1=i,this.u8a_1=e,this.v8a_1="WMTS 1.0.0"}function wd(){}function pd(){Ft=this;var t=new Pu("earth.worldwind.ogc.wms.WmsAttribution",this,3);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("onlineResource",!0),t.x3c("logoURL",!0),t.z3c(new $o("Attribution","http://www.opengis.net/wms","")),this.x8a_1=t}function md(){return null==Ft&&new pd,Ft}function gd(t,n,i,e,r){return function(t,n,i,e,r,s){return 0!=(0&t)&&Bu(t,0,md().x8a_1),s.y8a_1=0==(1&t)?null:n,s.z8a_1=0==(2&t)?null:i,s.a8b_1=0==(4&t)?null:e,s}(t,n,i,e,0,As(Pr(yd)))}function yd(t,n,i){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,this.y8a_1=t,this.z8a_1=n,this.a8b_1=i}function bd(){Ut=this;var t=new Pu("earth.worldwind.ogc.wms.WmsAuthorityUrl",this,2);t.x3c("name",!1),t.x3c("onlineResource",!1),t.z3c(new $o("AuthorityURL","http://www.opengis.net/wms","")),this.b8b_1=t}function $d(){return null==Ut&&new bd,Ut}function kd(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,$d().b8b_1),r.c8b_1=n,r.d8b_1=i,r}(t,n,i,0,As(Pr(xd)))}function xd(){}function qd(){Ht=this;var t=new Pu("earth.worldwind.ogc.wms.WmsBoundingBox",this,7);t.x3c("CRS",!1),t.x3c("minx",!1),t.x3c("maxx",!1),t.x3c("miny",!1),t.x3c("maxy",!1),t.x3c("resx",!0),t.x3c("resy",!0),t.z3c(new $o("BoundingBox","http://www.opengis.net/wms","")),this.e8b_1=t}function Sd(){return null==Ht&&new qd,Ht}function Cd(t,n,i,e,r,s,u,o,_){return function(t,n,i,e,r,s,u,o,_,h){return 31!=(31&t)&&Bu(t,31,Sd().e8b_1),h.f8b_1=n,h.g8b_1=i,h.h8b_1=e,h.i8b_1=r,h.j8b_1=s,h.k8b_1=0==(32&t)?null:u,h.l8b_1=0==(64&t)?null:o,h}(t,n,i,e,r,s,u,o,0,As(Pr(Ed)))}function Ed(){}function Od(){}function jd(){Vt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsCapabilities",this,4);t.x3c("version",!0),t.x3c("updateSequence",!0),t.x3c("service",!1),t.x3c("capability",!1),t.z3c(new $o("WMS_Capabilities","http://www.opengis.net/wms","")),this.m8b_1=t}function Td(){return null==Vt&&new jd,Vt}function Ad(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 12!=(12&t)&&Bu(t,12,Td().m8b_1),u.j82_1=0==(1&t)?"1.3.0":n,u.k82_1=0==(2&t)?null:i,u.l82_1=e,u.m82_1=r,u.m82_1.h82_1=u,u}(t,n,i,e,r,0,As(Pr(zd)))}function zd(t,n,i,e){t=t===Wr?"1.3.0":t,n=n===Wr?null:n,this.j82_1=t,this.k82_1=n,this.l82_1=i,this.m82_1=e,this.m82_1.h82_1=this}function Id(){Bt=this,this.o8b_1=[null,new Wu(Rw()),null]}function Dd(){return null==Bt&&new Id,Bt}function Md(){Wt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsCapability",this,3);t.x3c("request",!1),t.x3c("layers",!0),t.x3c("exception",!0),t.z3c(new $o("Capability","http://www.opengis.net/wms","")),this.p8b_1=t}function Nd(){return null==Wt&&new Md,Wt}function Rd(t,n,i,e,r){return function(t,n,i,e,r,s){1!=(1&t)&&Bu(t,1,Nd().p8b_1),s.e82_1=n,s.f82_1=0==(2&t)?Ls():i,s.g82_1=0==(4&t)?new yw:e;for(var u=s.f82_1.v();u.w();)u.y().b82_1=s;return s}(t,n,i,e,0,As(Pr(Pd)))}function Pd(){}function Ld(){Yt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsContactAddress",this,6);t.x3c("addressType",!1),t.y3c(new bo(!0)),t.y3c(new $o("AddressType","http://www.opengis.net/wms","")),t.x3c("address",!1),t.y3c(new bo(!0)),t.y3c(new $o("Address","http://www.opengis.net/wms","")),t.x3c("city",!1),t.y3c(new bo(!0)),t.y3c(new $o("City","http://www.opengis.net/wms","")),t.x3c("stateOrProvince",!1),t.y3c(new bo(!0)),t.y3c(new $o("StateOrProvince","http://www.opengis.net/wms","")),t.x3c("postCode",!1),t.y3c(new bo(!0)),t.y3c(new $o("PostCode","http://www.opengis.net/wms","")),t.x3c("country",!1),t.y3c(new bo(!0)),t.y3c(new $o("Country","http://www.opengis.net/wms","")),t.z3c(new $o("ContactAddress","http://www.opengis.net/wms","")),this.q8b_1=t}function Fd(){return null==Yt&&new Ld,Yt}function Ud(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 63!=(63&t)&&Bu(t,63,Fd().q8b_1),_.r8b_1=n,_.s8b_1=i,_.t8b_1=e,_.u8b_1=r,_.v8b_1=s,_.w8b_1=u,_}(t,n,i,e,r,s,u,0,As(Pr(Hd)))}function Hd(){}function Vd(){}function Bd(){Gt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsContactInformation",this,6);t.x3c("position",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactPosition","http://www.opengis.net/wms","")),t.x3c("voiceTelephone",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactVoiceTelephone","http://www.opengis.net/wms","")),t.x3c("facsimileTelephone",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactFacsimileNumber","http://www.opengis.net/wms","")),t.x3c("electronicMailAddress",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactElectronicMailAddress","http://www.opengis.net/wms","")),t.x3c("contactAddress",!0),t.x3c("contactPersonPrimary",!0),t.z3c(new $o("ContactInformation","http://www.opengis.net/wms","")),this.x8b_1=t}function Wd(){return null==Gt&&new Bd,Gt}function Yd(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 0!=(0&t)&&Bu(t,0,Wd().x8b_1),_.y8b_1=0==(1&t)?null:n,_.z8b_1=0==(2&t)?null:i,_.a8c_1=0==(4&t)?null:e,_.b8c_1=0==(8&t)?null:r,_.c8c_1=0==(16&t)?null:s,_.d8c_1=0==(32&t)?null:u,_}(t,n,i,e,r,s,u,0,As(Pr(Gd)))}function Gd(t,n,i,e,r,s){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,s=s===Wr?null:s,this.y8b_1=t,this.z8b_1=n,this.a8c_1=i,this.b8c_1=e,this.c8c_1=r,this.d8c_1=s}function Kd(){Kt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsContactPersonPrimary",this,2);t.x3c("contactPerson",!1),t.y3c(new bo(!0)),t.y3c(new $o("ContactPerson","http://www.opengis.net/wms","")),t.x3c("contactOrganization",!1),t.y3c(new bo(!0)),t.y3c(new $o("ContactOrganization","http://www.opengis.net/wms","")),t.z3c(new $o("ContactPersonPrimary","http://www.opengis.net/wms","")),this.e8c_1=t}function Xd(){return null==Kt&&new Kd,Kt}function Jd(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,Xd().e8c_1),r.f8c_1=n,r.g8c_1=i,r}(t,n,i,0,As(Pr(Zd)))}function Zd(){}function Qd(){Xt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDcpType.WmsHttp",this,2);t.x3c("get",!1),t.y3c(new $o("Get","http://www.opengis.net/wms","")),t.x3c("post",!0),t.y3c(new $o("Post","http://www.opengis.net/wms","")),t.z3c(new $o("HTTP","http://www.opengis.net/wms","")),this.h8c_1=t}function tw(){return null==Xt&&new Qd,Xt}function nw(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,tw().h8c_1),r.i8c_1=n,r.j8c_1=0==(2&t)?null:i,r}(t,n,i,0,As(Pr(sw)))}function iw(){Jt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDcpType.WmsHttpProtocol",this,1);t.x3c("onlineResource",!1),this.k8c_1=t}function ew(){return null==Jt&&new iw,Jt}function rw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,ew().k8c_1),e.l8c_1=n,e}(t,n,0,As(Pr(uw)))}function sw(){}function uw(){}function ow(){Zt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDcpType",this,1);t.x3c("http",!1),t.z3c(new $o("DCPType","http://www.opengis.net/wms","")),this.m8c_1=t}function _w(){return null==Zt&&new ow,Zt}function hw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,_w().m8c_1),e.n8c_1=n,e}(t,n,0,As(Pr(aw)))}function aw(){}function lw(){Qt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDimension",this,8);t.x3c("name",!1),t.x3c("units",!1),t.x3c("unitSymbol",!0),t.x3c("default",!0),t.x3c("multipleValues",!0),t.x3c("nearestValue",!0),t.x3c("current",!0),t.x3c("value",!0),t.y3c(new Co(!0)),t.z3c(new $o("Dimension","http://www.opengis.net/wms","")),this.r8c_1=t}function cw(){return null==Qt&&new lw,Qt}function fw(t,n,i,e,r,s,u,o,_,h){return function(t,n,i,e,r,s,u,o,_,h,a){return 3!=(3&t)&&Bu(t,3,cw().r8c_1),a.s8c_1=n,a.t8c_1=i,a.u8c_1=0==(4&t)?null:e,a.v8c_1=0==(8&t)?null:r,a.w8c_1=0==(16&t)?null:s,a.x8c_1=0==(32&t)?null:u,a.y8c_1=0==(64&t)?null:o,a.z8c_1=0==(128&t)?null:_,a}(t,n,i,e,r,s,u,o,_,0,As(Pr(vw)))}function vw(){}function dw(){tn=this,this.a8d_1=[new Wu(Lu())]}function ww(){return null==tn&&new dw,tn}function pw(){nn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsException",this,1);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.z3c(new $o("Exception","http://www.opengis.net/wms","")),this.b8d_1=t}function mw(){return null==nn&&new pw,nn}function gw(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Bu(t,0,mw().b8d_1),e.c8d_1=0==(1&t)?Ls():n,e}(t,n,0,As(Pr(yw)))}function yw(t){ww(),t=t===Wr?Ls():t,this.c8d_1=t}function bw(){en=this;var t=new Pu("earth.worldwind.ogc.wms.WmsGeographicBoundingBox",this,4);t.x3c("north",!1),t.y3c(new bo(!0)),t.y3c(new $o("northBoundLatitude","http://www.opengis.net/wms","")),t.x3c("east",!1),t.y3c(new bo(!0)),t.y3c(new $o("eastBoundLongitude","http://www.opengis.net/wms","")),t.x3c("south",!1),t.y3c(new bo(!0)),t.y3c(new $o("southBoundLatitude","http://www.opengis.net/wms","")),t.x3c("west",!1),t.y3c(new bo(!0)),t.y3c(new $o("westBoundLongitude","http://www.opengis.net/wms","")),t.z3c(new $o("EX_GeographicBoundingBox","http://www.opengis.net/wms","")),this.d8d_1=t}function $w(){return null==en&&new bw,en}function kw(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 15!=(15&t)&&Bu(t,15,$w().d8d_1),u.e8d_1=n,u.f8d_1=i,u.g8d_1=e,u.h8d_1=r,u}(t,n,i,e,r,0,As(Pr(xw)))}function xw(){}function qw(){rn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsIdentifier",this,2);t.x3c("authority",!1),t.x3c("identifier",!1),t.y3c(new Co(!0)),t.z3c(new $o("Identifier","http://www.opengis.net/wms","")),this.i8d_1=t}function Sw(){return null==rn&&new qw,rn}function Cw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,Sw().i8d_1),r.j8d_1=n,r.k8d_1=i,r}(t,n,i,0,As(Pr(Ew)))}function Ew(){}function Ow(){sn=this,this.l8d_1=[new Wu(Lu()),null]}function jw(){return null==sn&&new Ow,sn}function Tw(){un=this;var t=new Pu("earth.worldwind.ogc.wms.WmsInfoUrl",this,2);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),this.m8d_1=t}function Aw(){return null==un&&new Tw,un}function zw(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Bu(t,2,Aw().m8d_1),r.n8d_1=0==(1&t)?Ls():n,r.o8d_1=i,r}(t,n,i,0,As(Pr(Iw)))}function Iw(){}function Dw(){on=this,this.p8d_1=[null,null,null,null,new Wu(Lu()),new Wu($p()),new Wu(Lu()),null,new Wu(Sd()),new Wu(cw()),null,new Wu($d()),new Wu(Sw()),new Wu(Xw()),new Wu(Aw()),new Wu(Aw()),null,null,null,null,null,null,null,null]}function Mw(){return null==on&&new Dw,on}function Nw(){_n=this;var t=new Pu("earth.worldwind.ogc.wms.WmsLayer",this,24);t.x3c("layers",!0),t.x3c("name",!0),t.y3c(new bo(!0)),t.y3c(new $o("Name","http://www.opengis.net/wms","")),t.x3c("title",!1),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/wms","")),t.x3c("keywordList",!0),t.y3c(new $o("KeywordList","http://www.opengis.net/wms","")),t.y3c(new jo("Keyword","http://www.opengis.net/wms","")),t.x3c("_styles",!0),t.x3c("_referenceSystems",!0),t.y3c(new $o("CRS","http://www.opengis.net/wms","")),t.x3c("_geographicBoundingBox",!0),t.x3c("_boundingBoxes",!0),t.x3c("_dimensions",!0),t.x3c("_attribution",!0),t.x3c("_authorityUrls",!0),t.x3c("identifiers",!0),t.x3c("metadataUrls",!0),t.x3c("dataUrls",!0),t.y3c(new $o("DataURL","http://www.opengis.net/wms","")),t.x3c("featureListUrls",!0),t.y3c(new $o("FeatureListURL","http://www.opengis.net/wms","")),t.x3c("_maxScaleDenominator",!0),t.y3c(new bo(!0)),t.y3c(new $o("MaxScaleDenominator","http://www.opengis.net/wms","")),t.x3c("_minScaleDenominator",!0),t.y3c(new bo(!0)),t.y3c(new $o("MinScaleDenominator","http://www.opengis.net/wms","")),t.x3c("isQueryable",!0),t.y3c(new $o("queryable","http://www.opengis.net/wms","")),t.x3c("_cascaded",!0),t.y3c(new $o("cascaded","http://www.opengis.net/wms","")),t.x3c("isOpaque",!0),t.y3c(new $o("opaque","http://www.opengis.net/wms","")),t.x3c("isNoSubsets",!0),t.y3c(new $o("noSubsets","http://www.opengis.net/wms","")),t.x3c("_fixedWidth",!0),t.y3c(new $o("fixedWidth","http://www.opengis.net/wms","")),t.x3c("_fixedHeight",!0),t.y3c(new $o("fixedHeight","http://www.opengis.net/wms","")),t.z3c(new $o("Layer","http://www.opengis.net/wms","")),this.q8d_1=t}function Rw(){return null==_n&&new Nw,_n}function Pw(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q){return function(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S){4!=(4&t)&&Bu(t,4,Rw().q8d_1),S.d81_1=0==(1&t)?Ls():n,S.e81_1=0==(2&t)?null:i,S.f81_1=e,S.g81_1=0==(8&t)?null:r,S.h81_1=0==(16&t)?Ls():s,S.i81_1=0==(32&t)?Ls():u,S.j81_1=0==(64&t)?Ls():o,S.k81_1=0==(128&t)?null:_,S.l81_1=0==(256&t)?Ls():h,S.m81_1=0==(512&t)?Ls():a,S.n81_1=0==(1024&t)?null:l,S.o81_1=0==(2048&t)?Ls():c,S.p81_1=0==(4096&t)?Ls():f,S.q81_1=0==(8192&t)?Ls():v,S.r81_1=0==(16384&t)?Ls():d,S.s81_1=0==(32768&t)?Ls():w,S.t81_1=0==(65536&t)?null:p,S.u81_1=0==(131072&t)?null:m,S.v81_1=0!=(262144&t)&&g,S.w81_1=0==(524288&t)?null:y,S.x81_1=0!=(1048576&t)&&b,S.y81_1=0!=(2097152&t)&&$,S.z81_1=0==(4194304&t)?null:k,S.a82_1=0==(8388608&t)?null:x,S.b82_1=null,S.c82_1=null;for(var C=S.d81_1.v();C.w();)C.y().c82_1=S;return S}(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,0,As(Pr(Lw)))}function Lw(){}function Fw(){hn=this,this.r8d_1=[new zo(Lu()),null,null,null]}function Uw(){return null==hn&&new Fw,hn}function Hw(){an=this;var t=new Pu("earth.worldwind.ogc.wms.WmsLogoUrl",this,4);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),t.x3c("width",!0),t.x3c("height",!0),t.z3c(new $o("LogoURL","http://www.opengis.net/wms","")),this.s8d_1=t}function Vw(){return null==an&&new Hw,an}function Bw(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 2!=(2&t)&&Bu(t,2,Vw().s8d_1),u.t8d_1=0==(1&t)?Io():n,u.u8d_1=i,u.v8d_1=0==(4&t)?null:e,u.w8d_1=0==(8&t)?null:r,u}(t,n,i,e,r,0,As(Pr(Ww)))}function Ww(){}function Yw(){ln=this,this.x8d_1=[null,new Wu(Lu()),null]}function Gw(){return null==ln&&new Yw,ln}function Kw(){cn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsMetadataUrl",this,3);t.x3c("type",!1),t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),t.z3c(new $o("MetadataURL","http://www.opengis.net/wms","")),this.y8d_1=t}function Xw(){return null==cn&&new Kw,cn}function Jw(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Bu(t,5,Xw().y8d_1),s.z8d_1=n,s.a8e_1=0==(2&t)?Ls():i,s.b8e_1=e,s}(t,n,i,e,0,As(Pr(Zw)))}function Zw(){}function Qw(){fn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsOnlineResource",this,2);t.x3c("type",!0),t.y3c(new $o("type","http://www.w3.org/1999/xlink","xlink")),t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.z3c(new $o("OnlineResource","http://www.opengis.net/wms","")),this.c8e_1=t}function tp(){return null==fn&&new Qw,fn}function np(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Bu(t,2,tp().c8e_1),r.p8c_1=0==(1&t)?"simple":n,r.q8c_1=i,r}(t,n,i,0,As(Pr(ip)))}function ip(){}function ep(){vn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsRequest",this,3);t.x3c("getCapabilities",!1),t.y3c(new $o("GetCapabilities","http://www.opengis.net/wms","")),t.x3c("getMap",!1),t.y3c(new $o("GetMap","http://www.opengis.net/wms","")),t.x3c("getFeatureInfo",!0),t.y3c(new $o("GetFeatureInfo","http://www.opengis.net/wms","")),t.z3c(new $o("Request","http://www.opengis.net/wms","")),this.d8e_1=t}function rp(){return null==vn&&new ep,vn}function sp(t,n,i,e,r){return function(t,n,i,e,r,s){return 3!=(3&t)&&Bu(t,3,rp().d8e_1),s.h84_1=n,s.i84_1=i,s.j84_1=0==(4&t)?null:e,s}(t,n,i,e,0,As(Pr(up)))}function up(){}function op(){dn=this,this.e8e_1=[new Wu(Lu()),null]}function _p(){return null==dn&&new op,dn}function hp(){wn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsRequestOperation",this,2);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("dcpType",!1),this.f8e_1=t}function ap(){return null==wn&&new hp,wn}function lp(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Bu(t,2,ap().f8e_1),r.k84_1=0==(1&t)?Ls():n,r.l84_1=i,r}(t,n,i,0,As(Pr(cp)))}function cp(){}function fp(){pn=this,this.g8e_1=[null,null,null,null,null,new Wu(Lu()),null,null,null,null,null]}function vp(){return null==pn&&new fp,pn}function dp(){mn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsService",this,11);t.x3c("name",!1),t.y3c(new bo(!0)),t.y3c(new $o("Name","http://www.opengis.net/wms","")),t.x3c("title",!1),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/wms","")),t.x3c("fees",!0),t.y3c(new bo(!0)),t.y3c(new $o("Fees","http://www.opengis.net/wms","")),t.x3c("accessConstraints",!0),t.y3c(new bo(!0)),t.y3c(new $o("AccessConstraints","http://www.opengis.net/wms","")),t.x3c("keywordList",!0),t.y3c(new $o("KeywordList","http://www.opengis.net/wms","")),t.y3c(new jo("Keyword","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),t.x3c("contactInformation",!0),t.x3c("maxWidth",!0),t.y3c(new bo(!0)),t.y3c(new $o("MaxWidth","http://www.opengis.net/wms","")),t.x3c("maxHeight",!0),t.y3c(new bo(!0)),t.y3c(new $o("MaxHeight","http://www.opengis.net/wms","")),t.x3c("layerLimit",!0),t.y3c(new bo(!0)),t.y3c(new $o("LayerLimit","http://www.opengis.net/wms","")),t.z3c(new $o("Service","http://www.opengis.net/wms","")),this.h8e_1=t}function wp(){return null==mn&&new dp,mn}function pp(t,n,i,e,r,s,u,o,_,h,a,l,c){return function(t,n,i,e,r,s,u,o,_,h,a,l,c,f){return 67!=(67&t)&&Bu(t,67,wp().h8e_1),f.n82_1=n,f.o82_1=i,f.p82_1=0==(4&t)?null:e,f.q82_1=0==(8&t)?null:r,f.r82_1=0==(16&t)?null:s,f.s82_1=0==(32&t)?Ls():u,f.t82_1=o,f.u82_1=0==(128&t)?null:_,f.v82_1=0==(256&t)?null:h,f.w82_1=0==(512&t)?null:a,f.x82_1=0==(1024&t)?null:l,f}(t,n,i,e,r,s,u,o,_,h,a,l,0,As(Pr(mp)))}function mp(){}function gp(){gn=this,this.i8e_1=[null,null,null,new Wu(Vw()),null,null]}function yp(){return null==gn&&new gp,gn}function bp(){yn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsStyle",this,6);t.x3c("name",!1),t.y3c(new bo(!0)),t.y3c(new $o("Name","http://www.opengis.net/wms","")),t.x3c("title",!1),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/wms","")),t.x3c("legendUrls",!0),t.y3c(new $o("LegendURL","http://www.opengis.net/wms","")),t.x3c("styleSheetUrl",!0),t.y3c(new $o("StyleSheetURL","http://www.opengis.net/wms","")),t.x3c("styleUrl",!0),t.y3c(new $o("StyleURL","http://www.opengis.net/wms","")),t.z3c(new $o("Style","http://www.opengis.net/wms","")),this.j8e_1=t}function $p(){return null==yn&&new bp,yn}function kp(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 3!=(3&t)&&Bu(t,3,$p().j8e_1),_.k8e_1=n,_.l8e_1=i,_.m8e_1=0==(4&t)?null:e,_.n8e_1=0==(8&t)?Ls():r,_.o8e_1=0==(16&t)?null:s,_.p8e_1=0==(32&t)?null:u,_}(t,n,i,e,r,s,u,0,As(Pr(xp)))}function xp(){}function qp(){bn=this,this.q8e_1=[new Wu(Lu()),null,null,null,null,new Wu(Lu())]}function Sp(){return null==bn&&new qp,bn}function Cp(){$n=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsAddress",this,6);t.x3c("deliveryPoints",!0),t.y3c(new $o("DeliveryPoint","http://www.opengis.net/ows/1.1","ows")),t.x3c("city",!0),t.y3c(new bo(!0)),t.y3c(new $o("City","http://www.opengis.net/ows/1.1","ows")),t.x3c("administrativeArea",!0),t.y3c(new bo(!0)),t.y3c(new $o("AdministrativeArea","http://www.opengis.net/ows/1.1","ows")),t.x3c("postalCode",!0),t.y3c(new bo(!0)),t.y3c(new $o("PostalCode","http://www.opengis.net/ows/1.1","ows")),t.x3c("country",!0),t.y3c(new bo(!0)),t.y3c(new $o("Country","http://www.opengis.net/ows/1.1","ows")),t.x3c("electronicMailAddresses",!0),t.y3c(new $o("ElectronicMailAddress","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("Address","http://www.opengis.net/ows/1.1","ows")),this.r8e_1=t}function Ep(){return null==$n&&new Cp,$n}function Op(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 0!=(0&t)&&Bu(t,0,Ep().r8e_1),_.s8e_1=0==(1&t)?Ls():n,_.t8e_1=0==(2&t)?null:i,_.u8e_1=0==(4&t)?null:e,_.v8e_1=0==(8&t)?null:r,_.w8e_1=0==(16&t)?null:s,_.x8e_1=0==(32&t)?Ls():u,_}(t,n,i,e,r,s,u,0,As(Pr(jp)))}function jp(t,n,i,e,r,s){Sp(),t=t===Wr?Ls():t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,s=s===Wr?Ls():s,this.s8e_1=t,this.t8e_1=n,this.u8e_1=i,this.v8e_1=e,this.w8e_1=r,this.x8e_1=s}function Tp(){kn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsBoundingBox",this,3);t.x3c("crs",!0),t.x3c("lowerCorner",!1),t.y3c(new bo(!0)),t.y3c(new $o("LowerCorner","http://www.opengis.net/ows/1.1","ows")),t.x3c("upperCorner",!1),t.y3c(new bo(!0)),t.y3c(new $o("UpperCorner","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("BoundingBox","http://www.opengis.net/ows/1.1","ows")),this.y8e_1=t}function Ap(){return null==kn&&new Tp,kn}function zp(t,n,i,e,r){return function(t,n,i,e,r,s){return 6!=(6&t)&&Bu(t,6,Ap().y8e_1),s.x87_1=0==(1&t)?null:n,s.y87_1=i,s.z87_1=e,s}(t,n,i,e,0,As(Pr(Ip)))}function Ip(){}function Dp(){xn=this,this.z8e_1=[null,new Wu(Lu())]}function Mp(){return null==xn&&new Dp,xn}function Np(){qn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsConstraint",this,2);t.x3c("name",!1),t.x3c("allowedValues",!0),t.y3c(new $o("AllowedValues","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Value","http://www.opengis.net/ows/1.1","ows")),t.y3c(new Do("AnyValue")),t.z3c(new $o("Constraint","http://www.opengis.net/ows/1.1","ows")),this.a8f_1=t}function Rp(){return null==qn&&new Np,qn}function Pp(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,Rp().a8f_1),r.i89_1=n,r.j89_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(Lp)))}function Lp(){}function Fp(){}function Up(){Sn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsContactInfo",this,5);t.x3c("phone",!0),t.x3c("address",!0),t.x3c("onlineResource",!0),t.x3c("hoursOfService",!0),t.y3c(new bo(!0)),t.y3c(new $o("HoursOfService","http://www.opengis.net/ows/1.1","ows")),t.x3c("contactInstructions",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactInstructions","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("ContactInfo","http://www.opengis.net/ows/1.1","ows")),this.b8f_1=t}function Hp(){return null==Sn&&new Up,Sn}function Vp(t,n,i,e,r,s,u){return function(t,n,i,e,r,s,u,o){return 0!=(0&t)&&Bu(t,0,Hp().b8f_1),o.c8f_1=0==(1&t)?null:n,o.d8f_1=0==(2&t)?null:i,o.e8f_1=0==(4&t)?null:e,o.f8f_1=0==(8&t)?null:r,o.g8f_1=0==(16&t)?null:s,o}(t,n,i,e,r,s,0,As(Pr(Bp)))}function Bp(t,n,i,e,r){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,this.c8f_1=t,this.d8f_1=n,this.e8f_1=i,this.f8f_1=e,this.g8f_1=r}function Wp(){Cn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsDcp",this,1);t.x3c("http",!1),t.z3c(new $o("DCP","http://www.opengis.net/ows/1.1","ows")),this.h8f_1=t}function Yp(){return null==Cn&&new Wp,Cn}function Gp(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,Yp().h8f_1),e.e89_1=n,e}(t,n,0,As(Pr(Kp)))}function Kp(){}function Xp(){}function Jp(){En=this,this.k8f_1=[new Wu(um()),new Wu(um())]}function Zp(){return null==En&&new Jp,En}function Qp(){On=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsHttp",this,2);t.x3c("getMethods",!0),t.y3c(new $o("Get","http://www.opengis.net/ows/1.1","ows")),t.x3c("postMethods",!0),t.y3c(new $o("Post","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("HTTP","http://www.opengis.net/ows/1.1","ows")),this.l8f_1=t}function tm(){return null==On&&new Qp,On}function nm(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Bu(t,0,tm().l8f_1),r.i8f_1=0==(1&t)?Ls():n,r.j8f_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(im)))}function im(t,n){Zp(),t=t===Wr?Ls():t,n=n===Wr?Ls():n,this.i8f_1=t,this.j8f_1=n}function em(){jn=this,this.m8f_1=[null,new Wu(Rp())]}function rm(){return null==jn&&new em,jn}function sm(){Tn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsHttpMethod",this,2);t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.x3c("constraints",!0),this.n8f_1=t}function um(){return null==Tn&&new sm,Tn}function om(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,um().n8f_1),r.g89_1=n,r.h89_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(_m)))}function _m(){}function hm(){An=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsOnlineResource",this,1);t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.z3c(new $o("OnlineResource","http://www.opengis.net/ows/1.1","ows")),this.o8f_1=t}function am(){return null==An&&new hm,An}function lm(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,am().o8f_1),e.p8f_1=n,e}(t,n,0,As(Pr(cm)))}function cm(){}function fm(){zn=this,this.q8f_1=[null,new Wu(Yp())]}function vm(){return null==zn&&new fm,zn}function dm(){In=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsOperation",this,2);t.x3c("name",!1),t.x3c("dcps",!0),t.z3c(new $o("Operation","http://www.opengis.net/ows/1.1","ows")),this.r8f_1=t}function wm(){return null==In&&new dm,In}function pm(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,wm().r8f_1),r.c89_1=n,r.d89_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(mm)))}function mm(){}function gm(){Dn=this,this.s8f_1=[new Wu(wm())]}function ym(){return null==Dn&&new gm,Dn}function bm(){Mn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsOperationsMetadata",this,1);t.x3c("operations",!0),t.z3c(new $o("OperationsMetadata","http://www.opengis.net/ows/1.1","ows")),this.t8f_1=t}function $m(){return null==Mn&&new bm,Mn}function km(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Bu(t,0,$m().t8f_1),e.a89_1=0==(1&t)?Ls():n,e}(t,n,0,As(Pr(xm)))}function xm(t){ym(),t=t===Wr?Ls():t,this.a89_1=t}function qm(){Nn=this,this.u8f_1=[new Wu(Lu()),new Wu(Lu())]}function Sm(){return null==Nn&&new qm,Nn}function Cm(){Rn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsPhone",this,2);t.x3c("voice",!0),t.y3c(new bo(!0)),t.y3c(new $o("Voice","http://www.opengis.net/ows/1.1","ows")),t.x3c("fax",!0),t.y3c(new bo(!0)),t.y3c(new $o("Facsimile","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("Phone","http://www.opengis.net/ows/1.1","ows")),this.v8f_1=t}function Em(){return null==Rn&&new Cm,Rn}function Om(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Bu(t,0,Em().v8f_1),r.w8f_1=0==(1&t)?Ls():n,r.x8f_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(jm)))}function jm(t,n){Sm(),t=t===Wr?Ls():t,n=n===Wr?Ls():n,this.w8f_1=t,this.x8f_1=n}function Tm(){}function Am(){Pn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsServiceContact",this,4);t.x3c("individualName",!0),t.y3c(new bo(!0)),t.y3c(new $o("IndividualName","http://www.opengis.net/ows/1.1","ows")),t.x3c("positionName",!0),t.y3c(new bo(!0)),t.y3c(new $o("PositionName","http://www.opengis.net/ows/1.1","ows")),t.x3c("contactInfo",!0),t.x3c("role",!0),t.y3c(new bo(!0)),t.y3c(new $o("Role","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("ServiceContact","http://www.opengis.net/ows/1.1","ows")),this.y8f_1=t}function zm(){return null==Pn&&new Am,Pn}function Im(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 0!=(0&t)&&Bu(t,0,zm().y8f_1),u.z8f_1=0==(1&t)?null:n,u.a8g_1=0==(2&t)?null:i,u.b8g_1=0==(4&t)?null:e,u.c8g_1=0==(8&t)?null:r,u}(t,n,i,e,r,0,As(Pr(Dm)))}function Dm(t,n,i,e){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,this.z8f_1=t,this.a8g_1=n,this.b8g_1=i,this.c8g_1=e}function Mm(){Ln=this,this.d8g_1=[null,null,new Wu(Lu()),null,new Wu(Lu()),null,new Wu(Lu())]}function Nm(){return null==Ln&&new Mm,Ln}function Rm(){Fn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsServiceIdentification",this,7);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("serviceType",!1),t.y3c(new bo(!0)),t.y3c(new $o("ServiceType","http://www.opengis.net/ows/1.1","ows")),t.x3c("serviceTypeVersions",!0),t.y3c(new $o("ServiceTypeVersion","http://www.opengis.net/ows/1.1","ows")),t.x3c("fees",!0),t.y3c(new bo(!0)),t.y3c(new $o("Fees","http://www.opengis.net/ows/1.1","ows")),t.x3c("accessConstraints",!0),t.y3c(new $o("AccessConstraints","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("ServiceIdentification","http://www.opengis.net/ows/1.1","ows")),this.e8g_1=t}function Pm(){return null==Fn&&new Rm,Fn}function Lm(t,n,i,e,r,s,u,o,_){return function(t,n,i,e,r,s,u,o,_,h){return 8!=(8&t)&&Bu(t,8,Pm().e8g_1),Xp.call(h),h.f8g_1=0==(1&t)?null:n,h.g8g_1=0==(2&t)?null:i,h.h8g_1=0==(4&t)?Ls():e,h.i8g_1=r,h.j8g_1=0==(16&t)?Ls():s,h.k8g_1=0==(32&t)?null:u,h.l8g_1=0==(64&t)?Ls():o,h}(t,n,i,e,r,s,u,o,0,As(Pr(Fm)))}function Fm(){}function Um(){Un=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsServiceProvider",this,3);t.x3c("providerName",!1),t.y3c(new bo(!0)),t.y3c(new $o("ProviderName","http://www.opengis.net/ows/1.1","ows")),t.x3c("onlineResource",!0),t.y3c(new $o("ProviderSite","http://www.opengis.net/ows/1.1","ows")),t.x3c("serviceContact",!1),t.z3c(new $o("ServiceProvider","http://www.opengis.net/ows/1.1","ows")),this.m8g_1=t}function Hm(){return null==Un&&new Um,Un}function Vm(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Bu(t,5,Hm().m8g_1),s.n8g_1=n,s.o8g_1=0==(2&t)?null:i,s.p8g_1=e,s}(t,n,i,e,0,As(Pr(Bm)))}function Bm(){}function Wm(){Hn=this,this.q8g_1=[null,null,null,null,null,null,new Wu(zg()),new Wu(am())]}function Ym(){return null==Hn&&new Wm,Hn}function Gm(){Vn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsCapabilities",this,8);t.x3c("version",!1),t.x3c("updateSequence",!0),t.x3c("serviceIdentification",!0),t.x3c("serviceProvider",!0),t.x3c("operationsMetadata",!0),t.x3c("contents",!1),t.x3c("themes",!0),t.y3c(new $o("Themes","http://www.opengis.net/wmts/1.0","")),t.y3c(new jo("Theme","http://www.opengis.net/wmts/1.0","")),t.x3c("serviceMetadataUrls",!0),t.y3c(new $o("ServiceMetadataURL","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("Capabilities","http://www.opengis.net/wmts/1.0","")),this.r8g_1=t}function Km(){return null==Vn&&new Gm,Vn}function Xm(t,n,i,e,r,s,u,o,_,h){return function(t,n,i,e,r,s,u,o,_,h,a){33!=(33&t)&&Bu(t,33,Km().r8g_1),a.s88_1=n,a.t88_1=0==(2&t)?null:i,a.u88_1=0==(4&t)?null:e,a.v88_1=0==(8&t)?null:r,a.w88_1=0==(16&t)?null:s,a.x88_1=u,a.y88_1=0==(64&t)?Ls():o,a.z88_1=0==(128&t)?Ls():_;for(var l=a.r68().v();l.w();)l.y().y86_1=a;return a}(t,n,i,e,r,s,u,o,_,0,As(Pr(Jm)))}function Jm(t,n,i,e,r,s,u,o){Ym(),n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,u=u===Wr?Ls():u,o=o===Wr?Ls():o,this.s88_1=t,this.t88_1=n,this.u88_1=i,this.v88_1=e,this.w88_1=r,this.x88_1=s,this.y88_1=u,this.z88_1=o;for(var _=this.r68().v();_.w();)_.y().y86_1=this}function Zm(){Bn=this,this.v8g_1=[new Wu(fg()),new Wu(Kg())]}function Qm(){return null==Bn&&new Zm,Bn}function tg(){Wn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsContents",this,2);t.x3c("layers",!0),t.x3c("tileMatrixSets",!0),t.z3c(new $o("Contents","http://www.opengis.net/wmts/1.0","")),this.w8g_1=t}function ng(){return null==Wn&&new tg,Wn}function ig(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Bu(t,0,ng().w8g_1),r.s8g_1=0==(1&t)?Ls():n,r.t8g_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(eg)))}function eg(t,n){Qm(),t=t===Wr?Ls():t,n=n===Wr?Ls():n,this.s8g_1=t,this.t8g_1=n}function rg(){Yn=this,this.x8g_1=[null,null,new Wu(Lu()),null,null,null,null,null,new Wu(Lu())]}function sg(){return null==Yn&&new rg,Yn}function ug(){Gn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsDimension",this,9);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("unitOfMeasure",!0),t.y3c(new bo(!0)),t.y3c(new $o("UOM","http://www.opengis.net/ows/1.1","ows")),t.x3c("unitSymbol",!0),t.y3c(new bo(!0)),t.y3c(new $o("UnitSymbol","http://www.opengis.net/wmts/1.0","")),t.x3c("valueDefault",!0),t.y3c(new bo(!0)),t.y3c(new $o("Default","http://www.opengis.net/wmts/1.0","")),t.x3c("current",!0),t.y3c(new bo(!0)),t.y3c(new $o("Current","http://www.opengis.net/wmts/1.0","")),t.x3c("values",!0),t.y3c(new $o("Value","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("Dimension","http://www.opengis.net/wmts/1.0","")),this.y8g_1=t}function og(){return null==Gn&&new ug,Gn}function _g(t,n,i,e,r,s,u,o,_,h,a){return function(t,n,i,e,r,s,u,o,_,h,a,l){return 8!=(8&t)&&Bu(t,8,og().y8g_1),Xp.call(l),l.z8g_1=0==(1&t)?null:n,l.a8h_1=0==(2&t)?null:i,l.b8h_1=0==(4&t)?Ls():e,l.c8h_1=r,l.d8h_1=0==(16&t)?null:s,l.e8h_1=0==(32&t)?null:u,l.f8h_1=0==(64&t)?null:o,l.g8h_1=0==(128&t)?null:_,l.h8h_1=0==(256&t)?Ls():h,l}(t,n,i,e,r,s,u,o,_,h,0,As(Pr(hg)))}function hg(){}function ag(){Kn=this,this.i8h_1=[null,null,new Wu(Lu()),null,new Wu(Ap()),null,new Wu(am()),new Wu(Cg()),new Wu(Lu()),new Wu(Lu()),new Wu(ny()),new Wu(bg()),new Wu(og())]}function lg(){return null==Kn&&new ag,Kn}function cg(){Xn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsLayer",this,13);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("boundingBoxes",!0),t.x3c("wgs84BoundingBox",!0),t.y3c(new $o("WGS84BoundingBox","http://www.opengis.net/ows/1.1","ows")),t.x3c("metadata",!0),t.y3c(new $o("Metadata","http://www.opengis.net/ows/1.1","ows")),t.x3c("styles",!0),t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wmts/1.0","")),t.x3c("infoFormats",!0),t.y3c(new $o("InfoFormat","http://www.opengis.net/wmts/1.0","")),t.x3c("tileMatrixSetLinks",!0),t.x3c("resourceUrls",!0),t.x3c("dimensions",!0),t.z3c(new $o("Layer","http://www.opengis.net/wmts/1.0","")),this.j8h_1=t}function fg(){return null==Xn&&new cg,Xn}function vg(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v){return function(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d){return 8!=(8&t)&&Bu(t,8,fg().j8h_1),Xp.call(d),d.l86_1=0==(1&t)?null:n,d.m86_1=0==(2&t)?null:i,d.n86_1=0==(4&t)?Ls():e,d.o86_1=r,d.p86_1=0==(16&t)?Ls():s,d.q86_1=0==(32&t)?null:u,d.r86_1=0==(64&t)?Ls():o,d.s86_1=0==(128&t)?Ls():_,d.t86_1=0==(256&t)?Ls():h,d.u86_1=0==(512&t)?Ls():a,d.v86_1=0==(1024&t)?Ls():l,d.w86_1=0==(2048&t)?Ls():c,d.x86_1=0==(4096&t)?Ls():f,d}(t,n,i,e,r,s,u,o,_,h,a,l,c,f,0,As(Pr(dg)))}function dg(){}function wg(){Jn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsLegendURL",this,2);t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.x3c("format",!1),t.z3c(new $o("LegendURL","http://www.opengis.net/wmts/1.0","")),this.m8h_1=t}function pg(){return null==Jn&&new wg,Jn}function mg(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,pg().m8h_1),r.n8h_1=n,r.o8h_1=i,r}(t,n,i,0,As(Pr(gg)))}function gg(){}function yg(){Zn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsResourceUrl",this,3);t.x3c("format",!1),t.x3c("resourceType",!1),t.x3c("template",!1),t.z3c(new $o("ResourceURL","http://www.opengis.net/wmts/1.0","")),this.p8h_1=t}function bg(){return null==Zn&&new yg,Zn}function $g(t,n,i,e,r){return function(t,n,i,e,r,s){return 7!=(7&t)&&Bu(t,7,bg().p8h_1),s.a87_1=n,s.b87_1=i,s.c87_1=e,s}(t,n,i,e,0,As(Pr(kg)))}function kg(){}function xg(){Qn=this,this.q8h_1=[null,null,new Wu(Lu()),null,null,new Wu(pg())]}function qg(){return null==Qn&&new xg,Qn}function Sg(){ti=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsStyle",this,6);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("isDefault",!0),t.x3c("legendUrls",!0),t.z3c(new $o("Style","http://www.opengis.net/wmts/1.0","")),this.r8h_1=t}function Cg(){return null==ti&&new Sg,ti}function Eg(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 8!=(8&t)&&Bu(t,8,Cg().r8h_1),Xp.call(_),_.d87_1=0==(1&t)?null:n,_.e87_1=0==(2&t)?null:i,_.f87_1=0==(4&t)?Ls():e,_.g87_1=r,_.h87_1=0!=(16&t)&&s,_.i87_1=0==(32&t)?Ls():u,_}(t,n,i,e,r,s,u,0,As(Pr(Og)))}function Og(){}function jg(){ni=this,this.s8h_1=[null,null,new Wu(Lu()),null,null,new Wu(Lu())]}function Tg(){return null==ni&&new jg,ni}function Ag(){ii=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTheme",this,6);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("themes",!0),t.x3c("layerRefs",!0),t.y3c(new $o("LayerRef","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("Theme","http://www.opengis.net/wmts/1.0","")),this.t8h_1=t}function zg(){return null==ii&&new Ag,ii}function Ig(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 8!=(8&t)&&Bu(t,8,zg().t8h_1),Xp.call(_),_.u8h_1=0==(1&t)?null:n,_.v8h_1=0==(2&t)?null:i,_.w8h_1=0==(4&t)?Ls():e,_.x8h_1=r,_.y8h_1=0==(16&t)?Ls():s,_.z8h_1=0==(32&t)?Ls():u,_}(t,n,i,e,r,s,u,0,As(Pr(Dg)))}function Dg(){}function Mg(){ei=this,this.a8i_1=[null,null,new Wu(Lu()),null,null,null,null,null,null,null]}function Ng(){return null==ei&&new Mg,ei}function Rg(){ri=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrix",this,10);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("scaleDenominator",!1),t.y3c(new bo(!0)),t.y3c(new $o("ScaleDenominator","http://www.opengis.net/wmts/1.0","")),t.x3c("topLeftCorner",!1),t.y3c(new bo(!0)),t.y3c(new $o("TopLeftCorner","http://www.opengis.net/wmts/1.0","")),t.x3c("tileWidth",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileWidth","http://www.opengis.net/wmts/1.0","")),t.x3c("tileHeight",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileHeight","http://www.opengis.net/wmts/1.0","")),t.x3c("matrixWidth",!1),t.y3c(new bo(!0)),t.y3c(new $o("MatrixWidth","http://www.opengis.net/wmts/1.0","")),t.x3c("matrixHeight",!1),t.y3c(new bo(!0)),t.y3c(new $o("MatrixHeight","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("TileMatrix","http://www.opengis.net/wmts/1.0","")),this.b8i_1=t}function Pg(){return null==ri&&new Rg,ri}function Lg(t,n,i,e,r,s,u,o,_,h,a,l){return function(t,n,i,e,r,s,u,o,_,h,a,l,c){return 1016!=(1016&t)&&Bu(t,1016,Pg().b8i_1),Xp.call(c),c.i88_1=0==(1&t)?null:n,c.j88_1=0==(2&t)?null:i,c.k88_1=0==(4&t)?Ls():e,c.l88_1=r,c.m88_1=s,c.n88_1=u,c.o88_1=o,c.p88_1=_,c.q88_1=h,c.r88_1=a,c}(t,n,i,e,r,s,u,o,_,h,a,0,As(Pr(Fg)))}function Fg(){}function Ug(){si=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrixLimits",this,5);t.x3c("tileMatrixIdentifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileMatrix","http://www.opengis.net/wmts/1.0","")),t.x3c("minTileRow",!1),t.y3c(new bo(!0)),t.y3c(new $o("MinTileRow","http://www.opengis.net/wmts/1.0","")),t.x3c("maxTileRow",!1),t.y3c(new bo(!0)),t.y3c(new $o("MaxTileRow","http://www.opengis.net/wmts/1.0","")),t.x3c("minTileCol",!1),t.y3c(new bo(!0)),t.y3c(new $o("MinTileCol","http://www.opengis.net/wmts/1.0","")),t.x3c("maxTileCol",!1),t.y3c(new bo(!0)),t.y3c(new $o("MaxTileCol","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),this.c8i_1=t}function Hg(){return null==si&&new Ug,si}function Vg(t,n,i,e,r,s,u){return function(t,n,i,e,r,s,u,o){return 31!=(31&t)&&Bu(t,31,Hg().c8i_1),o.d8i_1=n,o.e8i_1=i,o.f8i_1=e,o.g8i_1=r,o.h8i_1=s,o}(t,n,i,e,r,s,0,As(Pr(Bg)))}function Bg(){}function Wg(){ui=this,this.i8i_1=[null,null,new Wu(Lu()),null,null,null,null,new Wu(Pg())]}function Yg(){return null==ui&&new Wg,ui}function Gg(){oi=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrixSet",this,8);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("supportedCrs",!1),t.y3c(new bo(!0)),t.y3c(new $o("SupportedCRS","http://www.opengis.net/ows/1.1","ows")),t.x3c("wellKnownScaleSet",!0),t.y3c(new bo(!0)),t.y3c(new $o("WellKnownScaleSet","http://www.opengis.net/wmts/1.0","")),t.x3c("boundingBox",!0),t.x3c("tileMatrices",!0),t.z3c(new $o("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),this.j8i_1=t}function Kg(){return null==oi&&new Gg,oi}function Xg(t,n,i,e,r,s,u,o,_,h){return function(t,n,i,e,r,s,u,o,_,h,a){return 24!=(24&t)&&Bu(t,24,Kg().j8i_1),Xp.call(a),a.a88_1=0==(1&t)?null:n,a.b88_1=0==(2&t)?null:i,a.c88_1=0==(4&t)?Ls():e,a.d88_1=r,a.e88_1=s,a.f88_1=0==(32&t)?null:u,a.g88_1=0==(64&t)?null:o,a.h88_1=0==(128&t)?Ls():_,a}(t,n,i,e,r,s,u,o,_,0,As(Pr(Jg)))}function Jg(){}function Zg(){_i=this,this.k8i_1=[null,new Wu(Hg())]}function Qg(){return null==_i&&new Zg,_i}function ty(){hi=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrixSetLink",this,2);t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),t.x3c("tileMatrixSetLimits",!0),t.y3c(new $o("TileMatrixSetLimits","http://www.opengis.net/wmts/1.0","")),t.y3c(new jo("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("TileMatrixSetLink","http://www.opengis.net/wmts/1.0","")),this.l8i_1=t}function ny(){return null==hi&&new ty,hi}function iy(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,ny().l8i_1),r.k8h_1=n,r.l8h_1=0==(2&t)?Ls():i,r}(t,n,i,0,As(Pr(ey)))}function ey(){}function ry(t){t=t===Wr?null:t,this.v7h_1=t,this.w7h_1=!0,this.x7h_1=!0,this.y7h_1=null,this.z7h_1=null}function sy(){return new oa}function uy(){return new Float32Array(2)}function oy(t,n){n=n===Wr?null:n,ry.call(this,n),this.s8i_1=Wa(t),this.t8i_1=fu(sy),this.u8i_1=fu(uy),this.v8i_1=new Hr(0,0),this.w8i_1=0,this.x8i_1=null,this.y8i_1=null}function _y(){return t=As(Pr(cy)),cy.call(t,1,1,1,1),t;var t}function hy(t,n,i,e){return function(t,n,i,e,r){return e=e===Wr?255:e,cy.call(r,t/255,n/255,i/255,e/255),r}(t,n,i,e,As(Pr(cy)))}function ay(t){return function(t,n){return cy.call(n,t.k5g_1,t.l5g_1,t.m5g_1,t.n5g_1),n}(t,As(Pr(cy)))}function ly(){}function cy(t,n,i,e){e=e===Wr?1:e,this.k5g_1=t,this.l5g_1=n,this.m5g_1=i,this.n5g_1=e}function fy(){if(fi)return Xr;fi=!0,ai=new vy("NORMAL",0),li=new vy("BOLD",1),ci=new vy("ITALIC",2)}function vy(t,n){ds.call(this,t,n)}function dy(){return fy(),ai}function wy(){return fy(),li}function py(){this.c5u_1=aS().d5t_1,this.d5u_1=Kr()}function my(){this.i8j_1=16777215}function gy(t,n){t=t===Wr?null:t,n=n===Wr?null:n,this.j8j_1=t,this.k8j_1=n}function yy(){return Xi.j8l()}function by(){this.d5p_1=1,this.e5p_1=1,this.f5p_1=0,this.g5p_1=0,this.h5p_1=0,this.i5p_1=0,this.j5p_1=null,this.k5p_1=null,this.l5p_1=new Hr(0,0),this.m5p_1=tl(),this.n5p_1=il(),this.o5p_1=Oa(),this.p5p_1=Oa(),this.q5p_1=Oa(),this.r5p_1=fa(),this.s5p_1=null,this.t5p_1=null,this.u5p_1=null,this.v5p_1=null,this.w5p_1=null,this.x5p_1=null,this.y5p_1=null,this.z5p_1=!1,this.a5q_1=!1,this.b5q_1=0,this.c5q_1=0,this.d5q_1=Kr(),this.e5q_1=Kr(),this.f5q_1=new Nq(this),this.g5q_1=new gy,this.h5q_1=tl(),this.i5q_1=fu(yy)}function $y(){}function ky(){}function xy(t,n,i,e,r){r=r!==Wr&&r,this.r5t_1=t,this.s5t_1=n,this.t5t_1=i,this.u5t_1=e,this.v5t_1=r,this.w5t_1=qa(),this.x5t_1=oS().f5t_1,this.y5t_1=null,this.z5t_1=!1,this.a5u_1=!1}function qy(t,n){this.b62_1=t,this.c62_1=n,this.d62_1=Kr(),this.e62_1=rS().g5t_1}function Sy(t,n){return!(!t.n5u_1[t.o5u_1].d8j()&&!function(t,n){var i=n.x5j_1.o8m();return!!i.d8j()&&(n.x5j_1.d5v(t.j5u_1,i),n.x5j_1.q8m(t.j5u_1,t.l5u_1,null,t.k5u_1),n.x5j_1.d5v(t.j5u_1,rS().g5t_1),t.n5u_1[t.o5u_1]=i,i.d8j())}(t,n)||(t.p5u_1=0,0))}function Cy(){this.s8m_1=65536,this.t8m_1=64}function Ey(t,n,i,e){i=i===Wr?65536:i,e=e===Wr?64:e,this.j5u_1=t,this.k5u_1=n,this.l5u_1=i,this.m5u_1=e;for(var r=0,s=this.m5u_1,u=hs(Array(s),null);r=0&&i>=0)){var r=kr.y5i(kr.t5i_1,"Ellipse","constructor","invalidRadius");throw is(Gr(r))}}function Qy(){}function tb(){qi=this,this.x8q_1=-.1,this.y8q_1=new ib}function nb(){return null==qi&&new tb,qi}function ib(){this.z8q_1=tl(),this.a8r_1=tl(),this.b8r_1=Za(),this.c8r_1=Oa(),this.d8r_1=il(),this.e8r_1=0,this.f8r_1=_y(),this.g8r_1=0}function eb(t,n,i){nb(),n=n===Wr?null:n,i=i===Wr?jb():i,ry.call(this),this.f79_1=n,this.g79_1=i,this.h79_1=La(t),this.i79_1=Mh(),this.j79_1=Fh().v5m_1,this.k79_1=hb(),this.l79_1=!1,this.m79_1=null,this.o79_1=!1,this.p79_1=0}function rb(){}function sb(t,n,i){i=i===Wr?Cb():i,ry.call(this),this.p8r_1=i,this.q8r_1=La(t),this.r8r_1=n,this.s8r_1=Mh(),this.t8r_1=!1,this.u8r_1=null;var e=Cb();if(e.s7b_1.t5w(new cy(1,0,0,1)),this.v8r_1=e,this.x8r_1=tl(),this.y8r_1=0,this.z8r_1=_y(),this.a8s_1=new _a,!(n>=0)){var r=kr.y5i(kr.t5i_1,"OmnidirectionalSightline","constructor","invalidRange");throw is(Gr(r))}}function ub(){if(Ei)return Xr;Ei=!0,Si=new ob("RELATIVE_TO_GLOBE",0),Ci=new ob("RELATIVE_TO_SCREEN",1)}function ob(t,n){ds.call(this,t,n)}function _b(){return ub(),Si}function hb(){return ub(),Ci}function ab(){Oi=this,this.d8s_1=10;var t=new Dy;t.x8m_1=Ry(),t.y8m_1=Fy(),this.e8s_1=t}function lb(){return null==Oi&&new ab,Oi}function cb(t,n){lb(),n=n===Wr?Cb():n,Ky.call(this,n),this.a8t_1=t,this.b8t_1=new Float32Array(0),this.c8t_1=0,this.d8t_1=0,this.e8t_1=0,this.f8t_1=as(),this.g8t_1=as(),this.h8t_1=as(),this.k8t_1=tl(),this.l8t_1=0,this.m8t_1=tl(),this.n8t_1=tl(),this.o8t_1=tl(),this.p8t_1=qa(),this.q8t_1=pa()}function fb(){if(Ai)return Xr;Ai=!0,ji=new vb("GREAT_CIRCLE",0),Ti=new vb("LINEAR",1),new vb("RHUMB_LINE",2)}function vb(t,n){ds.call(this,t,n)}function db(){return fb(),ji}function wb(){return fb(),Ti}function pb(){zi=this,this.v8t_1=4e5,this.w8t_1=-.03,this.x8t_1=tl(),this.y8t_1=tl(),this.z8t_1=tl(),this.a8u_1=tl(),this.b8u_1=Za(),this.c8u_1=Oa(),this.d8u_1=Oa(),this.e8u_1=il(),this.f8u_1=il()}function mb(){return null==zi&&new pb,zi}function gb(t,n,i){var e;mb(),n=n===Wr?yb():n,e=!1!==(null==(i=i===Wr?null:i)?null:0===xu(i))?"Placemark":i,ry.call(this,e),this.x8u_1=n,this.y8u_1=La(t),this.z8u_1=Mh(),this.a8v_1=null,this.b8v_1=!1,this.c8v_1=null,this.d8v_1=null,this.e8v_1=!1,this.f8v_1=4e5,this.g8v_1=6e5,this.h8v_1=!1,this.i8v_1=!1,this.j8v_1=!1,this.k8v_1=Fh().v5m_1,this.l8v_1=hb(),this.m8v_1=Fh().v5m_1,this.n8v_1=hb(),this.p8v_1=0,this.q8v_1=_y(),this.r8v_1=0}function yb(){return t=As(Pr($b)),$b.call(t,null,new cy(1,1,1,1),U.t6c(),1,0,!0,!1,!0,jb(),Cb()),t;var t}function bb(){}function $b(t,n,i,e,r,s,u,o,_,h){this.h8u_1=t,this.i8u_1=e,this.j8u_1=r,this.k8u_1=s,this.l8u_1=u,this.m8u_1=o,this.n8u_1=n,this.o8u_1=i,this.p8u_1=_,this.q8u_1=h}function kb(){Di=this,this.c8w_1=5,this.d8w_1=10;var t=new Dy;t.y8m_1=Fy(),this.e8w_1=t;var n=new Dy;n.y8m_1=Fy(),n.x8m_1=Ry(),this.f8w_1=n,this.g8w_1=0,this.h8w_1=1,this.i8w_1=2}function xb(){return null==Di&&new kb,Di}function qb(t){this.j8w_1=t,L$.call(this)}function Sb(t,n){xb(),t=t===Wr?Ls():t,n=n===Wr?Cb():n,Ky.call(this,n),this.g8x_1=qu([t]),this.h8x_1=new Float32Array(0),this.i8x_1=0,this.j8x_1=new Float32Array(0),this.k8x_1=0,this.l8x_1=0,this.m8x_1=as(),this.n8x_1=as(),this.o8x_1=as(),this.p8x_1=as(),this.q8x_1=xb().t7w(),this.r8x_1=xb().t7w(),this.s8x_1=xb().t7w(),this.t8x_1=xb().t7w(),this.u8x_1=tl(),this.v8x_1=0,this.w8x_1=0,this.x8x_1=new qb(this),this.y8x_1=tl(),this.z8x_1=tl(),this.a8y_1=tl(),this.b8y_1=qa(),this.c8y_1=Oa(),this.d8y_1=pa(),this.e8y_1=new Float64Array(3),this.f8y_1=new Int32Array(3),this.g8y_1=Uo(3),this.h8y_1=!0,this.i8y_1=0}function Cb(){return t=As(Pr(Eb)),Eb.call(t,!0,!0,!1,!0,!0,!1,new cy(1,1,1,1),new cy(1,0,0,1),1,null,null),t;var t}function Eb(t,n,i,e,r,s,u,o,_,h,a){this.j7b_1=t,this.k7b_1=n,this.l7b_1=i,this.m7b_1=e,this.n7b_1=r,this.o7b_1=s,this.p7b_1=_,this.q7b_1=h,this.r7b_1=a,this.s7b_1=u,this.t7b_1=o}function Ob(t,n){oy.call(this,t,"Surface Image"),this.k70_1=n,this.l70_1=null,this.m70_1=Ba()}function jb(){return t=As(Pr(Ab)),Ab.call(t,Cq(),new cy(1,1,1,1),U.v6c(),new cy(0,0,0,1),3,!0,!0,1),t;var t}function Tb(t){return function(t,n){return Ab.call(n,t.b7b_1,ay(t.c7b_1),Ta(t.d7b_1),ay(t.e7b_1),t.x7a_1,t.y7a_1,t.z7a_1,t.a7b_1),n}(t,As(Pr(Ab)))}function Ab(t,n,i,e,r,s,u,o){this.x7a_1=r,this.y7a_1=s,this.z7a_1=u,this.a7b_1=o,this.b7b_1=t,this.c7b_1=n,this.d7b_1=i,this.e7b_1=e}function zb(){Mi=this,this.u8z_1=3;Zs(),this.v8z_1=tu(5,Qs());Zs(),this.w8z_1=tu(15,Qs())}function Ib(t,n){null==Mi&&new zb,ry.call(this,"Tiled Surface Image"),this.r7s_1=t,this.s7s_1=n,this.t7s_1=null,this.u7s_1=1,this.v7s_1=!0,this.w7s_1=!0,this.x7s_1=null,this.y7s_1=!1,this.z7s_1=new Jb(new Hr(1200,0)),this.a7t_1=null,this.b7t_1=null,this.c7t_1=null,this.d7t_1=qa(),this.e7t_1=as(),this.f7t_1=null}function Db(t){this.a90_1=t,this.x8z_1=Ds.h3k(),this.y8z_1=0,this.z8z_1=!1}function Mb(t,n){this.b6s_1=t,this.c6s_1=n;Zs(),this.d6s_1=tu(60,Qs()),this.e6s_1=Kr()}function Nb(t){this.j7s_1=t,this.k7s_1=null}function Rb(){return new oa}function Pb(){return new Float32Array(2)}function Lb(t){this.t6u_1=t,this.u6u_1=fu(Rb),this.v6u_1=fu(Pb),this.w6u_1=new Hr(0,0),this.x6u_1=0,this.y6u_1=null,this.z6u_1=null,this.a6v_1=tl()}function Fb(){this.d90_1=12}function Ub(){this.e90_1=0;var t=this.e90_1;this.f90_1=hs(Array(t),null)}function Hb(t,n,i){this.b6v_1=t,this.c6v_1=n,this.d6v_1=i,this.e6v_1=Yr(this.b6v_1.z6w_1*this.b6v_1.x6w_1.q65()/this.d6v_1.n5i_1),this.f6v_1=Yr(this.b6v_1.a6x_1*this.b6v_1.x6w_1.r65()/this.d6v_1.m5i_1),this.g6v_1=this.b6v_1.z6w_1,this.h6v_1=this.b6v_1.a6x_1,this.i6v_1=Ph(this.d6v_1.n5i_1)/this.b6v_1.z6w_1}function Vb(t,n,i,e,r,s,u,o){if(u=u===Wr?0:u,Wb.call(o),!(i.m5i_1>0&&i.n5i_1>0)){var _=kr.y5i(kr.t5i_1,"LevelSet","constructor","invalidTileDelta");throw is(Gr(_))}if(!(e>=0)){var h=kr.y5i(kr.t5i_1,"LevelSet","constructor","invalidNumLevels");throw is(Gr(h))}if(!(r>=1&&s>=1)){var a=kr.y5i(kr.t5i_1,"LevelSet","constructor","invalidWidthOrHeight");throw is(Gr(a))}o.w6w_1=t,o.x6w_1=n,o.y6w_1=i,o.z6w_1=r,o.a6x_1=s,o.b6x_1=u;for(var l=o,c=0,f=hs(Array(e),null);c=0)){var s=kr.y5i(kr.t5i_1,"LruMemoryCache","constructor","invalidCapacity");throw is(Gr(s))}var u=this.w68_1,o=this.x68_1;if(!(new Hr(0,0).ca(o)<=0&&o.ca(u)<0)){var _=kr.y5i(kr.t5i_1,"LruMemoryCache","constructor","The specified low-water value is greater than or equal to the capacity, or less than 1");throw is(Gr(_))}}function Zb(){return Ri||(Ri=!0,Ni=Is([zs("errorReadingProgramSource","Error reading program sources"),zs("exceptionParsingText","Exception parsing text"),zs("invalidBitmap","The bitmap is recycled"),zs("invalidCapacity","The capacity is less than 1"),zs("invalidCount","The count is invalid"),zs("invalidClipDistance","The clip distance is invalid"),zs("invalidFieldOfView","The field of view is invalid"),zs("invalidHeight","The height is invalid"),zs("invalidIndex","The index is invalid"),zs("invalidNumIntervals","The number of intervals is invalid"),zs("invalidNumLevels","The number of levels is invalid"),zs("invalidRadius","The radius is invalid"),zs("invalidRange","The range is invalid"),zs("invalidResolution","The resolution is invalid"),zs("invalidStride","The stride is invalid"),zs("invalidTileDelta","The tile delta is invalid"),zs("invalidWidth","The width is invalid"),zs("invalidWidthOrHeight","The width or the height is invalid"),zs("missingArray","The array insufficient length"),zs("missingLayerNames","The layer names are empty"),zs("singularMatrix","The matrix cannot be inverted")])),Ni}function Qb(){}function t$(t,n){this.y7w_1=t,this.z7w_1=n}function n$(){}function i$(){this.e6x_1=!0}function e$(t,n,i,e){Lb.call(this,t),this.r6v_1=n,this.s6v_1=i,this.t6v_1=e,this.u6v_1=this.r6v_1.c6v_1+"."+this.s6v_1+"."+this.t6v_1,this.v6v_1=tl()}function r$(t,n,i,e){if(n=n===Wr?t.a():n,i=i===Wr?t.a()-1|0:i,e=e===Wr||e,i<0)return t.y7(0,Du(49)),e&&t.f8(n),zs(t.toString(),!0);var r=t.b(i);return r===Du(46)?r$(t,n,i-1|0,e):r!==Du(57)?(t.e8(i,Go(r,1)),zs(t.toString(),!1)):(t.e8(i,Du(48)),r$(t,n,i-1|0,e))}function s$(t,n){t.v90_1=n,t.x90_1="e"+t.v90_1}function u$(t,n){var i=n;i>t.w90_1.length&&(i=t.w90_1.length);var e=new Bs(Ko(t.w90_1,Es(0,i)));if(e.a()===t.w90_1.length)return e.toString();var r=Hs(t.w90_1,e.a());if(r===Du(46)){if((e.a()+1|0)>=t.w90_1.length)return e.toString();r=Hs(t.w90_1,e.a()+1|0)}if(Jo("56789",r)){var s=r$(e),u=s.ue();if(!s.ve())return u;s$(t,t.v90_1+1|0);var o=Xo(u,Du(46)),_=new Bs(u);return-1===o?u:_.f8(o).y7(o-1|0,Du(46)).toString()}return e.toString()}function o$(t){this.t90_1=t,this.v90_1=0;var n=this.t90_1,i=Math.abs(n),e=Ir(i);s$(this,ks(e)),this.v90_1<0&&s$(this,this.v90_1-1|0);var r=this.v90_1;this.u90_1=i/Math.pow(10,r),this.t90_1<0&&(this.u90_1=-this.u90_1),this.w90_1=this.u90_1.toString(),this.x90_1="e"+this.v90_1}function _$(){if(Vi)return Xr;Vi=!0,Fi=new f$("FLAGS",0),Ui=new f$("LENGTH",1),Hi=new f$("FRACTION",2)}function h$(t){var n=t.z90_1;return du("englishMonthNames",1,vu,(function(t){return h$(t)}),null),n.j2()}function a$(t){var n=t.a91_1;return du("englishWeekDayNames",1,vu,(function(t){return a$(t)}),null),n.j2()}function l$(){return Qo("January February March April May June July August September October November December",Zo([Du(32)]))}function c$(){return Qo("Monday Tuesday Wednesday Thursday Friday Saturday Sunday",Zo([Du(32)]))}function f$(t,n){ds.call(this,t,n)}function v$(t){return t.d91_1.equals(T$())}function d$(t,n){t.b91_1.s91(n)}function w$(t){return t.b91_1.t91(t.c91_1)}function p$(t,n){var i,e=t.b91_1.ye();if(k$(t),e===Du(72))i=N$("%02d",[w$(t).r3l()]);else if(e===Du(107))i=N$("%d",[w$(t).r3l()]);else if(e===Du(73)||e===Du(108)){var r=w$(t).r3l();r>12&&(r=r-12|0),i=e===Du(73)?N$("%02d",[r]):r.toString()}else if(e===Du(77))i=N$("%02d",[w$(t).v3l()]);else if(e===Du(83))i=N$("%02d",[w$(t).z3l()]);else if(e===Du(76))i=N$("%03d",[w$(t).x3l()/1e6|0]);else if(e===Du(78))i=N$("%09d",[w$(t).x3l()]);else if(e===Du(112))i=n?w$(t).r3l()>12?"PM":"AM":w$(t).r3l()>12?"pm":"am";else if(e===Du(122)){var s=ns().z3z();i=po(n_(s,t_(w$(t),s)).toString(),":","")}else if(e===Du(90)){var u=ns().z3z();i=n_(u,t_(w$(t),u)).toString()}else if(e===Du(115)){var o=ns().z3z();i=t_(w$(t),o).f3o().toString()}else if(e===Du(81)){var _=ns().z3z();i=t_(w$(t),_).n3z().toString()}else if(e===Du(66))i=j$().x91(i_(w$(t).u3z()));else if(e===Du(98)||e===Du(104))i=j$().w91(i_(w$(t).u3z()));else if(e===Du(101))i=w$(t).r3k().toString();else if(e===Du(100))i=N$("%02s",[w$(t).r3k()]);else if(e===Du(109))i=N$("%02s",[i_(w$(t).u3z())]);else if(e===Du(65))i=j$().v91(w$(t).r3p());else if(e===Du(97))i=j$().u91(w$(t).r3p());else if(e===Du(121))i=Su(w$(t).p3k().toString(),2);else if(e===Du(89))i=N$("%04d",[w$(t).p3k()]);else if(e===Du(106))i=N$("%03d",[w$(t).v3z()]);else if(e===Du(82))i=N$("%1!tH:%1!tM",[w$(t)]);else if(e===Du(114))i=N$(n?"%1!tI:%1!tM:%1!tS %1!Tp":"%1!tI:%1!tM:%1!tS %1!tp",[w$(t)]);else if(e===Du(84))i=N$("%tH:%1!tM:%1!tS",[w$(t)]);else if(e===Du(68))i=N$("%tm/%1!td/%1!ty",[w$(t)]);else if(e===Du(70))i=N$("%tY-%1!tm-%1!td",[w$(t)]);else if(e===Du(99))i=N$("%ta %1!tb %1!td %1!tT %1!tZ %1!tY",[w$(t)]);else if(e===Du(79)){var h=ns().z3z(),a=n_(h,t_(w$(t),h)).toString();i=N$("%tFT%1!tT%s",[w$(t),a])}else e===Du(35)?i=N$("%tY%1!tm%1!td%1!tH%1!tM%1!tS",[t_(w$(t),ns().g3z_1)]):d$(t,"unknown time field specificator: 't"+Vs(e)+"'");q$(t,i)}function m$(t){k$(t);var n=Us(t.b91_1.z91(t.c91_1));t.j91_1&&t.h91_1===Du(48)&&n.ca(new Hr(0,0))>0?x$(t,n.toString(),"+"):q$(t,t.j91_1?"+"+n.toString():n.toString())}function g$(t,n){k$(t);var i=Us(t.b91_1.z91(t.c91_1));t.j91_1&&d$(t,"'+' is incompatible with hex format");var e=e_(i,16);q$(t,n?e.toUpperCase():e.toLowerCase())}function y$(t){k$(t);var n=Us(t.b91_1.z91(t.c91_1));t.j91_1&&d$(t,"'+' is incompatible with oct format"),q$(t,e_(n,8))}function b$(t){k$(t),q$(t,Vs(t.b91_1.a92(t.c91_1)))}function $$(t,n){n&&(t.k91_1=!0);var i=t.i91_1;if(xu(i)>0){switch(t.d91_1.y9_1){case 1:t.e91_1=r_(t.i91_1.toString());break;case 2:t.f91_1=r_(t.i91_1.toString());break;case 0:d$(t,"can't parse format specifier (error 7)")}t.i91_1.d8()}}function k$(t,n,i){return $$(t,n=n===Wr||n)}function x$(t,n,i){var e=n.length+i.length|0;if(t.e91_1<0||t.e91_10))break t;u.s5(t.h91_1)}u.r5(n);t:for(;;){var _=s;if(s=_-1|0,!(_>0))break t;u.s5(t.h91_1)}t.b91_1.b92(u.toString())}}function q$(t,n,i,e){return x$(t,n,i=i===Wr?"":i)}function S$(t){k$(t);var n=xs(t.b91_1.z91(t.c91_1)),i=function(t,n,i){i=i===Wr?-1:i;var e=t,r=zu(),s=e;if(Math.abs(s)>=1){var u=0===i?Yo(e):Us(e);r.w7(u),e-=u.f6()}else r.r5(e<0?"-0":"0");var o=i<0?n<0?6:(n-r.a()|0)-1|0:i;0!==o&&r.s5(Du(46));var _=10*e;t:for(;;){var h=o;if(o=h-1|0,!(h>0))break t;var a=ks(_);r.v7(Fs(a)),_=10*(_-a)}var l=ks(_);return Fs(l)<5?r.toString():r$(r,Wr,Wr,!1).se_1}(n,t.e91_1,t.f91_1);t.j91_1&&t.h91_1===Du(48)&&n>0?x$(t,i,"+"):q$(t,t.j91_1?"+"+i:i)}function C$(t,n){k$(t);var i,e,r,s=xs(t.b91_1.z91(t.c91_1)),u=(i=s,e=t.e91_1,r=(r=t.f91_1)===Wr?-1:r,new o$(i).y90(e,r)),o=n?u.toUpperCase():u.toLowerCase();t.j91_1&&t.h91_1===Du(48)&&s>0?x$(t,o,"+"):q$(t,t.j91_1?"+"+o:o)}function E$(t,n){k$(t);var i=t.b91_1.z91(t.c91_1),e=Gr(i),r=n?e.toUpperCase():e.toLowerCase();t.j91_1&&t.h91_1===Du(48)&&xs(i)>0?x$(t,r,"+"):q$(t,t.j91_1?"+"+r:r)}function O$(){Bi=this,this.z90_1=fu(l$),this.a91_1=fu(c$)}function j$(){return null==Bi&&new O$,Bi}function T$(){return _$(),Fi}function A$(){return _$(),Ui}function z$(){return _$(),Hi}function I$(t,n){j$(),this.b91_1=t,this.c91_1=n,this.d91_1=T$(),this.e91_1=-1,this.f91_1=-1,this.g91_1=(D$(),Yi),this.h91_1=Du(32),this.i91_1=zu(),this.j91_1=!1,this.k91_1=!1,this.l91_1=!1}function D$(){if(Ki)return Xr;Ki=!0,Wi=new M$("LEFT",0),Yi=new M$("RIGHT",1),Gi=new M$("CENTER",2)}function M$(t,n){ds.call(this,t,n)}function N$(t,n){return new R$(t,n).e92().toString()}function R$(t,n){this.m91_1=t,this.n91_1=n,this.o91_1=0,this.p91_1=-1,this.q91_1=zu(),this.r91_1=0}function P$(){this.l8j_1=0,this.m8j_1=1,this.n8j_1=100800,this.o8j_1=100801,this.p8j_1="1.3",this.q8j_1="GLU_EXT_object_space_tess ",this.r8j_1=100900,this.s8j_1=100901,this.t8j_1=100902,this.u8j_1=100904,this.v8j_1=100100,this.w8j_1=100101,this.x8j_1=100102,this.y8j_1=100103,this.z8j_1=100104,this.a8k_1=100105,this.b8k_1=100106,this.c8k_1=100107,this.d8k_1=100108,this.e8k_1=100109,this.f8k_1=100110,this.g8k_1=100111,this.h8k_1=100120,this.i8k_1=100121,this.j8k_1=100122,this.k8k_1=100123,this.l8k_1=100124,this.m8k_1=100140,this.n8k_1=100141,this.o8k_1=100142,this.p8k_1=100151,this.q8k_1=100152,this.r8k_1=100153,this.s8k_1=100154,this.t8k_1=100155,this.u8k_1=100156,this.v8k_1=100157,this.w8k_1=100158,this.x8k_1=100151,this.y8k_1=100152,this.z8k_1=100153,this.a8l_1=100154,this.b8l_1=100155,this.c8l_1=100156,this.d8l_1=100130,this.e8l_1=100131,this.f8l_1=100132,this.g8l_1=100133,this.h8l_1=100134,this.i8l_1=1e150}function L$(){}function F$(){Ji=this,this.g92_1=["invalid enumerant","invalid value","out of memory","","invalid operation"]}function U$(t){this.w93_1=t,this.x93_1=null,this.y93_1=0,this.z93_1=!1,this.a94_1=!1,this.b94_1=!1,this.c94_1=!1}function H$(){this.d94_1=new Float64Array(3),this.e94_1=null}function V$(){}function B$(t,n,i){this.i94_1=t,this.j94_1=n,this.k94_1=i}function W$(t){t=t===Wr?null:t,this.m94_1=t,this.n94_1=this,this.o94_1=this}function Y$(){this.w94_1=null,this.x94_1=null,this.y94_1=null,this.z94_1=null,this.a95_1=null,this.b95_1=!1,this.c95_1=!1}function G$(t){this.d95_1=t,this.e95_1=null,this.f95_1=null,this.g95_1=null,this.h95_1=null,this.i95_1=null,this.j95_1=null,this.k95_1=null,this.l95_1=0}function K$(){this.m95_1=new ek,this.n95_1=new Y$,this.o95_1=new G$(!0),this.p95_1=new G$(!1)}function X$(t){var n=t.m92_1;null==n||ne.q95(n),t.k92_1=0,t.l92_1=null,t.m92_1=null}function J$(t,n){t.k92_1!==n&&function(t,n){for(;t.k92_1!==n;)t.k92_10&&k<=x||q<0&&x<=k)do{var S=k;k=k+q|0;for(var C=as(),E=r.v(),O=0;E.w();){var j=O;O=O+1|0;var T=E.y()/8|0,A=Ar(j,T);C.s(pr.u9m(h,S+A|0,T,s,t.s9m_1))}u?o.s(C.h1(0)):o.z(C)}while(S!==x);return gs(o)}(t,e,r,s,u,o,n):2===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: CCITT_1D"),_=[]):3===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: GROUP_3_FAX"),_=[]):4===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: GROUP_4_FAX"),_=[]):5===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: LZW"),_=[]):6===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: JPEG"),_=[]):(kr.t64(kr.u5i_1,"Unsupported compression type "+i),_=[]),_}function Hx(t,n,i){if(t.r9m_1.z9l_1.n()>6&&t.r9m_1.y9l_1.d1())throw new b_;return 16===t.r9m_1.a9m_1.n()?new ya(Fh().p5r(i*t.r9m_1.a9m_1.h1(4)+i*t.r9m_1.a9m_1.h1(5)+t.r9m_1.a9m_1.h1(7)),Fh().p5r(n*t.r9m_1.a9m_1.h1(0)+i*t.r9m_1.a9m_1.h1(1)+t.r9m_1.a9m_1.h1(3))):t.r9m_1.y9l_1.n()<3||t.r9m_1.z9l_1.n()<6?new ya(Fh().p5r(i),Fh().p5r(n)):new ya(Fh().p5r(-1*(i-t.r9m_1.z9l_1.h1(1))*t.r9m_1.y9l_1.h1(1)+t.r9m_1.z9l_1.h1(4)),Fh().p5r((n-t.r9m_1.z9l_1.h1(0))*t.r9m_1.y9l_1.h1(0)+t.r9m_1.z9l_1.h1(3)))}function Vx(t,n){var i=ks(pr.t9m(t.q9m_1,n,2,t.s9m_1)),e=as(),r=n+2|0,s=0;if(s0)){var u=kr.y5i(kr.t5i_1,"Font","constructor","invalidSize");throw is(Gr(u))}}function Tq(){}function Aq(t,n,i,e){this.ya2_1=t,this.za2_1=n,this.aa3_1=i,Ks.call(this,e)}function zq(t,n,i){this.qa3_1=t,this.ra3_1=n,Ks.call(this,i)}function Iq(t,n,i){this.ba4_1=t,this.ca4_1=n,Ks.call(this,i)}function Dq(t,n,i,e,r){return function(s){var u=t.k7s_1;return null==u||n._v?i.ga3(t,e,r):(n._v=!0,ru(i.h5j_1,Wr,Wr,function(t,n,i){var e=new Iq(t,n,i),r=function(t,n){return e.a1h(t,n)};return r.$arity=1,r}(u,r,null))),null!=u&&URL.revokeObjectURL(r.src),Xr}}function Mq(t,n){var i;if(t=t===Wr?br.e9i():t,n===Wr){var e=.75*t.f6();i=Us(e)}else i=n;n=i,Jb.call(this,t,n),this.f5j_1=new Hr(0,0),this.g5j_1=16,this.h5j_1=nu();Zs();var r=tu(60,Qs());this.i5j_1=new Mb(3,r),this.j5j_1=vs()}function Nq(t){this.s8l_1=t,this.t8l_1=.15}function Rq(){$r=this,this.n6z_1=Kr()}function Pq(){return null==$r&&new Rq,$r}function Lq(){}function Fq(t,n){this.pa4_1=t,this.qa4_1=n}function Uq(t){Pq(),Nb.call(this,t)}function Hq(t){return function(t,n){return Vq.call(n,t,t.width,t.height),n}(t,As(Pr(Vq)))}function Vq(t,n,i){xy.call(this,n,i,sx(),ux()),this.ba5_1=t,this.ca5_1=!!kx(n)&&kx(i),this.w5t_1.a6c()}function Bq(t,n,i,e){e$.call(this,t,n,i,e),this.e7s_1=null,this.f7s_1=null}function Wq(){this.t5i_1=1,this.u5i_1=2,this.v5i_1=3,this.w5i_1=4,this.x5i_1=this.t5i_1}function Yq(){Ub.call(this)}function Gq(t){this.da5_1=t,this.ea5_1=!1}function Kq(){xr=this,this.ia5_1=new Xq}function Xq(t){null==xr&&new Kq,t=t===Wr?null:t,this.ga5_1=t}function Jq(){qr=this,this.e5t_1=new Qq}function Zq(){return null==qr&&new Jq,qr}function Qq(t){Zq(),t=t===Wr?null:t,this.d8n_1=t}function tS(){Sr=this,this.e72_1=new iS}function nS(){return null==Sr&&new tS,Sr}function iS(t){nS(),t=t===Wr?null:t,this.ha5_1=t}function eS(){Cr=this,this.g5t_1=new sS}function rS(){return null==Cr&&new eS,Cr}function sS(t){rS(),t=t===Wr?null:t,this.j8m_1=t}function uS(){Er=this,this.f5t_1=new _S}function oS(){return null==Er&&new uS,Er}function _S(t){oS(),t=t===Wr?null:t,this.c8m_1=t}function hS(){Or=this,this.d5t_1=new lS}function aS(){return null==Or&&new hS,Or}function lS(t){aS(),t=t===Wr?null:t,this.c8j_1=t}function cS(){return Tr||(Tr=!0,jr=Qo(window.navigator.language,Zo([Du(45)])).h1(0),Qo(window.navigator.language,Zo([Du(45)])).h1(1)),jr}return Fr(z_,"images",Lr),Fr(D_,"files",Lr),Fr(M_,"GoToAnimator",Br),Fr(N_,"Companion",Lr),Fr(R_,"PickedObject",Br),Fr(L_,"PickedObjectList",Br,Wr,Wr,L_),Fr(B_,"Event",ts),Fr(F_,"RequestRedraw",Lr,Wr,[B_]),Fr(U_,"UnmarkResourceAbsent",Br,Wr,[B_]),Fr(H_,"Companion",Lr,Wr,Wr,Wr,Wr,Wr,[1]),Fr(W_,"WorldWind",Br),Fr(Y_,"Companion",Lr),Fr(Eh,"DrawableTerrain",ts),Fr(G_,"BasicDrawableTerrain",Br,Wr,[Eh]),Fr(K_,"DrawContext",Br),Fr(X_,"Companion",Lr),Fr(J_,"DrawElements",Br,Wr,Wr,J_),Fr(Z_,"VertexAttrib",Br,Wr,Wr,Z_),Fr(Q_,"DrawShapeState",Br),Fr(nh,"DrawableGroup",Br,ds),Fr(rh,"Companion",Lr),Fr(sh,"DrawableHeatmap",Br),Fr(uh,"Companion",Lr),Fr(oh,"DrawableLines",Br),Fr(_h,"Companion",Lr),Fr(hh,"Entry",Br,Wr,Wr,hh),Fr(ah,"sam$kotlin_Comparator$0",Br),Fr(ch,"DrawableQueue",Br),Fr(fh,"Companion",Lr),Fr(vh,"DrawableScreenTexture",Br),Fr(dh,"Companion",Lr),Fr(wh,"DrawableShape",Br),Fr(ph,"Companion",Lr),Fr(mh,"DrawableSightline",Br),Fr(gh,"Companion",Lr),Fr(yh,"DrawableStarField",Br),Fr(bh,"Companion",Lr),Fr($h,"DrawableSurfaceColor",Br),Fr(kh,"Companion",Lr),Fr(xh,"DrawableSurfaceShape",Br),Fr(qh,"Companion",Lr),Fr(Ch,"DrawableSurfaceTexture",Br),Fr(Oh,"Companion",Lr),Fr(jh,"DrawableTessellation",Br),Fr(Th,"BasicFrameController",Br,Wr,Wr,Th),Fr(Ah,"Companion",Lr),Fr(zh,"Frame",Br,Wr,Wr,zh),Fr(Dh,"AltitudeMode",Br,ds),Fr(Lh,"Companion",Lr),Fr(ia,"Angle",Br,Wr,[Cs]),Fr(ua,"Companion",Lr),Fr(oa,"BoundingBox",Br,Wr,Wr,oa),Fr(_a,"BoundingSphere",Br,Wr,Wr,_a),Fr(ha,"Camera",Br,Wr,Wr,ha),Fr(aa,"Companion",Lr),Fr(ca,"Ellipsoid",Br),Fr(va,"Frustum",Br,Wr,Wr,fa),Fr(wa,"Line",Br,Wr,Wr,da),Fr(ma,"Companion",Lr),Fr(ya,"Location",Br,Wr,Wr,pa),Fr($a,"LookAt",Br,Wr,Wr,ba),Fr(ka,"Companion",Lr),Fr(Sa,"Matrix3",Br,Wr,Wr,qa),Fr(Ca,"Companion",Lr),Fr(ja,"Matrix4",Br,Wr,Wr,Oa),Fr(Aa,"Companion",Lr),Fr(za,"Offset",Br),Fr(Ia,"OffsetMode",Br,ds),Fr(Ma,"Companion",Lr),Fr(Ra,"Plane",Br,Wr,Wr,(function(){return t=As(Pr(Ra)),Ra.call(t),t;var t})),Fr(Fa,"Companion",Lr),Fr(Ua,"Position",Br,ya,Wr,Pa),Fr(Va,"Range",Br,Wr,Wr,Ha),Fr(Ya,"Companion",Lr),Fr(Ga,"Sector",Br,Wr,Wr,Ba),Fr(Ka,"TileMatrix",Br),Fr(Xa,"Companion",Lr),Fr(Ja,"TileMatrixSet",Br,Wr,Wr,(function(){return t=As(Pr(Ja)),Ja.call(t,Ba(),Ls()),t;var t})),Fr(Qa,"Vec2",Br,Wr,Wr,Za),Fr(nl,"Vec3",Br,Qa,Wr,tl),Fr(el,"Viewport",Br,Wr,Wr,il),Fr(rl,"Companion",Lr),Fr(sl,"GKCoord",Br),Fr(ul,"Companion",Lr),Fr(ol,"GKCoordConverter",Br,Wr,Wr,ol),Fr(_l,"Companion",Lr),Fr(al,"HelmertParameters",Br),Fr(ll,"HelmertTransformation",Lr),Fr(fl,"Hemisphere",Br,ds),Fr(wl,"Companion",Lr),Fr(pl,"MGRSCoord",Br),Fr(ml,"Companion",Lr),Fr(kl,"MGRSCoordConverter",Br,Wr,Wr,kl),Fr(xl,"Companion",Lr),Fr(ql,"PolarCoordConverter",Br,Wr,Wr,ql),Fr(Sl,"Companion",Lr),Fr(Cl,"TMCoord",Br),Fr(El,"Companion",Lr),Fr(Ol,"TMCoordConverter",Br,Wr,Wr,Ol),Fr(jl,"Companion",Lr),Fr(Tl,"UPSCoord",Br),Fr(Al,"Companion",Lr),Fr(zl,"UPSCoordConverter",Br,Wr,Wr,zl),Fr(Il,"Companion",Lr),Fr(Dl,"UTMCoord",Br),Fr(Ml,"Companion",Lr),Fr(Nl,"UTMCoordConverter",Br,Wr,Wr,Nl),Fr(Pl,"GestureState",Br,ds),Fr(Yl,"SelectDragCallback",ts),Fr(Kl,"Offset",Br,ds),Fr(Xl,"State",Br),Fr(Zl,"Globe",Br,Wr,Wr,Zl),Fr(Ql,"ElevationModel",Br,Wr,Wr,Ql),Fr(tc,"AbstractElevationCoverage",Br),Fr(nc,"Companion",Lr),Fr(ic,"TileBlock",Br,Wr,Wr,ic),Fr(ec,"AbstractTiledElevationCoverage$fetchTileArray$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(rc,"AbstractTiledElevationCoverage",Br,tc,Wr,Wr,Wr,Wr,[4]),Fr(yq,"TiledElevationCoverage",Br,rc,Wr,Wr,Wr,Wr,[4,1]),Fr(Fv,"WmsElevationCoverage",Br,yq,Wr,Wr,Wr,Wr,[4]),Fr(sc,"BasicElevationCoverage",Br,Fv,Wr,sc,Wr,Wr,[4]),Fr(uc,"GeographicProjection",ts),Fr(oc,"Companion",Lr),Fr(_c,"MercatorProjection",Br,Wr,[uc],_c),Fr(hc,"Wgs84Projection",Br,Wr,[uc],hc),Fr(ac,"BasicTerrain",Br),Fr(lc,"Companion",Lr),Fr(fc,"sam$kotlin_Comparator$0",Br),Fr(dc,"BasicTessellator",Br,Wr,Wr,dc),Fr(wc,"Companion",Lr),Fr(Lb,"AbstractTile",Br),Fr(e$,"Tile",Br,Lb),Fr(mc,"TerrainTile",Br,e$),Fr(gc,"AbstractLayer",Br),Fr(kc,"RenderableLayer",Br,gc,Wr,kc),Fr(yc,"AbstractTiledImageLayer",Br,kc),Fr(bc,"BackgroundLayer",Br,kc,Wr,bc),Fr($c,"LayerList",Br,Wr,Wr,$c),Fr(xc,"ShowTessellationLayer",Br,gc,Wr,xc),Fr(Sc,"FragMode",Br,ds),Fr(Hy,"AbstractShaderProgram",Br),Fr(Ec,"AbstractAtmosphereProgram",Br,Hy),Fr(Oc,"Companion",Lr),Fr(Tc,"AtmosphereLayer",Br,gc,Wr,Tc),Fr(Ac,"Companion",Lr),Fr(zc,"DrawableGroundAtmosphere",Br,Wr,Wr,zc),Fr(Ic,"Companion",Lr),Fr(Dc,"DrawableSkyAtmosphere",Br,Wr,Wr,Dc),Fr(Mc,"GroundProgram",Br,Ec,Wr,Mc),Fr(Nc,"SkyProgram",Br,Ec,Wr,Nc),Fr(Uc,"Companion",Lr),Fr(Vc,"AbstractGraticuleLayer",Br,gc),Fr(Bc,"AbstractGraticuleTile",Br,Lb),Fr(Wc,"Companion",Lr),Fr(Yc,"GraticuleRenderingParams",Br,Wr,[pu],Yc),Fr(Zc,"GraticuleSupport",Br,Wr,Wr,Zc),Fr(tf,"Companion",Lr),Fr(nf,"GridElement",Br),Fr(ef,"Callback",ts),Fr(sf,"GridTilesSupport",Br),Fr(uf,"LineStyle",Br,ds),Fr(of,"Companion",Lr),Fr(hf,"GKGraticuleLayer",Br,Vc,[Vc,ef],hf),Fr(vf,"GKGraticuleTile",Br,Bc),Fr(wf,"GKLayerHelper",Lr),Fr(xf,"ZoneExtremes",Br),Fr(qf,"Companion",Lr),Fr(Sf,"GKMetricGrid",Br,Bc),Fr(jf,"Companion",Lr),Fr(Tf,"GKMetricLabels",Br),Fr(Af,"GKOverview",Br,Bc),Fr(zf,"Companion",Lr),Fr(If,"AbstractUTMGraticuleLayer",Br,Vc),Fr(Pf,"Companion",Lr),Fr(Lf,"MGRSGraticuleLayer",Br,If,Wr,Lf),Fr(Uf,"Companion",Lr),Fr(Hf,"MGRSGridZone",Br,Bc),Fr(Vf,"Companion",Lr),Fr(Wf,"MGRSOverview",Br,Bc),Fr(Yf,"UTMExtremes",Br,Wr,Wr,Yf),Fr(Xf,"Companion",Lr),Fr(Jf,"UTMMetricScaleSupport",Br),Fr(iv,"UTMSquareSector",Br,Bc),Fr(Zf,"UTMSquareGrid",Br,iv),Fr(nv,"Companion",Lr),Fr(sv,"UTMSquareZone",Br,iv),Fr(uv,"ElevationHeatmapLayer",Br,gc,Wr,uv),Fr(ov,"ElevationHeatmapProgram",Br,Hy,Wr,ov),Fr(_v,"Companion",Lr),Fr(Bq,"ImageTile",Br,e$,Wr,Wr,Wr,Wr,[1]),Fr(hv,"AbstractMercatorImageTile",Br,Bq,Wr,Wr,Wr,Wr,[1]),Fr(vv,"Companion",Lr),Fr(dv,"MercatorSector",Br,Ga,Wr,dv),Fr(wv,"MercatorTileFactory",ts),Fr(pv,"Companion",Lr),Fr(bq,"TiledImageLayer",Br,yc,Wr,bq),Fr(mv,"MercatorTiledImageLayer",Br,bq,Wr,mv),Fr($y,"Renderable",ts),Fr(ry,"AbstractRenderable",Br,Wr,[$y]),Fr(Ib,"TiledSurfaceImage",Br,ry,Wr,Wr,Wr,Wr,[5]),Fr(gv,"MercatorTiledSurfaceImage",Br,Ib,Wr,Wr,Wr,Wr,[5]),Fr(yv,"Companion",Lr),Fr(bv,"WebMercatorImageLayer",Br,mv),Fr($v,Wr,Br,Wr,[wv]),Fr(kv,"WebMercatorLayerFactory",Lr),Fr(xv,"$serializer",Lr,Wr,[Vu]),Fr(Cv,"Companion",Lr),Fr(Ov,"$serializer",Lr,Wr,[Vu]),Fr(Av,"StarMetadata",Br,Wr,Wr,Wr,Wr,{0:qv}),Fr(zv,"StarData",Br,Wr,Wr,Wr,Wr,{0:jv}),Fr(Iv,"StarFieldLayer",Br,gc,Wr,Iv),Fr(Dv,"StarFieldProgram",Br,Hy,Wr,Dv),Fr(Mv,"Companion",Lr),Fr(Nv,"Wcs100ElevationCoverage",Br,yq,Wr,Wr,Wr,Wr,[4]),Fr(Rv,"Wcs100ElevationSourceFactory",Br),Fr(Pv,Wr,Br),Fr(Lv,"Companion",Lr),Fr(Uv,"Companion",Lr),Fr(Hv,"WmsImageLayer",Br,bq),Fr(Vv,"WmsLayerConfig",Br),Fr(Gv,"WmsLayerFactory$decodeWmsCapabilities$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Jv,"$createLayerCOROUTINE$1",Br,Ks),Fr(Zv,"$retrieveWmsCapabilitiesCOROUTINE$2",Br,Ks),Fr(Qv,"WmsLayerFactory",Lr,Wr,Wr,Wr,Wr,Wr,[4,1]),Fr(id,"WmsTileFactory",Br),Fr(ed,"Companion",Lr),Fr(rd,"WmtsImageLayer",Br,bq),Fr(od,"TileMatrixSet",Br),Fr(hd,"WmtsLayerFactory$decodeWmtsCapabilities$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(ad,"$createLayerCOROUTINE$3",Br,Ks),Fr(ld,"$retrieveWmtsCapabilitiesCOROUTINE$4",Br,Ks),Fr(cd,"WmtsLayerFactory",Lr,Wr,Wr,Wr,Wr,Wr,[4,1]),Fr(vd,"Companion",Lr),Fr(dd,"WmtsTileFactory",Br),Fr(wd,"Companion",Lr),Fr(pd,"$serializer",Lr,Wr,[Vu]),Fr(yd,"WmsAttribution",Br,Wr,Wr,yd,Wr,{0:md}),Fr(bd,"$serializer",Lr,Wr,[Vu]),Fr(xd,"WmsAuthorityUrl",Br,Wr,Wr,Wr,Wr,{0:$d}),Fr(qd,"$serializer",Lr,Wr,[Vu]),Fr(Ed,"WmsBoundingBox",Br,Wr,Wr,Wr,Wr,{0:Sd}),Fr(Od,"Companion",Lr),Fr(jd,"$serializer",Lr,Wr,[Vu]),Fr(zd,"WmsCapabilities",Br,Wr,Wr,Wr,Wr,{0:Td}),Fr(Id,"Companion",Lr),Fr(Md,"$serializer",Lr,Wr,[Vu]),Fr(Pd,"WmsCapability",Br,Wr,Wr,Wr,Wr,{0:Nd}),Fr(Ld,"$serializer",Lr,Wr,[Vu]),Fr(Hd,"WmsContactAddress",Br,Wr,Wr,Wr,Wr,{0:Fd}),Fr(Vd,"Companion",Lr),Fr(Bd,"$serializer",Lr,Wr,[Vu]),Fr(Gd,"WmsContactInformation",Br,Wr,Wr,Gd,Wr,{0:Wd}),Fr(Kd,"$serializer",Lr,Wr,[Vu]),Fr(Zd,"WmsContactPersonPrimary",Br,Wr,Wr,Wr,Wr,{0:Xd}),Fr(Qd,"$serializer",Lr,Wr,[Vu]),Fr(iw,"$serializer",Lr,Wr,[Vu]),Fr(sw,"WmsHttp",Br,Wr,Wr,Wr,Wr,{0:tw}),Fr(uw,"WmsHttpProtocol",Br,Wr,Wr,Wr,Wr,{0:ew}),Fr(ow,"$serializer",Lr,Wr,[Vu]),Fr(aw,"WmsDcpType",Br,Wr,Wr,Wr,Wr,{0:_w}),Fr(lw,"$serializer",Lr,Wr,[Vu]),Fr(vw,"WmsDimension",Br,Wr,Wr,Wr,Wr,{0:cw}),Fr(dw,"Companion",Lr),Fr(pw,"$serializer",Lr,Wr,[Vu]),Fr(yw,"WmsException",Br,Wr,Wr,yw,Wr,{0:mw}),Fr(bw,"$serializer",Lr,Wr,[Vu]),Fr(xw,"WmsGeographicBoundingBox",Br,Wr,Wr,Wr,Wr,{0:$w}),Fr(qw,"$serializer",Lr,Wr,[Vu]),Fr(Ew,"WmsIdentifier",Br,Wr,Wr,Wr,Wr,{0:Sw}),Fr(Ow,"Companion",Lr),Fr(Tw,"$serializer",Lr,Wr,[Vu]),Fr(Iw,"WmsInfoUrl",Br,Wr,Wr,Wr,Wr,{0:Aw}),Fr(Dw,"Companion",Lr),Fr(Nw,"$serializer",Lr,Wr,[Vu]),Fr(Lw,"WmsLayer",Br,Wr,Wr,Wr,Wr,{0:Rw}),Fr(Fw,"Companion",Lr),Fr(Hw,"$serializer",Lr,Wr,[Vu]),Fr(Ww,"WmsLogoUrl",Br,Wr,Wr,Wr,Wr,{0:Vw}),Fr(Yw,"Companion",Lr),Fr(Kw,"$serializer",Lr,Wr,[Vu]),Fr(Zw,"WmsMetadataUrl",Br,Wr,Wr,Wr,Wr,{0:Xw}),Fr(Qw,"$serializer",Lr,Wr,[Vu]),Fr(ip,"WmsOnlineResource",Br,Wr,Wr,Wr,Wr,{0:tp}),Fr(ep,"$serializer",Lr,Wr,[Vu]),Fr(up,"WmsRequest",Br,Wr,Wr,Wr,Wr,{0:rp}),Fr(op,"Companion",Lr),Fr(hp,"$serializer",Lr,Wr,[Vu]),Fr(cp,"WmsRequestOperation",Br,Wr,Wr,Wr,Wr,{0:ap}),Fr(fp,"Companion",Lr),Fr(dp,"$serializer",Lr,Wr,[Vu]),Fr(mp,"WmsService",Br,Wr,Wr,Wr,Wr,{0:wp}),Fr(gp,"Companion",Lr),Fr(bp,"$serializer",Lr,Wr,[Vu]),Fr(xp,"WmsStyle",Br,Wr,Wr,Wr,Wr,{0:$p}),Fr(qp,"Companion",Lr),Fr(Cp,"$serializer",Lr,Wr,[Vu]),Fr(jp,"OwsAddress",Br,Wr,Wr,jp,Wr,{0:Ep}),Fr(Tp,"$serializer",Lr,Wr,[Vu]),Fr(Ip,"OwsBoundingBox",Br,Wr,Wr,Wr,Wr,{0:Ap}),Fr(Dp,"Companion",Lr),Fr(Np,"$serializer",Lr,Wr,[Vu]),Fr(Lp,"OwsConstraint",Br,Wr,Wr,Wr,Wr,{0:Rp}),Fr(Fp,"Companion",Lr),Fr(Up,"$serializer",Lr,Wr,[Vu]),Fr(Bp,"OwsContactInfo",Br,Wr,Wr,Bp,Wr,{0:Hp}),Fr(Wp,"$serializer",Lr,Wr,[Vu]),Fr(Kp,"OwsDcp",Br,Wr,Wr,Wr,Wr,{0:Yp}),Fr(Xp,"OwsDescription",Br),Fr(Jp,"Companion",Lr),Fr(Qp,"$serializer",Lr,Wr,[Vu]),Fr(im,"OwsHttp",Br,Wr,Wr,im,Wr,{0:tm}),Fr(em,"Companion",Lr),Fr(sm,"$serializer",Lr,Wr,[Vu]),Fr(_m,"OwsHttpMethod",Br,Wr,Wr,Wr,Wr,{0:um}),Fr(hm,"$serializer",Lr,Wr,[Vu]),Fr(cm,"OwsOnlineResource",Br,Wr,Wr,Wr,Wr,{0:am}),Fr(fm,"Companion",Lr),Fr(dm,"$serializer",Lr,Wr,[Vu]),Fr(mm,"OwsOperation",Br,Wr,Wr,Wr,Wr,{0:wm}),Fr(gm,"Companion",Lr),Fr(bm,"$serializer",Lr,Wr,[Vu]),Fr(xm,"OwsOperationsMetadata",Br,Wr,Wr,xm,Wr,{0:$m}),Fr(qm,"Companion",Lr),Fr(Cm,"$serializer",Lr,Wr,[Vu]),Fr(jm,"OwsPhone",Br,Wr,Wr,jm,Wr,{0:Em}),Fr(Tm,"Companion",Lr),Fr(Am,"$serializer",Lr,Wr,[Vu]),Fr(Dm,"OwsServiceContact",Br,Wr,Wr,Dm,Wr,{0:zm}),Fr(Mm,"Companion",Lr),Fr(Rm,"$serializer",Lr,Wr,[Vu]),Fr(Fm,"OwsServiceIdentification",Br,Xp,Wr,Wr,Wr,{0:Pm}),Fr(Um,"$serializer",Lr,Wr,[Vu]),Fr(Bm,"OwsServiceProvider",Br,Wr,Wr,Wr,Wr,{0:Hm}),Fr(Wm,"Companion",Lr),Fr(Gm,"$serializer",Lr,Wr,[Vu]),Fr(Jm,"WmtsCapabilities",Br,Wr,Wr,Wr,Wr,{0:Km}),Fr(Zm,"Companion",Lr),Fr(tg,"$serializer",Lr,Wr,[Vu]),Fr(eg,"WmtsContents",Br,Wr,Wr,eg,Wr,{0:ng}),Fr(rg,"Companion",Lr),Fr(ug,"$serializer",Lr,Wr,[Vu]),Fr(hg,"WmtsDimension",Br,Xp,Wr,Wr,Wr,{0:og}),Fr(ag,"Companion",Lr),Fr(cg,"$serializer",Lr,Wr,[Vu]),Fr(dg,"WmtsLayer",Br,Xp,Wr,Wr,Wr,{0:fg}),Fr(wg,"$serializer",Lr,Wr,[Vu]),Fr(gg,"WmtsLegendURL",Br,Wr,Wr,Wr,Wr,{0:pg}),Fr(yg,"$serializer",Lr,Wr,[Vu]),Fr(kg,"WmtsResourceUrl",Br,Wr,Wr,Wr,Wr,{0:bg}),Fr(xg,"Companion",Lr),Fr(Sg,"$serializer",Lr,Wr,[Vu]),Fr(Og,"WmtsStyle",Br,Xp,Wr,Wr,Wr,{0:Cg}),Fr(jg,"Companion",Lr),Fr(Ag,"$serializer",Lr,Wr,[Vu]),Fr(Dg,"WmtsTheme",Br,Xp,Wr,Wr,Wr,{0:zg}),Fr(Mg,"Companion",Lr),Fr(Rg,"$serializer",Lr,Wr,[Vu]),Fr(Fg,"WmtsTileMatrix",Br,Xp,Wr,Wr,Wr,{0:Pg}),Fr(Ug,"$serializer",Lr,Wr,[Vu]),Fr(Bg,"WmtsTileMatrixLimits",Br,Wr,Wr,Wr,Wr,{0:Hg}),Fr(Wg,"Companion",Lr),Fr(Gg,"$serializer",Lr,Wr,[Vu]),Fr(Jg,"WmtsTileMatrixSet",Br,Xp,Wr,Wr,Wr,{0:Kg}),Fr(Zg,"Companion",Lr),Fr(ty,"$serializer",Lr,Wr,[Vu]),Fr(ey,"WmtsTileMatrixSetLink",Br,Wr,Wr,Wr,Wr,{0:ny}),Fr(oy,"AbstractSurfaceRenderable",Br,ry),Fr(ly,"Companion",Lr),Fr(cy,"Color",Br,Wr,Wr,_y),Fr(vy,"FontWeight",Br,ds),Fr(py,"Framebuffer",Br,Wr,Wr,py),Fr(my,"Companion",Lr),Fr(gy,"TextCacheKey",Br,Wr,Wr,gy),Fr(by,"RenderContext",Br,Wr,Wr,by),Fr(ky,"Companion",Lr),Fr(xy,"Texture",Br),Fr(qy,"AbstractBufferObject",Br),Fr(Cy,"Companion",Lr),Fr(Ey,"BufferPool",Br),Fr(Oy,"FloatBufferObject",Br,qy),Fr(jy,"IntBufferObject",Br,qy),Fr(Ty,"ShortBufferObject",Br,qy),Fr(zy,"ImageConfig",Br,ds),Fr(Dy,"ImageOptions",Br,Wr,Wr,Dy),Fr(Ny,"ResamplingMode",Br,ds),Fr(Ly,"WrapMode",Br,ds),Fr(Uy,"Companion",Lr),Fr(Vy,"BasicShaderProgram",Br,Hy,Wr,Vy),Fr(By,"SightlineProgram",Br,Hy,Wr,By),Fr(Wy,"SurfaceTextureProgram",Br,Hy,Wr,Wy),Fr(Yy,"TriangleShaderProgram",Br,Hy,Wr,Yy),Fr(Gy,"Companion",Lr),Fr(Qy,"Highlightable",ts),Fr(Ky,"AbstractShape",Br,ry,[ry,Qy]),Fr(Xy,"Companion",Lr),Fr(Zy,"Ellipse",Br,Ky),Fr(tb,"Companion",Lr),Fr(ib,"RenderData",Br,Wr,Wr,ib),Fr(rb,"Movable",ts),Fr(eb,"Label",Br,ry,[ry,Qy,rb]),Fr(sb,"OmnidirectionalSightline",Br,ry,[ry,Qy,rb]),Fr(ob,"OrientationMode",Br,ds),Fr(ab,"Companion",Lr),Fr(cb,"Path",Br,Ky),Fr(vb,"PathType",Br,ds),Fr(pb,"Companion",Lr),Fr(gb,"Placemark",Br,ry,[ry,Qy,rb]),Fr(bb,"Companion",Lr),Fr($b,"PlacemarkAttributes",Br,Wr,Wr,yb),Fr(kb,"Companion",Lr),Fr(L$,"GLUtessellatorCallbackAdapter",Br,Wr,Wr,L$),Fr(qb,Wr,Br,L$),Fr(Sb,"Polygon",Br,Ky,Wr,Sb),Fr(Eb,"ShapeAttributes",Br,Wr,Wr,Cb),Fr(Ob,"SurfaceImage",Br,oy),Fr(Ab,"TextAttributes",Br,Wr,Wr,jb),Fr(zb,"Companion",Lr),Fr(Db,"AbsentResourceEntry",Br),Fr(Mb,"AbsentResourceList",Br),Fr(Nb,"AbstractSource",Br),Fr(Fb,"Companion",Lr),Fr(Qb,"Pool",ts),Fr(Ub,"BasicPool",Br,Wr,[Qb],Ub),Fr(Hb,"Level",Br),Fr(Wb,"LevelSet",Br,Wr,Wr,(function(){return t=As(Pr(Wb)),Wb.call(t),t.w6w_1=Ba(),t.x6w_1=Ba(),t.y6w_1=pa(),t.z6w_1=0,t.a6x_1=0,t.b6x_1=0,t.c6x_1=[],t;var t})),Fr(Yb,"LevelSetConfig",Br,Wr,Wr,Yb),Fr(Gb,"Entry",Br),Fr(Kb,"sam$kotlin_Comparator$0",Br),Fr(Jb,"LruMemoryCache",Br),Fr(t$,"CelestialLocation",Br),Fr(n$,"SunPosition",Lr),Fr(i$,"Companion",Lr),Fr(o$,"ExponentFormatter",Br),Fr(f$,"Stage",Br,ds),Fr(O$,"Companion",Lr),Fr(I$,"Specification",Br),Fr(M$,"Positioning",Br,ds),Fr(R$,"StringFormat",Br),Fr(P$,"GLU",Lr),Fr(F$,"Error",Lr),Fr(U$,"ActiveRegion",Br),Fr(H$,"CachedVertex",Br,Wr,Wr,H$),Fr(V$,"Companion",Lr),Fr(B$,"Dict",Br),Fr(W$,"DictNode",Br,Wr,Wr,W$),Fr(Y$,"GLUface",Br,Wr,Wr,Y$),Fr(G$,"GLUhalfEdge",Br),Fr(K$,"GLUmesh",Br,Wr,Wr,K$),Fr(tk,"Companion",Lr),Fr(ik,"GLUtessellatorImpl",Br),Fr(ek,"GLUvertex",Br,Wr,Wr,ek),Fr(rk,"Geom",Lr),Fr(sk,"Mesh",Lr),Fr(ok,"Normal",Lr),Fr(_k,"PQnode",Br,Wr,Wr,_k),Fr(hk,"PQhandleElem",Br,Wr,Wr,hk),Fr(ak,"Companion",Lr),Fr(lk,"PriorityQ",Br),Fr(ck,"PriorityQHeap",Br,lk,Wr,ck),Fr(dk,"Stack",Br,Wr,Wr,dk),Fr(wk,"Companion",Lr),Fr(pk,"PriorityQSort",Br,lk,Wr,pk),Fr(xk,"FaceCount",Br,Wr,Wr,mk),Fr(qk,"RenderTriangle",Br,Wr,Wr,qk),Fr(Sk,"RenderFan",Br,Wr,Wr,Sk),Fr(Ck,"RenderStrip",Br,Wr,Wr,Ck),Fr(Ek,"Render",Lr),Fr(zk,Wr,Br),Fr(Ik,"Sweep",Lr),Fr(Dk,"TessMono",Lr),Fr(Mk,"TessState",Lr),Fr(Pk,"Kgl",ts),Fr(Rx,"WorldWindowController",Br),Fr(Sx,"BasicWorldWindowController",Br,Rx),Fr(Cx,"KeyboardControls",Br),Fr(Ox,"WorldWindow$contextRestored$slambda$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Tx,"EventListenerEntry",Br),Fr(Ax,"Companion",Lr),Fr(zx,"RedrawStage",Br,ds),Fr(Ix,"sam$kotlinx_coroutines_flow_FlowCollector$0",Br,Wr,Wr,Wr,Wr,Wr,[1]),Fr(Mx,"WorldWindow$contextRestored$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Nx,"WorldWindow",Br),Fr(Px,"GeoTiffConstants",Lr),Fr(Lx,"GeoTiffKeyEntry",Br),Fr(Fx,"GeoTiffMetadata",Br,Wr,Wr,Fx),Fr(Bx,"GeoTiffReader",Br),Fr(Wx,"GeoTiffUtil",Lr),Fr(Yx,"IFDTag",Lr),Fr(Gx,"Compression",Lr),Fr(Kx,"SampleFormat",Lr),Fr(Xx,"Type",Lr),Fr(Jx,"TiffIFDEntry",Br),Fr(eq,"GestureRecognizer",Br),Fr(Zx,"ClickRecognizer",Br,eq),Fr(Qx,"DragRecognizer",Br,eq),Fr(tq,"Companion",Lr),Fr(iq,"Click",Br),Fr(rq,"PanRecognizer",Br,eq),Fr(sq,"PinchRecognizer",Br,eq),Fr(uq,"RotationRecognizer",Br,eq),Fr(oq,"Companion",Lr),Fr(_q,Wr,Br,Qx),Fr(hq,Wr,Br,rq),Fr(aq,"SelectDragDetector",Br),Fr(lq,"TapRecognizer",Br,eq),Fr(cq,"Companion",Lr),Fr(fq,"TiltRecognizer",Br,rq),Fr(vq,"TouchWrapper",Br),Fr(dq,"Companion",Lr),Fr(wq,"ElevationSource",Br,Nb),Fr(mq,"TiledElevationCoverage$decodeTiffImage$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(gq,"$retrieveTileArrayCOROUTINE$6",Br,Ks),Fr($q,"Companion",Lr),Fr(qq,"$processCOROUTINE$7",Br,Ks),Fr(Sq,"MercatorImageTile",Br,hv,Wr,Wr,Wr,Wr,[1]),Fr(jq,"Font",Br,Wr,Wr,Cq),Fr(Tq,"Companion",Lr),Fr(Aq,"RenderResourceCache$retrieveTexture$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(zq,"RenderResourceCache$retrieveTextFile$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Iq,"RenderResourceCache$retrieveRemoteImage$lambda$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Mq,"RenderResourceCache",Br,Jb,Wr,Mq),Fr(Nq,"TextRenderer",Br),Fr(Rq,"Companion",Lr),Fr(Lq,"ImageFactory",ts),Fr(Fq,"LineStippleImageFactory",Br,Wr,[Lq]),Fr(Uq,"ImageSource",Br,Nb),Fr(Vq,"ImageTexture",Br,xy),Fr(Wq,"Logger",Lr),Fr(Yq,"SynchronizedPool",Br,Ub,Wr,Yq),Fr(Gq,"WebKgl",Br,Wr,[Pk]),Fr(Kq,"Companion",Lr),Fr(Xq,"KglShader",Br,Wr,Wr,Xq),Fr(Jq,"Companion",Lr),Fr(Qq,"KglProgram",Br,Wr,Wr,Qq),Fr(tS,"Companion",Lr),Fr(iS,"KglUniformLocation",Br,Wr,Wr,iS),Fr(eS,"Companion",Lr),Fr(sS,"KglBuffer",Br,Wr,Wr,sS),Fr(uS,"Companion",Lr),Fr(_S,"KglTexture",Br,Wr,Wr,_S),Fr(hS,"Companion",Lr),Fr(lS,"KglFramebuffer",Br,Wr,Wr,lS),Pr(N_).g5g=function(t,n,i){var e=n.h5g();return new R_(t,null==e?n:e,i)},Pr(N_).i5g=function(t,n){var i=La(n);return new R_(t,i,Wr,i)},Pr(N_).j5g=function(t,n){var i=t>>16&255,e=t>>8&255,r=255&t;return n.k5g_1=i/255,n.l5g_1=e/255,n.m5g_1=r/255,n.n5g_1=1,n},Pr(N_).o5g=function(t){var n=255*t.k5g_1,i=Yr(n),e=255*t.l5g_1,r=Yr(e),s=255*t.m5g_1;return i<<16|r<<8|Yr(s)},Pr(R_).u5g=function(){return!(null==this.s5g_1)},Pr(R_).v5g=function(){this.t5g_1=!0},Pr(R_).toString=function(){return"PickedObject(isOnTop="+this.t5g_1+", identifier="+this.p5g_1+", userObject="+Gr(this.q5g_1)+", layer="+this.r5g_1+", terrainPosition="+this.s5g_1+")"},Pr(L_).x5g=function(){return this.w5g_1.e2()},Pr(L_).y5g=function(){return this.w5g_1.n()},Pr(L_).z5g=function(){var t;t:{for(var n=this.x5g().v();n.w();){var i=n.y();if(i.t5g_1){t=i;break t}}t=null}return t},Pr(L_).a5h=function(){var t;t:{for(var n=this.x5g().v();n.w();){var i=n.y();if(i.u5g()){t=i;break t}}t=null}return t},Pr(L_).b5h=function(t){var n=this.w5g_1,i=t.p5g_1;n.g2(i,t)},Pr(L_).c5h=function(t){return this.w5g_1.q2(t)},Pr(L_).d5h=function(){return this.w5g_1.b1()},Pr(L_).toString=function(){var t=this.x5g();return Jr(t,", ","PickedObjectList{","}",Wr,Wr,P_)},Pr(H_).h5h=function(){this.f5h_1.q14(p)},Pr(W_).s5i=function(t){if(!(t>0)){var n=kr.y5i(kr.t5i_1,"WorldWind","setDensityFactor","invalidDensityFactor");throw is(Gr(n))}this.s5h_1=t},Pr(W_).w1h=function(){this.i5h_1.b1(),this.j5h_1.m5j_1.q5j(),this.q5h_1.v5j(),this.s5i(1)},Pr(W_).w5j=function(){this.w5h_1.x5j_1.x5k(oe),this.w5h_1.x5j_1.x5k(Lk()),this.w5h_1.x5j_1.x5k(Fk()),this.w5h_1.x5j_1.y5k(0),this.w5h_1.x5j_1.z5k(ae),this.w5h_1.x5j_1.a5l(Uk(),Hk()),this.w5h_1.x5j_1.b5l(fe),this.w5h_1.c5l(),this.x5h_1=this.w5h_1.x5j_1.d5l(ve)},Pr(W_).e5l=function(t,n){if(this.w5h_1.x5j_1.f5l(0,0,t,n),this.r5h_1&&0!==this.q5h_1.u5j_1)try{var i=this.o5h_1;i.g5l((e=i.l5i_1,r=n/this.q5h_1.u5j_1,Fh().p5r(e*xs(r))))}catch(t){if(!(t instanceof es))throw t}var e,r;this.q5h_1.h5l(0,0,t,n)},Pr(W_).i5l=function(t,n){if(null!=n)this.j5l(this.y5h_1),this.j5h_1.f5m(n.m5i_1,n.n5i_1,n.q5i_1,this.a5i_1),t.x5l_1.g5m(n);else if(this.q5h_1.t19()||!this.e5m(this.q5h_1.t5j_1/2,this.q5h_1.u5j_1/2,t.x5l_1)){this.j5l(this.y5h_1),this.y5h_1.n5l(this.b5i_1.k5l_1),this.y5h_1.o5l(this.b5i_1.l5l_1);var i=this.j5h_1.p5l(this.o5h_1.g5i_1,this.o5h_1.h5i_1);this.b5i_1.r5l(this.j5h_1.q5l(i.q5i_1),this.a5i_1),this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,t.x5l_1)}return this.j5h_1.h5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,this.z5h_1),this.y5h_1.i5m(this.z5h_1),t.z5l_1=-this.y5h_1.m5l_1[11],t.a5m_1=this.y5h_1.j5m(this.o5h_1.k5i_1),t.b5m_1=this.y5h_1.k5m(),t.c5m_1=this.o5h_1.k5i_1,t},Pr(W_).l5m=function(t,n,i){return n=n===Wr?null:n,i===Wr?this.i5l(t,n):i.i5l.call(this,t,n)},Pr(W_).m5m=function(t){this.n5m(t),this.o5m(t,this.y5h_1),this.y5h_1.n5l(this.a5i_1),this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,this.o5h_1.g5i_1),this.j5h_1.h5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,this.z5h_1),this.y5h_1.i5m(this.z5h_1),this.o5h_1.h5i_1=Mh(),this.o5h_1.i5i_1=this.y5h_1.j5m(t.c5m_1),this.o5h_1.j5i_1=this.y5h_1.k5m(),this.o5h_1.k5i_1=t.c5m_1;var n=this.o5h_1.g5i_1,i=this.j5h_1.q5m()?10:this.j5h_1.p5m(n.m5i_1,n.n5i_1)*this.t5h_1+10;if(i>n.q5i_1){n.q5i_1=i,this.j5h_1.f5m(n.m5i_1,n.n5i_1,n.q5i_1,this.a5i_1),this.j5h_1.f5m(t.x5l_1.m5i_1,t.x5l_1.n5i_1,t.x5l_1.q5i_1,this.b5i_1.k5l_1),this.j5h_1.r5m(t.x5l_1.m5i_1,t.x5l_1.n5i_1,this.b5i_1.l5l_1),this.a5i_1.s5m(this.b5i_1.k5l_1).t5m();var e=this.b5i_1.l5l_1.u5m(this.a5i_1);if(e>=-1&&e<=1){var r=this.o5h_1,s=Fh(),u=Math.acos(e);r.j5i_1=s.u5n(u)}}},Pr(W_).e5m=function(t,n,i){var e,r;if(this.x5n(t,n,this.b5i_1)){var s;t:{var u=this.l5h_1.v5n().e2();if(ss(u,rs)&&u.d1())s=!1;else{for(var o=u.v();o.w();)if(o.y().w5n(this.b5i_1,this.a5i_1)){s=!0;break t}s=!1}}r=s}else r=!1;return r?(this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,i),e=!0):e=!1,e},Pr(W_).y5n=function(t,n){return this.z5n(t.s5l_1,t.t5l_1,t.w5l_1,n)},Pr(W_).z5n=function(t,n,i,e){return!this.q5h_1.t19()&&(this.a5o(this.z5h_1,this.y5h_1),this.z5h_1.i5m(this.y5h_1),!!this.z5h_1.b5o(t,n,i,this.q5h_1,this.a5i_1)&&(e.s5l_1=this.a5i_1.s5l_1,e.t5l_1=this.q5h_1.u5j_1-this.a5i_1.t5l_1,!0))},Pr(W_).c5o=function(t,n,i,e){return this.j5h_1.f5m(t,n,i,this.a5i_1),this.y5n(this.a5i_1,e)},Pr(W_).d5o=function(t,n,i){var e;return this.x5n(t,n,this.b5i_1)&&this.j5h_1.w5n(this.b5i_1,this.a5i_1)?(this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,i),e=!0):e=!1,e},Pr(W_).x5n=function(t,n,i){return!this.q5h_1.t19()&&(this.a5o(this.z5h_1,this.y5h_1),this.z5h_1.i5m(this.y5h_1).e5o(),!!this.z5h_1.f5o(t,this.q5h_1.u5j_1-n,this.q5h_1,i.k5l_1,i.l5l_1)&&(i.l5l_1.s5m(i.k5l_1).t5m(),!0))},Pr(W_).g5o=function(t){var n=.5*Ph(this.o5h_1.l5i_1);return 2*t*Math.tan(n)/this.q5h_1.u5j_1},Pr(W_).f5i=function(){var t=.5*Ph(this.o5h_1.l5i_1),n=Math.sin(t),i=this.j5h_1.h5o();return i/n-i},Pr(W_).i5o=function(t){var n=t.t5o_1;if(!n){var i=this.m5h_1;null==i||i.v5o(this.v5h_1)}this.j5h_1.q5m()&&(this.o5h_1.j5i_1=Fh().v5m_1,this.o5h_1.k5i_1=Fh().v5m_1),this.v5h_1.w5o_1=this.j5h_1,this.v5h_1.x5o_1=this.k5h_1,this.v5h_1.z5o_1=this.n5h_1,this.v5h_1.b5p_1=this.o5h_1;var e=this.j5h_1.p5l(this.o5h_1.g5i_1,this.o5h_1.h5i_1);if(this.v5h_1.f5p_1=this.j5h_1.q5l(e.q5i_1),this.j5h_1.f5m(e.m5i_1,e.n5i_1,e.q5i_1,this.v5h_1.m5p_1),this.v5h_1.c5p_1=this.i5h_1,this.v5h_1.e5p_1=this.t5h_1,this.v5h_1.d5p_1=this.s5h_1,this.v5h_1.g5p_1=this.u5h_1,this.v5h_1.k5p_1=this.j5h_1.bn(),this.v5h_1.l5p_1=this.j5h_1.m5j_1.j5q(),this.a5o(t.k5o_1,t.l5o_1),t.j5o_1.k5q(this.q5h_1),this.v5h_1.n5p_1.k5q(t.j5o_1),this.v5h_1.o5p_1.l5q(t.k5o_1),this.v5h_1.p5p_1.l5q(t.l5o_1),this.v5h_1.q5p_1.m5q(t.k5o_1,t.l5o_1),n?this.v5h_1.r5p_1.x5q(t.k5o_1,t.l5o_1,t.j5o_1,us(t.q5o_1)):this.v5h_1.r5p_1.w5q(t.k5o_1,t.l5o_1,t.j5o_1),this.j5h_1.q5m()){this.b5i_1.k5l_1.y5q(this.v5h_1.m5p_1),this.v5h_1.p5p_1.o5l(this.b5i_1.l5l_1);var r,s=this.v5h_1;this.j5h_1.w5n(this.b5i_1,this.a5i_1)?(this.v5h_1.j5p_1=this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,Pa()),r=this.a5i_1.z5q(this.v5h_1.m5p_1)):r=this.v5h_1.f5p_1,s.h5p_1=r,this.v5h_1.i5p_1=this.v5h_1.g5o(this.v5h_1.h5p_1)}this.v5h_1.s5p_1=t.m5o_1,this.v5h_1.t5p_1=t.n5o_1,this.v5h_1.u5p_1=t.o5o_1,this.v5h_1.v5p_1=t.p5o_1,this.v5h_1.w5p_1=t.q5o_1,this.v5h_1.x5p_1=t.r5o_1,this.v5h_1.y5p_1=t.s5o_1,this.v5h_1.z5p_1=t.t5o_1,this.l5h_1.a5r(this.v5h_1);var u=!n&&this.v5h_1.a5q_1;if(!n){var o=this.m5h_1;null==o||o.b5r(this.v5h_1)}return this.v5h_1.w1h(),u},Pr(W_).c5r=function(t){var n=t.t5o_1;if(!n){var i=this.m5h_1;null==i||i.d5r(this.w5h_1)}if(this.w5h_1.y5j_1.y5q(t.l5o_1.n5l(this.w5h_1.y5j_1)),this.w5h_1.z5j_1.k5q(t.j5o_1),this.w5h_1.a5k_1.l5q(t.k5o_1),this.w5h_1.b5k_1.l5q(t.l5o_1),this.w5h_1.c5k_1.m5q(t.k5o_1,t.l5o_1),this.w5h_1.d5k_1.e5r(t.j5o_1.t5j_1,t.j5o_1.u5j_1),this.w5h_1.e5k_1=t.m5o_1,this.w5h_1.f5k_1=t.n5o_1,this.w5h_1.g5k_1=t.o5o_1,this.w5h_1.h5k_1=t.q5o_1,this.w5h_1.i5k_1=t.r5o_1,this.w5h_1.j5k_1=t.t5o_1,this.l5h_1.f5r(this.w5h_1),this.i5h_1.g5r(),this.i5h_1.h5r(this.w5h_1),!n){var e=this.m5h_1;null==e||e.i5r(this.w5h_1)}this.w5h_1.w1h()},Pr(W_).a5o=function(t,n){var i=this.j5h_1.p5l(this.o5h_1.g5i_1,this.o5h_1.h5i_1).q5i_1,e=this.j5h_1.q5l(i)+this.j5h_1.q5l(this.u5h_1);e<1e3&&(e=1e3);var r=(1<0){var o=.5*Ph(this.o5h_1.l5i_1),_=Math.tan(o),h=2*_*_+1,a=u/(2*Math.sqrt(h));s>a&&(s=a)}s<1&&(s=1),t.j5r(this.q5h_1.t5j_1,this.q5h_1.u5j_1,this.o5h_1.l5i_1,s,e),this.j5l(n)},Pr(W_).j5l=function(t){return this.k5r(this.o5h_1.g5i_1,this.o5h_1.h5i_1,t),t.l5r(0,0,1,Gh(this.o5h_1.i5i_1)),t.l5r(1,0,0,this.o5h_1.j5i_1),t.l5r(0,0,1,this.o5h_1.k5i_1),t.m5r(),t},Pr(W_).o5m=function(t,n){return this.k5r(t.x5l_1,t.y5l_1,n),n.l5r(0,0,1,Gh(t.a5m_1)),n.l5r(1,0,0,t.b5m_1),n.l5r(0,0,1,t.c5m_1),n.n5r(0,0,t.z5l_1),n.m5r(),n},Pr(W_).k5r=function(t,n,i){switch(n.y9_1){case 0:this.j5h_1.o5r(t.m5i_1,t.n5i_1,t.q5i_1,i);break;case 1:this.j5h_1.o5r(t.m5i_1,t.n5i_1,this.j5h_1.p5m(t.m5i_1,t.n5i_1)*this.t5h_1,i);break;case 2:this.j5h_1.o5r(t.m5i_1,t.n5i_1,(t.q5i_1+this.j5h_1.p5m(t.m5i_1,t.n5i_1))*this.t5h_1,i)}return i},Pr(W_).n5m=function(t){t.x5l_1.m5i_1=Zh(t.x5l_1.m5i_1),t.x5l_1.n5i_1=Jh(t.x5l_1.n5i_1),t.z5l_1=os(t.z5l_1,10,2*this.f5i()),t.a5m_1=Kh(t.a5m_1);var n=t,i=Fh(),e=os(t.b5m_1,0,90);n.b5m_1=i.p5r(e),t.c5m_1=Kh(t.c5m_1),this.j5h_1.q5m()&&(t.z5l_1=os(t.z5l_1,1,2*_s()*this.j5h_1.h5o()),t.b5m_1=Fh().v5m_1,t.c5m_1=Fh().v5m_1)},Pr(Y_).q5r=function(t){var n=t.r5r(),i=null==n?new G_:n;return i.b5s_1=t,i},Pr(G_).c5s=function(t){this.s5r_1=t},Pr(G_).d5s=function(){return this.s5r_1},Pr(G_).e5s=function(){return this.t5r_1},Pr(G_).f5s=function(){return this.u5r_1},Pr(G_).g5s=function(){this.x5r_1=null,this.y5r_1=null,this.z5r_1=null,this.a5s_1=null;var t=this.b5s_1;null==t||t.h5s(this),this.b5s_1=null},Pr(G_).i5s=function(t,n){var i=this.x5r_1,e=null==i?null:i.o5s(t),r=null!=e&&e;return r&&t.x5j_1.p5s(n,3,cx(),!1,0,0),r},Pr(G_).q5s=function(t,n){var i=this.y5r_1,e=null==i?null:i.o5s(t),r=null!=e&&e;return r&&t.x5j_1.p5s(n,1,cx(),!1,0,0),r},Pr(G_).r5s=function(t,n){var i=this.z5r_1,e=null==i?null:i.o5s(t),r=null!=e&&e;return r&&t.x5j_1.p5s(n,2,cx(),!1,0,0),r},Pr(G_).s5s=function(t){var n=this.a5s_1,i=null==n?null:n.o5s(t),e=null!=i&&i;return e&&t.x5j_1.a5t(ur,this.v5r_1.a(),Yk(),Ar(this.v5r_1.y5s_1,2)),e},Pr(G_).b5t=function(t){var n=this.a5s_1,i=null==n?null:n.o5s(t),e=null!=i&&i;return e&&t.x5j_1.a5t(Wk(),this.w5r_1.a(),Yk(),Ar(this.w5r_1.y5s_1,2)),e},Pr(G_).c5t=function(t){this.b5t(t)},Pr(K_).h5t=function(){var t=this.f5k_1,n=null==t?null:t.y5g();return null==n?0:n},Pr(K_).m5t=function(){return this.k5k_1},Pr(K_).n5t=function(){return this.l5k_1},Pr(K_).o5t=function(){return this.p5t(this.m5k_1)},Pr(K_).q5t=function(){var t,n=this.q5k_1;if(null==n){var i=new py,e=new xy(1024,1024,sx(),ux(),!0),r=new xy(1024,1024,ze,Yk(),!0);r.b5u(Xk(),Jk()),r.b5u(Zk(),Jk()),i.e5u(this,e,ox()),i.e5u(this,r,_x()),this.q5k_1=i,t=i}else t=n;return t},Pr(K_).f5u=function(){var t,n=this.r5k_1;if(null==n){var i=new Oy(Vk(),new Float32Array([0,1,0,0,1,1,1,0]));this.r5k_1=i,t=i}else t=n;return t},Pr(K_).g5u=function(){var t,n=this.s5k_1;if(null==n){var i=new jy(Bk(),new Int32Array([0,1,2,2,1,3]));this.s5k_1=i,t=i}else t=n;return t},Pr(K_).w1h=function(){this.y5j_1.h5u(0,0,0),this.z5j_1.v5j(),this.a5k_1.i5u(),this.b5k_1.i5u(),this.c5k_1.i5u(),this.d5k_1.i5u(),this.e5k_1=null,this.f5k_1=null,this.g5k_1=null,this.h5k_1=null,this.i5k_1=null,this.j5k_1=!1,ls(this.t5k_1,0),this.w5k_1.b1(),this.v5k_1.w1h()},Pr(K_).c5l=function(){this.k5k_1=aS().d5t_1,this.l5k_1=Zq().e5t_1,this.m5k_1=rx(),this.o5k_1=rS().g5t_1,this.p5k_1=rS().g5t_1,this.q5k_1=null,this.r5k_1=null,this.s5k_1=null,cs(this.n5k_1,oS().f5t_1),this.v5k_1.c5l()},Pr(K_).q5u=function(){var t=this.e5k_1;return null==t?null:t.q5u()},Pr(K_).r5u=function(){var t=this.e5k_1;return null==t?null:t.r5u()},Pr(K_).s5u=function(){var t=this.e5k_1;null==t||t.s5u()},Pr(K_).t5u=function(t){var n=this.f5k_1,i=null==n?null:n.u5u(t),e=null==i||ss(i,Eh)?i:Nr();if(null==e)throw fs(Gr("Invalid index"));return e},Pr(K_).v5u=function(t){this.k5k_1.equals(t)||(this.k5k_1=t,this.x5j_1.w5u(hx(),t))},Pr(K_).x5u=function(t){this.l5k_1.equals(t)||(this.l5k_1=t,this.x5j_1.x5u(t))},Pr(K_).y5u=function(t){this.m5k_1!==t&&(this.m5k_1=t,this.x5j_1.z5u(t))},Pr(K_).p5t=function(t){return this.n5k_1[t-rx()|0]},Pr(K_).a5v=function(t){var n=this.m5k_1-rx()|0;this.n5k_1[n].equals(t)||(this.n5k_1[n]=t,this.x5j_1.b5v(ax(),t))},Pr(K_).c5v=function(t){return t===Vk()?this.o5k_1:t===Bk()?this.p5k_1:rS().g5t_1},Pr(K_).d5v=function(t,n){t!==Vk()||this.o5k_1.equals(n)?(t!==Bk()||this.p5k_1.equals(n)||(this.p5k_1=n),this.x5j_1.d5v(t,n)):(this.o5k_1=n,this.x5j_1.d5v(t,n))},Pr(K_).e5v=function(t){return this.v5k_1.f5v(this,t)},Pr(K_).g5v=function(t,n,i){return this.x5j_1.h5v(t,n,1,1,sx(),ux(),this.u5k_1),i.k5g_1=(255&this.u5k_1[0])/255,i.l5g_1=(255&this.u5k_1[1])/255,i.m5g_1=(255&this.u5k_1[2])/255,i.n5g_1=(255&this.u5k_1[3])/255,i},Pr(K_).i5v=function(t,n,i,e){var r=Ar(i,e),s=this.j5v(Ar(r,4)),u=this.x5j_1.d5l(lx());this.x5j_1.k5v(lx(),1),this.x5j_1.h5v(t,n,i,e,sx(),ux(),s),this.x5j_1.k5v(lx(),u);var o=vs(),_=_y(),h=0;if(h>1,s=Math.max(r,12),u=hs(Array(e+s|0),null),o=this.k5t_1,_=o.length;ps(o,u,0,0,_),this.k5t_1=u}var h,a=this.k5t_1[this.i5t_1];if(null==a){var l=new hh;this.k5t_1[this.i5t_1]=l,h=l}else h=a;var c=h,f=this.i5t_1;this.i5t_1=f+1|0,c.i60(t,n,i,f)},Pr(ch).u5u=function(t){var n;if(tO.o63_1&&kr.t64(kr.u5i_1,"StarFieldLayer - sunSize is to big, max size allowed is: "+O.o63_1),!0!==(null==i?null:i.o5s(t))||!0!==(null==e?null:e.v61(t))?Xr:(t.x5j_1.p5s(0,4,cx(),!1,0,0),n.r64(!0),void t.x5j_1.w61(fx(),0,1))},Pr(bh).u64=function(t){var n=t.r5r(),i=null==n?new $h:n;return i.y64_1=t,i},Pr($h).g5s=function(){this.x64_1=null;var t=this.y64_1;null==t||t.h5s(this),this.y64_1=null},Pr($h).c5t=function(t){var n=this.x64_1;if(null==n)return Xr;var i=n;if(!i.k5x(t))return Xr;i.w5z(!1),i.y5z(this.v64_1),i.z5z(this.w64_1);var e=0,r=t.h5t();if(e0&&this.k65(t,_)}while(s180?n-360:n<-180?360+n:n},Pr(Lh).n69=function(t){var n=t%360;return n>=0?n:360+n},Pr(Lh).o69=function(t){var n=t%180,i=n>90?180-n:n<-90?-180-n:n;return 0==(ks(t/180)%2|0)?i:-i},Pr(Lh).p69=function(t){var n=t%360;return n>180?n-360:n<-180?360+n:n},Pr(Lh).q69=function(t){return os(t,-90,90)},Pr(Lh).r69=function(t){return os(t,-180,180)},Pr(Lh).s69=function(t,n){return this.p5r(.5*(t+n))},Pr(Lh).t69=function(t,n){return t>=n?t:n},Pr(Lh).u69=function(t,n){return t<=n?t:n},Pr(ia).w69=function(t){return ta(this.v69_1,t)},Pr(ia).d=function(t){return function(t,n){return ta(t.v69_1,n instanceof ia?n.v69_1:Nr())}(this,t)},Pr(ia).toString=function(){return this.v69_1+"°"},Pr(ia).hashCode=function(){return na(this.v69_1)},Pr(ia).equals=function(t){return function(t,n){if(!(n instanceof ia))return!1;var i=n instanceof ia?n.v69_1:Nr();return!!qs(t,i)}(this.v69_1,t)},Pr(oa).c6a=function(){return 0===this.y67_1.s5l_1&&0===this.y67_1.t5l_1&&0===this.y67_1.w5l_1&&this.e68_1===Math.sqrt(3)},Pr(oa).d6a=function(){return this.y67_1.h5u(0,0,0),this.z67_1.h5u(-.5,0,0),this.a68_1.h5u(.5,0,0),this.b68_1.h5u(1,0,0),this.c68_1.h5u(0,1,0),this.d68_1.h5u(0,0,1),this.e68_1=Math.sqrt(3),this},Pr(oa).e6a=function(t,n,i){var e=Oa();e.f6a(t,n,i),e.g6a(this.b68_1,this.c68_1,this.d68_1),this.b68_1.t5m(),this.c68_1.t5m(),this.d68_1.t5m();var r=1/0,s=-1/0,u=1/0,o=-1/0,_=1/0,h=-1/0,a=tl(),l=Os(Es(0,n),i),c=l.ha_1,f=l.ia_1,v=l.ja_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0,a.h5u(t[d],t[d+1|0],t[d+2|0]);var w=a.u5m(this.b68_1);r>w&&(r=w),sp&&(u=p),om&&(_=m),h180){var p=e;n.f5m(t.j6a(),Hh(t.k6a(),90),p,this.f68_1),n.f5m(t.j6a(),Wh(t.k6a(),90),p,this.g68_1),ea(0,this.b68_1,h,this.c68_1,a,this.d68_1,l,this.f68_1),ea(0,this.b68_1,h,this.c68_1,a,this.d68_1,l,this.g68_1)}h[1]-h[0]i&&(n=i),n>(i=this.z67_1.m6a(t))&&(n=i),n>(i=this.a68_1.m6a(t))&&(n=i),this.f68_1.s5l_1=this.y67_1.s5l_1-.5*this.c68_1.s5l_1,this.f68_1.t5l_1=this.y67_1.t5l_1-.5*this.c68_1.t5l_1,this.f68_1.w5l_1=this.y67_1.w5l_1-.5*this.c68_1.w5l_1,n>(i=this.f68_1.m6a(t))&&(n=i),this.f68_1.s5l_1=this.y67_1.s5l_1+.5*this.c68_1.s5l_1,this.f68_1.t5l_1=this.y67_1.t5l_1+.5*this.c68_1.t5l_1,this.f68_1.w5l_1=this.y67_1.w5l_1+.5*this.c68_1.w5l_1,n>(i=this.f68_1.m6a(t))&&(n=i);var e=n;return Math.sqrt(e)},Pr(oa).l68=function(t){this.f68_1.y5q(this.z67_1),this.g68_1.y5q(this.a68_1);var n,i=this.j68_1>=0?t.u5q_1[this.j68_1]:null,e=-1;if(!1!==(null==i?null:sa(this,i)>=0)){var r;t:{for(var s=t.u5q_1,u=0,o=s.length;u=0;if(h||(this.j68_1=e),!h){r=!1;break t}}r=!0}n=r}else n=!1;return n},Pr(oa).toString=function(){return"BoundingBox(center="+this.y67_1+", bottomCenter="+this.z67_1+", topCenter="+this.a68_1+", r="+this.b68_1+", s="+this.c68_1+", t="+this.d68_1+", radius="+this.e68_1+")"},Pr(_a).q6a=function(t){if(!(t>=0)){var n=kr.y5i(kr.t5i_1,"BoundingSphere","setRadius","invalidRadius");throw is(Gr(n))}this.o6a_1=t},Pr(_a).r6a=function(t,n){return this.n6a_1.y5q(t),this.q6a(n),this},Pr(_a).l68=function(t){var n,i=-this.o6a_1,e=this.p6a_1>=0?t.u5q_1[this.p6a_1]:null,r=-1;if(!1!==(null==e?null:e.s6a(this.n6a_1)>i)){var s;t:{for(var u=t.u5q_1,o=0,_=u.length;o<_;){var h=u[o];o=o+1|0;var a=(r=r+1|0)===this.p6a_1||h.s6a(this.n6a_1)>i;if(a||(this.p6a_1=r),!a){s=!1;break t}}s=!0}n=s}else n=!1;return n},Pr(_a).equals=function(t){return this===t||t instanceof _a&&!!this.n6a_1.equals(t.n6a_1)&&this.o6a_1===t.o6a_1},Pr(_a).hashCode=function(){var t=this.n6a_1.hashCode();return Ar(31,t)+Ss(this.o6a_1)|0},Pr(_a).toString=function(){return"BoundingSphere(center="+this.n6a_1+", radius="+this.o6a_1+")"},Pr(ha).g5l=function(t){if(!(t>0&&t<180)){var n=kr.y5i(kr.t5i_1,"Camera","setFieldOfView","invalidFieldOfView");throw is(Gr(n))}this.l5i_1=t},Pr(ha).t6a=function(t,n,i,e,r,s,u){return this.g5i_1.r5i(t,n,i),this.h5i_1=e,this.i5i_1=r,this.j5i_1=s,this.k5i_1=u,this},Pr(ha).toString=function(){return"Camera(position="+this.g5i_1+", altitudeMode="+this.h5i_1+", heading="+new ia(this.i5i_1)+", tilt="+new ia(this.j5i_1)+", roll="+new ia(this.k5i_1)+", fieldOfView="+new ia(this.l5i_1)+")"},Pr(ca).y6a=function(){var t=1/this.x6a_1;return this.w6a_1*(1-t)},Pr(ca).z6a=function(){var t=1/this.x6a_1;return 2*t-t*t},Pr(ca).toString=function(){return"Ellipsoid(semiMajorAxis="+this.w6a_1+", inverseFlattening="+this.x6a_1+")"},Pr(ca).hashCode=function(){var t=Ss(this.w6a_1);return Ar(t,31)+Ss(this.x6a_1)|0},Pr(ca).equals=function(t){if(this===t)return!0;if(!(t instanceof ca))return!1;var n=t instanceof ca?t:Nr();return!!qs(this.w6a_1,n.w6a_1)&&!!qs(this.x6a_1,n.x6a_1)},Pr(va).a6b=function(){return this.n5q_1.b6b(1,0,0,1),this.o5q_1.b6b(-1,0,0,1),this.p5q_1.b6b(0,1,0,1),this.q5q_1.b6b(0,-1,0,1),this.r5q_1.b6b(0,0,-1,1),this.s5q_1.b6b(0,0,1,1),this.t5q_1.h5l(0,0,1,1),this},Pr(va).w5q=function(t,n,i){this.v5q_1.c6b(n);var e=t.m5l_1,r=e[12]+e[0],s=e[13]+e[1],u=e[14]+e[2],o=e[15]+e[3];return this.n5q_1.b6b(r,s,u,o),this.n5q_1.d6b(this.v5q_1),r=e[12]-e[0],s=e[13]-e[1],u=e[14]-e[2],o=e[15]-e[3],this.o5q_1.b6b(r,s,u,o),this.o5q_1.d6b(this.v5q_1),r=e[12]+e[4],s=e[13]+e[5],u=e[14]+e[6],o=e[15]+e[7],this.p5q_1.b6b(r,s,u,o),this.p5q_1.d6b(this.v5q_1),r=e[12]-e[4],s=e[13]-e[5],u=e[14]-e[6],o=e[15]-e[7],this.q5q_1.b6b(r,s,u,o),this.q5q_1.d6b(this.v5q_1),r=e[12]+e[8],s=e[13]+e[9],u=e[14]+e[10],o=e[15]+e[11],this.r5q_1.b6b(r,s,u,o),this.r5q_1.d6b(this.v5q_1),r=e[12]-e[8],s=e[13]-e[9],u=e[14]-e[10],o=e[15]-e[11],this.s5q_1.b6b(r,s,u,o),this.s5q_1.d6b(this.v5q_1),this.t5q_1.k5q(i),this},Pr(va).x5q=function(t,n,i,e){var r,s,u,o,_,h,a,l,c=e.r5j_1,f=e.r5j_1+e.t5j_1|0,v=e.s5j_1,d=e.s5j_1+e.u5j_1|0,w=this.v5q_1.m5q(t,n).e5o(),p=tl();r=p;var m=p,g=tl();s=g,w.f5o(c,v,i,m,g);var y=tl();u=y;var b=y,$=tl();o=$,w.f5o(f,v,i,b,$);var k=tl();_=k;var x=k,q=tl();h=q,w.f5o(c,d,i,x,q);var S=tl();a=S;var C=S,E=tl();l=E,w.f5o(f,d,i,C,E);var O=new nl(h.s5l_1-r.s5l_1,h.t5l_1-r.t5l_1,h.w5l_1-r.w5l_1),j=new nl(_.s5l_1-s.s5l_1,_.t5l_1-s.t5l_1,_.w5l_1-s.w5l_1),T=O.e6b(j);this.n5q_1.b6b(T.s5l_1,T.t5l_1,T.w5l_1,-T.u5m(r)),O.h5u(a.s5l_1-o.s5l_1,a.t5l_1-o.t5l_1,a.w5l_1-o.w5l_1),j.h5u(l.s5l_1-u.s5l_1,l.t5l_1-u.t5l_1,l.w5l_1-u.w5l_1);var A=O.e6b(j);this.o5q_1.b6b(A.s5l_1,A.t5l_1,A.w5l_1,-A.u5m(u)),O.h5u(o.s5l_1-r.s5l_1,o.t5l_1-r.t5l_1,o.w5l_1-r.w5l_1),j.h5u(s.s5l_1-u.s5l_1,s.t5l_1-u.t5l_1,s.w5l_1-u.w5l_1);var z=O.e6b(j);this.p5q_1.b6b(z.s5l_1,z.t5l_1,z.w5l_1,-z.u5m(u)),O.h5u(h.s5l_1-a.s5l_1,h.t5l_1-a.t5l_1,h.w5l_1-a.w5l_1),j.h5u(l.s5l_1-_.s5l_1,l.t5l_1-_.t5l_1,l.w5l_1-_.w5l_1);var I=O.e6b(j);this.q5q_1.b6b(I.s5l_1,I.t5l_1,I.w5l_1,-I.u5m(_)),O.h5u(_.s5l_1-u.s5l_1,_.t5l_1-u.t5l_1,_.w5l_1-u.w5l_1),j.h5u(a.s5l_1-r.s5l_1,a.t5l_1-r.t5l_1,a.w5l_1-r.w5l_1);var D=O.e6b(j);this.r5q_1.b6b(D.s5l_1,D.t5l_1,D.w5l_1,-D.u5m(r)),O.h5u(l.s5l_1-s.s5l_1,l.t5l_1-s.t5l_1,l.w5l_1-s.w5l_1),j.h5u(h.s5l_1-o.s5l_1,h.t5l_1-o.t5l_1,h.w5l_1-o.w5l_1);var M=O.e6b(j);return this.s5q_1.b6b(M.s5l_1,M.t5l_1,M.w5l_1,-M.u5m(s)),this.t5q_1.k5q(e),this},Pr(va).f6b=function(t){return this.s5q_1.u5m(t)>0&&this.n5q_1.u5m(t)>0&&this.o5q_1.u5m(t)>0&&this.q5q_1.u5m(t)>0&&this.p5q_1.u5m(t)>0&&this.r5q_1.u5m(t)>0},Pr(va).g6b=function(t,n){if(this.f6b(t)||this.f6b(n))return!0;if(t.equals(n))return!1;var i=0,e=this.u5q_1.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=this.u5q_1[r];if(s.h6b(t,n)<0)return!1;if(null!=s.i6b(t,n))return!0}while(i<=e);return!1},Pr(va).j6b=function(t){return this.t5q_1.k6b(t)},Pr(wa).l6b=function(t,n){return this.k5l_1.y5q(t),this.l5l_1.h5u(n.s5l_1-t.s5l_1,n.t5l_1-t.t5l_1,n.w5l_1-t.w5l_1),this},Pr(wa).r5l=function(t,n){return n.s5l_1=this.k5l_1.s5l_1+this.l5l_1.s5l_1*t,n.t5l_1=this.k5l_1.t5l_1+this.l5l_1.t5l_1*t,n.w5l_1=this.k5l_1.w5l_1+this.l5l_1.w5l_1*t,n},Pr(wa).m6b=function(t,n,i,e,r){if(!(t.length>=n)){var s=kr.y5i(kr.t5i_1,"Line","triStripIntersection","missingArray");throw is(Gr(s))}if(!(n>=3)){var u=kr.y5i(kr.t5i_1,"Line","triStripIntersection","invalidStride");throw is(Gr(u))}if(0===i.length){var o=kr.y5i(kr.t5i_1,"Line","triStripIntersection","missingArray");throw is(Gr(o))}if(!(e>=0)){var _=kr.y5i(kr.t5i_1,"Line","triStripIntersection","invalidCount");throw is(Gr(_))}var h=this.l5l_1.s5l_1,a=this.l5l_1.t5l_1,l=this.l5l_1.w5l_1,c=this.k5l_1.s5l_1,f=this.k5l_1.t5l_1,v=this.k5l_1.w5l_1,d=1/0,w=1e-5,p=i[0]*n|0,m=p;p=m+1|0;var g=t[m],y=p;p=y+1|0;var b=t[y],$=t[p],k=p=i[1]*n|0;p=k+1|0;var x=t[k],q=p;p=q+1|0;var S=t[q],C=t[p],E=2;if(E-1e-5&&V1.00001)){var X=Y*N-G*M,J=G*D-W*N,Z=W*M-Y*D,Q=B*(h*X+a*J+l*Z);if(!(Q<-1e-5||K+Q>1.00001)){var tt=B*(R*X+P*J+L*Z);tt>=0&&tte?Fh().y5m_1:Fh().v5m_1;var s=r-i,u=Math.cos(e)*Math.sin(s),o=r-i,_=Math.cos(n)*Math.sin(e)-Math.sin(n)*Math.cos(e)*Math.cos(o),h=Math.atan2(u,_);return $s(h)?Fh().v5m_1:Fh().u5n(h)},Pr(ya).r6b=function(t){var n=Ph(this.m5i_1),i=Ph(this.n5i_1),e=Ph(t.m5i_1),r=Ph(t.n5i_1);if(n===e&&i===r)return 0;var s=(e-n)/2,u=Math.sin(s),o=(r-i)/2,_=Math.sin(o),h=u*u+Math.cos(n)*Math.cos(e)*_*_,a=Math.sqrt(h),l=2*Math.asin(a);return $s(l)?0:l},Pr(ya).s6b=function(t,n,i){if(0===n)return i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1,i;var e=Ph(this.m5i_1),r=Ph(this.n5i_1),s=Ph(t),u=Math.cos(e),o=Math.sin(e),_=Math.cos(s),h=Math.sin(s),a=Math.sin(n),l=Math.cos(n),c=o*l+u*a*_,f=Math.asin(c),v=a*h,d=u*l-o*a*_,w=r+Math.atan2(v,d);return $s(f)||$s(w)?(i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1):(i.m5i_1=Xh(Fh().u5n(f)),i.n5i_1=Jh(Fh().u5n(w))),i},Pr(ya).t6b=function(t){var n=Ph(this.m5i_1),i=Ph(this.n5i_1),e=Ph(t.m5i_1),r=Ph(t.n5i_1);if(n===e&&i===r)return Fh().v5m_1;var s=r-i,u=e/2+_s()/4,o=Math.tan(u),_=n/2+_s()/4,h=o/Math.tan(_),a=Math.log(h),l=s;Math.abs(l)>_s()&&(s=s>0?-(2*_s()-s):2*_s()+s);var c=s,f=Math.atan2(c,a);return $s(f)?Fh().v5m_1:Fh().u5n(f)},Pr(ya).u6b=function(t){var n=Ph(this.m5i_1),i=Ph(this.n5i_1),e=Ph(t.m5i_1),r=Ph(t.n5i_1);if(n===e&&i===r)return 0;var s,u=e-n,o=r-i;if(Math.abs(u)<1e-15)s=Math.cos(n);else{var _=e/2+_s()/4,h=Math.tan(_),a=n/2+_s()/4,l=h/Math.tan(a);s=u/Math.log(l)}var c=s,f=o;Math.abs(f)>_s()&&(o=o>0?-(2*_s()-o):2*_s()+o);var v=u*u+c*c*o*o,d=Math.sqrt(v);return $s(d)?0:d},Pr(ya).v6b=function(t,n,i){if(0===n)return i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1,i;var e,r=Ph(this.m5i_1),s=Ph(this.n5i_1),u=Ph(t),o=r+n*Math.cos(u),_=o-r;if(Math.abs(_)<1e-15)e=Math.cos(r);else{var h=o/2+_s()/4,a=Math.tan(h),l=r/2+_s()/4,c=a/Math.tan(l);e=_/Math.log(c)}var f=e,v=n*Math.sin(u)/f,d=o;Math.abs(d)>_s()/2&&(o=o>0?_s()-o:-_s()-o);var w=(s+v+_s())%(2*_s())-_s();return $s(o)||$s(w)?(i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1):(i.m5i_1=Xh(Fh().u5n(o)),i.n5i_1=Jh(Fh().u5n(w))),i},Pr(ya).equals=function(t){return this===t||t instanceof ya&&this.m5i_1===t.m5i_1&&this.n5i_1===t.n5i_1},Pr(ya).hashCode=function(){var t=na(this.m5i_1);return Ar(31,t)+na(this.n5i_1)|0},Pr(ya).toString=function(){return"Location(latitude="+new ia(this.m5i_1)+", longitude="+new ia(this.n5i_1)+")"},Pr($a).w6b=function(t,n,i,e,r,s,u,o){return this.x5l_1.r5i(t,n,i),this.y5l_1=e,this.z5l_1=r,this.a5m_1=s,this.b5m_1=u,this.c5m_1=o,this},Pr($a).x6b=function(t){return this.w6b(t.x5l_1.m5i_1,t.x5l_1.n5i_1,t.x5l_1.q5i_1,t.y5l_1,t.z5l_1,t.a5m_1,t.b5m_1,t.c5m_1)},Pr($a).toString=function(){return"LookAt(position="+this.x5l_1+", altitudeMode="+this.y5l_1+", range="+this.z5l_1+", heading="+new ia(this.a5m_1)+", tilt="+new ia(this.b5m_1)+", roll="+new ia(this.c5m_1)+")"},Pr(Sa).y5w=function(t){var n=t.r5w_1,i=this.r5w_1,e=n.length;return ps(n,i,0,0,e),this},Pr(Sa).z6b=function(t,n){return this.r5w_1[0]=t,this.r5w_1[4]=n,this},Pr(Sa).i5u=function(){var t=xa().y6b_1,n=this.r5w_1,i=t.length;return ps(t,n,0,0,i),this},Pr(Sa).a6c=function(){return this.r5w_1[0]=1,this.r5w_1[1]=0,this.r5w_1[2]=0,this.r5w_1[3]=0,this.r5w_1[4]=-1,this.r5w_1[5]=1,this.r5w_1[6]=0,this.r5w_1[7]=0,this.r5w_1[8]=1,this},Pr(Sa).c67=function(t,n){var i=t.r65(),e=t.q65(),r=n.r65(),s=n.q65(),u=e/s,o=i/r,_=(t.o65_1-n.o65_1)/s,h=(t.m65_1-n.m65_1)/r;return this.r5w_1[0]=u,this.r5w_1[1]=0,this.r5w_1[2]=_,this.r5w_1[3]=0,this.r5w_1[4]=o,this.r5w_1[5]=h,this.r5w_1[6]=0,this.r5w_1[7]=0,this.r5w_1[8]=1,this},Pr(Sa).b67=function(t,n){var i=t.r65(),e=t.q65(),r=n.r65(),s=n.q65(),u=e/s,o=i/r,_=(t.o65_1-n.o65_1)/s,h=(t.m65_1-n.m65_1)/r,a=this.r5w_1;a[2]=a[2]+(this.r5w_1[0]*_+this.r5w_1[1]*h);var l=this.r5w_1;l[5]=l[5]+(this.r5w_1[3]*_+this.r5w_1[4]*h);var c=this.r5w_1;c[8]=c[8]+(this.r5w_1[6]*_+this.r5w_1[6]*h);var f=this.r5w_1;f[0]=f[0]*u;var v=this.r5w_1;v[1]=v[1]*o;var d=this.r5w_1;d[3]=d[3]*u;var w=this.r5w_1;w[4]=w[4]*o;var p=this.r5w_1;p[6]=p[6]*u;var m=this.r5w_1;return m[7]=m[7]*o,this},Pr(Sa).b6c=function(t){var n=this.r5w_1,i=t.r5w_1,e=n[0],r=n[1],s=n[2];return n[0]=e*i[0]+r*i[3]+s*i[6],n[1]=e*i[1]+r*i[4]+s*i[7],n[2]=e*i[2]+r*i[5]+s*i[8],e=n[3],r=n[4],s=n[5],n[3]=e*i[0]+r*i[3]+s*i[6],n[4]=e*i[1]+r*i[4]+s*i[7],n[5]=e*i[2]+r*i[5]+s*i[8],e=n[6],r=n[7],s=n[8],n[6]=e*i[0]+r*i[3]+s*i[6],n[7]=e*i[1]+r*i[4]+s*i[7],n[8]=e*i[2]+r*i[5]+s*i[8],this},Pr(Sa).c6c=function(t,n){var i=n;if(!((t.length-i|0)>=9)){var e=kr.y5i(kr.t5i_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.r5w_1[0];var s=i;i=s+1|0,t[s]=this.r5w_1[3];var u=i;i=u+1|0,t[u]=this.r5w_1[6];var o=i;i=o+1|0,t[o]=this.r5w_1[1];var _=i;i=_+1|0,t[_]=this.r5w_1[4];var h=i;i=h+1|0,t[h]=this.r5w_1[7];var a=i;i=a+1|0,t[a]=this.r5w_1[2];var l=i;return i=l+1|0,t[l]=this.r5w_1[5],t[i]=this.r5w_1[8],t},Pr(Sa).equals=function(t){return this===t||t instanceof Sa&&Ns(this.r5w_1,t.r5w_1)},Pr(Sa).hashCode=function(){return Rs(this.r5w_1)},Pr(Sa).toString=function(){return"Matrix3(["+this.r5w_1[0]+", "+this.r5w_1[1]+", "+this.r5w_1[2]+"], ["+this.r5w_1[3]+", "+this.r5w_1[4]+", "+this.r5w_1[5]+"], ["+this.r5w_1[6]+", "+this.r5w_1[7]+", "+this.r5w_1[8]+"])"},Pr(Ca).i6c=function(t,n){for(var i=0,e=hs(Array(4),null);i<4;)e[i]=new Float64Array(4),i=i+1|0;var r=e;r[0][0]=t[0],r[0][1]=t[1],r[0][2]=t[2],r[0][3]=t[3],r[1][0]=t[4],r[1][1]=t[5],r[1][2]=t[6],r[1][3]=t[7],r[2][0]=t[8],r[2][1]=t[9],r[2][2]=t[10],r[2][3]=t[11],r[3][0]=t[12],r[3][1]=t[13],r[3][2]=t[14],r[3][3]=t[15];var s=new Int32Array(4),u=this.j6c(r,s),o=0;if(o<=3)do{var _=o;o=o+1|0,u*=r[_][_]}while(o<=3);var h=u;if(Math.abs(h)<1e-8)return!1;for(var a=0,l=hs(Array(4),null);a<4;)l[a]=new Float64Array(4),a=a+1|0;var c=l,f=new Float64Array(4),v=0;if(v<=3)do{var d=v;v=v+1|0;var w=0;if(w<=3)do{var p=w;w=w+1|0,f[p]=0}while(w<=3);f[d]=1,this.k6c(r,s,f);var m=0;if(m<=3)do{var g=m;m=m+1|0,c[g][d]=f[g]}while(m<=3)}while(v<=3);return n[0]=c[0][0],n[1]=c[0][1],n[2]=c[0][2],n[3]=c[0][3],n[4]=c[1][0],n[5]=c[1][1],n[6]=c[1][2],n[7]=c[1][3],n[8]=c[2][0],n[9]=c[2][1],n[10]=c[2][2],n[11]=c[2][3],n[12]=c[3][0],n[13]=c[3][1],n[14]=c[3][2],n[15]=c[3][3],!0},Pr(Ca).j6c=function(t,n){var i=new Float64Array(4),e=1,r=0;if(r<=3)do{var s=r;r=r+1|0;var u=0,o=0;if(o<=3)do{var _=o;o=o+1|0;var h=t[s][_],a=Math.abs(h);a>u&&(u=a)}while(o<=3);if(0===u)return 0;i[s]=1/u}while(r<=3);var l=0;if(l<=3)do{var c=l;l=l+1|0;var f=0;if(f=g&&(g=m,y=$)}while(b<=3);if(c!==y){var O=0;if(O<=3)do{var j=O;O=O+1|0,m=t[y][j],t[y][j]=t[c][j],t[c][j]=m}while(O<=3);e=-e,i[y]=i[c]}if(n[c]=y,0===t[c][c]&&(t[c][c]=1e-20),3!==c){m=1/t[c][c];var T=c+1|0;if(T<=3)do{var A=T;T=T+1|0;var z=t[A];z[c]=z[c]*m}while(T<=3)}}while(l<=3);return e},Pr(Ca).k6c=function(t,n,i){var e=-1,r=0;if(r<=3)do{var s=r;r=r+1|0;var u=n[s],o=i[u];if(i[u]=i[s],-1!==e){var _=e;if(_0)){var s=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidWidth");throw is(Gr(s))}if(!(n>0)){var u=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidHeight");throw is(Gr(u))}if(!(i>0&&i<180)){var o=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidFieldOfView");throw is(Gr(o))}if(e===r){var _=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(_))}if(!(e>0&&r>0)){var h=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(h))}var a=t/n,l=.5*Ph(i),c=2*e*Math.tan(l),f=c*a;return this.m5l_1[0]=2*e/f,this.m5l_1[1]=0,this.m5l_1[2]=0,this.m5l_1[3]=0,this.m5l_1[4]=0,this.m5l_1[5]=2*e/c,this.m5l_1[6]=0,this.m5l_1[7]=0,this.m5l_1[8]=0,this.m5l_1[9]=0,this.m5l_1[10]=-(r+e)/(r-e),this.m5l_1[11]=-2*e*r/(r-e),this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=-1,this.m5l_1[15]=0,this},Pr(ja).e5r=function(t,n){if(!(t>0)){var i=kr.y5i(kr.t5i_1,"Matrix4","setToScreenProjection","invalidWidth");throw is(Gr(i))}if(!(n>0)){var e=kr.y5i(kr.t5i_1,"Matrix4","setToScreenProjection","invalidHeight");throw is(Gr(e))}return this.m5l_1[0]=2/t,this.m5l_1[1]=0,this.m5l_1[2]=0,this.m5l_1[3]=-1,this.m5l_1[4]=0,this.m5l_1[5]=2/n,this.m5l_1[6]=0,this.m5l_1[7]=-1,this.m5l_1[8]=0,this.m5l_1[9]=0,this.m5l_1[10]=2,this.m5l_1[11]=-1,this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=0,this.m5l_1[15]=1,this},Pr(ja).f6a=function(t,n,i){if(!(t.length>=i)){var e=kr.y5i(kr.t5i_1,"Matrix4","setToCovarianceOfPoints","invalidArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.y5i(kr.t5i_1,"Matrix4","setToCovarianceOfPoints","invalidCount");throw is(Gr(r))}if(!(i>=3)){var s=kr.y5i(kr.t5i_1,"Matrix4","setToCovarianceOfPoints","invalidStride");throw is(Gr(s))}var u=0,o=0,_=0,h=0,a=0,l=0,c=0,f=0,v=0,d=0,w=Os(Es(0,n),i),p=w.ha_1,m=w.ia_1,g=w.ja_1;if(g>0&&p<=m||g<0&&m<=p)do{var y=p;p=p+g|0,u+=t[y],o+=t[y+1|0],_+=t[y+2|0],d+=1}while(y!==m);u/=d,o/=d,_/=d;var b=Os(Es(0,n),i),$=b.ha_1,k=b.ia_1,x=b.ja_1;if(x>0&&$<=k||x<0&&k<=$)do{var q=$;$=$+x|0;var S=t[q]-u,C=t[q+1|0]-o,E=t[q+2|0]-_;h+=S*S,a+=C*C,l+=E*E,c+=S*C,f+=S*E,v+=C*E}while(q!==k);return this.m5l_1[0]=h/d,this.m5l_1[1]=c/d,this.m5l_1[2]=f/d,this.m5l_1[3]=0,this.m5l_1[4]=c/d,this.m5l_1[5]=a/d,this.m5l_1[6]=v/d,this.m5l_1[7]=0,this.m5l_1[8]=f/d,this.m5l_1[9]=v/d,this.m5l_1[10]=l/d,this.m5l_1[11]=0,this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=0,this.m5l_1[15]=0,this},Pr(ja).n5r=function(t,n,i){var e=this.m5l_1;e[3]=e[3]+(this.m5l_1[0]*t+this.m5l_1[1]*n+this.m5l_1[2]*i);var r=this.m5l_1;r[7]=r[7]+(this.m5l_1[4]*t+this.m5l_1[5]*n+this.m5l_1[6]*i);var s=this.m5l_1;s[11]=s[11]+(this.m5l_1[8]*t+this.m5l_1[9]*n+this.m5l_1[10]*i);var u=this.m5l_1;return u[15]=u[15]+(this.m5l_1[12]*t+this.m5l_1[13]*n+this.m5l_1[14]*i),this},Pr(ja).l5r=function(t,n,i,e){var r=Ph(e),s=Math.cos(r),u=Ph(e),o=Math.sin(u);return this.o6c(s+(1-s)*t*t,(1-s)*t*n-o*i,(1-s)*t*i+o*n,0,(1-s)*t*n+o*i,s+(1-s)*n*n,(1-s)*n*i-o*t,0,(1-s)*t*i-o*n,(1-s)*n*i+o*t,s+(1-s)*i*i,0,0,0,0,1),this},Pr(ja).s65=function(t,n,i){var e=this.m5l_1;e[0]=e[0]*t;var r=this.m5l_1;r[4]=r[4]*t;var s=this.m5l_1;s[8]=s[8]*t;var u=this.m5l_1;u[12]=u[12]*t;var o=this.m5l_1;o[1]=o[1]*n;var _=this.m5l_1;_[5]=_[5]*n;var h=this.m5l_1;h[9]=h[9]*n;var a=this.m5l_1;a[13]=a[13]*n;var l=this.m5l_1;l[2]=l[2]*i;var c=this.m5l_1;c[6]=c[6]*i;var f=this.m5l_1;f[10]=f[10]*i;var v=this.m5l_1;return v[14]=v[14]*i,this},Pr(ja).i5m=function(t){var n=this.m5l_1,i=t.m5l_1,e=n[0],r=n[1],s=n[2],u=n[3];return n[0]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[1]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[2]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[3]=e*i[3]+r*i[7]+s*i[11]+u*i[15],e=n[4],r=n[5],s=n[6],u=n[7],n[4]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[5]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[6]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[7]=e*i[3]+r*i[7]+s*i[11]+u*i[15],e=n[8],r=n[9],s=n[10],u=n[11],n[8]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[9]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[10]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[11]=e*i[3]+r*i[7]+s*i[11]+u*i[15],e=n[12],r=n[13],s=n[14],u=n[15],n[12]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[13]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[14]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[15]=e*i[3]+r*i[7]+s*i[11]+u*i[15],this},Pr(ja).o6c=function(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d){var w=this.m5l_1[0],p=this.m5l_1[1],m=this.m5l_1[2],g=this.m5l_1[3];return this.m5l_1[0]=w*t+p*r+m*_+g*c,this.m5l_1[1]=w*n+p*s+m*h+g*f,this.m5l_1[2]=w*i+p*u+m*a+g*v,this.m5l_1[3]=w*e+p*o+m*l+g*d,w=this.m5l_1[4],p=this.m5l_1[5],m=this.m5l_1[6],g=this.m5l_1[7],this.m5l_1[4]=w*t+p*r+m*_+g*c,this.m5l_1[5]=w*n+p*s+m*h+g*f,this.m5l_1[6]=w*i+p*u+m*a+g*v,this.m5l_1[7]=w*e+p*o+m*l+g*d,w=this.m5l_1[8],p=this.m5l_1[9],m=this.m5l_1[10],g=this.m5l_1[11],this.m5l_1[8]=w*t+p*r+m*_+g*c,this.m5l_1[9]=w*n+p*s+m*h+g*f,this.m5l_1[10]=w*i+p*u+m*a+g*v,this.m5l_1[11]=w*e+p*o+m*l+g*d,w=this.m5l_1[12],p=this.m5l_1[13],m=this.m5l_1[14],g=this.m5l_1[15],this.m5l_1[12]=w*t+p*r+m*_+g*c,this.m5l_1[13]=w*n+p*s+m*h+g*f,this.m5l_1[14]=w*i+p*u+m*a+g*v,this.m5l_1[15]=w*e+p*o+m*l+g*d,this},Pr(ja).c6b=function(t){return this.m5l_1[0]=t.m5l_1[0],this.m5l_1[1]=t.m5l_1[4],this.m5l_1[2]=t.m5l_1[8],this.m5l_1[3]=t.m5l_1[12],this.m5l_1[4]=t.m5l_1[1],this.m5l_1[5]=t.m5l_1[5],this.m5l_1[6]=t.m5l_1[9],this.m5l_1[7]=t.m5l_1[13],this.m5l_1[8]=t.m5l_1[2],this.m5l_1[9]=t.m5l_1[6],this.m5l_1[10]=t.m5l_1[10],this.m5l_1[11]=t.m5l_1[14],this.m5l_1[12]=t.m5l_1[3],this.m5l_1[13]=t.m5l_1[7],this.m5l_1[14]=t.m5l_1[11],this.m5l_1[15]=t.m5l_1[15],this},Pr(ja).c6c=function(t,n){var i=n;if(!((t.length-i|0)>=16)){var e=kr.y5i(kr.t5i_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.m5l_1[0];var s=i;i=s+1|0,t[s]=this.m5l_1[4];var u=i;i=u+1|0,t[u]=this.m5l_1[8];var o=i;i=o+1|0,t[o]=this.m5l_1[12];var _=i;i=_+1|0,t[_]=this.m5l_1[1];var h=i;i=h+1|0,t[h]=this.m5l_1[5];var a=i;i=a+1|0,t[a]=this.m5l_1[9];var l=i;i=l+1|0,t[l]=this.m5l_1[13];var c=i;i=c+1|0,t[c]=this.m5l_1[2];var f=i;i=f+1|0,t[f]=this.m5l_1[6];var v=i;i=v+1|0,t[v]=this.m5l_1[10];var d=i;i=d+1|0,t[d]=this.m5l_1[14];var w=i;i=w+1|0,t[w]=this.m5l_1[3];var p=i;i=p+1|0,t[p]=this.m5l_1[7];var m=i;return i=m+1|0,t[m]=this.m5l_1[11],t[i]=this.m5l_1[15],t},Pr(ja).e5o=function(){if(!Ea().i6c(this.m5l_1,this.m5l_1)){var t=kr.y5i(kr.t5i_1,"Matrix4","invertMatrix","singularMatrix");throw is(Gr(t))}return this},Pr(ja).m5r=function(){var t=this.m5l_1[1];this.m5l_1[1]=this.m5l_1[4],this.m5l_1[4]=t,t=this.m5l_1[2],this.m5l_1[2]=this.m5l_1[8],this.m5l_1[8]=t,t=this.m5l_1[6],this.m5l_1[6]=this.m5l_1[9],this.m5l_1[9]=t;var n=this.m5l_1[3],i=this.m5l_1[7],e=this.m5l_1[11];return this.m5l_1[3]=-this.m5l_1[0]*n-this.m5l_1[1]*i-this.m5l_1[2]*e,this.m5l_1[7]=-this.m5l_1[4]*n-this.m5l_1[5]*i-this.m5l_1[6]*e,this.m5l_1[11]=-this.m5l_1[8]*n-this.m5l_1[9]*i-this.m5l_1[10]*e,this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=0,this.m5l_1[15]=1,this},Pr(ja).f62=function(t){var n=this.m5l_1;return n[10]=n[10]*(1+t),this},Pr(ja).n5l=function(t){return t.s5l_1=-this.m5l_1[0]*this.m5l_1[3]-this.m5l_1[4]*this.m5l_1[7]-this.m5l_1[8]*this.m5l_1[11],t.t5l_1=-this.m5l_1[1]*this.m5l_1[3]-this.m5l_1[5]*this.m5l_1[7]-this.m5l_1[9]*this.m5l_1[11],t.w5l_1=-this.m5l_1[2]*this.m5l_1[3]-this.m5l_1[6]*this.m5l_1[7]-this.m5l_1[10]*this.m5l_1[11],t},Pr(ja).o5l=function(t){return t.s5l_1=-this.m5l_1[8],t.t5l_1=-this.m5l_1[9],t.w5l_1=-this.m5l_1[10],t},Pr(ja).j5m=function(t){var n=Ph(t),i=Math.cos(n),e=Ph(t),r=Math.sin(e),s=i*this.m5l_1[0]-r*this.m5l_1[4],u=r*this.m5l_1[5]-i*this.m5l_1[1],o=Fh(),_=Math.atan2(u,s);return o.u5n(_)},Pr(ja).k5m=function(){var t=this.m5l_1[10],n=this.m5l_1[2]*this.m5l_1[2]+this.m5l_1[6]*this.m5l_1[6],i=Math.sqrt(n),e=Fh(),r=Math.atan2(i,t);return e.u5n(r)},Pr(ja).g6a=function(t,n,i){if(this.m5l_1[1]!==this.m5l_1[4]||this.m5l_1[2]!==this.m5l_1[8]||this.m5l_1[6]!==this.m5l_1[9])return!1;for(var e=this.m5l_1[0],r=this.m5l_1[1],s=this.m5l_1[2],u=this.m5l_1[5],o=this.m5l_1[6],_=this.m5l_1[10],h=0,a=hs(Array(3),null);h<3;)a[h]=new Float64Array(3),h=h+1|0;var l=a;l[2][2]=1,l[1][1]=l[2][2],l[0][0]=l[1][1];var c=0;if(c<32)t:do{var f,v;c=c+1|0;var d=r;if(Math.abs(d)<1e-10){var w=s;v=Math.abs(w)<1e-10}else v=!1;if(v){var p=o;f=Math.abs(p)<1e-10}else f=!1;if(f)break t;if(0!==r){var m=.5*(u-e)/r,g=m*m,y=g+1,b=y!==g?(m<0?-1:1)*(Math.sqrt(y)-Math.abs(m)):.5/m,$=b*b+1,k=1/Math.sqrt($),x=k*b;e-=b*r,u+=b*r,r=0;var q=k*s-x*o;o=x*s+k*o,s=q;var S=0;if(S<=2)do{var C=S;S=S+1|0,q=k*l[C][0]-x*l[C][1],l[C][1]=x*l[C][0]+k*l[C][1],l[C][0]=q}while(S<=2)}if(0!==s){var E=.5*(_-e)/s,O=E*E,j=O+1,T=j!==O?(E<0?-1:1)*(Math.sqrt(j)-Math.abs(E)):.5/E,A=T*T+1,z=1/Math.sqrt(A),I=z*T;e-=T*s,_+=T*s,s=0;var D=z*r-I*o;o=I*r+z*o,r=D;var M=0;if(M<=2)do{var N=M;M=M+1|0,D=z*l[N][0]-I*l[N][2],l[N][2]=I*l[N][0]+z*l[N][2],l[N][0]=D}while(M<=2)}if(0!==o){var R=.5*(_-u)/o,P=R*R,L=P+1,F=L!==P?(R<0?-1:1)*(Math.sqrt(L)-Math.abs(R)):.5/R,U=F*F+1,H=1/Math.sqrt(U),V=H*F;u-=F*o,_+=F*o,o=0;var B=H*r-V*s;s=V*r+H*s,r=B;var W=0;if(W<=2)do{var Y=W;W=W+1|0,B=H*l[Y][1]-V*l[Y][2],l[Y][2]=V*l[Y][1]+H*l[Y][2],l[Y][1]=B}while(W<=2)}}while(c<32);var G=0,K=1,X=2;if(e1||(u=.5*(u/=_)+.5,o=.5*o+.5,s=(s=.5*(s/=_)+.5)*e.t5j_1+e.r5j_1,u=u*e.u5j_1+e.s5j_1,r.s5l_1=s,r.t5l_1=u,r.w5l_1=o,0))},Pr(ja).f5o=function(t,n,i,e,r){var s=(t-i.r5j_1)/i.t5j_1,u=(n-i.s5j_1)/i.u5j_1;s=2*s-1,u=2*u-1;var o=this.m5l_1[0]*s+this.m5l_1[1]*u+this.m5l_1[3],_=this.m5l_1[4]*s+this.m5l_1[5]*u+this.m5l_1[7],h=this.m5l_1[8]*s+this.m5l_1[9]*u+this.m5l_1[11],a=this.m5l_1[12]*s+this.m5l_1[13]*u+this.m5l_1[15],l=o-this.m5l_1[2],c=_-this.m5l_1[6],f=h-this.m5l_1[10],v=a-this.m5l_1[14],d=o+this.m5l_1[2],w=_+this.m5l_1[6],p=h+this.m5l_1[10],m=a+this.m5l_1[14];return 0!==v&&0!==m&&(e.s5l_1=l/v,e.t5l_1=c/v,e.w5l_1=f/v,r.s5l_1=d/m,r.t5l_1=w/m,r.w5l_1=p/m,!0)},Pr(ja).equals=function(t){return this===t||t instanceof ja&&Ns(this.m5l_1,t.m5l_1)},Pr(ja).hashCode=function(){return Rs(this.m5l_1)},Pr(ja).toString=function(){return"Matrix4(["+this.m5l_1[0]+", "+this.m5l_1[1]+", "+this.m5l_1[2]+", "+this.m5l_1[3]+"], ["+this.m5l_1[4]+", "+this.m5l_1[5]+", "+this.m5l_1[6]+", "+this.m5l_1[7]+"], ["+this.m5l_1[8]+", "+this.m5l_1[9]+", "+this.m5l_1[10]+", "+this.m5l_1[11]+"], ["+this.m5l_1[12]+", "+this.m5l_1[13]+", "+this.m5l_1[14]+", "+this.m5l_1[15]+"])"},Pr(Aa).t6c=function(){return new za(Da(),.5,Da(),.5)},Pr(Aa).u6c=function(){return new za(Da(),0,Da(),0)},Pr(Aa).v6c=function(){return new za(Da(),.5,Da(),0)},Pr(Aa).w6c=function(){return new za(Da(),1,Da(),0)},Pr(za).x6c=function(t,n,i,e){return this.p6c_1=t,this.q6c_1=n,this.r6c_1=i,this.s6c_1=e,this},Pr(za).y6c=function(t){return this.x6c(t.p6c_1,t.q6c_1,t.r6c_1,t.s6c_1)},Pr(za).z6c=function(t,n,i){var e,r;switch(this.p6c_1.y9_1){case 0:e=t*this.q6c_1;break;case 1:e=t-this.q6c_1;break;default:e=this.q6c_1}switch(this.r6c_1.y9_1){case 0:r=n*this.s6c_1;break;case 1:r=n-this.s6c_1;break;default:r=this.s6c_1}return i.a6d(e,r)},Pr(za).toString=function(){return"Offset(xUnits="+this.p6c_1+", x="+this.q6c_1+", yUnits="+this.r6c_1+", y="+this.s6c_1+")"},Pr(za).hashCode=function(){var t=this.p6c_1.hashCode();return t=Ar(t,31)+Ss(this.q6c_1)|0,t=Ar(t,31)+this.r6c_1.hashCode()|0,Ar(t,31)+Ss(this.s6c_1)|0},Pr(za).equals=function(t){if(this===t)return!0;if(!(t instanceof za))return!1;var n=t instanceof za?t:Nr();return!!(this.p6c_1.equals(n.p6c_1)&&qs(this.q6c_1,n.q6c_1)&&this.r6c_1.equals(n.r6c_1)&&qs(this.s6c_1,n.s6c_1))},Pr(Ra).s6a=function(t){return this.u5m(t)},Pr(Ra).b6b=function(t,n,i,e){return this.y69_1.s5l_1=t,this.y69_1.t5l_1=n,this.y69_1.w5l_1=i,this.z69_1=e,this.c6d(),this},Pr(Ra).d6b=function(t){var n=t.m5l_1,i=n[0]*this.y69_1.s5l_1+n[1]*this.y69_1.t5l_1+n[2]*this.y69_1.w5l_1+n[3]*this.z69_1,e=n[4]*this.y69_1.s5l_1+n[5]*this.y69_1.t5l_1+n[6]*this.y69_1.w5l_1+n[7]*this.z69_1,r=n[8]*this.y69_1.s5l_1+n[9]*this.y69_1.t5l_1+n[10]*this.y69_1.w5l_1+n[11]*this.z69_1,s=n[12]*this.y69_1.s5l_1+n[13]*this.y69_1.t5l_1+n[14]*this.y69_1.w5l_1+n[15]*this.z69_1;return this.y69_1.s5l_1=i,this.y69_1.t5l_1=e,this.y69_1.w5l_1=r,this.z69_1=s,this.c6d(),this},Pr(Ra).u5m=function(t){return this.y69_1.u5m(t)+this.z69_1},Pr(Ra).h6b=function(t,n){var i=this.s6a(t),e=this.s6a(n);return i<0&&e<0?-1:i>0&&e>0?1:0},Pr(Ra).i6b=function(t,n){if(t.equals(n))return null;var i=da().l6b(t,n),e=this.y69_1.u5m(i.l5l_1);if(0===e)return 0===this.u5m(i.k5l_1)?[t,n]:null;var r=-this.u5m(i.k5l_1)/e;if(r<0||r>1)return null;var s=i.r5l(r,tl());return e>0?[s,n]:[t,s]},Pr(Ra).c6d=function(){var t=this.y69_1.d6d();if(0===t)return Xr;if(t>=.9999999999&&t<=1.0000000001)return Xr;var n=this.y69_1;n.s5l_1=n.s5l_1/t;var i=this.y69_1;i.t5l_1=i.t5l_1/t;var e=this.y69_1;e.w5l_1=e.w5l_1/t,this.z69_1=this.z69_1/t},Pr(Ra).equals=function(t){return this===t||t instanceof Ra&&!!this.y69_1.equals(t.y69_1)&&this.z69_1===t.z69_1},Pr(Ra).hashCode=function(){var t=this.y69_1.hashCode();return Ar(31,t)+Ss(this.z69_1)|0},Pr(Ra).toString=function(){return"Plane(normal="+this.y69_1+", distance="+this.z69_1+")"},Pr(Fa).e6d=function(t,n,i){return new Ua(Fh().p5r(t),Fh().p5r(n),i)},Pr(Ua).r5i=function(t,n,i){return this.o6b(t,n),this.q5i_1=i,this},Pr(Ua).f6d=function(t,n,i){return this.p6b(t,n),this.q5i_1=i,this},Pr(Ua).g5m=function(t){return this.r5i(t.m5i_1,t.n5i_1,t.q5i_1)},Pr(Ua).equals=function(t){return this===t||t instanceof Ua&&!!Pr(ya).equals.call(this,t)&&this.q5i_1===t.q5i_1},Pr(Ua).hashCode=function(){var t=Pr(ya).hashCode.call(this);return Ar(31,t)+Ss(this.q5i_1)|0},Pr(Ua).toString=function(){return"Position(latitude="+new ia(this.m5i_1)+", longitude="+new ia(this.n5i_1)+", altitude="+this.q5i_1+")"},Pr(Va).a=function(){return this.z5s_1>this.y5s_1?this.z5s_1-this.y5s_1|0:0},Pr(Va).g6d=function(t,n){return this.y5s_1=t,this.z5s_1=n,this},Pr(Va).h6d=function(t){return this.g6d(t.y5s_1,t.z5s_1)},Pr(Va).equals=function(t){return this===t||t instanceof Va&&this.y5s_1===t.y5s_1&&this.z5s_1===t.z5s_1},Pr(Va).hashCode=function(){var t=this.y5s_1;return Ar(31,t)+this.z5s_1|0},Pr(Va).toString=function(){return"Range(lower="+this.y5s_1+", upper="+this.z5s_1+")"},Pr(Ya).i6d=function(t,n,i,e){var r=i>0?Fh().q69(t+i):t,s=e>0?Fh().r69(n+e):n;return new Ga(Fh().p5r(t),Fh().p5r(r),Fh().p5r(n),Fh().p5r(s))},Pr(Ga).t19=function(){return!!(qs(this.m65_1,Fh().v5m_1)&&qs(this.n65_1,Fh().v5m_1)&&qs(this.o65_1,Fh().v5m_1))&&qs(this.p65_1,Fh().v5m_1)},Pr(Ga).j6d=function(){return!!(qs(this.m65_1,Fh().x5m_1)&&qs(this.n65_1,Fh().w5m_1)&&qs(this.o65_1,Fh().z5m_1))&&qs(this.p65_1,Fh().y5m_1)},Pr(Ga).r65=function(){return Bh(this.n65_1,this.m65_1)},Pr(Ga).q65=function(){return Bh(this.p65_1,this.o65_1)},Pr(Ga).j6a=function(){return Fh().s69(this.m65_1,this.n65_1)},Pr(Ga).k6a=function(){return Fh().s69(this.o65_1,this.p65_1)},Pr(Ga).k6d=function(t){return t.m5i_1=this.j6a(),t.n5i_1=this.k6a(),t},Pr(Ga).f66=function(t){return this.m65_1=t.m65_1,this.n65_1=t.n65_1,this.o65_1=t.o65_1,this.p65_1=t.p65_1,this},Pr(Ga).v5j=function(){return this.m65_1=Fh().v5m_1,this.n65_1=Fh().v5m_1,this.o65_1=Fh().v5m_1,this.p65_1=Fh().v5m_1,this},Pr(Ga).u67=function(){return this.m65_1=Fh().x5m_1,this.n65_1=Fh().w5m_1,this.o65_1=Fh().z5m_1,this.p65_1=Fh().y5m_1,this},Pr(Ga).a67=function(t){return this.m65_1t.m65_1&&this.o65_1t.o65_1},Pr(Ga).t65=function(t){return this.m65_1<=t.n65_1&&this.n65_1>=t.m65_1&&this.o65_1<=t.p65_1&&this.p65_1>=t.o65_1},Pr(Ga).l6d=function(t){return this.m65_1t.m65_1&&this.o65_1t.o65_1&&(this.m65_1t.n65_1&&(this.n65_1=t.n65_1),this.o65_1t.p65_1&&(this.p65_1=t.p65_1),!0)},Pr(Ga).m6d=function(t,n){var i,e=this.m65_1,r=this.n65_1;if(e<=t&&t<=r){var s=this.o65_1,u=this.p65_1;i=s<=n&&n<=u}else i=!1;return i},Pr(Ga).n6d=function(t){return this.m6d(t.m5i_1,t.n5i_1)},Pr(Ga).o6d=function(t,n){return this.t19()?(this.m65_1=t,this.n65_1=t,this.o65_1=n,this.p65_1=n):(this.m65_1=Fh().u69(this.m65_1,t),this.n65_1=Fh().t69(this.n65_1,t),this.o65_1=Fh().u69(this.o65_1,n),this.p65_1=Fh().t69(this.p65_1,n)),this},Pr(Ga).p6d=function(t){return this.o6d(t.m5i_1,t.n5i_1)},Pr(Ga).q6d=function(t,n,i){if(!(t.length>=i)){var e=kr.y5i(kr.t5i_1,"Sector","union","missingArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.y5i(kr.t5i_1,"Sector","union","invalidCount");throw is(Gr(r))}if(!(i>=2)){var s=kr.y5i(kr.t5i_1,"Sector","union","invalidStride");throw is(Gr(s))}var u=this.t19(),o=u?17976931348623157e292:this.m65_1,_=u?-17976931348623157e292:this.n65_1,h=u?17976931348623157e292:this.o65_1,a=u?-17976931348623157e292:this.p65_1,l=Os(Es(0,n),i),c=l.ha_1,f=l.ia_1,v=l.ja_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0;var w=t[d],p=t[d+1|0];_p&&(o=p),aw&&(h=w)}while(d!==f);return o<17976931348623157e292&&(this.m65_1=Fh().p5r(o)),_>-17976931348623157e292&&(this.n65_1=Fh().p5r(_)),h<17976931348623157e292&&(this.o65_1=Fh().p5r(h)),a>-17976931348623157e292&&(this.p65_1=Fh().p5r(a)),this},Pr(Ga).r6d=function(t){return t.t19()||(this.t19()?(this.m65_1=t.m65_1,this.n65_1=t.n65_1,this.o65_1=t.o65_1,this.p65_1=t.p65_1):(this.m65_1>t.m65_1&&(this.m65_1=t.m65_1),this.n65_1t.o65_1&&(this.o65_1=t.o65_1),this.p65_10)){var u=kr.h6e("TileMatrixSet","fromTilePyramid","invalidResolution");throw is(Gr(u))}var o=0,_=n,h=i,a=as();do{var l=o;o=l+1|0;var c=new Ka(t,l,_,h,e,r);a.s(c),_=Ar(_,2),h=Ar(h,2)}while(c.d6e()>s);return new Ja(t,a)},Pr(Ja).k6e=function(t){var n=-1,i=1/0,e=0,r=this.j6e_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var u=Bh(this.j6e_1.h1(s).d6e(),t),o=u*u;i>o&&(i=o,n=s)}while(e<=r);return n},Pr(Qa).l6e=function(){return this.s5l_1*this.s5l_1+this.t5l_1*this.t5l_1},Pr(Qa).d6d=function(){var t=this.l6e();return Math.sqrt(t)},Pr(Qa).a6d=function(t,n){return this.s5l_1=t,this.t5l_1=n,this},Pr(Qa).m6e=function(t){var n=this.s5l_1;return this.s5l_1=t.s5l_1,t.s5l_1=n,n=this.t5l_1,this.t5l_1=t.t5l_1,t.t5l_1=n,this},Pr(Qa).n6e=function(t){this.s5l_1=this.s5l_1+t.s5l_1,this.t5l_1=this.t5l_1+t.t5l_1},Pr(Qa).o6e=function(t){this.s5l_1=this.s5l_1-t.s5l_1,this.t5l_1=this.t5l_1-t.t5l_1},Pr(Qa).p6e=function(t){this.s5l_1=this.s5l_1*t,this.t5l_1=this.t5l_1*t},Pr(Qa).q6e=function(t){return this.s5l_1*t.s5l_1+this.t5l_1*t.t5l_1},Pr(Qa).equals=function(t){return this===t||t instanceof Qa&&this.s5l_1===t.s5l_1&&this.t5l_1===t.t5l_1},Pr(Qa).hashCode=function(){var t=Ss(this.s5l_1);return Ar(31,t)+Ss(this.t5l_1)|0},Pr(Qa).toString=function(){return"Vec2(x="+this.s5l_1+", y="+this.t5l_1+")"},Pr(nl).l6e=function(){return Pr(Qa).l6e.call(this)+this.w5l_1*this.w5l_1},Pr(nl).r6e=function(t,n){var i=n;if(!((t.length-i|0)>=3)){var e=kr.y5i(kr.t5i_1,"Vec3","toArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.s5l_1;var s=i;return i=s+1|0,t[s]=this.t5l_1,t[i]=this.w5l_1,t},Pr(nl).z5q=function(t){var n=this.m6a(t);return Math.sqrt(n)},Pr(nl).m6a=function(t){var n=this.s5l_1-t.s5l_1,i=this.t5l_1-t.t5l_1,e=this.w5l_1-t.w5l_1;return n*n+i*i+e*e},Pr(nl).h5u=function(t,n,i){return this.a6d(t,n),this.w5l_1=i,this},Pr(nl).y5q=function(t){return this.h5u(t.s5l_1,t.t5l_1,t.w5l_1)},Pr(nl).x69=function(t){Pr(Qa).m6e.call(this,t);var n=this.w5l_1;return this.w5l_1=t.w5l_1,t.w5l_1=n,this},Pr(nl).s6e=function(t){return this.t6e(t),this},Pr(nl).t6e=function(t){Pr(Qa).n6e.call(this,t),this.w5l_1=this.w5l_1+t.w5l_1},Pr(nl).s5m=function(t){return this.u6e(t),this},Pr(nl).u6e=function(t){Pr(Qa).o6e.call(this,t),this.w5l_1=this.w5l_1-t.w5l_1},Pr(nl).h6a=function(t){return this.p6e(t),this},Pr(nl).p6e=function(t){Pr(Qa).p6e.call(this,t),this.w5l_1=this.w5l_1*t},Pr(nl).i5m=function(t){var n=t.m5l_1,i=n[0]*this.s5l_1+n[1]*this.t5l_1+n[2]*this.w5l_1+n[3],e=n[4]*this.s5l_1+n[5]*this.t5l_1+n[6]*this.w5l_1+n[7],r=n[8]*this.s5l_1+n[9]*this.t5l_1+n[10]*this.w5l_1+n[11],s=n[12]*this.s5l_1+n[13]*this.t5l_1+n[14]*this.w5l_1+n[15];return this.s5l_1=i/s,this.t5l_1=e/s,this.w5l_1=r/s,this},Pr(nl).t5m=function(){var t=this.d6d();return 0!==t&&(this.s5l_1=this.s5l_1/t,this.t5l_1=this.t5l_1/t,this.w5l_1=this.w5l_1/t),this},Pr(nl).u5m=function(t){return Pr(Qa).q6e.call(this,t)+this.w5l_1*t.w5l_1},Pr(nl).e6b=function(t){var n=this.t5l_1*t.w5l_1-this.w5l_1*t.t5l_1,i=this.w5l_1*t.s5l_1-this.s5l_1*t.w5l_1,e=this.s5l_1*t.t5l_1-this.t5l_1*t.s5l_1;return this.s5l_1=n,this.t5l_1=i,this.w5l_1=e,this},Pr(nl).equals=function(t){return this===t||t instanceof nl&&!!Pr(Qa).equals.call(this,t)&&this.w5l_1===t.w5l_1},Pr(nl).hashCode=function(){var t=Pr(Qa).hashCode.call(this);return Ar(31,t)+Ss(this.w5l_1)|0},Pr(nl).toString=function(){return"Vec3(x="+this.s5l_1+", y="+this.t5l_1+", z="+this.w5l_1+")"},Pr(el).t19=function(){return this.t5j_1<=0||this.u5j_1<=0},Pr(el).v5j=function(){return this.t5j_1=0,this.u5j_1=0,this},Pr(el).h5l=function(t,n,i,e){return this.r5j_1=t,this.s5j_1=n,this.t5j_1=i,this.u5j_1=e,this},Pr(el).k5q=function(t){return this.h5l(t.r5j_1,t.s5j_1,t.t5j_1,t.u5j_1)},Pr(el).k6b=function(t){return this.t5j_1>0&&this.u5j_1>0&&t.t5j_1>0&&t.u5j_1>0&&this.r5j_1<(t.r5j_1+t.t5j_1|0)&&t.r5j_1<(this.r5j_1+this.t5j_1|0)&&this.s5j_1<(t.s5j_1+t.u5j_1|0)&&t.s5j_1<(this.s5j_1+this.u5j_1|0)},Pr(el).v6e=function(t){return this.t5j_1>0&&this.u5j_1>0&&t.t5j_1>0&&t.u5j_1>0&&this.r5j_1<(t.r5j_1+t.t5j_1|0)&&t.r5j_1<(this.r5j_1+this.t5j_1|0)&&this.s5j_1<(t.s5j_1+t.u5j_1|0)&&t.s5j_1<(this.s5j_1+this.u5j_1|0)&&(this.r5j_1(t.r5j_1+t.t5j_1|0)&&(this.t5j_1=(t.r5j_1+t.t5j_1|0)-this.r5j_1|0),(this.s5j_1+this.u5j_1|0)>(t.s5j_1+t.u5j_1|0)&&(this.u5j_1=(t.s5j_1+t.u5j_1|0)-this.s5j_1|0),!0)},Pr(el).w6e=function(t,n){return xs(t)>=this.r5j_1&&xs(t)<(this.r5j_1+this.t5j_1|0)&&xs(n)>=this.s5j_1&&xs(n)<(this.s5j_1+this.u5j_1|0)},Pr(el).equals=function(t){return this===t||t instanceof el&&this.r5j_1===t.r5j_1&&this.s5j_1===t.s5j_1&&this.t5j_1===t.t5j_1&&this.u5j_1===t.u5j_1},Pr(el).hashCode=function(){var t=this.r5j_1;return t=Ar(31,t)+this.s5j_1|0,t=Ar(31,t)+this.t5j_1|0,Ar(31,t)+this.u5j_1|0},Pr(el).toString=function(){return"Viewport(x="+this.r5j_1+", y="+this.s5j_1+", width="+this.t5j_1+", height="+this.u5j_1+")"},Pr(rl).x6e=function(t,n){return this.y6e(t,n,0)},Pr(rl).y6e=function(t,n,i){var e=new ol;if(0!==e.e6f(Ph(t),Ph(n),i))throw is(Gr("Gauss-Kruger Conversion Error"));return new sl(t,n,e.b6f_1,e.a6f_1)},Pr(rl).f6f=function(t,n){var i=new ol;if(0!==i.g6f(n,t))throw is(Gr("Gauss-Kruger Conversion Error"));var e=Fh(),r=i.c6f_1,s=e.u5n(r),u=Fh(),o=i.d6f_1;return new sl(s,u.u5n(o),t,n)},Pr(sl).toString=function(){var t=Yr(this.j6f_1),n=Yr(this.k6f_1),i=1e5;return N$("%02d-%05d, %02d-%05d",[t/i|0,Fs(t%i|0),n/i|0,Fs(n%i|0)])},Pr(ol).e6f=function(t,n,i){var e=n<0?n+2*_s():n,r=0!==i?i:1+(ks(180*e/_s())/6|0)|0,s=this.z6e_1.w6a_1,u=this.z6e_1.y6a(),o=(s*s-u*u)/(s*s),_=(s-u)/(s+u),h=_*_,a=_*_*_,l=1e6*r+5e5,c=e-(Ar(r,6)-3|0)*_s()/180,f=t-0,v=t+0,d=Math.sin(t),w=d*d,p=Math.cos(t),m=p*p*p,g=p*p*p*p*p,y=Math.tan(t),b=y*y,$=b*b,k=1-o*w,x=1*s*Math.pow(k,-.5),q=1-o*w,S=1*s*(1-o)*Math.pow(q,-1.5),C=x/S-1,E=2*f,O=2*v,j=3*f,T=3*v,A=1*u*((1+_+1.25*h+1.25*a)*f-(3*_+3*h+2.625*a)*Math.sin(f)*Math.cos(v)+(1.875*h+1.875*a)*Math.sin(E)*Math.cos(O)-1.4583333333333333*a*Math.sin(j)*Math.cos(T))+0,z=x/2*d*p,I=x/24*d*m*(5-b+9*C),D=x/720*d*g*(61-58*b+$),M=x*p,N=x/6*m*(x/S-b),R=x/120*g*(5-18*b+$+14*C-58*b*C);return this.a6f_1=l+M*c+N*c*c*c+R*c*c*c*c*c,this.b6f_1=A+z*c*c+I*c*c*c*c+D*c*c*c*c*c*c,0},Pr(ol).g6f=function(t,n){var i=ks(t/1e6),e=(Ar(6,i<=30?i:i-60|0)-3|0)*_s()/180,r=t-(1e6*i+5e5),s=n/6367558.497,u=Math.cos(s),o=u*u,_=((2382*o+293609)*o+50221747)*Math.sin(s)*Math.cos(s)*1e-10+s,h=Math.cos(_),a=h*h,l=Math.sin(_),c=l*l,f=(.003369263*a+.5)*l*h,v=((.0056154-151e-7*a)*a+.1616128)*a+.25,d=((.00389*a+.0431)*a-.00168)*a+.125,w=((.013*a+.008)*a-.031)*a+.078,p=(.16666666666666666-.00112309*a)*a-.3333333333333333,m=((.008783-112e-6*a)*a-.16666666666666666)*a+.2,g=(.16666666666666666-.0361*a)*a-.1429,y=((.064-.004*a)*a-.16666666666666666)*a+.1111111111111111,b=r/((((.605*c+107.155)*c+21346.142)*c+this.z6e_1.w6a_1)*h);return this.c6f_1=_+(((w*b*b-d)*b*b+v)*b*b-1)*b*b*f,this.d6f_1=e+((((y*b*b+g)*b*b+m)*b*b+p)*b*b+1)*b,0},Pr(al).toString=function(){return"HelmertParameters(dX="+this.q6f_1+", dY="+this.r6f_1+", dZ="+this.s6f_1+", omegaX="+this.t6f_1+", omegaY="+this.u6f_1+", omegaZ="+this.v6f_1+", m="+this.w6f_1+", fromEllipsoid="+this.x6f_1+", toEllipsoid="+this.y6f_1+")"},Pr(al).hashCode=function(){var t=Ss(this.q6f_1);return t=Ar(t,31)+Ss(this.r6f_1)|0,t=Ar(t,31)+Ss(this.s6f_1)|0,t=Ar(t,31)+Ss(this.t6f_1)|0,t=Ar(t,31)+Ss(this.u6f_1)|0,t=Ar(t,31)+Ss(this.v6f_1)|0,t=Ar(t,31)+Ss(this.w6f_1)|0,t=Ar(t,31)+this.x6f_1.hashCode()|0,Ar(t,31)+this.y6f_1.hashCode()|0},Pr(al).equals=function(t){if(this===t)return!0;if(!(t instanceof al))return!1;var n=t instanceof al?t:Nr();return!!(qs(this.q6f_1,n.q6f_1)&&qs(this.r6f_1,n.r6f_1)&&qs(this.s6f_1,n.s6f_1)&&qs(this.t6f_1,n.t6f_1)&&qs(this.u6f_1,n.u6f_1)&&qs(this.v6f_1,n.v6f_1)&&qs(this.w6f_1,n.w6f_1)&&this.x6f_1.equals(n.x6f_1)&&this.y6f_1.equals(n.y6f_1))},Pr(ll).z6f=function(t,n,i){return this.a6g(t.m5i_1,t.n5i_1,t.q5i_1,n,i)},Pr(ll).a6g=function(t,n,i,e,r){var s=new hc,u=new Zl(e.x6f_1,s),o=new Zl(e.y6f_1,s),_=u.f5m(t,n,i,tl()),h=this.b6g(_,e);return o.d5m(h.s5l_1,h.t5l_1,h.w5l_1,r)},Pr(ll).c6g=function(t,n,i){return this.d6g(t.s5l_1,t.t5l_1,t.w5l_1,n,i)},Pr(ll).b6g=function(t,n,i,e){return i=i===Wr?tl():i,e===Wr?this.c6g(t,n,i):e.c6g.call(this,t,n,i)},Pr(ll).d6g=function(t,n,i,e,r){return r.h5u(t+-e.v6f_1*i+e.w6f_1*t+e.t6f_1*n+e.r6f_1,n+e.u6f_1*i+-e.t6f_1*t+e.w6f_1*n+e.s6f_1,i+e.w6f_1*i+e.v6f_1*t+-e.u6f_1*n+e.q6f_1)},Pr(wl).x6e=function(t,n){return this.y6e(t,n,5)},Pr(wl).y6e=function(t,n,i){var e=new kl,r=e.r6g(Ph(t),Ph(n),i);if(gl(),0!==r)throw is(Gr("MGRS Conversion Error"));return new pl(t,n,e.g6g_1)},Pr(pl).toString=function(){return this.u6g_1},Pr(kl).r6g=function(t,n,i){this.g6g_1="";var e=0;if((t<-1.5707963267948966||t>1.5707963267948966)&&(e=1),(n<-_s()||n>2*_s())&&(e=2),(i<0||i>5)&&(e=8),0===e){var r;if(t<-1.3962634015954636||t>1.4660765716752369){var s;try{var u=et,o=Fh().u5n(t),_=Fh().u5n(n),h=u.x6e(o,_);s=e|function(t,n,i,e,r){var s,u,o,_,h,a=i,l=e,c=new Int32Array(3),f=0;if(vl().equals(n)||dl().equals(n)||(f|=512),(a<0||a>4e6)&&(f|=64),(l<0||l>4e6)&&(f|=128),(r<0||r>5)&&(f|=8),0===f){var v=5-r|0,d=Math.pow(10,v);if(a=bl(0,a/d)*d,l=bl(0,l/d)*d,vl().equals(n)){c[0]=a>=2e6?25:24;var w=c[0]-22|0;h=gl().w6i_1[w][1],s=gl().w6i_1[w][4],u=gl().w6i_1[w][5]}else c[0]=a>=2e6?1:0,h=gl().w6i_1[c[0]][1],s=gl().w6i_1[c[0]][4],u=gl().w6i_1[c[0]][5];_=l,_-=u,c[2]=ks(_/1e5),c[2]>7&&(c[2]=c[2]+1|0),c[2]>13&&(c[2]=c[2]+1|0),o=a,o-=s,c[1]=h+ks(o/1e5)|0,a<2e6?(c[1]>11&&(c[1]=c[1]+3|0),c[1]>20&&(c[1]=c[1]+2|0)):(c[1]>2&&(c[1]=c[1]+2|0),c[1]>7&&(c[1]=c[1]+1|0),c[1]>11&&(c[1]=c[1]+3|0)),$l(t,0,c,a,l,r)}return f}(this,h.g6j_1,h.h6j_1,h.i6j_1,i)}catch(t){if(!(t instanceof bs))throw t;s=8192}r=s}else{var a;try{var l=rt,c=Fh().u5n(t),f=Fh().u5n(n),v=l.x6e(c,f);a=e|yl(this,v.a6j_1,t,v.c6j_1,v.d6j_1,i)}catch(t){if(!(t instanceof bs))throw t;a=4096}r=a}e=r}return e},Pr(ql).r6k=function(t,n,i,e,r,s){var u=e,o=1/n,_=0;if(t<=0&&(_|=64),(o<250||o>350)&&(_|=128),(i<-1.5707963267948966||i>1.5707963267948966)&&(_|=4),(u<-_s()||u>6.283185307179586)&&(_|=8),0===_){this.x6j_1=t,this.g6k_1=2*this.x6j_1,this.y6j_1=n,u>_s()&&(u-=6.283185307179586),i<0?(this.b6k_1=1,this.h6k_1=-i,this.i6k_1=-u):(this.b6k_1=0,this.h6k_1=i,this.i6k_1=u),this.j6k_1=r,this.k6k_1=s;var h=2*this.y6j_1-this.y6j_1*this.y6j_1;this.z6j_1=Math.sqrt(h),this.a6k_1=this.z6j_1/2;var a=this.h6k_1,l=Math.abs(a)-1.5707963267948966;if(Math.abs(l)>1e-10){var c=this.h6k_1,f=Math.sin(c),v=this.z6j_1*f,d=(1-v)/(1+v),w=this.a6k_1,p=Math.pow(d,w),m=this.h6k_1,g=Math.cos(m),y=1-v*v;this.c6k_1=g/Math.sqrt(y),this.f6k_1=this.x6j_1*this.c6k_1;var b=.7853981633974483-this.h6k_1/2;this.d6k_1=Math.tan(b)/p}else{var $=1+this.z6j_1,k=1-this.z6j_1,x=Math.pow($,$)*Math.pow(k,k);this.e6k_1=Math.sqrt(x)}}this.s6k(0,this.i6k_1),this.m6k_1=2*this.o6k_1;var q=this.m6k_1;return this.m6k_1=Math.abs(q)+.01,this.l6k_1=this.m6k_1,_},Pr(ql).s6k=function(t,n){var i=t,e=n,r=0;if((i<-1.5707963267948966||i>1.5707963267948966)&&(r|=1),i<0&&0===this.b6k_1&&(r|=1),i>0&&1===this.b6k_1&&(r|=1),(e<-_s()||e>6.283185307179586)&&(r|=2),0===r){var s=i,u=Math.abs(s)-1.5707963267948966;if(Math.abs(u)<1e-10)this.n6k_1=0,this.o6k_1=0;else{0!==this.b6k_1&&(e*=-1,i*=-1);var o=e-this.i6k_1;o>_s()&&(o-=6.283185307179586),o<-_s()&&(o+=6.283185307179586);var _=i,h=Math.sin(_),a=this.z6j_1*h,l=(1-a)/(1+a),c=this.a6k_1,f=Math.pow(l,c),v=.7853981633974483-i/2,d=Math.tan(v)/f,w=this.h6k_1,p=Math.abs(w)-1.5707963267948966,m=Math.abs(p)>1e-10?this.f6k_1*d/this.d6k_1:this.g6k_1*d/this.e6k_1;if(0!==this.b6k_1){var g=o;this.n6k_1=-(m*Math.sin(g)-this.j6k_1);var y=o;this.o6k_1=m*Math.cos(y)+this.k6k_1}else{var b=o;this.n6k_1=m*Math.sin(b)+this.j6k_1}var $=-m,k=o;this.o6k_1=$*Math.cos(k)+this.k6k_1}}return r},Pr(ql).t6k=function(t,n){var i=0,e=0,r=0,s=0,u=0,o=this.j6k_1-this.l6k_1,_=this.j6k_1+this.l6k_1,h=this.k6k_1-this.m6k_1;if((t>_||tthis.k6k_1+this.m6k_1||nMath.sqrt(l)&&(u|=256)}if(0===u){if(0===i&&0===e)this.p6k_1=1.5707963267948966,this.q6k_1=this.i6k_1;else{0!==this.b6k_1&&(i*=-1,e*=-1);var c=this.h6k_1,f=Math.abs(c)-1.5707963267948966,v=Math.abs(f)>1e-10?r*this.d6k_1/this.f6k_1:r*this.e6k_1/this.g6k_1,d=1.5707963267948966-2*Math.atan(v);t:for(;;){var w=d-s;if(!(Math.abs(w)>1e-10))break t;s=d;var p=d,m=Math.sin(p),g=this.z6j_1*m,y=(1-g)/(1+g),b=this.a6k_1,$=v*Math.pow(y,b);d=1.5707963267948966-2*Math.atan($)}this.p6k_1=d;var k=this.i6k_1,x=e,q=-i;this.q6k_1=k+Math.atan2(x,q),this.q6k_1>_s()?this.q6k_1=this.q6k_1-6.283185307179586:this.q6k_1<-_s()&&(this.q6k_1=this.q6k_1+6.283185307179586),this.p6k_1>1.5707963267948966?this.p6k_1=1.5707963267948966:this.p6k_1<-1.5707963267948966&&(this.p6k_1=-1.5707963267948966),this.q6k_1>_s()?this.q6k_1=_s():this.q6k_1<-_s()&&(this.q6k_1=-_s())}0!==this.b6k_1&&(this.p6k_1=-1*this.p6k_1,this.q6k_1=-1*this.q6k_1)}return u},Pr(Sl).u6k=function(t,n,i,e,r,s,u,o,_){var h=i,a=e,l=new Ol;null!=h&&null!=a||(h=l.w6k_1,a=l.x6k_1);var c=l.q6l(h,a,Ph(r),Ph(s),u,o,_);if(0===c&&(c=l.r6l(Ph(t),Ph(n))),0!==c&&512!==c)throw is(Gr("TM Conversion Error"));return new Cl(t,n,l.m6l_1,l.n6l_1)},Pr(Sl).s6l=function(t,n,i,e,r,s,u){var o=new Ol,_=o.w6k_1,h=o.x6k_1,a=o.q6l(_,h,Ph(i),Ph(e),r,s,u);if(0===a&&(a=o.t6l(t,n)),0!==a&&512!==a)throw is(Gr("TM Conversion Error"));var l=Fh(),c=o.o6l_1,f=l.u5n(c),v=Fh(),d=o.p6l_1;return new Cl(f,v.u5n(d),t,n)},Pr(Ol).q6l=function(t,n,i,e,r,s,u){var o=e,_=1/n,h=0;if(t<=0&&(h|=64),(_<250||_>350)&&(h|=128),(i<-1.570621793869697||i>1.570621793869697)&&(h|=16),(o<-_s()||o>2*_s())&&(h|=32),(u<.3||u>3)&&(h|=256),0===h){this.w6k_1=t,this.x6k_1=n,this.a6l_1=0,this.b6l_1=0,this.c6l_1=0,this.d6l_1=0,this.e6l_1=1,this.y6k_1=2*this.x6k_1-this.x6k_1*this.x6k_1,this.z6k_1=1/(1-this.y6k_1)-1;var a=this.w6k_1*(1-this.x6k_1),l=(this.w6k_1-a)/(this.w6k_1+a),c=l*l,f=c*l,v=f*l,d=v*l;this.f6l_1=this.w6k_1*(1-l+5*(c-f)/4+81*(v-d)/64),this.g6l_1=3*this.w6k_1*(l-c+7*(f-v)/8+55*d/64)/2,this.h6l_1=15*this.w6k_1*(c-f+3*(v-d)/4)/16,this.i6l_1=35*this.w6k_1*(f-v+11*d/16)/48,this.j6l_1=315*this.w6k_1*(v-d)/512,this.r6l(1.570621793869697,1.5707963267948966),this.k6l_1=this.m6l_1,this.l6l_1=this.n6l_1,this.r6l(0,1.5707963267948966),this.k6l_1=this.m6l_1,this.a6l_1=i,o>_s()&&(o-=2*_s()),this.b6l_1=o,this.c6l_1=s,this.d6l_1=r,this.e6l_1=u}return h},Pr(Ol).r6l=function(t,n){var i=n,e=0;if((t<-1.570621793869697||t>1.570621793869697)&&(e|=1),i>_s()&&(i-=2*_s()),ithis.b6l_1+1.5707963267948966){var r=i<0?i+2*_s():i,s=this.b6l_1<0?this.b6l_1+2*_s():this.b6l_1;(rs+1.5707963267948966)&&(e|=2)}if(0===e){var u=i-this.b6l_1,o=u;Math.abs(o)>9*_s()/180&&(e|=512),u>_s()&&(u-=2*_s()),u<-_s()&&(u+=2*_s());var _=u;Math.abs(_)<2e-10&&(u=0);var h=Math.sin(t),a=Math.cos(t),l=a*a,c=l*a,f=c*l,v=f*l,d=Math.tan(t),w=d*d,p=w*d*d,m=p*d*d,g=this.z6k_1*l,y=g*g,b=y*g,$=b*g,k=this.w6k_1,x=this.y6k_1,q=Math.sin(t),S=1-x*Math.pow(q,2),C=k/Math.sqrt(S),E=2*t,O=4*t,j=6*t,T=8*t,A=this.f6l_1*t-this.g6l_1*Math.sin(E)+this.h6l_1*Math.sin(O)-this.i6l_1*Math.sin(j)+this.j6l_1*Math.sin(T),z=this.f6l_1*this.a6l_1,I=this.g6l_1,D=2*this.a6l_1,M=z-I*Math.sin(D),N=this.h6l_1,R=4*this.a6l_1,P=M+N*Math.sin(R),L=this.i6l_1,F=6*this.a6l_1,U=P-L*Math.sin(F),H=this.j6l_1,V=8*this.a6l_1,B=(A-(U+H*Math.sin(V)))*this.e6l_1,W=C*h*a*this.e6l_1/2,Y=C*h*c*this.e6l_1*(5-w+9*g+4*y)/24,G=C*h*f*this.e6l_1*(61-58*w+p+270*g-330*w*g+445*y+324*b-680*w*y+88*$-600*w*b-192*w*$)/720,K=C*h*v*this.e6l_1*(1385-3111*w+543*p-m)/40320,X=u,J=u,Z=u,Q=this.c6l_1+B+Math.pow(X,2)*W+Math.pow(J,4)*Y+Math.pow(Z,6)*G,tt=u;this.n6l_1=Q+Math.pow(tt,8)*K;var nt=C*a*this.e6l_1,it=C*c*this.e6l_1*(1-w+g)/6,et=C*f*this.e6l_1*(5-18*w+p+14*g-58*w*g+13*y+4*b-64*w*y-24*w*b)/120,rt=C*v*this.e6l_1*(61-479*w+179*p-m)/5040,st=u,ut=u,ot=this.d6l_1+u*nt+Math.pow(st,3)*it+Math.pow(ut,5)*et,_t=u;this.m6l_1=ot+Math.pow(_t,7)*rt}return e},Pr(Ol).t6l=function(t,n){var i=0;if((tthis.d6l_1+this.k6l_1)&&(i|=4),(nthis.c6l_1+this.l6l_1)&&(i|=8),0===i){var e=this.f6l_1*this.a6l_1,r=this.g6l_1,s=2*this.a6l_1,u=e-r*Math.sin(s),o=this.h6l_1,_=4*this.a6l_1,h=u+o*Math.sin(_),a=this.i6l_1,l=6*this.a6l_1,c=h-a*Math.sin(l),f=this.j6l_1,v=8*this.a6l_1,d=c+f*Math.sin(v)+(n-this.c6l_1)/this.e6l_1,w=this.w6k_1*(1-this.y6k_1),p=this.y6k_1,m=Math.sin(0),g=1-p*Math.pow(m,2),y=Math.sqrt(g),b=w/Math.pow(y,3),$=d/b,k=0;if(k<=4)do{k=k+1|0;var x=2*$,q=4*$,S=6*$,C=8*$,E=this.f6l_1*$-this.g6l_1*Math.sin(x)+this.h6l_1*Math.sin(q)-this.i6l_1*Math.sin(S)+this.j6l_1*Math.sin(C),O=this.w6k_1*(1-this.y6k_1),j=this.y6k_1,T=$,A=Math.sin(T),z=1-j*Math.pow(A,2),I=Math.sqrt(z);$+=(d-E)/(b=O/Math.pow(I,3))}while(k<=4);var D=this.w6k_1*(1-this.y6k_1),M=this.y6k_1,N=$,R=Math.sin(N),P=1-M*Math.pow(R,2),L=Math.sqrt(P);b=D/Math.pow(L,3);var F=this.w6k_1,U=this.y6k_1,H=$,V=Math.sin(H),B=1-U*Math.pow(V,2),W=F/Math.sqrt(B),Y=$,G=Math.cos(Y),K=$,X=Math.tan(K),J=X*X,Z=J*J,Q=this.z6k_1*Math.pow(G,2),tt=Q*Q,nt=tt*Q,it=nt*Q,et=t-this.d6l_1,rt=et;Math.abs(rt)<1e-4&&(et=0);var st=2*b*W,ut=this.e6l_1,ot=X/(st*Math.pow(ut,2)),_t=X*(5+3*J+Q-4*Math.pow(Q,2)-9*J*Q),ht=24*b*Math.pow(W,3),at=this.e6l_1,lt=_t/(ht*Math.pow(at,4)),ct=X*(61+90*J+46*Q+45*Z-252*J*Q-3*tt+100*nt-66*J*tt-90*Z*Q+88*it+225*Z*tt+84*J*nt-192*J*it),ft=720*b*Math.pow(W,5),vt=this.e6l_1,dt=ct/(ft*Math.pow(vt,6)),wt=X*(1385+3633*J+4095*Z+1575*Math.pow(X,6)),pt=40320*b*Math.pow(W,7),mt=this.e6l_1,gt=wt/(pt*Math.pow(mt,8)),yt=et,bt=et,$t=et,kt=$-Math.pow(yt,2)*ot+Math.pow(bt,4)*lt-Math.pow($t,6)*dt,xt=et;this.o6l_1=kt+Math.pow(xt,8)*gt;var qt=1/(W*G*this.e6l_1),St=1+2*J+Q,Ct=6*Math.pow(W,3)*G,Et=this.e6l_1,Ot=St/(Ct*Math.pow(Et,3)),jt=5+6*Q+28*J-3*tt+8*J*Q+24*Z-4*nt+4*J*tt+24*J*nt,Tt=120*Math.pow(W,5)*G,At=this.e6l_1,zt=jt/(Tt*Math.pow(At,5)),It=61+662*J+1320*Z+720*Math.pow(X,6),Dt=5040*Math.pow(W,7)*G,Mt=this.e6l_1,Nt=It/(Dt*Math.pow(Mt,7)),Rt=et,Pt=et,Lt=et,Ft=et*qt-Math.pow(Rt,3)*Ot+Math.pow(Pt,5)*zt-Math.pow(Lt,7)*Nt;this.p6l_1=this.b6l_1+Ft;var Ut=this.o6l_1;if(Math.abs(Ut)>90*_s()/180&&(i|=8),this.p6l_1>_s()){this.p6l_1=this.p6l_1-2*_s();var Ht=this.p6l_1;Math.abs(Ht)>_s()&&(i|=4)}var Vt=Math.abs(Ft),Bt=9*_s()/180,Wt=this.o6l_1;Vt>Bt*Math.cos(Wt)&&(i|=512),this.o6l_1>1e10&&(i|=512)}return i},Pr(jl).x6e=function(t,n){var i=new zl;if(0!==i.a6n(Ph(t),Ph(n)))throw is(Gr("UPS Conversion Error"));return new Tl(t,n,i.u6m_1,i.v6m_1,i.w6m_1)},Pr(jl).b6n=function(t,n,i){var e=new zl;if(0!==e.c6n(t,n,i))throw is(Gr("UTM Conversion Error"));var r=Fh(),s=e.x6m_1,u=r.u5n(s),o=Fh(),_=e.y6m_1;return new Tl(u,o.u5n(_),t,n,i)},Pr(Tl).toString=function(){return this.g6j_1.toString()+" "+this.h6j_1+"E "+this.i6j_1+"N"},Pr(zl).a6n=function(t,n){return t<-1.5707963267948966||t>1.5707963267948966||t<0&&t>-1.2566370614359172||t>=0&&t<1.2566370614359172?1:n<-_s()||n>2*_s()?2:(t<0?(this.n6m_1=-1.4157155848011311,this.u6m_1=dl()):(this.n6m_1=1.4157155848011311,this.u6m_1=vl()),this.z6m_1.r6k(this.q6m_1,this.r6m_1,this.n6m_1,this.o6m_1,0,0),this.z6m_1.s6k(t,n),this.v6m_1=this.s6m_1+this.z6m_1.n6k_1,this.w6m_1=this.t6m_1+(dl().equals(this.u6m_1)?-this.z6m_1.o6k_1:this.z6m_1.o6k_1),0)},Pr(zl).c6n=function(t,n,i){var e=0;return vl().equals(t)||dl().equals(t)||(e|=4),(n<0||n>4e6)&&(e|=8),(i<0||i>4e6)&&(e|=16),vl().equals(t)&&(this.n6m_1=1.4157155848011311),dl().equals(t)&&(this.n6m_1=-1.4157155848011311),0===e&&(this.z6m_1.r6k(this.q6m_1,this.r6m_1,this.n6m_1,this.o6m_1,this.s6m_1,this.t6m_1),this.z6m_1.t6k(n,i),this.x6m_1=this.z6m_1.p6k_1,this.y6m_1=this.z6m_1.q6k_1,this.x6m_1<0&&this.x6m_1>-1.2566370614359172&&(e|=1),this.x6m_1>=0&&this.x6m_1<1.2566370614359172&&(e|=1)),e},Pr(Il).x6e=function(t,n){var i=new Nl;if(0!==i.a6o(Ph(t),Ph(n)))throw is(Gr("UTM Conversion Error"));return new Dl(t,n,i.x6n_1,i.u6n_1,i.v6n_1,i.w6n_1)},Pr(Il).b6o=function(t,n,i,e){var r=new Nl;if(0!==r.c6o(t,n,i,e))throw is(Gr("UTM Conversion Error"));var s=Fh(),u=r.y6n_1,o=s.u5n(u),_=Fh(),h=r.z6n_1;return new Dl(o,_.u5n(h),t,n,i,e)},Pr(Dl).toString=function(){return this.a6j_1.toString()+" "+this.b6j_1+" "+Yr(this.c6j_1)+"E "+Yr(this.d6j_1)+"N"},Pr(Nl).a6o=function(t,n){var i=n,e=0,r=0;if((t<-1.43116998663535||t>1.5009831567151233)&&(e|=1),(i<-_s()||i>2*_s())&&(e|=2),0===e){i<0&&(i+=2*_s()+1e-10);var s=ks(180*t/_s()),u=ks(180*i/_s()),o=ks(i<_s()?31+180*i/_s()/6:180*i/_s()/6-29);if(o>60&&(o=1),56<=s&&s<=63&&u>-1&&u<3&&(o=31),56<=s&&s<=63&&u>2&&u<12&&(o=32),s>71&&u>-1&&u<9&&(o=31),s>71&&u>8&&u<21&&(o=33),s>71&&u>20&&u<33&&(o=35),s>71&&u>32&&u<42&&(o=37),0!==this.s6n_1&&(1===o&&60===this.s6n_1||60===o&&1===this.s6n_1||(o-1|0)<=this.s6n_1&&this.s6n_1<=(o+1|0)?o=this.s6n_1:e=64),0===e){this.t6n_1=o>=31?(Ar(6,o)-183|0)*_s()/180:(Ar(6,o)+177|0)*_s()/180,this.x6n_1=o,t<0?(r=1e7,this.u6n_1=dl()):this.u6n_1=vl();try{var _=it,h=Fh().u5n(t),a=Fh(),l=i,c=a.u5n(l),f=Fh().u5n(0),v=Fh(),d=this.t6n_1,w=v.u5n(d),p=_.u6k(h,c,this.q6n_1,this.r6n_1,f,w,5e5,r,.9996);this.v6n_1=p.w6l_1,this.w6n_1=p.x6l_1,(this.v6n_1<1e5||this.v6n_1>9e5)&&(e=4),(this.w6n_1<0||this.w6n_1>1e7)&&(e|=8)}catch(t){if(!(t instanceof bs))throw t;e=512}}}return e},Pr(Nl).c6o=function(t,n,i,e){var r=0,s=0;if((t<1||t>60)&&(r|=16),n.equals(dl())||n.equals(vl())||(r|=32),(e<0||e>1e7)&&(r|=8),0===r){this.t6n_1=t>=31?(Ar(6,t)-183|0)*_s()/180:(Ar(6,t)+177|0)*_s()/180,n.equals(dl())&&(s=1e7);try{var u=it,o=Fh().u5n(0),_=Fh(),h=this.t6n_1,a=_.u5n(h),l=u.s6l(i,e,o,a,5e5,s,.9996);this.y6n_1=Ph(l.u6l_1),this.z6n_1=Ph(l.v6l_1),(this.y6n_1<-1.43116998663535||this.y6n_1>1.5009831567151233)&&(r|=8)}catch(t){if(!(t instanceof bs))throw t;r=512}}return r},Pr(Xl).toString=function(){return"State(ellipsoid="+this.c6p_1+", projectionName="+this.d6p_1+")"},Pr(Xl).hashCode=function(){var t=this.c6p_1.hashCode();return Ar(t,31)+Ws(this.d6p_1)|0},Pr(Xl).equals=function(t){if(this===t)return!0;if(!(t instanceof Xl))return!1;var n=t instanceof Xl?t:Nr();return!!this.c6p_1.equals(n.c6p_1)&&this.d6p_1===n.d6p_1},Pr(Zl).h5o=function(){return this.k5j_1.w6a_1},Pr(Zl).e6p=function(){return this.k5j_1.y6a()},Pr(Zl).z6a=function(){return this.k5j_1.z6a()},Pr(Zl).q5m=function(){return this.l5j_1.q5m()},Pr(Zl).x67=function(){return this.l5j_1.x67()},Pr(Zl).f6p=function(){return this.l5j_1.f6p()},Pr(Zl).bn=function(){return new Xl(this.k5j_1,this.l5j_1.g6p())},Pr(Zl).c5s=function(t){this.n5j_1=t;var n;switch(t.y9_1){case 0:n=0;break;case 1:n=2*_s()*this.h5o();break;case 2:n=-2*_s()*this.h5o();break;default:Ys()}this.o5j_1=n},Pr(Zl).h6p=function(t,n){var i=Ph(t),e=Math.sin(i),r=this.k5j_1.z6a(),s=1-r*e*e,u=1+(r*r-2*r)*e*e;return this.k5j_1.w6a_1/Math.sqrt(s)*Math.sqrt(u)},Pr(Zl).f5m=function(t,n,i,e){return this.l5j_1.i6p(this,t,n,i,this.o5j_1,e)},Pr(Zl).r5m=function(t,n,i){return this.l5j_1.j6p(this,t,n,i)},Pr(Zl).o5r=function(t,n,i,e){return this.l5j_1.k6p(this,t,n,i,e)},Pr(Zl).l6p=function(t,n,i,e,r,s,u,o,_){return this.l5j_1.m6p(this,t,n,i,e,r,s,this.o5j_1,u,o,_)},Pr(Zl).i6a=function(t,n,i,e,r,s,u,o,_,h){return o=o===Wr?0:o,_=_===Wr?0:_,h===Wr?this.l6p(t,n,i,e,r,s,u,o,_):h.l6p.call(this,t,n,i,e,r,s,u,o,_)},Pr(Zl).n6p=function(t,n,i,e,r,s){return this.l5j_1.o6p(this,t,n,i,e,r,this.o5j_1,s)},Pr(Zl).d5m=function(t,n,i,e){var r=this.l5j_1.p6p(this,t,n,i,this.o5j_1,e);return this.q5m()&&(e.n5i_1=Kh(e.n5i_1)),r},Pr(Zl).h5m=function(t,n,i,e){return this.l5j_1.q6p(this,t,n,i,e)},Pr(Zl).q5l=function(t){var n;if(t>0){var i=t*(2*this.k5j_1.w6a_1+t);n=Math.sqrt(i)}else n=0;return n},Pr(Zl).w5n=function(t,n){return this.l5j_1.r6p(this,t,n)},Pr(Zl).s6p=function(t,n,i){return this.m5j_1.t6p(t,n,i)},Pr(Zl).p5m=function(t,n,i,e){return i=i!==Wr&&i,e===Wr?this.s6p(t,n,i):e.s6p.call(this,new ia(t),new ia(n),i)},Pr(Zl).u6p=function(t,n){return new Ua(t,n,this.s6p(t,n,!0))},Pr(Zl).p5l=function(t,n){var i;switch(n.y9_1){case 1:i=this.u6p(t.m5i_1,t.n5i_1);break;case 2:var e=this.u6p(t.m5i_1,t.n5i_1);e.q5i_1=e.q5i_1+t.q5i_1,i=e;break;default:i=La(t)}return i},Pr(Ql).j5q=function(){var t=new Hr(0,0),n=0,i=this.p5j_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.p5j_1.h1(e).j5q();t.ca(r)<0&&(t=r)}while(n<=i);return t},Pr(Ql).q5j=function(){for(var t=this.p5j_1.v();t.w();)t.y().b1();return Xr},Pr(Ql).v6p=function(t){return!this.p5j_1.r(t)&&this.p5j_1.s(t)},Pr(Ql).w6p=function(t){return this.p5j_1.t(t)},Pr(Ql).v=function(){return this.p5j_1.v()},Pr(Ql).t6p=function(t,n,i){var e=this.p5j_1.n()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=this.p5j_1.h1(r).t6p(t,n,i);if(null!=s)return s}while(0<=e);return 0},Pr(Ql).x6p=function(t,n,i,e){var r=0,s=this.p5j_1.n()-1|0;if(r<=s)do{var u=r;r=r+1|0,this.p5j_1.h1(u).x6p(t,n,i,e)}while(r<=s)},Pr(Ql).y6p=function(t,n){var i=0,e=this.p5j_1.n()-1|0;if(i<=e)do{var r=i;i=i+1|0,this.p5j_1.h1(r).y6p(t,n)}while(i<=e)},Pr(tc).f6q=function(t){this.b6q_1=t,this.g6q()},Pr(tc).h6q=function(){return this.b6q_1},Pr(tc).i6q=function(t){this.c6q_1=t},Pr(tc).j5q=function(){return this.c6q_1},Pr(tc).g6q=function(){this.i6q(Ds.h3k().n3z()),this.e6q_1.b1()},Pr(tc).t6p=function(t,n,i){var e;if(this.h6q()){var r,s=Ar(31,Ss(t))+Ss(n)|0,u=this.e6q_1.q2(s);if(null==u){var o,_=this.j6q(t,n,i);null==_?o=null:(this.e6q_1.d69(s,_,1),o=_),r=o}else r=u;e=r}else e=null;return e},Pr(tc).x6p=function(t,n,i,e){this.h6q()&&this.k6q(t,n,i,e)},Pr(tc).y6p=function(t,n){this.h6q()&&this.l6q(t,n)},Pr(ic).u6q=function(){var t=this.n6q_1;if(null!=t)return t;Gs("tileMatrix")},Pr(ic).b1=function(){this.o6q_1.b1(),this.p6q_1.b1(),this.q6q_1.b1(),this.r6q_1=-1,this.s6q_1=-1,this.t6q_1=null},Pr(ic).v6q=function(t,n,i){var e=this.u6q().e6e(t,n);this.q6q_1.g2(e,i)},Pr(ic).w6q=function(t,n){return this.r6q_1===t&&this.s6q_1===n||(this.r6q_1=t,this.s6q_1=n,this.t6q_1=this.q6q_1.q2(this.u6q().e6e(t,n))),this.t6q_1},Pr(ic).x6q=function(t,n,i,e){var r=this.w6q(t,n),s=null==r?null:r[i+Ar(e,this.u6q().b6e_1)|0];return null==s?0:s},Pr(ec).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(ec).cd=function(t,n){return this.a1h(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(ec).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.g6r_1.a6s(this.h6r_1,this.i6r_1,this.j6r_1,this.k6r_1,this))===Js())return t;continue t;case 1:return Xr;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},Pr(ec).b1h=function(t,n){var i=new ec(this.g6r_1,this.h6r_1,this.i6r_1,this.j6r_1,this.k6r_1,n);return i.l6r_1=t,i},Pr(rc).b1=function(){iu(this.z6r_1.gm()),this.v6r_1.b1(),this.w6r_1.b1(),this.y6r_1.b1(),this.g6q()},Pr(rc).j6q=function(t,n,i){if(!this.s6r_1.i6e_1.m6d(t,n))return null;var e=this.s6r_1.j6e_1.n()-1|0,r=e;if(0<=r)do{var s=r;r=r+-1|0,this.x6r_1=!!i&&(s===e||0===s);var u=this.s6r_1.j6e_1.h1(s),o=u.x6d_1.r65()/u.a6e_1,_=u.x6d_1.q65()/u.z6d_1,h=(u.x6d_1.n65_1-t)/o,a=Math.floor(h),l=ks(a),c=(n-u.x6d_1.o65_1)/_,f=Math.floor(c),v=ks(f),d=this.f6s(u,l,v);if(null!=d){var w=u.x6d_1.n65_1-o*l,p=u.x6d_1.o65_1+_*v,m=u.b6e_1-1|0,g=u.c6e_1-1|0,y=m*(n-p)/_,b=g*(w-t)/o,$=Math.floor(y),k=eu(ks($),0,m),x=eu(k+1|0,0,m),q=Math.floor(b),S=eu(ks(q),0,g),C=eu(S+1|0,0,g),E=y-k,O=b-S;return(1-E)*(1-O)*d[k+Ar(S,u.b6e_1)|0]+E*(1-O)*d[x+Ar(S,u.b6e_1)|0]+(1-E)*O*d[k+Ar(C,u.b6e_1)|0]+E*O*d[x+Ar(C,u.b6e_1)|0]}}while(0<=r);return null},Pr(rc).k6q=function(t,n,i,e){if(!this.s6r_1.i6e_1.a67(t))return Xr;var r=Yh(t.r65(),i),s=this.s6r_1.k6e(r),u=new ic,o=s;if(0<=o)do{var _=o;o=o+-1|0,this.x6r_1=_===s||0===_;var h=this.s6r_1.j6e_1.h1(_);if(this.h6s(t,n,i,h,u))return this.g6s(t,n,i,u,e),Xr}while(0<=o)},Pr(rc).l6q=function(t,n){if(!this.s6r_1.i6e_1.a67(t))return Xr;var i=Yh(t.r65(),32),e=this.s6r_1.k6e(i),r=new ic,s=e;if(0<=s)do{var u=s;s=s+-1|0,this.x6r_1=u===e||0===u;var o=this.s6r_1.j6e_1.h1(u);if(this.j6s(t,o,r))return this.i6s(t,r,n),Xr}while(0<=s)},Pr(rc).h6s=function(t,n,i,e,r){var s=e.b6e_1,u=e.c6e_1,o=Ar(e.z6d_1,s),_=Ar(e.a6e_1,u),h=e.x6d_1.m65_1,a=e.x6d_1.n65_1,l=e.x6d_1.o65_1,c=e.x6d_1.p65_1,f=e.x6d_1.r65(),v=e.x6d_1.q65(),d=1/(2*o),w=1-d,p=1/(2*_),m=1-p;r.n6q_1=e,r.b1();for(var g=t.o65_1,y=t.q65()/(n-1|0),b=0;bK&&(i[0]=K),i[1]=1&&e>=1)){var l=kr.y5i(kr.t5i_1,"MercatorProjection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Ar(i,e))){var c=kr.y5i(kr.t5i_1,"MercatorProjection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=t.h5o(),v=t.z6a(),d=Math.sqrt(v),w=Ph(n.m65_1),p=Ph(n.n65_1),m=Ph(n.o65_1),g=Ph(n.p65_1),y=(p-w)/(i>1?i-1|0:1),b=(g-m)/(e>1?e-1|0:1),$=Ph(this.f6p().m65_1),k=Ph(this.f6p().n65_1),x=Ph(this.f6p().o65_1),q=Ph(this.f6p().p65_1),S=0,C=null==u?null:u.s5l_1,E=null==C?0:C,O=null==u?null:u.t5l_1,j=null==O?0:O,T=null==u?null:u.w5l_1,A=null==T?0:T,z=h,I=0===a?Ar(e,3):a,D=w,M=0;if(M1?i-3|0:1),w=(v-f)/(e>1?e-3|0:1),p=Ph(this.f6p().m65_1),m=Ph(this.f6p().n65_1),g=Ph(this.f6p().o65_1),y=Ph(this.f6p().p65_1),b=null==s?null:s.s5l_1,$=null==b?0:b,k=null==s?null:s.t5l_1,x=null==k?0:k,q=null==s?null:s.w5l_1,S=null==q?0:q,C=0,E=l,O=f,j=0;if(j1e-6))break t;c=l;var v=_s()/2,d=l,w=l,p=(1-_*Math.sin(d))/(1+_*Math.sin(w)),m=_/2,g=a*Math.pow(p,m);l=v-2*Math.atan(g)}var y=(n-r)/u;return s.f6d(l,y,e)},Pr(_c).q6p=function(t,n,i,e,r){return r.l6c(1,0,0,n,0,1,0,i,0,0,1,e,0,0,0,1)},Pr(_c).r6p=function(t,n,i){var e=n.l5l_1.s5l_1,r=n.l5l_1.t5l_1,s=n.l5l_1.w5l_1,u=n.k5l_1.s5l_1,o=n.k5l_1.t5l_1,_=n.k5l_1.w5l_1;if(0===s&&0!==_)return!1;var h=-_/s;return!(h<0||(i.s5l_1=u+e*h,i.t5l_1=o+r*h,i.w5l_1=_+s*h,0))},Pr(hc).g6p=function(){return this.m6t_1},Pr(hc).i6p=function(t,n,i,e,r,s){var u=Ph(n),o=Math.cos(u),_=Ph(n),h=Math.sin(_),a=Ph(i),l=Math.cos(a),c=Ph(i),f=Math.sin(c),v=t.z6a(),d=1-v*h*h,w=t.h5o()/Math.sqrt(d);return s.h5u((e+w)*o*f,(e+w*(1-v))*h,(e+w)*o*l)},Pr(hc).j6p=function(t,n,i,e){var r=Ph(n),s=Math.cos(r),u=Ph(n),o=Math.sin(u),_=Ph(i),h=Math.cos(_),a=Ph(i),l=Math.sin(a),c=t.h5o()*t.h5o(),f=t.e6p()*t.e6p();return e.h5u(s*l/c,(1-t.z6a())*o/f,s*h/c).t5m()},Pr(hc).k6p=function(t,n,i,e,r){var s=Ph(n),u=Math.cos(s),o=Ph(n),_=Math.sin(o),h=Ph(i),a=Math.cos(h),l=Ph(i),c=Math.sin(l),f=t.z6a(),v=1-f*_*_,d=t.h5o()/Math.sqrt(v),w=t.h5o()*t.h5o(),p=t.e6p()*t.e6p(),m=(d+e)*u*c,g=(d*(1-f)+e)*_,y=(d+e)*u*a,b=u*c/w,$=(1-t.z6a())*_/p,k=u*a/w,x=b*b+$*$+k*k,q=Math.sqrt(x);b/=q,$/=q,k/=q;var S=-_*c,C=u,E=-_*a,O=S*S+C*C+E*E,j=(C/=q=Math.sqrt(O))*k-(E/=q)*$,T=E*b-(S/=q)*k,A=S*$-C*b;return S=$*A-k*T,C=k*j-b*A,E=b*T-$*j,r.l6c(j,S,b,m,T,C,$,g,A,E,k,y,0,0,0,1)},Pr(hc).m6p=function(t,n,i,e,r,s,u,o,_,h,a){if(!(i>=1&&e>=1)){var l=kr.y5i(kr.t5i_1,"Wgs84Projection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Ar(i,e))){var c=kr.y5i(kr.t5i_1,"Wgs84Projection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=Ph(n.m65_1),v=Ph(n.n65_1),d=Ph(n.o65_1),w=Ph(n.p65_1),p=(v-f)/(i>1?i-1|0:1),m=(w-d)/(e>1?e-1|0:1),g=t.h5o(),y=t.z6a(),b=new Float64Array(e),$=new Float64Array(e),k=0,x=null==u?null:u.s5l_1,q=null==x?0:x,S=null==u?null:u.t5l_1,C=null==S?0:S,E=null==u?null:u.w5l_1,O=null==E?0:E,j=d,T=0;if(T=1&&e>=1)){var _=kr.y5i(kr.t5i_1,"Wgs84Projection","geographicToCartesianBorder","Number of latitude or longitude locations is less than one");throw is(Gr(_))}var h=Ph(n.m65_1),a=Ph(n.n65_1),l=Ph(n.o65_1),c=Ph(n.p65_1),f=(a-h)/(i>1?i-3|0:1),v=(c-l)/(e>1?e-3|0:1),d=h,w=l,p=t.h5o(),m=t.z6a(),g=null==s?null:s.s5l_1,y=null==g?0:g,b=null==s?null:s.t5l_1,$=null==b?0:b,k=null==s?null:s.w5l_1,x=null==k?0:k,q=0,S=0;if(S0||0!==d){var m;if(p>0){var g,y=Math.sqrt(p),b=f*v*d,$=Math.sqrt(b),k=(y+$)*(y+$),x=Math.pow(k,.3333333333333333);if(p>10*c)g=w+.5*x+2*w*w/x;else{var q=(y-$)*(y-$);g=w+.5*x+.5*Math.pow(q,.3333333333333333)}m=g}else{var S=-p,C=Math.sqrt(S),E=-8*w*w*w,O=Math.sqrt(E),j=f*v*d,T=Math.sqrt(j),A=C+O,z=2*Math.atan2(T,A)/3,I=-4*w*Math.sin(z),D=_s()/6+z;m=I*Math.cos(D)}var M=m*m+f*d,N=Math.sqrt(M),R=c*(m+N-d)/(2*N),P=R*R+m+N,L=(m+N)/(Math.sqrt(P)+R),F=L*h/(L+c),U=F*F+i*i,H=Math.sqrt(U);u=(L+c-1)*H/L;var V=H+F;o=2*Math.atan2(i,V)}else{var B=1-c,W=Math.sqrt(B),Y=c-v,G=Math.sqrt(Y),K=Math.sqrt(c);u=-a*W*G/K,o=G/(K*G+W*Math.sqrt(v))}var X,J=Math.sqrt(2);if((J-1)*n0||(w=(-v+Math.sqrt(d))/(2*f))>0)&&(i.h5u(u+e*w,o+r*w,_+s*w),!0)},Pr(ac).e5s=function(){return this.q6t_1},Pr(ac).w5n=function(t,n){var i=!1,e=this.o6t_1;if(null==e)return i;var r=e,s=0,u=this.p6t_1.n()-1|0;if(s<=u)t:do{var o=s;s=s+1|0;var _=this.p6t_1.h1(o);if(t.k5l_1.s5m(_.f6u_1),t.m6b(_.r6u(),3,r,r.length,this.r6t_1)&&(n.y5q(this.r6t_1).s6e(_.f6u_1),i=!0),t.k5l_1.s6e(_.f6u_1),i)break t}while(s<=u);return i},Pr(ac).s6u=function(t,n,i){var e=0,r=this.p6t_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var u=this.p6t_1.h1(s),o=u.t6u_1;if(o.m6d(t,n)){var _=u.r6v_1.g6v_1,h=u.r6v_1.h6v_1,a=(n-o.o65_1)/o.q65()*(_-1|0),l=(t-o.m65_1)/o.r65()*(h-1|0),c=a<(_-1|0)?xx(a):1,f=l<(h-1|0)?xx(l):1,v=a<(_-1|0)?ks(a+1):_-1|0,d=l<(h-1|0)?ks(l+1):h-1|0,w=_+2|0,p=Ar(v+Ar(d,w)|0,3),m=p+3|0,g=Ar(v+Ar(d+1|0,w)|0,3),y=g+3|0,b=(1-c)*(1-f),$=c*(1-f),k=(1-c)*f,x=c*f,q=u.r6u();return i.s5l_1=q[p]*b+q[m]*$+q[g]*k+q[y]*x,i.t5l_1=q[p+1|0]*b+q[m+1|0]*$+q[g+1|0]*k+q[y+1|0]*x,i.w5l_1=q[p+2|0]*b+q[m+2|0]*$+q[g+2|0]*k+q[y+2|0]*x,i.s5l_1=i.s5l_1+u.f6u_1.s5l_1,i.t5l_1=i.t5l_1+u.f6u_1.t5l_1,i.w5l_1=i.w5l_1+u.f6u_1.w5l_1,!0}}while(e<=r);return!1},Pr(ac).w6v=function(t,n){n[0]=34028235e31,n[1]=-34028235e31;var i=this.p6t_1.v();if(!i.w())throw ou();for(var e=i.y().r6v_1.c6v_1;i.w();){var r=i.y().r6v_1.c6v_1;ws(e,r)<0&&(e=r)}for(var s=e-t|0,u=this.p6t_1.v();u.w();){var o=u.y();if(o.r6v_1.c6v_1>=s){var _=n[0],h=o.x6v()[0];n[0]=Math.min(_,h);var a=n[1],l=o.x6v()[1];n[1]=Math.max(a,l)}}n[0]>n[1]&&js(n,0)},Pr(fc).o9=function(t,n){return this.a6w_1(t,n)},Pr(fc).compare=function(t,n){return this.o9(t,n)},Pr(dc).n68=function(t){return this.q6w(t),this.r6w(t)},Pr(dc).s6w=function(t,n,i,e){return new mc(t,n,i,e)},Pr(dc).r6w=function(t){this.g6w_1.b1(),this.h6w_1.v5j(),this.t6w(t),this.f6w_1.d1()&&this.u6w();var n=0,i=this.f6w_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.f6w_1.h1(e);this.v6w(t,r instanceof mc?r:Nr())}while(n<=i);var s=this.g6w_1;if(s.n()>1){var u=new fc(vc);au(s,u)}return this.n6w_1=null,this.o6w_1=null,new ac(this.g6w_1,this.h6w_1,this.k6w_1)},Pr(dc).u6w=function(){return Li.f6x(this.c6w_1.d6x(),this,this.f6w_1)},Pr(dc).v6w=function(t,n){var i=t.w67().f6p();if(!1===(null==i?null:n.g6x(i)))return Xr;if(!n.g6x(this.c6w_1.w6w_1)||!n.h6x(t))return Xr;if(n.r6v_1.k6x()||!n.j6x(t,this.d6w_1))return this.i6x(t,n),Xr;var e=n.l6x(this,this.e6w_1,4),r=0,s=e.length-1|0;if(r<=s)do{var u=r;r=r+1|0;var o=e[u];this.v6w(t,o instanceof mc?o:Nr())}while(r<=s)},Pr(dc).i6x=function(t,n){n.m6x(t),this.g6w_1.s(n),this.h6w_1.r6d(n.t6u_1);var i,e=ys(G_),r=t.e5q_1.q2(e),s=null==r||ss(r,Qb)?r:Nr();if(null==s){var u=new Yq;t.e5q_1.g2(e,u),i=u}else i=s;var o=i,_=g.q5r(o);this.n6x(t,n,_),t.o6x(_,n.o6u_1)},Pr(dc).q6w=function(t){qs(t.k5p_1,this.p6w_1)||(this.p6x(),this.p6w_1=t.k5p_1)},Pr(dc).p6x=function(){this.f6w_1.b1(),this.g6w_1.b1(),this.h6w_1.v5j(),this.e6w_1.b1(),this.i6w_1=null,this.j6w_1=null,this.k6w_1=null},Pr(dc).n6x=function(t,n,i){i.c5s(t.w67().n5j_1),i.e5s().f66(n.t6u_1),i.f5s().y5q(n.f6u_1),i.v5r_1.h6d(this.l6w_1),i.w5r_1.h6d(this.m6w_1),i.x5r_1=n.q6x(t),i.y5r_1=n.r6x(t),i.z5r_1=this.n6w_1,i.a5s_1=this.o6w_1},Pr(dc).t6w=function(t){var n,i=this.c6w_1.a6x_1+2|0,e=this.c6w_1.z6w_1+2|0,r=this.i6w_1;if(null==r){var s=new Float32Array(Ar(Ar(i,e),2));this.i6w_1=s,this.s6x(i,e,s),n=s}else n=r;var u,o=n,_=this.j6w_1;if(null==_){var h=this.t6x(i,e);this.j6w_1=h,u=h}else u=_;var a,l=u,c=this.k6w_1;if(null==c){var f=this.u6x(i,e);this.k6w_1=f,a=f}else a=c;var v,d=a,w=cc().y6v_1,p=t.v68(),m=p.q2(w);if(null==m){var g=new Oy(Vk(),o);p.d69(w,g,g.c62_1),v=g}else v=m;var y=v;this.n6w_1=y instanceof Oy?y:Nr();var b,$=cc().z6v_1,k=t.v68(),x=k.q2($);if(null==x){var q=new Ty(Bk(),lu([l,d]));this.l6w_1.z5s_1=l.length,this.m6w_1.y5s_1=l.length,this.m6w_1.z5s_1=l.length+d.length|0,k.d69($,q,q.c62_1),b=q}else b=x;var S=b;this.o6w_1=S instanceof Ty?S:Nr()},Pr(dc).s6x=function(t,n,i){var e=1/(n>1?n-3|0:1),r=1/(t>1?t-3|0:1),s=0,u=0,o=0,_=0;if(_1)return!0;var e=t.f77_1-n.t6y().j5i_1;if(Math.abs(e)>1)return!0;var r=t.g77_1-n.t6y().l5i_1;return Math.abs(r)>1||n.m5p_1.z5q(t.d77_1)>t.p77(n)/100||!qs(n.k5p_1,t.i77_1)}(this,t)?t.w67().n5j_1.equals(this.j77_1)||this.v77(t):(this.w77(t),this.v77(t)),this.j77_1=t.w67().n5j_1,this.b77_1.x77(t,this.o6y())},Pr(Vc).w77=function(t){this.b77_1.o77(),this.d77_1.y5q(t.m5p_1),this.g77_1=t.t6y().l5i_1,this.e77_1=t.t6y().i5i_1,this.f77_1=t.t6y().j5i_1,this.h77_1=t.e5p_1,this.i77_1=t.k5p_1},Pr(Vc).z77=function(t){var n,i=t.j5p_1;if(null==i)n=null;else{var e=Fh().k69(t.i5p_1/t.w67().h5o()*t.n5p_1.t5j_1/4);n=new ya(su(new ia(Xh(Wh(i.m5i_1,e))),new ia(Hc().q77_1),new ia(Hc().r77_1)).v69_1,Jh(Wh(i.n5i_1,e)))}var r=n;return null==r?t.t6y().g5i_1:r},Pr(Vc).a78=function(t,n){var i=new cb(t);return i.w78(n),i.x78(Nh()),i.y78(!0),i},Pr(Vc).z78=function(t,n,i){var e=new eb(t,n);return e.x78(Nh()),e},Pr(Vc).q79=function(t,n,i){return t.p68().s6u(n,i,this.c77_1)||t.w67().f5m(n,i,t.w67().p5m(n,i)*t.e5p_1,this.c77_1),this.c77_1},Pr(Vc).p77=function(t){var n=this.q79(t,t.t6y().g5i_1.m5i_1,t.t6y().g5i_1.n5i_1);return t.m5p_1.z5q(n)},Pr(Vc).r79=function(t,n,i,e){var r=i.m6d(t.m5i_1,t.n5i_1),s=i.m6d(n.m5i_1,n.n5i_1);if(!r&&!s)return Xr;if(r&&s)e.s(t),e.s(n);else{var u=r?n:t,o=r?t:n,_=1;if(_<=2)t:do{_=_+1|0;var h=null;if(u.n5i_1>i.p65_1||180===i.p65_1&&u.n5i_1<0?h=Rc(0,o,u,i.p65_1):u.n5i_10?h=Rc(0,o,u,i.o65_1):u.m5i_1>i.n65_1?h=Pc(0,o,u,i.n65_1):u.m5i_188)n=45;else{var i=(t+88)/4+1,e=Math.floor(i);n=gu(ks(e),45)}return n},Pr(hf).y77=function(t){return t>=1e6?"Graticule.GK.1_000_000":t>=5e5?"Graticule.GK.500_000":t>=2e5?"Graticule.GK.200_000":t>=1e5?"Graticule.GK.100_000":t>=35e3?"Graticule.GK.50_000":t>=15e3?"Graticule.GK.25_000":"Graticule.GK.10_000"},Pr(hf).n7f=function(t){switch(t){case"Graticule.GK.1_000_000":return 1e6;case"Graticule.GK.500_000":return 5e5;case"Graticule.GK.200_000":return 2e5;case"Graticule.GK.100_000":return 1e5;case"Graticule.GK.50_000":return 35e3;case"Graticule.GK.25_000":return 15e3;default:return 8e3}},Pr(hf).n7c=function(t){return new vf(this,t,"Graticule.GK.1_000_000")},Pr(hf).o7f=function(t){return this.u7d_1.p7f(t)},Pr(hf).q7f=function(t){(function(t,n){return 0===n||n>0&&0===t.v7d_1||0!==t.v7d_1&&n=0?1+(ks(t)/6|0)|0:31+(ks(t+180)/6|0)|0},Pr(wf).o7h=function(t,n,i,e,r,s,u,o){var _,h=e-n,a=t-i,l=h*t+a*n,c=o-s,f=r-u,v=c*r+f*s,d=h*f-c*a;if(0!==d){var w=(f*l-a*v)/d,p=(h*v-c*l)/d;_=G.f6f(w,p)}else _=null;return _},Pr(wf).k7h=function(t,n,i,e){var r;if(_f(),"Graticule.GK.1_000_000"===i)r=df(this,t,n);else if(_f(),"Graticule.GK.500_000"===i)r=(0===xu(e)?df(jt,t,n):e)+function(t,n,i){var e=1-ks((n+88)%4/2)|0,r=ks((i+180)%6/3);switch(Ar(e,2)+r|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n);else if(_f(),"Graticule.GK.200_000"===i)r=df(this,t,n)+function(t,n,i){var e=5-ks((n+88)%4/.6666666666666667)|0,r=ks((i+180)%6),s=Ar(e,6)+r|0;return"-"+_f().q7e_1[s]}(0,t,n);else if(_f(),"Graticule.GK.100_000"===i)r=df(this,t,n)+function(t,n,i){var e=11-ks((n+88)%4/.33333333333333337)|0,r=ks((i+180)%6/.5)+1|0;return"-"+(Ar(e,12)+r|0)}(0,t,n);else if(_f(),"Graticule.GK.50_000"===i){var s;if(0===xu(e)){var u=jt;_f(),s=u.p7h(t,n,"Graticule.GK.100_000")}else s=e;r=s+function(t,n,i){var e=ks((n+88)/.33333333333333337),r=1-ks((n+88-.33333333333333337*e)/.16666666666666669)|0;e=ks((i+180)/.5);var s=ks((i+180-.5*e)/.25);switch(Ar(r,2)+s|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n)}else if(_f(),"Graticule.GK.25_000"===i){var o;if(0===xu(e)){var _=jt;_f(),o=_.p7h(t,n,"Graticule.GK.50_000")}else o=e;r=o+function(t,n,i){var e=ks((n+88)/.16666666666666669),r=1-ks((n+88-.16666666666666669*e)/.08333333333333334)|0;e=ks((i+180)/.25);var s=ks((i+180-.25*e)/.125);switch(Ar(r,2)+s|0){case 0:return"-a";case 1:return"-б";case 2:return"-в";default:return"-г"}}(0,t,n)}else{var h;if(0===xu(e)){var a=jt;_f(),h=a.p7h(t,n,"Graticule.GK.25_000")}else h=e;r=h+function(t,n,i){var e=ks((n+88)/.08333333333333334),r=1-ks((n+88-.08333333333333334*e)/.04166666666666667)|0;e=ks((i+180)/.125);var s=ks((i+180-.125*e)/.0625)+1|0;return"-"+(Ar(r,2)+s|0)}(0,t,n)}return r},Pr(wf).p7h=function(t,n,i,e,r){var s;return i===Wr?(_f(),s="Graticule.GK.1_000_000"):s=i,i=s,e=e===Wr?"":e,r===Wr?this.k7h(t,n,i,e):r.k7h.call(this,new ia(t),new ia(n),i,e)},Pr(wf).n7h=function(t){return ks((t+88+4)/4)},Pr(wf).m7h=function(t){return gu(ks((t+180)/6),59)},Pr(Sf).e7a=function(){var t=Pr(Bc).e7a.call(this);return t instanceof hf?t:Nr()},Pr(Sf).a7h=function(t){for(var n=this.b7a_1.v();n.w();){var i=n.y();i.l7c_1===t?this.e7a().u77(i.k7c_1,t):"metric.label"===i.l7c_1&&i.k7c_1 instanceof eb&&this.e7a().o7f(i.k7c_1)}return Xr},Pr(Sf).h7a=function(){Pr(Bc).h7a.call(this);var t=this.z7g_1.q7h_1.j6f_1,n=this.z7g_1.r7h_1.j6f_1,i=Math.min(t,n),e=this.z7g_1.t7h_1.j6f_1,r=this.z7g_1.s7h_1.j6f_1,s=Math.max(e,r),u=this.z7g_1.q7h_1.k6f_1,o=this.z7g_1.t7h_1.k6f_1,_=Math.max(u,o),h=this.z7g_1.s7h_1.k6f_1,a=this.z7g_1.r7h_1.k6f_1,l=Math.min(h,a),c=ks(i/this.x7g_1),f=ks(s/this.x7g_1),v=ks(_/this.x7g_1),d=ks(l/this.x7g_1);(function(t,n,i,e,r){var s=n;if(s<=i)do{var u=s;s=s+1|0;var o=u*t.x7g_1,_=u*t.x7g_1+t.x7g_1,h=e;if(h<=r)do{var a=h;h=h+1|0;var l=a*t.x7g_1,c=$f(t,o,l);if(u!==n){var f=a*t.x7g_1+t.x7g_1,v=$f(t,o,f),d=a;d===e?(gf(t,bf(0,t.z7g_1.q7h_1,t.z7g_1.t7h_1,o,l,o,f),v),pf(t,c,a,u,"X")):d===r?gf(t,bf(0,t.z7g_1.r7h_1,t.z7g_1.s7h_1,o,l,o,f),c):yf(t,c,v)}if(a!==e){var w=$f(t,_,l),p=u;p===n?(gf(t,bf(0,t.z7g_1.q7h_1,t.z7g_1.r7h_1,o,l,_,l),w),pf(t,c,a,u,"Y")):p===i?gf(t,bf(0,t.z7g_1.t7h_1,t.z7g_1.s7h_1,o,l,_,l),c):yf(t,c,w)}}while(a!==r)}while(u!==i)})(this,c,f,v,d),function(t,n,i,e,r){var s=n*t.x7g_1;if(t.z7g_1.q7h_1.k6f_1=l){var c=i*t.x7g_1,f=e*t.x7g_1,v=bf(0,t.z7g_1.r7h_1,t.z7g_1.s7h_1,c,l,f,l);mf(t,bf(0,t.z7g_1.q7h_1,t.z7g_1.r7h_1,c,l,f,l),v)}else if(t.z7g_1.r7h_1.k6f_1=l){var d=i*t.x7g_1,w=e*t.x7g_1;mf(t,bf(0,t.z7g_1.t7h_1,t.z7g_1.s7h_1,d,l,w,l),bf(0,t.z7g_1.r7h_1,t.z7g_1.s7h_1,d,l,w,l))}}(this,v,c,f,d)},Pr(Tf).h7f=function(t,n){if(0===n||this.e7f_1.d1()&&this.f7f_1.d1())return Xr;for(var i=function(t,n){var i=n.n5p_1.t5j_1*n.i5p_1/4,e=n.n5p_1.u5j_1*n.i5p_1/4,r=n.j5p_1,s=null==r?n.t6y().g5i_1:r,u=t.d7f_1.i7f(new Ua(s.m5i_1,s.n5i_1,0)),o=G.x6e(u.m5i_1,u.n5i_1);return new Cu(o.j6f_1-e,o.k6f_1-i)}(this,t),e=i.ue(),r=i.ve(),s=this.e7f_1.f2().v();s.w();){var u=s.y();Of(this,t,u.j2(),n)?this.g7f_1.s(u.i2()):Ef(this,"X",u.j2(),e,r)}Cf(this,"X");for(var o=this.f7f_1.f2().v();o.w();){var _=o.y();Of(this,t,_.j2(),n)?this.g7f_1.s(_.i2()):Ef(this,"Y",_.j2(),e,r)}Cf(this,"Y")},Pr(Tf).p7f=function(t){var n=function(t,n){return n.d7i("label.name")}(0,t);if(null==n)return Xr;var i=n,e=function(t,n,i){var e=n.d7i("label.scale.type");if(null==e)return null;var r,s=e;switch(i){case"X":r=n.d7i("label.x");break;case"Y":r=n.d7i("label.y");break;default:r=null}if(null==r)return null;var u=r,o=n.h79_1.n5i_1>=0?"E":"W";return u+(n.h79_1.m5i_1>=0?"N":"S")+o+s}(0,t,i);if(null==e)return Xr;var r=e;if("X"===i){var s=this.e7f_1;(ss(s,Eu)?s:Nr()).n2(r)||this.e7f_1.g2(r,t)}else if("Y"===i){var u=this.f7f_1;(ss(u,Eu)?u:Nr()).n2(r)||this.f7f_1.g2(r,t)}},Pr(Af).v77=function(t){Pr(Bc).v77.call(this,t);for(var n=this.e7a().z77(t),i=this.b7a_1.v();i.w();){var e=i.y();if(e.f7a(t)){if(e.k7c_1 instanceof eb){var r=e.k7c_1;if(n.m5i_1<72||!Ou("*32*34*36*","*"+r.f79_1+"*")){var s=r.h79_1;"GridElement_LatitudeLabel"===e.l7c_1?r.e7i(new Ua(s.m5i_1,n.n5i_1,s.q5i_1)):"GridElement_LongitudeLabel"===e.l7c_1&&r.e7i(new Ua(n.m5i_1,s.n5i_1,s.q5i_1))}}var u=this.e7a();_f(),u.u77(e.k7c_1,"Graticule.GK.Overview")}}},Pr(Af).h7a=function(){Pr(Bc).h7a.call(this);var t=as(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e=6*i-180;t.b1(),t.s(B.e6d(-88,e,0)),t.s(B.e6d(-60,e,0)),t.s(B.e6d(-30,e,0)),t.s(B.e6d(0,e,0)),t.s(B.e6d(30,e,0)),t.s(B.e6d(60,e,0)),t.s(B.e6d(88,e,0));var r=this.e7a().a78(uu(t),db()),s=W.i6d(-88,e,176,30),u=s;this.b7a_1.s(Qc(u,r,"GridElement_Line"));var o=this.e7a().z78(B.e6d(0,e-3,0),i.toString(),1e7);o.g79_1.y7a_1=!1;var _=s=W.i6d(-90,e-3,180,0);this.b7a_1.s(Qc(_,o,"GridElement_LongitudeLabel"))}while(n<=60);var h=0;if(h<=45)do{var a=h;h=h+1|0;var l=4*a-92;if(0!==a||46!==a){var c=0;if(c<=3)do{var f=c;c=c+1|0,t.b1();var v=90*f-180;t.s(B.e6d(l,v,0)),t.s(B.e6d(l,v+30,0)),t.s(B.e6d(l,v+60,0)),3===f?t.s(B.e6d(l,180,0)):t.s(B.e6d(l,v+90,0));var d=this.e7a().a78(ju(t),wb()),w=W.i6d(l,v,3,90);this.b7a_1.s(Qc(w,d,"GridElement_Line"))}while(c<=3)}var p=this.e7a().z78(B.e6d(l+2,0,0),_f().p7e_1[a],1e7);p.g79_1.y7a_1=!1;var m=W.i6d(l+2,-180,3,360);this.b7a_1.s(Qc(m,p,"GridElement_LatitudeLabel"))}while(h<=45)},Pr(If).v7j=function(){return this.u7j_1},Pr(If).s77=function(){var t=new Yc,n=t,i=hy(0,255,0);n.g2("GraticuleLineColor",i);var e=t,r=hy(0,255,0);e.g2("LabelColor",r);var s=t,u=Oq("arial",wy(),14);s.g2("LabelFont",u),this.t77("Graticule.UTM.100000m",t);var o=t=new Yc,_=hy(0,102,255);o.g2("GraticuleLineColor",_);var h=t,a=hy(0,102,255);h.g2("LabelColor",a),this.t77("Graticule.UTM.10000m",t);var l=t=new Yc,c=hy(0,255,255);l.g2("GraticuleLineColor",c);var f=t,v=hy(0,255,255);f.g2("LabelColor",v),this.t77("Graticule.UTM.1000m",t);var d=t=new Yc,w=hy(0,153,153);d.g2("GraticuleLineColor",w);var p=t,m=hy(0,153,153);p.g2("LabelColor",m),this.t77("Graticule.UTM.100m",t);var g=t=new Yc,y=hy(102,255,204);g.g2("GraticuleLineColor",y);var b=t,$=hy(102,255,204);b.g2("LabelColor",$),this.t77("Graticule.UTM.10m",t);var k=t=new Yc,x=hy(153,153,255);k.g2("GraticuleLineColor",x);var q=t,S=hy(153,153,255);q.g2("LabelColor",S),this.t77("Graticule.UTM.1m",t)},Pr(If).y77=function(t){return t>=1e5?"Graticule.UTM.100000m":t>=1e4?"Graticule.UTM.10000m":t>=1e3?"Graticule.UTM.1000m":t>=100?"Graticule.UTM.100m":t>=10?"Graticule.UTM.10m":"Graticule.UTM.1m"},Pr(If).w77=function(t){Pr(Vc).w77.call(this,t),this.t7j_1.b1(),this.t7j_1.w7j(t)},Pr(If).v77=function(t){this.t7j_1.v77(t)},Pr(If).x7j=function(t,n,i,e){this.t7j_1.x7j(t,n,i,e)},Pr(If).y7j=function(t,n,i,e){return t>0?function(t,n,i,e,r){var s=rt.b6o(n,i,e,r);return new Ua(Zh(s.y6i_1),Qh(s.z6i_1),1e4)}(0,t,n,i,e):function(t,n,i,e){var r=et.b6n(n,i,e);return new Ua(Zh(r.e6j_1),Qh(r.f6j_1),1e4)}(0,n,i,e)},Pr(If).z7j=function(t,n,i,e,r,s,u){for(var o=as(),_=e/1e5,h=1e5*Math.floor(_),a=s/1e5,l=1e5*Math.floor(a),c=(r-h)/1e5,f=Math.ceil(c),v=ks(f),d=(u-l)/1e5,w=Math.ceil(d),p=ks(w),m=0,g=hs(Array(p),null);m1e6)return Xr;var r,s=this.w7m_1;if(null==s){var u=this.s7m_1?function(t){var n,i,e,r;vl().equals(t.u7m_1)?(e=13e5,r=27e5,n="Y"===t.t7m_1?13e5:2e6,i="Y"===t.t7m_1?2e6:27e5):(e=8e5,r=32e5,n="A"===t.t7m_1?8e5:2e6,i="A"===t.t7m_1?2e6:32e5);for(var s=t.e7a().z7j(t.v7m_1,t.u7m_1,t.t6u_1,n,i,e,r),u=s.v();u.w();)Ff(0,u.y());return s}(this):function(t){var n=rt.x6e(t.t6u_1.m65_1,t.t6u_1.k6a()),i=n.d6j_1,e=(n=rt.x6e(t.t6u_1.n65_1,t.t6u_1.k6a())).d6j_1;e=0===e?1e7:e;var r=(n=rt.x6e(t.t6u_1.m65_1,t.t6u_1.o65_1)).c6j_1;n=rt.x6e(t.t6u_1.n65_1,t.t6u_1.o65_1);var s=1e6-(r=Tu(n.c6j_1,r));"32V"===t.t7m_1&&(e+=2e4),"31X"===t.t7m_1&&(s+=1e5);for(var u=t.e7a().z7j(t.v7m_1,t.u7m_1,t.t6u_1,r,s,i,e),o=u.v();o.w();)Ff(0,o.y());return u}(this);this.w7m_1=u,r=u}else r=s;for(var o=r.v();o.w();){var _=o.y();_.f7a(t)?_.v77(t):_.i7a()}},Pr(Hf).i7a=function(){Pr(Bc).i7a.call(this);var t=this.w7m_1;if(null==t);else for(var n=t.v();n.w();)n.y().i7a();this.w7m_1=null},Pr(Hf).h7a=function(){Pr(Bc).h7a.call(this);var t=qu([new Ua(this.t6u_1.m65_1,this.t6u_1.o65_1,1e4),new Ua(this.t6u_1.n65_1,this.t6u_1.o65_1,1e4)]),n=this.e7a().a78(ju(t),wb()),i=new Ga(this.t6u_1.m65_1,this.t6u_1.n65_1,this.t6u_1.o65_1,this.t6u_1.o65_1),e=i,r=n;if(this.b7a_1.s(Qc(e,r,"GridElement_LineWest")),!this.s7m_1){if(ku(this.t7m_1,"60")){t.b1(),t.s(new Ua(this.t6u_1.m65_1,this.t6u_1.p65_1,1e4)),t.s(new Ua(this.t6u_1.n65_1,this.t6u_1.p65_1,1e4)),n=this.e7a().a78(ju(t),wb());var s=i=new Ga(this.t6u_1.m65_1,this.t6u_1.n65_1,this.t6u_1.p65_1,this.t6u_1.p65_1),u=n;this.b7a_1.s(Qc(s,u,"GridElement_LineEast"))}t.b1(),t.s(new Ua(this.t6u_1.m65_1,this.t6u_1.o65_1,1e4)),t.s(new Ua(this.t6u_1.m65_1,this.t6u_1.p65_1,1e4)),n=this.e7a().a78(ju(t),wb());var o=i=new Ga(this.t6u_1.m65_1,this.t6u_1.m65_1,this.t6u_1.o65_1,this.t6u_1.p65_1),_=n;if(this.b7a_1.s(Qc(o,_,"GridElement_LineSouth")),Au(this.t7m_1,"X")){t.b1(),t.s(new Ua(this.t6u_1.n65_1,this.t6u_1.o65_1,1e4)),t.s(new Ua(this.t6u_1.n65_1,this.t6u_1.p65_1,1e4)),n=this.e7a().a78(ju(t),wb());var h=i=new Ga(this.t6u_1.n65_1,this.t6u_1.n65_1,this.t6u_1.o65_1,this.t6u_1.p65_1),a=n;this.b7a_1.s(Qc(h,a,"GridElement_LineNorth"))}}var l=this.e7a().z78(new Ua(this.t6u_1.j6a(),this.t6u_1.k6a(),0),this.t7m_1,1e7);this.b7a_1.s(Qc(this.t6u_1,l,"GridElement_GridZoneLabel"))},Pr(Wf).v77=function(t){Pr(Bc).v77.call(this,t);for(var n=this.e7a().z77(t),i=this.b7a_1.v();i.w();){var e=i.y();if(e.f7a(t)){if(e.k7c_1 instanceof eb){var r=e.k7c_1;if(n.m5i_1<72||!Ou("*32*34*36*","*"+r.f79_1+"*")){var s=r.h79_1;"GridElement_LatitudeLabel"===e.l7c_1?s=new Ua(s.m5i_1,n.n5i_1,s.q5i_1):"GridElement_LongitudeLabel"===e.l7c_1&&(s=new Ua(n.m5i_1,s.n5i_1,s.q5i_1)),r.e7i(s)}}var u=this.e7a(),o=this.e7a();u.u77(e.k7c_1,o.y77(1e6))}}},Pr(Wf).h7a=function(){Pr(Bc).h7a.call(this);var t=as(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e,r,s=6*i-180;t.b1(),t.s(B.e6d(-80,s,1e4)),t.s(B.e6d(-60,s,1e4)),t.s(B.e6d(-30,s,1e4)),t.s(B.e6d(0,s,1e4)),t.s(B.e6d(30,s,1e4)),s<6||s>36?(t.s(B.e6d(60,s,1e4)),e=84):(6===s?r=56:(t.s(B.e6d(60,s,1e4)),r=72),e=r);var u=e;t.s(B.e6d(u,s,1e4));var o=this.e7a().a78(uu(t),db()),_=W.i6d(-80,s,u+80,0),h=_;this.b7a_1.s(Qc(h,o,"GridElement_Line"));var a=this.e7a().z78(B.e6d(0,s-3,0),i.toString(),1e7),l=_=W.i6d(-90,s-3,180,0);this.b7a_1.s(Qc(l,a,"GridElement_LongitudeLabel"))}while(n<=60);var c=0;if(c<=4)do{var f=c;c=c+1|0,t.b1();var v=Bf().p7o_1[f][0],d=Bf().p7o_1[f][1],w=Bf().p7o_1[f][2];t.s(B.e6d(d,v,1e4)),t.s(B.e6d(w,v,1e4));var p=this.e7a().a78(ju(t),db()),m=W.i6d(d,v,w-d,0);this.b7a_1.s(Qc(m,p,"GridElement_Line"))}while(c<=4);var g=-80,y=0;if(y<=20)do{var b=y;y=y+1|0;var $=0;if($<=3)do{var k=$;$=$+1|0,t.b1();var x=90*k-180;t.s(B.e6d(g,x,1e4)),t.s(B.e6d(g,x+30,1e4)),t.s(B.e6d(g,x+60,1e4)),t.s(B.e6d(g,x+90,1e4));var q=this.e7a().a78(ju(t),wb()),S=W.i6d(g,x,0,90);this.b7a_1.s(Qc(S,q,"GridElement_Line"))}while($<=3);if(b<20){var C=this.e7a().z78(B.e6d(g+4,0,0),Vs(Hs("CDEFGHJKLMNPQRSTUVWX",b)),1e7),E=W.i6d(g+4,-180,0,360);this.b7a_1.s(Qc(E,C,"GridElement_LatitudeLabel"))}g+=g<72?8:12}while(y<=20)},Pr(Jf).b7j=function(t){this.y7i_1=t,this.b1()},Pr(Jf).w7j=function(t){try{var n=t.j5p_1;if(null==n);else{var i,e=n.m5i_1;i=-80<=e&&e<=84?rt.x6e(n.m5i_1,n.n5i_1).a6j_1:0,this.z7i_1=i}}catch(t){if(!(t instanceof bs))throw t;this.z7i_1=0}},Pr(Jf).b1=function(){for(var t=this.y7i_1,n=Ir(t),i=ks(n),e=0,r=hs(Array(i),null);ethis.y7i_1)return Xr;var r=Gf(this),s=Ir(e),u=r[ks(s)-1|0];"GridElement_LineEasting"!==i.l7c_1&&"GridElement_LineEast"!==i.l7c_1&&"GridElement_LineWest"!==i.l7c_1?("GridElement_LineNorthing"===i.l7c_1||"GridElement_LineSouth"===i.l7c_1||"GridElement_LineNorth"===i.l7c_1)&&(n.equals(u.v7o_1)?u.t7o_1=Tu(i.m7c_1,u.t7o_1):n.equals(dl())&&(u.t7o_1=i.m7c_1,u.v7o_1=n),n.equals(u.w7o_1)?u.u7o_1=yu(i.m7c_1,u.u7o_1):n.equals(vl())&&(u.u7o_1=i.m7c_1,u.w7o_1=n)):(u.r7o_1=Tu(i.m7c_1,u.r7o_1),u.s7o_1=yu(i.m7c_1,u.s7o_1))},Pr(Jf).v77=function(t){var n=t.j5p_1;if(null==n)return Xr;var i,e,r,s=n,u=t.n5p_1.t5j_1*t.i5p_1*-.5/2,o=t.n5p_1.u5j_1*t.i5p_1*-.5/2;if(this.z7i_1>0){var _=rt.x6e(s.m5i_1,s.n5i_1);i=_.c6j_1+u,e=_.d6j_1+o,r=_.b6j_1,e<0&&(e+=1e7,r=dl())}else{var h=et.x6e(s.m5i_1,s.n5i_1);i=h.h6j_1+u,e=h.i6j_1+o,r=h.g6j_1}var a,l=t.r5p_1,c=0,f=Gf(this).length-1|0;if(c<=f)do{var v=c;c=c+1|0;var d=Gf(this)[v],w=Math.pow(10,v),p=10*w,m=this.w7i_1.y77(w);if(d.r7o_1<=d.s7o_1)for(var g=d.r7o_1;g<=d.s7o_1;){if(v===(Gf(this).length-1|0)||g%p!=0){var y=(a=this.w7i_1.y7j(this.z7i_1,r,g,e)).m5i_1,b=a.n5i_1,$=this.w7i_1.q79(t,y,b);if(l.f6b($)&&Kf(this,t,$)){var k=ks(g%this.x7i_1/w).toString(),x=this.w7i_1.z78(new Ua(y,b,0),k,p);x.g79_1.y7a_1=!1,this.w7i_1.u77(x,m)}}g+=w}if(!d.w7o_1.equals(dl())||0!==d.u7o_1)for(var q=d.v7o_1,S=d.t7o_1;S<=d.u7o_1||!q.equals(d.w7o_1);){if(v===(Gf(this).length-1|0)||S%p!=0){var C=(a=this.w7i_1.y7j(this.z7i_1,q,i,S)).m5i_1,E=a.n5i_1,O=this.w7i_1.q79(t,C,E);if(l.f6b(O)&&Kf(this,t,O)){var j=ks(S%this.x7i_1/w).toString(),T=this.w7i_1.z78(new Ua(C,E,0),j,p);T.g79_1.y7a_1=!1,this.w7i_1.u77(T,m)}!q.equals(d.w7o_1)&&S>=1e7-w&&(q=d.w7o_1,S=-w)}S+=w}}while(c<=f)},Pr(Jf).toString=function(){var t=zu(),n=0;if(n<=4)do{var i=n;n=n+1|0,t.r5("level "),t.v7(i),t.r5(" : ");var e=Gf(this)[i];e.r7o_1Ar(100,4)},Pr(Zf).v77=function(t){Pr(iv).v77.call(this,t);for(var n=this.e7a().y77(this.r7k_1/10),i=this.b7a_1.v();i.w();){var e=i.y();e.f7a(t)&&(this.e7a().x7j(this.m7k_1,this.n7k_1,e,this.r7k_1),this.e7a().u77(e.k7c_1,n))}if(this.c7q(t)<=Ar(Ar(100,4),2))return Xr;var r,s=this.b7q_1;if(null==s){var u=function(t){var n=as(),i=t.r7k_1/10,e=0;if(e<=9)do{var r=e;e=e+1|0;var s=t.p7k_1+i*r,u=0;if(u<=9)do{var o=u;u=u+1|0;var _=t.q7k_1+i*o,h=new Zf(t.e7a(),t.m7k_1,t.n7k_1,t.o7k_1,s,_,i);h.a7l_1||n.s(h)}while(u<=9)}while(e<=9);return n}(this);this.b7q_1=u,r=u}else r=s;for(var o=r.v();o.w();){var _=o.y();_.f7a(t)?_.v77(t):_.i7a()}},Pr(Zf).i7a=function(){Pr(iv).i7a.call(this);var t=this.b7q_1;if(null==t);else for(var n=t.v();n.w();)n.y().i7a();this.b7q_1=null},Pr(Zf).h7a=function(){Pr(iv).h7a.call(this);var t=this.r7k_1/10,n=as(),i=1;if(i<=9)do{var e=i;i=i+1|0;var r=this.p7k_1+t*e;n.b1();var s=this.e7a().y7j(this.m7k_1,this.n7k_1,r,this.q7k_1),u=this.e7a().y7j(this.m7k_1,this.n7k_1,r,this.q7k_1+this.r7k_1);if(this.z7k_1?this.e7a().r79(s,u,this.o7k_1,n):(n.s(s),n.s(u)),n.n()>0){s=n.h1(0),u=n.h1(1);var o=this.e7a().a78(ju(n),db()),_=this.d7q(s,u),h=Fh().p5r(r);this.b7a_1.s(new nf(_,o,"GridElement_LineEasting",h))}}while(i<=9);var a=1;if(a<=9)do{var l=a;a=a+1|0;var c=this.q7k_1+t*l;n.b1();var f=this.e7a().y7j(this.m7k_1,this.n7k_1,this.p7k_1,c),v=this.e7a().y7j(this.m7k_1,this.n7k_1,this.p7k_1+this.r7k_1,c);if(this.z7k_1?this.e7a().r79(f,v,this.o7k_1,n):(n.s(f),n.s(v)),n.n()>0){f=n.h1(0),v=n.h1(1);var d=this.e7a().a78(ju(n),db()),w=this.d7q(f,v),p=Fh().p5r(c);this.b7a_1.s(new nf(w,d,"GridElement_LineNorthing",p))}}while(a<=9)},Pr(iv).e7a=function(){var t=Pr(Bc).e7a.call(this);return t instanceof If?t:Nr()},Pr(iv).d7q=function(t,n){var i=t.m5i_1,e=t.n5i_1,r=t.m5i_1,s=t.n5i_1;return n.m5i_1r&&(r=n.m5i_1),n.n5i_1s&&(s=n.n5i_1),new Ga(i,r,e,s)},Pr(iv).l7o=function(t){return this.o7k_1.n6d(t)},Pr(iv).c7q=function(t){var n=this.e7a().q79(t,this.y7k_1.m5i_1,this.y7k_1.n5i_1),i=t.m5p_1.z5q(n);return this.r7k_1/t.g5o(i)/t.d5p_1},Pr(sv).f7a=function(t){return!!Pr(iv).f7a.call(this,t)&&this.c7q(t)>100},Pr(sv).v77=function(t){Pr(iv).v77.call(this,t);var n=this.e7a().y77(this.r7k_1),i=this.b7a_1.v();t:for(;i.w();){var e=i.y();if(e.f7a(t)){if("GridElement_LineNorth"===e.l7c_1&&ev(this,t))continue t;if("GridElement_LineEast"===e.l7c_1&&rv(this,t))continue t;this.e7a().u77(e.k7c_1,n)}}if(this.c7q(t)<=Ar(100,2))return Xr;var r,s=this.f7m_1;if(null==s){var u=new Zf(this.e7a(),this.m7k_1,this.n7k_1,this.o7k_1,this.p7k_1,this.q7k_1,this.r7k_1);this.f7m_1=u,r=u}else r=s;var o=r;o.f7a(t)?o.v77(t):o.i7a()},Pr(sv).i7a=function(){Pr(iv).i7a.call(this);var t=this.f7m_1;null==t||t.i7a(),this.f7m_1=null},Pr(sv).h7a=function(){Pr(iv).h7a.call(this);var t=as();if(this.z7k_1?this.e7a().r79(this.t7k_1,this.v7k_1,this.o7k_1,t):(t.s(this.t7k_1),t.s(this.v7k_1)),t.n()>0){var n=t.h1(0),i=t.h1(1),e=this.e7a().a78(ju(t),db()),r=this.d7q(n,i),s=Fh(),u=this.p7k_1,o=s.p5r(u);this.b7a_1.s(new nf(r,e,"GridElement_LineWest",o))}if(t.b1(),this.z7k_1?this.e7a().r79(this.u7k_1,this.w7k_1,this.o7k_1,t):(t.s(this.u7k_1),t.s(this.w7k_1)),t.n()>0){var _=t.h1(0),h=t.h1(1),a=this.e7a().a78(ju(t),db()),l=this.d7q(_,h),c=Fh(),f=this.p7k_1+this.r7k_1,v=c.p5r(f);this.b7a_1.s(new nf(l,a,"GridElement_LineEast",v))}if(t.b1(),this.z7k_1?this.e7a().r79(this.t7k_1,this.u7k_1,this.o7k_1,t):(t.s(this.t7k_1),t.s(this.u7k_1)),t.n()>0){var d=t.h1(0),w=t.h1(1),p=this.e7a().a78(ju(t),db()),m=this.d7q(d,w),g=Fh(),y=this.q7k_1,b=g.p5r(y);this.b7a_1.s(new nf(m,p,"GridElement_LineSouth",b))}if(t.b1(),this.z7k_1?this.e7a().r79(this.v7k_1,this.w7k_1,this.o7k_1,t):(t.s(this.v7k_1),t.s(this.w7k_1)),t.n()>0){var $=t.h1(0),k=t.h1(1),x=this.e7a().a78(ju(t),db()),q=this.d7q($,k),S=Fh(),C=this.q7k_1+this.r7k_1,E=S.p5r(C);this.b7a_1.s(new nf(q,x,"GridElement_LineNorth",E))}var O=this.c7m_1;if(null==O);else{var j=this.x7k_1.q65(),T=Ph(this.y7k_1.m5i_1);if(j*Math.cos(T)>.2&&this.x7k_1.r65()>.2){var A=0!==this.m7k_1?this.y7k_1:this.l7o(new Ua(this.s7k_1.m5i_1,this.s7k_1.n5i_1,0))?this.s7k_1:this.s7k_1.m5i_1<=this.o7k_1.n65_1&&this.s7k_1.m5i_1>=this.o7k_1.m65_1?this.y7k_1:null;if(null!=A){var z=this.e7a().z78(new Ua(A.m5i_1,A.n5i_1,0),O,10*this.r7k_1),I=this.x7k_1;this.b7a_1.s(Qc(I,z,"GridElement_GridZoneLabel"))}}}},Pr(uv).n6y=function(){return this.m7q_1},Pr(uv).o6y=function(){return this.n7q_1},Pr(uv).r6y=function(t){this.p7q_1&&t.p68().w6v(this.q7q_1,this.r7q_1);var n,i=ys(sh),e=t.e5q_1.q2(i),r=null==e||ss(e,Qb)?e:Nr();if(null==r){var s=new Yq;t.e5q_1.g2(i,s),n=s}else n=r;var u=n,o=x.a5x(u),_=this.r7q_1,h=o.b5x_1,a=_.length;ps(_,h,0,0,a);for(var l=0,c=o.c5x_1,f=0,v=c.length;f0)){var s=kr.y5i(kr.t5i_1,"WmsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}if(this.y83_1.d1()){var u=kr.y5i(kr.t5i_1,"WmsLayerFactory","createLayer","missingLayerNames");throw is(Gr(u))}if(this.b84_1=this.z83_1,null==this.b84_1){if(this.cc_1=1,t=this.w83_1,n=this.x83_1,i=void 0,(i=new Zv(t,n,this)).ec_1=Xr,i.fc_1=null,(e=i.pc())===Js())return e;continue t}this.c84_1=this.b84_1,this.cc_1=2;continue t;case 1:this.c84_1=e,this.cc_1=2;continue t;case 2:if(this.d84_1=this.c84_1,this.cc_1=3,(e=Bv(this.w83_1,this.d84_1,this))===Js())return e;continue t;case 3:var o=e.e84(this.y83_1);if(o.d1()){var _=kr.h6e("WmsLayerFactory","createLayer","Provided layer names did not match available layers");throw is(Gr(_))}return Wv(this.w83_1,this.x83_1,this.d84_1,o,this.a84_1);case 4:throw this.fc_1}}catch(t){var h=t;if(4===this.dc_1)throw h;this.cc_1=this.dc_1,this.fc_1=h}},Pr(Zv).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.q80_1=Nk(),this.r80_1=!1,this.cc_1=1;continue t;case 1:this.dc_1=5,this.dc_1=4,this.t80_1=this.q80_1,this.u80_1=eo().f1u(this.p80_1).y5a().a5a("VERSION","1.3.0").a5a("SERVICE","WMS").a5a("REQUEST","GetCapabilities").y2(),this.v80_1=this.t80_1,this.w80_1=Gr(this.u80_1),this.x80_1=this.v80_1,this.y80_1=this.x80_1;var n=new uo;if(oo(n,this.w80_1),_o(n,!0),this.z80_1=n,this.z80_1.t28_1=ho().z1z_1,this.a81_1=this.y80_1,this.b81_1=this.z80_1,this.cc_1=2,(t=new ao(this.b81_1,this.a81_1).d2z(this))===Js())return t;continue t;case 2:if(this.c81_1=t,this.cc_1=3,(t=lo(this.c81_1,Wr,this))===Js())return t;continue t;case 3:this.s80_1=t,this.dc_1=6,this.cc_1=7;continue t;case 4:if(this.dc_1=5,this.fc_1 instanceof Error){var i=this.fc_1;try{this.r80_1=!0,this.q80_1.e1j()}catch(t){if(!(t instanceof Error))throw t;co(i,t)}throw i}throw this.fc_1;case 5:this.dc_1=6;var e=this.fc_1;throw this.r80_1||this.q80_1.e1j(),e;case 6:throw this.fc_1;case 7:var r=this.s80_1;return this.dc_1=6,this.r80_1||this.q80_1.e1j(),r}}catch(t){var s=t;if(6===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},Pr(Qv).f84=function(t,n,i,e,r){var s=new Jv(this,t,n,i,e,r);return s.ec_1=Xr,s.fc_1=null,s.pc()},Pr(Qv).g84=function(t,n,i,e,r,s){return i=i===Wr?null:i,e=e===Wr?null:e,s===Wr?this.f84(t,n,i,e,r):s.f84.call(this,t,n,i,e,r)},Pr(Qv).b83=function(t){var n=t.h1(0).d82(),i=null==n?null:n.i82(),e=null==i?null:i.m82_1,r=null==e?null:e.e82_1,s=null==r?null:r.i84_1,u=null==s?null:s.m84();if(null==u){var o=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Unable to resolve GetMap URL");throw fs(Gr(o))}for(var _=u,h=null,a=t.v();a.w();){var l=a.y().n84();null==h?h=wo(l):h.a1(vo(l))}var c=new Vv(_,Jr(t,",",Wr,Wr,Wr,Wr,Xv)),f=i.j82_1;if("1.3.0"!==f){var v=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Version not compatible");throw fs(Gr(v))}if(c.g7y_1=f,!0===(null==h?null:h.r("EPSG:4326")))c.i7y_1="EPSG:4326";else{if(!0!==(null==h?null:h.r("CRS:84"))){var d=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Coordinate systems not compatible");throw fs(Gr(d))}c.i7y_1="CRS:84"}var w,p=i.m82_1.e82_1.i84_1.k84_1,m=c;t:{for(var g=this.z82_1.v();g.w();){var y=g.y();if(p.r(y)){w=y;break t}}w=null}var b,$=w;if(null==$){var k=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Image Formats Not Compatible");throw fs(Gr(k))}b=$,m.j7y_1=b;var x,q=c;t:if(ss(t,rs)&&t.d1())x=!1;else{for(var S=t.v();S.w();)if(S.y().x81_1){x=!0;break t}x=!1}return q.k7y_1=!x,c},Pr(Qv).c83=function(t){for(var n=new Yb,i=17976931348623157e292,e=Ba(),r=t.v();r.w();){var s=r.y(),u=s.o84();null==u||(i=Tu(i,u));var o=s.p84();null==o||e.r6d(o)}if(e.t19()){var _=kr.h6e("WmsLayerFactory","getLevelSetConfigFromWmsCapabilities","Geographic Bounding Box Not Defined");throw fs(Gr(_))}n.q84_1.f66(e);var h,a=n;if(17976931348623157e292!==i){var l=28e-5*i/la().u6a_1.w6a_1;h=n.x84(l)}else h=20;return a.t84_1=h,n},Pr(id).s6w=function(t,n,i,e){var r=new Bq(t,n,i,e),s=this.x7y(t,n.g6v_1,n.h6v_1),u=r,o=Pq().a7v(s);return o.k7s_1=r,u.e7s_1=o,r},Pr(id).x7y=function(t,n,i){var e=eo().f1u(this.o7y_1).y5a();if(!(n>=1&&i>=1)){var r=kr.y5i(kr.t5i_1,"WmsTileFactory","urlForTile","invalidWidthOrHeight");throw is(Gr(r))}e.a5a("VERSION",this.p7y_1),e.a5a("SERVICE","WMS"),e.a5a("REQUEST","GetMap"),e.a5a("LAYERS",this.q7y_1);var s=this.r7y_1;e.a5a("STYLES",null==s?"":s),e.a5a("WIDTH",n.toString()),e.a5a("HEIGHT",i.toString());var u=this.t7y_1;if(e.a5a("FORMAT",null==u?"image/png":u),e.a5a("TRANSPARENT",this.u7y_1?"TRUE":"FALSE"),"1.3.0"===this.p7y_1){e.a5a("CRS",this.s7y_1);var o="CRS:84"===this.s7y_1?t.o65_1+","+t.m65_1+","+t.p65_1+","+t.n65_1:t.m65_1+","+t.o65_1+","+t.n65_1+","+t.p65_1;e.a5a("BBOX",o)}else{e.a5a("SRS",this.s7y_1);var _=t.o65_1+","+t.m65_1+","+t.p65_1+","+t.n65_1;e.a5a("BBOX",_)}var h=this.v7y_1;return null==h||e.a5a("TIME",h),Gr(e.y2())},Pr(hd).u89=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(hd).cd=function(t,n){return this.u89(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(hd).pc=function(){for(this.ec_1;;)try{var t=this.cc_1;if(0===t){this.dc_1=1;var n=fd().w87_1,i=this.s89_1,e=n.b38(),r=Zu(e,Ju(ys(Jm),Xu([]),!1));return n.u41(ss(r,Qu)?r:Nr(),i)}if(1===t)throw this.fc_1}catch(t){throw t}},Pr(hd).b1h=function(t,n){var i=new hd(this.s89_1,n);return i.t89_1=t,i},Pr(ad).pc=function(){var t,n,i,e=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4;var r=this.e8a_1;if(!(xu(r)>0)){var s=kr.y5i(kr.t5i_1,"WmtsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}var u=this.f8a_1;if(!(xu(u)>0)){var o=kr.y5i(kr.t5i_1,"WmtsLayerFactory","createLayer","missingLayerNames");throw is(Gr(o))}if(this.i8a_1=this.g8a_1,null==this.i8a_1){if(this.cc_1=1,t=this.d8a_1,n=this.e8a_1,i=void 0,(i=new ld(t,n,this)).ec_1=Xr,i.fc_1=null,(e=i.pc())===Js())return e;continue t}this.j8a_1=this.i8a_1,this.cc_1=2;continue t;case 1:this.j8a_1=e,this.cc_1=2;continue t;case 2:if(this.k8a_1=this.j8a_1,this.cc_1=3,(e=sd(this.d8a_1,this.k8a_1,this))===Js())return e;continue t;case 3:var _=e.l8a(this.f8a_1);n:do{if(null==_){var h=kr.h6e("WmtsLayerFactory","createLayer","Specified layer name was not found");throw is(Gr(h))}break n}while(0);return ud(this.d8a_1,this.e8a_1,this.k8a_1,_,this.h8a_1);case 4:throw this.fc_1}}catch(t){var a=t;if(4===this.dc_1)throw a;this.cc_1=this.dc_1,this.fc_1=a}},Pr(ld).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.y85_1=Nk(),this.z85_1=!1,this.cc_1=1;continue t;case 1:this.dc_1=5,this.dc_1=4,this.b86_1=this.y85_1,this.c86_1=eo().f1u(this.x85_1).y5a().a5a("VERSION","1.0.0").a5a("SERVICE","WMTS").a5a("REQUEST","GetCapabilities").y2(),this.d86_1=this.b86_1,this.e86_1=Gr(this.c86_1),this.f86_1=this.d86_1,this.g86_1=this.f86_1;var n=new uo;if(oo(n,this.e86_1),_o(n,!0),this.h86_1=n,this.h86_1.t28_1=ho().z1z_1,this.i86_1=this.g86_1,this.j86_1=this.h86_1,this.cc_1=2,(t=new ao(this.j86_1,this.i86_1).d2z(this))===Js())return t;continue t;case 2:if(this.k86_1=t,this.cc_1=3,(t=lo(this.k86_1,Wr,this))===Js())return t;continue t;case 3:this.a86_1=t,this.dc_1=6,this.cc_1=7;continue t;case 4:if(this.dc_1=5,this.fc_1 instanceof Error){var i=this.fc_1;try{this.z85_1=!0,this.y85_1.e1j()}catch(t){if(!(t instanceof Error))throw t;co(i,t)}throw i}throw this.fc_1;case 5:this.dc_1=6;var e=this.fc_1;throw this.z85_1||this.y85_1.e1j(),e;case 6:throw this.fc_1;case 7:var r=this.a86_1;return this.dc_1=6,this.z85_1||this.y85_1.e1j(),r}}catch(t){var s=t;if(6===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},Pr(cd).m8a=function(t,n,i,e,r){var s=new ad(this,t,n,i,e,r);return s.ec_1=Xr,s.fc_1=null,s.pc()},Pr(cd).n8a=function(t,n,i,e,r,s){return i=i===Wr?null:i,e=e===Wr?null:e,s===Wr?this.m8a(t,n,i,e,r):s.m8a.call(this,t,n,i,e,r)},Pr(dd).s6w=function(t,n,i,e){var r=new Bq(t,n,i,e),s=this.w8a(n.c6v_1,i,e);if(null==s);else{var u=r,o=Pq().a7v(s);o.k7s_1=r,u.e7s_1=o}return r},Pr(dd).w8a=function(t,n,i){if(t>=this.s8a_1.n())return kr.y5i(kr.u5i_1,"WmtsTileFactory","urlForTile","invalid level for tileMatrixIdentifiers: "+t),null;var e=((this.t8a_1<this.x6v()[1]&&js(this.x6v(),0)},Pr(cy).q5w=function(t,n,i,e){return this.k5g_1=t,this.l5g_1=n,this.m5g_1=i,this.n5g_1=e,this},Pr(cy).t5w=function(t){return this.q5w(t.k5g_1,t.l5g_1,t.m5g_1,t.n5g_1)},Pr(cy).w7a=function(t){var n,i,e=io(io(this.k5g_1,this.l5g_1),this.m5g_1),r=e-to(to(this.k5g_1,this.l5g_1),this.m5g_1);if(0===r)n=0,i=0;else{i=r/e;var s=(e-this.k5g_1)/6/r+.5,u=(e-this.l5g_1)/6/r+.5,o=(e-this.m5g_1)/6/r+.5;(n=this.k5g_1===e?o-u:this.l5g_1===e?.3333333333333333+s-o:this.m5g_1===e?.6666666666666666+u-s:0)<0?n+=1:n>1&&(n-=1)}t[0]=360*n,t[1]=i,t[2]=e},Pr(cy).z8i=function(t,n){var i=n;if(!((t.length-i|0)>=4)){var e=kr.y5i(kr.t5i_1,"Color","premultiplyToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.k5g_1*this.n5g_1;var s=i;i=s+1|0,t[s]=this.l5g_1*this.n5g_1;var u=i;return i=u+1|0,t[u]=this.m5g_1*this.n5g_1,t[i]=this.n5g_1,t},Pr(cy).equals=function(t){return this===t||t instanceof cy&&this.k5g_1===t.k5g_1&&this.l5g_1===t.l5g_1&&this.m5g_1===t.m5g_1&&this.n5g_1===t.n5g_1},Pr(cy).hashCode=function(){var t=Ss(this.k5g_1);return t=Ar(31,t)+Ss(this.l5g_1)|0,t=Ar(31,t)+Ss(this.m5g_1)|0,Ar(31,t)+Ss(this.n5g_1)|0},Pr(cy).toString=function(){return"Color(red="+this.k5g_1+", green="+this.l5g_1+", blue="+this.m5g_1+", alpha="+this.n5g_1+")"},Pr(cy).a8j=function(){var t=255*this.k5g_1,n=Yr(t),i=255*this.l5g_1,e=Yr(i),r=255*this.m5g_1;return"rgba("+n+", "+e+", "+Yr(r)+", "+this.n5g_1+")"},Pr(py).i63=function(t){return this.c5u_1.d8j()||this.b8j(t),this.c5u_1.d8j()&&t.v5u(this.c5u_1),this.c5u_1.d8j()},Pr(py).e5u=function(t,n,i){return this.c5u_1.d8j()||this.b8j(t),this.c5u_1.d8j()&&(this.e8j(t,n,i),this.d5u_1.g2(i,n)),this.c5u_1.d8j()},Pr(py).j63=function(t){var n=this.d5u_1.q2(t);if(null==n)throw fs(Gr("Invalid attachment type"));return n},Pr(py).b8j=function(t){var n=t.m5t();try{this.c5u_1=t.x5j_1.f8j(),t.x5j_1.w5u(hx(),this.c5u_1)}finally{t.x5j_1.w5u(hx(),n)}},Pr(py).e8j=function(t,n,i){var e=t.m5t();try{t.v5u(this.c5u_1);var r=null==n?null:n.g8j(t),s=null==r?oS().f5t_1:r;t.x5j_1.h8j(hx(),i,ax(),s,0)}finally{t.v5u(e)}},Pr(gy).toString=function(){return"TextCacheKey(text="+this.j8j_1+", attributes="+this.k8j_1+")"},Pr(gy).hashCode=function(){var t=null==this.j8j_1?0:Ws(this.j8j_1);return Ar(t,31)+(null==this.k8j_1?0:this.k8j_1.hashCode())|0},Pr(gy).equals=function(t){if(this===t)return!0;if(!(t instanceof gy))return!1;var n=t instanceof gy?t:Nr();return this.j8j_1==n.j8j_1&&!!qs(this.k8j_1,n.k8j_1)},Pr(by).w67=function(){var t=this.w5o_1;if(null!=t)return t;Gs("globe")},Pr(by).m68=function(){var t=this.x5o_1;if(null!=t)return t;Gs("terrainTessellator")},Pr(by).p68=function(){var t=this.y5o_1;if(null!=t)return t;Gs("terrain")},Pr(by).r68=function(){var t=this.z5o_1;if(null!=t)return t;Gs("layers")},Pr(by).k8l=function(){var t=this.a5p_1;if(null!=t)return t;Gs("currentLayer")},Pr(by).t6y=function(){var t=this.b5p_1;if(null!=t)return t;Gs("camera")},Pr(by).v68=function(){var t=this.c5p_1;if(null!=t)return t;Gs("renderResourceCache")},Pr(by).l8l=function(){var t=this.i5q_1;return du("tessellator",1,vu,(function(t){return t.l8l()}),null),t.j2()},Pr(by).w1h=function(){this.d5p_1=1,this.e5p_1=1,this.f5p_1=0,this.g5p_1=0,this.h5p_1=0,this.i5p_1=0,this.j5p_1=null,this.k5p_1=null,this.l5p_1=new Hr(0,0),this.m5p_1.h5u(0,0,0),this.n5p_1.v5j(),this.o5p_1.i5u(),this.p5p_1.i5u(),this.q5p_1.i5u(),this.r5p_1.a6b(),this.s5p_1=null,this.t5p_1=null,this.u5p_1=null,this.v5p_1=null,this.w5p_1=null,this.x5p_1=null,this.y5p_1=null,this.z5p_1=!1,this.b5q_1=0,this.a5q_1=!1,this.c5q_1=0,this.d5q_1.b1()},Pr(by).g5o=function(t){if(0===this.c5q_1){var n=.5*Ph(this.t6y().l5i_1),i=Math.tan(n);this.c5q_1=2*i/this.n5p_1.u5j_1}return t*this.c5q_1},Pr(by).m8l=function(t,n,i){var e=t.s5l_1,r=t.t5l_1,s=t.w5l_1,u=this.p5p_1.m5l_1,o=u[0]*e+u[1]*r+u[2]*s+u[3],_=u[4]*e+u[5]*r+u[6]*s+u[7],h=u[8]*e+u[9]*r+u[10]*s+u[11],a=u[12]*e+u[13]*r+u[14]*s+u[15],l=this.o5p_1.m5l_1,c=l[0]*o+l[1]*_+l[2]*h+l[3]*a,f=l[4]*o+l[5]*_+l[6]*h+l[7]*a,v=l[8]*o+l[9]*_+l[10]*h+l[11]*a,d=l[12]*o+l[13]*_+l[14]*h+l[15]*a;return 0!==d&&(c/=d,f/=d,!((v/=d)<-1||v>1||(v=l[8]*o+l[9]*_+l[10]*h*(1+n)+l[11]*a,f=.5*f+.5,v=.5*(v=os(v/=d,-1,1))+.5,c=(c=.5*c+.5)*this.n5p_1.t5j_1+this.n5p_1.r5j_1,f=f*this.n5p_1.u5j_1+this.n5p_1.s5j_1,i.s5l_1=c,i.t5l_1=f,i.w5l_1=v,0)))},Pr(by).n8l=function(t,n,i){return this.o8l(t.m5i_1,t.n5i_1,t.q5i_1,n,i)},Pr(by).o8l=function(t,n,i,e,r){switch(e.y9_1){case 0:this.w67().f5m(t,n,i*this.e5p_1,r);break;case 1:if(!this.p68().s6u(t,n,r)){var s=this.w67(),u=s.p5m(t,n);s.f5m(t,n,u*this.e5p_1,r)}break;case 2:if(this.p68().s6u(t,n,r))0!==i&&(this.w67().r5m(t,n,this.h5q_1),r.s6e(this.h5q_1.h6a(i)));else{var o=this.w67(),_=i+o.p5m(t,n);o.f5m(t,n,_*this.e5p_1,r)}}return r},Pr(by).p8l=function(t,n,i){var e=this.v68(),r=e.q2(t),s=null==r?i?e.q8l(t,n):null:r;return null==s||s instanceof xy?s:Nr()},Pr(by).l74=function(t,n,i,e){return i=i===Wr||i,e===Wr?this.p8l(t,n,i):e.p8l.call(this,t,n,i)},Pr(by).r8l=function(t,n,i){var e=this.v68();this.g5q_1.j8j_1=t,this.g5q_1.k8j_1=n;var r,s=e.q2(this.g5q_1),u=null==s||s instanceof xy?s:Nr();if(null==u){var o;if(i){var _,h=this.f5q_1.u8l(t,n);null==h?_=null:(e.d69(new gy(t,Tb(n)),h,h.v8l()),_=h),o=_}else o=null;r=o}else r=u;return r},Pr(by).a7x=function(t){var n=this.s5p_1;null==n||n.l60(t,ih(),0)},Pr(by).e69=function(t,n){var i=this.s5p_1;null==i||i.l60(t,eh(),n)},Pr(by).w8l=function(t,n){var i=this.s5p_1;null==i||i.l60(t,(th(),$),-n)},Pr(by).o6x=function(t,n){var i=this.t5p_1;null==i||i.l60(t,eh(),n)},Pr(by).m60=function(){var t=this.s5p_1;null==t||t.m60();var n=this.t5p_1;null==n||n.m60()},Pr(by).x8l=function(){var t=this.s5p_1,n=null==t?null:t.y5g();return null==n?0:n},Pr(by).b5h=function(t){var n=this.u5p_1;null==n||n.b5h(t)},Pr(by).u68=function(){return this.b5q_1=this.b5q_1+1|0,this.b5q_1>16777215&&(this.b5q_1=1),this.b5q_1},Pr(ky).y8l=function(t,n,i,e,r){if(!(t>=0&&n>=0)){var s=kr.y5i(kr.t5i_1,"Texture","estimateByteCount","invalidWidthOrHeight");throw is(Gr(s))}var u=$x(t),o=e===ux()?i===He||i===Ve?u:i===Be?Ar(u,2):i===We?Ar(u,3):(sx(),Ar(u,4)):e===Yk()||e===Ye||e===Ge||e===Ke?Ar(u,2):(Gk(),Ar(u,4)),_=$x(n),h=Ar(o,_);return r&&(h=h+(h/3|0)|0),h},Pr(xy).v8l=function(){return vi.y8l(this.r5t_1,this.s5t_1,this.t5t_1,this.u5t_1,this.z8l())},Pr(xy).z8l=function(){return this.z5t_1},Pr(xy).a8m=function(t){var n=this.y5t_1,i=null==n?null:n.q2(t);return null==i?0:i},Pr(xy).b5u=function(t,n){var i,e=this.y5t_1;if(null==e){var r=Kr();this.y5t_1=r,i=r}else i=e;i.g2(t,n)},Pr(xy).g8j=function(t){return this.x5t_1.d8j()||this.b8m(t),this.x5t_1},Pr(xy).v61=function(t){return this.x5t_1.d8j()||this.b8m(t),this.x5t_1.d8j()&&t.a5v(this.x5t_1),this.x5t_1.d8j()&&this.a5u_1!==t.j5k_1&&(this.d8m(t),this.a5u_1=t.j5k_1),this.x5t_1.d8j()},Pr(xy).b8m=function(t){var n=t.o5t();try{this.x5t_1=t.x5j_1.e8m(),t.x5j_1.b5v(ax(),this.x5t_1),this.f8m(t),this.d8m(t)}finally{t.x5j_1.b5v(ax(),n)}},Pr(xy).f8m=function(t){this.v5t_1&t.x5j_1.h8m()&&t.x5j_1.g8m(ax(),0,this.t5t_1,1,1,0,this.t5t_1,this.u5t_1,null),t.x5j_1.g8m(ax(),0,this.t5t_1,this.r5t_1,this.s5t_1,0,this.t5t_1,this.u5t_1,null)},Pr(xy).d8m=function(t){var n;if(t.j5k_1)t.x5j_1.i8m(ax(),Xk(),Jk());else{var i=this.a8m(Xk());n=i,0!==i?t.x5j_1.i8m(ax(),Xk(),n):t.x5j_1.i8m(ax(),Xk(),this.z8l()?Xe:dx())}if(t.j5k_1)t.x5j_1.i8m(ax(),Zk(),Jk());else{var e=this.a8m(Zk());n=e,0!==e?t.x5j_1.i8m(ax(),Zk(),n):t.x5j_1.i8m(ax(),Zk(),dx())}var r=this.a8m(Qk());n=r,0!==r?t.x5j_1.i8m(ax(),Qk(),n):t.x5j_1.i8m(ax(),Qk(),wx());var s=this.a8m(nx());n=s,0!==s?t.x5j_1.i8m(ax(),nx(),n):t.x5j_1.i8m(ax(),nx(),wx())},Pr(qy).o5s=function(t){return this.e62_1.d8j()&&t.d5v(this.b62_1,this.e62_1),this.e62_1.d8j()},Pr(qy).k8m=function(t){var n=t.c5v(this.b62_1);try{this.e62_1.d8j()||this.l8m(t),t.d5v(this.b62_1,this.e62_1),this.m8m(t)}catch(n){if(!(n instanceof bs))throw n;var i=n;this.n8m(t),kr.i69(kr.t5i_1,"BufferObject","loadBuffer","Exception attempting to load buffer data",i)}finally{t.d5v(this.b62_1,n)}},Pr(qy).l8m=function(t){this.e62_1=t.x5j_1.o8m()},Pr(qy).n8m=function(t){this.e62_1.d8j()&&(t.x5j_1.p8m(this.e62_1),this.e62_1=rS().g5t_1)},Pr(Ey).w1h=function(){this.o5u_1=0,this.p5u_1=0},Pr(Ey).c5l=function(){this.w1h(),cs(this.n5u_1,rS().g5t_1)},Pr(Ey).f5v=function(t,n){var i=n.length;return this.l5u_1t.l5u_1)return-1;n.x5j_1.r8m(t.j5u_1,t.p5u_1,r,i);var s=t.p5u_1;return t.p5u_1=t.p5u_1+r|0,s}(this,t,n)):-1},Pr(Oy).o5s=function(t){return null==this.n5s_1||this.k8m(t),this.n5s_1=null,Pr(qy).o5s.call(this,t)},Pr(Oy).m8m=function(t){var n=this.n5s_1;null==n||t.x5j_1.q8m(this.b62_1,this.c62_1,n,vx())},Pr(jy).o5s=function(t){return null==this.t5y_1||this.k8m(t),this.t5y_1=null,Pr(qy).o5s.call(this,t)},Pr(jy).m8m=function(t){var n=this.t5y_1;null==n||t.x5j_1.u8m(this.b62_1,this.c62_1,n,vx())},Pr(Ty).o5s=function(t){return null==this.x5s_1||this.k8m(t),this.x5s_1=null,Pr(qy).o5s.call(this,t)},Pr(Ty).m8m=function(t){var n=this.x5s_1;null==n||t.x5j_1.v8m(this.b62_1,this.c62_1,n,vx())},Pr(Hy).g72=function(){var t=this.h5x_1;if(null!=t)return t;Gs("gl")},Pr(Hy).c69=function(){for(var t=0,n=this.v72(),i=0,e=n.length;i0&&a<=l||c<0&&l<=a)do{var f=a;a=a+c|0;var v=n[f]-s,d=n[f+1|0]-u,w=n[f+2|0]-o,p=v*v+d*d+w*w;_>p&&(_=p)}while(f!==l);var m=_;return Math.sqrt(m)},Pr(Ky).e8o=function(t,n,i){var e=i.i5u();return e.z6b(1/(t.r5t_1*n),1/(t.s5t_1*n)),e.b6c(t.w5t_1),e},Pr(Ky).q6w=function(t){qs(t.k5p_1,this.q78_1)||(this.w1h(),this.q78_1=t.k5p_1)},Pr(Ky).w1h=function(){this.u78_1.d6a(),this.t78_1.v5j()},Pr(Xy).q8o=function(t){var n=as(),i=cu(t),e=this.r8o(t);n.s(0),n.s(1);var r=2;if(r(t/2|0))i=Po(i-1),n.s(i);else{var u=i;i=Po(u+1),n.s(u)}s===(t/2|0)&&n.s(cu(s)),n.s(cu(s))}while(rthis.q8p_1,s=r?90:0,u=2*_s()/this.u8p_1,o=t.w67().h5o(),_=t.w67().e6p(),h=Math.max(o,_);r?(i=this.p8p_1/h,e=this.q8p_1/h):(i=this.q8p_1/h,e=this.p8p_1/h);var a=Ar(Jy().r8o(this.u8p_1),5),l=0,c=new Float64Array(n),f=Pa(),v=0,d=this.u8p_1;if(v0&&w<(this.u8p_1/2|0)){var C=l;l=C+1|0,c[C]=m}w<1&&(f=new Ua(S.m5i_1,S.n5i_1,this.o8p_1.q5i_1),this.v8q(t,S.m5i_1,S.n5i_1,this.o8p_1.q5i_1,this.c8q_1,!0)),this.v8q(t,S.m5i_1,S.n5i_1,this.o8p_1.q5i_1,this.c8q_1,!1)}while(v=this.t8p_1)return n;var i=t.n8l(this.o8p_1,this.h78_1,Jy().o8o_1),e=this.p8p_1,r=this.q8p_1,s=Math.max(e,r),u=i.z5q(t.m5p_1)-s;if(u<=0)return this.t8p_1;var o=t.g5o(u),_=this.w8q()/o/this.s8p_1/n,h=Math.log(_)/Math.log(2),a=Math.ceil(h),l=Fo(ks(a),0);return gu(n<<=l,this.t8p_1)},Pr(Zy).s8q=function(t){return 0==(t%2|0)?t:t-1|0},Pr(Zy).w8q=function(){var t=this.p8p_1,n=this.q8p_1,i=(3*t+n)*(t+3*n);return _s()*(3*(t+n)-Math.sqrt(i))},Pr(Zy).w1h=function(){Pr(Ky).w1h.call(this),this.v8p_1=new Float32Array(0),this.y8p_1=new Float32Array(0)},Pr(eb).e7i=function(t){this.h79_1.g5m(t)},Pr(eb).x78=function(t){this.i79_1=t},Pr(eb).h8r=function(){return this.i79_1},Pr(eb).w8n=function(t){this.l79_1=t},Pr(eb).x8n=function(){return this.l79_1},Pr(eb).y8n=function(){var t=this.n79_1;if(null!=t)return t;Gs("activeAttributes")},Pr(eb).i8r=function(){return this.h79_1},Pr(eb).j8r=function(t,n){this.e7i(n)},Pr(eb).r6y=function(t){var n=this.f79_1;if(!1!==(null==n?null:0===xu(n)))return Xr;var i=t.w67().f6p();if(!1===(null==i?null:i.n6d(this.h79_1)))return Xr;var e=t.w67().q5m()?Nh():this.h8r();if(t.n8l(this.h79_1,e,nb().y8q_1.z8q_1),nb().y8q_1.g8r_1=this.o79_1?0:t.w67().q5m()?t.h5p_1:t.m5p_1.z5q(nb().y8q_1.z8q_1),this.p79_1>0&&nb().y8q_1.g8r_1>this.p79_1)return Xr;var r=0;if(nb().y8q_1.g8r_10)}else n=!1;return n},Pr(gb).u8v=function(t){return!(!this.y8n().l8u_1||!this.h8v_1&&t.z5p_1||this.h8r().equals(Nh())||t.w67().q5m())},Pr(bb).z8v=function(t){var n=yb();return n.h8u_1=t,n},Pr(bb).a8w=function(t){var n=yb();return n.h8u_1=t,n.l8u_1=!0,n},Pr($b).r8u=function(t){this.n8u_1.t5w(t)},Pr($b).b8w=function(t){this.o8u_1.y6c(t)},Pr($b).equals=function(t){return this===t||t instanceof $b&&!!qs(this.h8u_1,t.h8u_1)&&!!this.n8u_1.equals(t.n8u_1)&&!!this.o8u_1.equals(t.o8u_1)&&this.i8u_1===t.i8u_1&&this.j8u_1===t.j8u_1&&this.k8u_1===t.k8u_1&&this.l8u_1===t.l8u_1&&this.m8u_1===t.m8u_1&&!!this.p8u_1.equals(t.p8u_1)&&!!this.q8u_1.equals(t.q8u_1)},Pr($b).hashCode=function(){var t=this.h8u_1,n=null==t?null:t.hashCode(),i=null==n?0:n;return i=Ar(31,i)+this.n8u_1.hashCode()|0,i=Ar(31,i)+this.o8u_1.hashCode()|0,i=Ar(31,i)+Ss(this.i8u_1)|0,i=Ar(31,i)+Ss(this.j8u_1)|0,i=Ar(31,i)+Oo(this.k8u_1)|0,i=Ar(31,i)+Oo(this.l8u_1)|0,i=Ar(31,i)+Oo(this.m8u_1)|0,i=Ar(31,i)+this.p8u_1.hashCode()|0,Ar(31,i)+this.q8u_1.hashCode()|0},Pr(kb).t7w=function(){return new Object},Pr(qb).k8w=function(t,n,i,e,r){return this.j8w_1.j8y(r instanceof by?r:Nr(),t,n,i,e)},Pr(qb).k8y=function(t,n){return this.j8w_1.l8y(n instanceof by?n:Nr(),t)},Pr(qb).m8y=function(t,n){return this.j8w_1.n8y(n instanceof by?n:Nr(),t)},Pr(qb).o8y=function(t,n){return this.j8w_1.p8y(n instanceof by?n:Nr(),t)},Pr(Sb).y8y=function(t){return this.w1h(),this.g8x_1.s(t)},Pr(Sb).w1h=function(){Pr(Ky).w1h.call(this),this.h8x_1=new Float32Array(0),this.j8x_1=new Float32Array(0),this.m8x_1.b1(),this.n8x_1.b1(),this.o8x_1.b1(),this.p8x_1.b1()},Pr(Sb).b8o=function(t){if(this.g8x_1.d1())return Xr;var n,i,e,r;if(this.o8q(t)&&(this.n8q(t),this.q8x_1=xb().t7w(),this.r8x_1=xb().t7w(),this.s8x_1=xb().t7w(),this.t8x_1=xb().t7w()),this.p78_1){var s,u=ys(xh),o=t.e5q_1.q2(u),_=null==o||ss(o,Qb)?o:Nr();if(null==_){var h=new Yq;t.e5q_1.g2(u,h),s=h}else s=_;var a=s;i=(n=T.a65(a)).d65_1,this.v8x_1=this.c8o(t,this.t78_1),n.b65_1=t.w67().n5j_1,n.c65_1.f66(this.t78_1),r=(e=T.a65(a)).d65_1,e.b65_1=t.w67().n5j_1,e.c65_1.f66(this.t78_1)}else{var l,c=ys(wh),f=t.e5q_1.q2(c),v=null==f||ss(f,Qb)?f:Nr();if(null==v){var d=new Yq;t.e5q_1.g2(c,d),l=d}else l=v;var w=l;i=(n=C.x61(w)).y61_1,r=(e=C.x61(w)).y61_1,this.v8x_1=this.d8o(t,this.h8x_1,this.i8x_1,5,this.u8x_1)}var p,m=i,g=ys(Yy),y=t.v68(),b=y.q2(g);if(null==b){var $=new Yy;y.d69(g,$,$.c69()),p=$}else p=b;var k=p;m.y5v_1=k instanceof Yy?k:Nr();var x,q=i,S=this.q8x_1,E=t.v68(),O=E.q2(S);if(null==O){var j=new Oy(Vk(),this.h8x_1,this.i8x_1);E.d69(S,j,j.c62_1),x=j}else x=O;var A=x;q.z5v_1=A instanceof Oy?A:Nr();var z,I=i,D=this.r8x_1,M=t.v68(),N=M.q2(D);if(null==N){for(var R=new Int32Array(this.m8x_1.n()+this.n8x_1.n()|0),P=0,L=this.m8x_1.v();L.w();){var F=L.y(),U=P;P=U+1|0,R[U]=F}for(var H=this.n8x_1.v();H.w();){var V=H.y(),B=P;P=B+1|0,R[B]=V}var W=new jy(Bk(),R);M.d69(D,W,W.c62_1),z=W}else z=N;var Y=z;I.a5w_1=Y instanceof jy?Y:Nr(),r.h5w_1=!0;var G,K=r,X=ys(Yy),J=t.v68(),Z=J.q2(X);if(null==Z){var Q=new Yy;J.d69(X,Q,Q.c69()),G=Q}else G=Z;var tt=G;K.y5v_1=tt instanceof Yy?tt:Nr();var nt,it=r,et=this.s8x_1,rt=t.v68(),st=rt.q2(et);if(null==st){var ut=new Oy(Vk(),this.j8x_1);rt.d69(et,ut,ut.c62_1),nt=ut}else nt=st;var ot=nt;it.z5v_1=ot instanceof Oy?ot:Nr();var _t,ht=r,at=this.t8x_1,lt=t.v68(),ct=lt.q2(at);if(null==ct){for(var ft=new Int32Array(this.o8x_1.n()+this.p8x_1.n()|0),vt=0,dt=this.o8x_1.v();dt.w();){var wt=dt.y(),pt=vt;vt=pt+1|0,ft[pt]=wt}for(var mt=this.p8x_1.v();mt.w();){var gt=mt.y(),yt=vt;vt=yt+1|0,ft[yt]=gt}var bt=new jy(Bk(),ft);lt.d69(at,bt,bt.c62_1),_t=bt}else _t=ct;var $t=_t;ht.a5w_1=$t instanceof jy?$t:Nr(),this.p8q(t,i),this.q8q(t,r),i.b5w_1.y5q(this.u8x_1),i.c5w_1=20,i.d5w_1=this.j78_1,i.e5w_1=this.y8n().m7b_1,i.f5w_1=this.y8n().n7b_1,r.b5w_1.y5q(this.u8x_1),r.d5w_1=!1,r.e5w_1=this.y8n().m7b_1,r.f5w_1=this.y8n().n7b_1,this.p78_1||this.y8n().s7b_1.n5g_1>=1?(t.e69(n,0),t.e69(e,0)):(t.w8l(e,this.v8x_1),t.w8l(n,this.v8x_1))},Pr(Sb).p8q=function(t,n){if(!this.y8n().j7b_1)return Xr;var i,e=this.y8n().q7b_1;if(null==e)i=null;else{var r,s=t.l74(e,xb().e8w_1);if(null==s)r=null;else{var u=t.g5o(this.v8x_1);this.e8o(s,u,this.b8y_1),n.w5w(s),r=n.x5w(this.b8y_1)}i=r}if(null==i&&n.w5w(null),n.s5w(t.z5p_1?this.s78_1:this.y8n().s7b_1),n.u5w(t.z5p_1?1:t.k8l().o6y()),n.z5w(2,12),n.a5t(Kk(),this.m8x_1.n(),Gk(),0),this.j78_1){n.w5w(null);var o=Kk(),_=this.n8x_1.n(),h=Gk(),a=this.m8x_1.n();n.a5t(o,_,h,Ar(a,4))}},Pr(Sb).q8q=function(t,n){if(!this.y8n().k7b_1)return Xr;var i,e=this.y8n().r7b_1;if(null==e)i=null;else{var r,s=t.l74(e,xb().f8w_1);if(null==s)r=null;else{var u=t.g5o(this.v8x_1);this.e8o(s,u,this.b8y_1),n.w5w(s),r=n.x5w(this.b8y_1)}i=r}if(null==i&&n.w5w(null),n.s5w(t.z5p_1?this.s78_1:this.y8n().t7b_1),n.u5w(t.z5p_1?1:t.k8l().o6y()),n.v5w(this.y8n().p7b_1),n.a5t(Kk(),this.o8x_1.n(),Gk(),0),this.y8n().l7b_1&&this.j78_1){n.s5w(t.z5p_1?this.s78_1:this.y8n().t7b_1),n.u5w(t.z5p_1?1:t.k8l().o6y()),n.v5w(this.y8n().p7b_1),n.w5w(null);var o=Kk(),_=this.p8x_1.n(),h=Gk(),a=this.o8x_1.n();n.a5t(o,_,h,Ar(a,4))}},Pr(Sb).o8q=function(t){return 0===this.h8x_1.length||!(!this.j78_1||this.p78_1)&&0===this.j8x_1.length},Pr(Sb).n8q=function(t){var n=this.n78_1<=0||this.i78_1.equals(wb()),i=0,e=0,r=0,s=0,u=this.g8x_1.n()-1|0;if(s<=u)do{var o=s;s=s+1|0;var _=this.g8x_1.h1(o);_.d1()||(n?(i=i+_.n()|0,e=e+(_.n()+2|0)|0,r=r+_.n()|0):!_.d1()&&_.h1(0).equals(_.h1(_.n()-1|0))?(i=i+(_.n()+Ar(_.n()-1|0,this.n78_1)|0)|0,e=e+((2+_.n()|0)+Ar(_.n()-1|0,this.n78_1)|0)|0,r=r+_.n()|0):(i=i+(_.n()+Ar(_.n(),this.n78_1)|0)|0,e=e+((3+_.n()|0)+Ar(_.n(),this.n78_1)|0)|0,r=r+_.n()|0))}while(s<=u);this.i8x_1=0,this.h8x_1=this.j78_1&&!this.p78_1?new Float32Array(Ar(Ar(i,2),5)):this.p78_1?new Float32Array(Ar(i+this.g8x_1.n()|0,5)):new Float32Array(Ar(i,5)),this.m8x_1.b1(),this.n8x_1.b1(),this.k8x_1=0,this.l8x_1=Ar(e,10),this.j8x_1=this.j78_1&&!this.p78_1?new Float32Array(Ar(e,10)+Ar(Ar(r,4),10)|0):new Float32Array(Ar(e,10)),this.o8x_1.b1(),this.p8x_1.b1(),this.t8q(t);var h=t.l8l();Xi.z8y(h,0,0,1),Xi.a8z(h,100111,this.x8x_1),Xi.a8z(h,100107,this.x8x_1),Xi.a8z(h,100110,this.x8x_1),Xi.a8z(h,100109,this.x8x_1),Xi.b8z(h,t);var a=0,l=this.g8x_1.n()-1|0;if(a<=l)do{var c=a;a=a+1|0;var f=this.g8x_1.h1(c);if(!f.d1()){Xi.c8z(h);var v=f.h1(0);this.d8z(t,v.m5i_1,v.n5i_1,v.q5i_1,0),this.e8z(t,v.m5i_1,v.n5i_1,v.q5i_1,!0,!1),this.e8z(t,v.m5i_1,v.n5i_1,v.q5i_1,!1,!1);var d=1,w=f.n();if(d>1,12),i=new Float32Array(t+n|0),e=this.h8x_1,r=e.length;ps(e,i,0,0,r),this.h8x_1=i}},Pr(Eb).k8z=function(t){this.s7b_1.t5w(t)},Pr(Eb).g7b=function(t){this.t7b_1.t5w(t)},Pr(Eb).l8z=function(t){return this.j7b_1=t.j7b_1,this.k7b_1=t.k7b_1,this.l7b_1=t.l7b_1,this.m7b_1=t.m7b_1,this.n7b_1=t.n7b_1,this.o7b_1=t.o7b_1,this.s7b_1.t5w(t.s7b_1),this.t7b_1.t5w(t.t7b_1),this.p7b_1=t.p7b_1,this.q7b_1=t.q7b_1,this.r7b_1=t.r7b_1,this},Pr(Eb).equals=function(t){return this===t||t instanceof Eb&&this.j7b_1===t.j7b_1&&this.k7b_1===t.k7b_1&&this.l7b_1===t.l7b_1&&this.m7b_1===t.m7b_1&&this.n7b_1===t.n7b_1&&this.o7b_1===t.o7b_1&&!!this.s7b_1.equals(t.s7b_1)&&!!this.t7b_1.equals(t.t7b_1)&&this.p7b_1===t.p7b_1&&!!qs(this.q7b_1,t.q7b_1)&&!!qs(this.r7b_1,t.r7b_1)},Pr(Eb).hashCode=function(){var t=Oo(this.j7b_1);t=Ar(31,t)+Oo(this.k7b_1)|0,t=Ar(31,t)+Oo(this.l7b_1)|0,t=Ar(31,t)+Oo(this.m7b_1)|0,t=Ar(31,t)+Oo(this.n7b_1)|0,t=Ar(31,t)+Oo(this.o7b_1)|0,t=Ar(31,t)+this.s7b_1.hashCode()|0,t=Ar(31,t)+this.t7b_1.hashCode()|0,t=Ar(31,t)+Ss(this.p7b_1)|0;var n=Ar(31,t),i=this.q7b_1,e=null==i?null:i.hashCode(),r=Ar(31,t=n+(null==e?0:e)|0),s=this.r7b_1,u=null==s?null:s.hashCode();return r+(null==u?0:u)|0},Pr(Ob).r6y=function(t){if(this.m70_1.f66(this.s8i_1),this.m70_1.t19()||!this.m70_1.l6d(t.p68().e5s())||!this.f6y(t).l68(t.r5p_1))return Xr;var n=t.l74(this.k70_1,this.l70_1);if(null==n)return Xr;var i,e=n,r=t.z5p_1?1:t.k8l().o6y(),s=this.m8z(t),u=ys(Ch),o=t.e5q_1.q2(u),_=null==o||ss(o,Qb)?o:Nr();if(null==_){var h=new Yq;t.e5q_1.g2(u,h),i=h}else i=_;var a=i,l=A.u65(a).e66(s,this.s8i_1,r,e,e.w5t_1,t.w67().n5j_1,this.m70_1);if(t.e69(l,0),t.z5p_1){var c=t.u68();w.j5g(c,l.y65_1),t.b5h(w.g5g(c,this,t.k8l()))}},Pr(Ob).m8z=function(t){var n,i=ys(Wy),e=t.v68(),r=e.q2(i);if(null==r){var s=new Wy;e.d69(i,s,s.c69()),n=s}else n=r;return n instanceof Wy?n:Nr()},Pr(Ab).h7b=function(t){this.b7b_1.t8z(t)},Pr(Ab).f7b=function(t){this.c7b_1.t5w(t)},Pr(Ab).u7h=function(t){this.d7b_1.y6c(t)},Pr(Ab).g7b=function(t){this.e7b_1.t5w(t)},Pr(Ab).equals=function(t){return this===t||t instanceof Ab&&!!this.b7b_1.equals(t.b7b_1)&&!!this.c7b_1.equals(t.c7b_1)&&!!this.d7b_1.equals(t.d7b_1)&&!!this.e7b_1.equals(t.e7b_1)&&this.x7a_1===t.x7a_1&&this.y7a_1===t.y7a_1&&this.z7a_1===t.z7a_1&&this.a7b_1===t.a7b_1},Pr(Ab).hashCode=function(){var t=this.b7b_1.hashCode();return t=Ar(31,t)+this.c7b_1.hashCode()|0,t=Ar(31,t)+this.d7b_1.hashCode()|0,t=Ar(31,t)+this.e7b_1.hashCode()|0,t=Ar(31,t)+Ss(this.x7a_1)|0,t=Ar(31,t)+Oo(this.y7a_1)|0,t=Ar(31,t)+Oo(this.z7a_1)|0,Ar(31,t)+Ss(this.a7b_1)|0},Pr(Ib).g7t=function(t){this.t7s_1=t,this.p6x()},Pr(Ib).r6y=function(t){if(t.p68().e5s().t19())return Xr;this.q6w(t),this.b7u(t),this.c7u(t),this.a7t_1=null,this.b7t_1=null,this.c7t_1=null},Pr(Ib).b7u=function(t){var n,i=ys(Wy),e=t.v68(),r=e.q2(i);if(null==r){var s=new Wy;e.d69(i,s,s.c69()),n=s}else n=r;var u=n;this.a7t_1=u instanceof Wy?u:Nr()},Pr(Ib).c7u=function(t){this.e7t_1.d1()&&this.u6w();var n=0,i=this.e7t_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.e7t_1.h1(e);this.d7u(t,r instanceof Bq?r:Nr())}while(n<=i)},Pr(Ib).u6w=function(){return Li.f6x(this.s7s_1.d6x(),this.r7s_1,this.e7t_1)},Pr(Ib).d7u=function(t,n){var i=t.w67().f6p();if(!1===(null==i?null:n.g6x(i)))return Xr;if(!n.g6x(this.s7s_1.w6w_1)||!n.g6x(t.p68().e5s())||!n.h6x(t))return Xr;var e=n.r6v_1.c6v_1>=this.s7s_1.b6x_1;if(n.r6v_1.k6x()||!n.j6x(t,this.u7s_1))return e&&this.e7u(t,n),Xr;var r=this.b7t_1,s=this.c7t_1,u=this.f7u(t,n,!!this.v7s_1&&e);null==u||this.w7s_1&&(this.b7t_1=n,this.c7t_1=u);var o=n.l6x(this.r7s_1,this.z7s_1,4),_=0,h=o.length-1|0;if(_<=h)do{var a=_;_=_+1|0;var l=o[a];this.d7u(t,l instanceof Bq?l:Nr())}while(_<=h);this.b7t_1=r,this.c7t_1=s},Pr(Ib).e7u=function(t,n){var i=this.g7u(t,n),e=this.b7t_1,r=this.c7t_1,s=t.z5p_1?1:t.k8l().o6y();if(null!=i){var u,o=ys(Ch),_=t.e5q_1.q2(o),h=null==_||ss(_,Qb)?_:Nr();if(null==h){var a=new Yq;t.e5q_1.g2(o,a),u=a}else u=h;var l=u,c=A.u65(l).g66(this.a7t_1,n.t6u_1,s,i,i.w5t_1,t.w67().n5j_1);t.e69(c,0)}else if(null!=e&&null!=r){this.d7t_1.y5w(r.w5t_1),this.d7t_1.b67(n.t6u_1,e.t6u_1);var f,v=ys(Ch),d=t.e5q_1.q2(v),w=null==d||ss(d,Qb)?d:Nr();if(null==w){var p=new Yq;t.e5q_1.g2(v,p),f=p}else f=w;var m=f,g=A.u65(m).g66(this.a7t_1,n.t6u_1,s,r,this.d7t_1,t.w67().n5j_1);t.e69(g,0)}},Pr(Ib).f7u=function(t,n,i){var e=n.e7s_1;if(null==e)return null;var r,s=e,u=n.f7s_1;if(null==u){var o,_=this.x7s_1;if(null==_)o=null;else{var h,a=_.s6w(n.t6u_1,n.r6v_1,n.s6v_1,n.t6v_1),l=(a instanceof Bq?a:Nr()).e7s_1;null==l?h=null:(n.f7s_1=l,h=l),o=h}r=o}else r=u;var c=r,f=!!this.y7s_1||qs(this.r7s_1,this.x7s_1),v=null==c||t.v68().i5j_1.k6s(c.hashCode());return t.p8l(v?s:us(c),this.t7s_1,!(!i||f&&v))},Pr(Ib).g7u=function(t,n,i,e){return i=i===Wr||i,e===Wr?this.f7u(t,n,i):e.f7u.call(this,t,n,i)},Pr(Ib).q6w=function(t){qs(t.k5p_1,this.f7t_1)||(this.p6x(),this.f7t_1=t.k5p_1)},Pr(Ib).p6x=function(){this.e7t_1.b1(),this.z7s_1.b1()},Pr(Db).b90=function(t){this.y8z_1=this.y8z_1+1|0,this.x8z_1=Ds.h3k(),this.z8z_1=t},Pr(Mb).b1=function(){this.e6s_1.b1()},Pr(Mb).k6s=function(t){var n=this.e6s_1.q2(t);if(null==n)return!1;var i=n;if(i.z8z_1)return!0;var e=Ds.h3k().o3z(i.x8z_1);return Ho(e,this.d6s_1)>0?(this.e6s_1.k2(t),!1):Ho(e,this.c6s_1)<0||i.y8z_1>this.b6s_1},Pr(Mb).c90=function(t,n){var i,e=this.e6s_1.q2(t);if(null==e){var r=new Db(this);this.e6s_1.g2(t,r),i=r}else i=e;i.b90(n)},Pr(Mb).o6s=function(t,n,i){var e;return n=n!==Wr&&n,i===Wr?(this.c90(t,n),e=Xr):e=i.c90.call(this,t,n),e},Pr(Mb).m6s=function(t){this.e6s_1.k2(t)},Pr(Nb).equals=function(t){return this===t||t instanceof Nb&&!!qs(this.j7s_1,t.j7s_1)},Pr(Nb).hashCode=function(){return Gu(this.j7s_1)},Pr(Nb).toString=function(){return Gr(this.j7s_1)},Pr(Lb).d6y=function(){var t=this.u6u_1;return du("extent",1,vu,(function(t){return t.d6y()}),null),t.j2()},Pr(Lb).x6v=function(){var t=this.v6u_1;return du("heightLimits",1,vu,(function(t){return t.x6v()}),null),t.j2()},Pr(Lb).h6x=function(t){return this.f6y(t).l68(t.r5p_1)},Pr(Lb).g6x=function(t){return this.t6u_1.a67(t)},Pr(Lb).b6y=function(t){var n=t.t6y().g5i_1,i=n.m5i_1-this.t6u_1.j6a(),e=Math.abs(i),r=n.n5i_1-this.t6u_1.k6a(),s=Math.abs(r),u=360-s;return e+Math.min(s,u)},Pr(Lb).e6y=function(t){var n=t.t6y().g5i_1,i=os(n.m5i_1,this.t6u_1.m65_1,this.t6u_1.n65_1),e=n.n5i_1-this.t6u_1.k6a(),r=e<-180?this.t6u_1.p65_1:e>180?this.t6u_1.o65_1:os(n.n5i_1,this.t6u_1.o65_1,this.t6u_1.p65_1),s=this.x6v()[0]*t.e5p_1,u=t.w67(),o=Fh().p5r(i),_=Fh().p5r(r);return u.f5m(o,_,s,this.a6v_1)},Pr(Lb).f6y=function(t){var n=t.w67(),i=t.l5p_1;i.equals(this.w6u_1)||(n.q5m()?js(this.x6v(),0):this.y6x(n));var e=t.e5p_1,r=t.k5p_1,s=t.w67().n5j_1;if(!i.equals(this.w6u_1)||e!==this.x6u_1||!qs(r,this.y6u_1)||!s.equals(this.z6u_1)){var u=this.x6v()[0]*e,o=this.x6v()[1]*e;this.d6y().k68(this.t6u_1,n,u,o)}return this.w6u_1=i,this.x6u_1=e,this.y6u_1=r,this.z6u_1=s,this.d6y()},Pr(Lb).y6x=function(t){this.x6v()[0]=34028235e31,this.x6v()[1]=-34028235e31,t.m5j_1.y6p(this.t6u_1,this.x6v()),this.x6v()[0]>this.x6v()[1]&&js(this.x6v(),0)},Pr(Ub).r5r=function(){if(this.e90_1>0){this.e90_1=this.e90_1-1|0;var t=this.e90_1,n=this.f90_1[t];return this.f90_1[t]=null,null==n||null!=n?n:Nr()}return null},Pr(Ub).h5s=function(t){if(null!=t){var n=this.f90_1.length;if(n===this.e90_1){var i=n>>1,e=Math.max(i,12),r=hs(Array(n+e|0),null),s=this.f90_1;ps(s,r,0,0,n),this.f90_1=r}var u=this.f90_1,o=this.e90_1;this.e90_1=o+1|0,u[o]=t}},Pr(Hb).k6x=function(){return this.c6v_1===(this.b6v_1.g90()-1|0)},Pr(Hb).q7r=function(){return this.b6v_1.h90(this.c6v_1+1|0)},Pr(Wb).g90=function(){return this.c6x_1.length},Pr(Wb).d6x=function(){return Vo(this.c6x_1)},Pr(Wb).h90=function(t){return 0<=t&&t<=(this.c6x_1.length-1|0)?this.c6x_1[t]:null},Pr(Yb).x84=function(t){if(!(t>0)){var n=kr.y5i(kr.t5i_1,"LevelSetConfig","numLevelsForMinResolution","invalidResolution");throw is(Gr(n))}var i=Fh().k69(t),e=this.s84_1.m5i_1/this.w84_1/i,r=Math.log(e)/Math.log(2),s=Math.floor(r),u=ks(s);return u<0&&(u=0),u+1|0},Pr(Kb).o9=function(t,n){return this.m90_1(t,n)},Pr(Kb).compare=function(t,n){return this.o9(t,n)},Pr(Jb).n90=function(){return this.z68_1},Pr(Jb).o90=function(){return this.b69_1=this.b69_1.jb(),this.b69_1},Pr(Jb).q2=function(t){var n,i=this.a69_1.q2(t);return null==i?n=null:(i.l90_1=this.o90(),n=i.j90_1),n},Pr(Jb).d69=function(t,n,i){this.y68_1.gb(Ps(i)).ca(this.w68_1)>0&&this.p90(i);var e=new Gb(t,n,i);e.l90_1=this.o90();var r=this.y68_1,s=e.k90_1;this.y68_1=r.gb(Ps(s));var u=this.a69_1.g2(t,e);if(null!=u){var o=this.y68_1,_=u.k90_1;if(this.y68_1=o.hb(Ps(_)),e.j90_1!==u.j90_1)return this.q90(u.i90_1,u.j90_1,e.j90_1,!1),u.j90_1}return null},Pr(Jb).b1=function(){this.a69_1.b1(),this.y68_1=new Hr(0,0)},Pr(Jb).p90=function(t){var n=this.r90(),i=0,e=n.n()-1|0;if(i<=e)t:do{var r=i;i=i+1|0;var s=n.h1(r);if(!(this.y68_1.ca(this.x68_1)>0||this.w68_1.hb(this.y68_1).ca(Ps(t))<0))break t;this.a69_1.k2(s.i90_1);var u=this.y68_1,o=s.k90_1;this.y68_1=u.hb(Ps(o)),this.q90(s.i90_1,s.j90_1,null,!0)}while(i<=e)},Pr(Jb).r90=function(){return Bo(this.a69_1.e2(),this.n90())},Pr(Jb).q90=function(t,n,i,e){},Pr(n$).r73=function(t){return this.s90(this.x7w(t),t)},Pr(n$).x7w=function(t){var n=this.w7w(t)-2451545,i=Fh().n69(280.46+.9856474*n),e=Fh().j69(Fh().n69(357.528+.9856003*n)),r=2*e,s=i+1.915*Math.sin(e)+.02*Math.sin(r),u=Fh().j69(s),o=Fh().j69(23.439-4e-7*n),_=Fh(),h=Math.sin(o)*Math.sin(u),a=Math.asin(h),l=_.u5n(a),c=Fh(),f=Math.cos(o)*Math.tan(u),v=Math.atan(f),d=c.u5n(v);return s>=90&&s<270&&(d=Uh(d,Fh().y5m_1)),new t$(l,function(t){var n;if(0<=t&&t<=360)n=t;else{var i=Fh(),e=Fh().n69(t);n=i.p5r(e)}return n}(d))},Pr(n$).s90=function(t,n){var i=this.w7w(n)-2451545,e=Fh().n69(280.46061837+360.98564736629*i),r=-Fh().n69(e-t.z7w_1),s=Jh(Fh().p5r(r));return new ya(t.y7w_1,s)},Pr(n$).w7w=function(t){var n=Wo(t,ns().g3z_1),i=n.p3k(),e=n.q3k()+1|0,r=n.r3k(),s=(n.r3l()+n.v3l()/60+n.z3l()/3600)/24;e<=2&&(i=i-1|0,e=e+12|0);var u=i/100,o=Math.floor(u),_=o/4,h=2-o+Math.floor(_),a=365.25*(i+4716|0),l=30.6001*(e+1|0);return Math.floor(a)+Math.floor(l)+r+h-1524.5+s},Pr(i$).f6x=function(t,n,i){var e=t.b6v_1.w6w_1,r=t.b6v_1.x6w_1,s=t.d6v_1,u=r.t6d(s.m5i_1,e.m65_1),o=r.v6d(s.m5i_1,e.n65_1),_=r.u6d(s.n5i_1,e.o65_1),h=r.w6d(s.n5i_1,e.p65_1),a=Hh(r.m65_1,u*s.m5i_1),l=Hh(r.o65_1,_*s.n5i_1),c=a,f=u;if(f<=o)do{var v=f;f=f+1|0;var d=Uh(c,s.m5i_1),w=l,p=_;if(p<=h)do{var m=p;p=p+1|0;var g=Uh(w,s.n5i_1),y=new Ga(c,d,w,g);i.s(n.s6w(y,t,v,m)),w=g}while(m!==h);c=d}while(v!==o);return i},Pr(e$).j6x=function(t,n){var i,e=this.r6v_1.i6v_1*t.w67().h5o();if(t.w67().q5m())i=t.i5p_1;else{var r=e,s=Ph(this.t6u_1.j6a());e=r*Math.cos(s);var u=this.e6y(t),o=u.z5q(t.m5p_1);if(Li.e6x_1&&this.r6v_1.d6v_1.m5i_1<=5.625){var _=u.s5m(t.m5p_1),h=t.w67().r5m(this.t6u_1.j6a(),this.t6u_1.k6a(),this.v6v_1),a=e,l=_.u5m(h)/(_.d6d()*h.d6d());e=a*Math.abs(l)}i=t.g5o(o)}return e>i*n*t.d5p_1},Pr(e$).c6y=function(t){var n=this.r6v_1.q7r();if(null==n)return[];var i=n,e=this.t6u_1.m65_1,r=this.t6u_1.o65_1,s=this.t6u_1.j6a(),u=this.t6u_1.k6a(),o=this.t6u_1.n65_1,_=this.t6u_1.p65_1,h=Ar(2,this.s6v_1),a=Ar(2,this.t6v_1),l=new Ga(e,s,r,u),c=t.s6w(l,i,h,a);h=Ar(2,this.s6v_1),a=Ar(2,this.t6v_1)+1|0,l=new Ga(e,s,u,_);var f=t.s6w(l,i,h,a);h=Ar(2,this.s6v_1)+1|0,a=Ar(2,this.t6v_1),l=new Ga(s,o,r,u);var v=t.s6w(l,i,h,a);return h=Ar(2,this.s6v_1)+1|0,a=Ar(2,this.t6v_1)+1|0,l=new Ga(s,o,u,_),[c,f,v,t.s6w(l,i,h,a)]},Pr(e$).l6x=function(t,n,i){var e,r=n.q2(this.u6v_1);if(null==r){var s=this.c6y(t);n.d69(this.u6v_1,s,i),e=s}else e=r;return e},Pr(o$).y90=function(t,n){var i=this.u90_1<0?2:1;if(0===t)return this.w90_1+this.x90_1;if(n<0&&t>0){var e=t-this.x90_1.length|0;return e=0){this.o91_1=this.o91_1-1|0;var e=this.r91_1;this.r91_1=e+1|0,new I$(this,e).c92()}else this.q91_1.s5(n)}return this},Pr(R$).ye=function(){this.o91_1>=this.m91_1.length&&this.s91("unexpected end of string inside format specification");var t=this.o91_1;return this.o91_1=t+1|0,Hs(this.m91_1,t)},Pr(R$).s91=function(t){throw is("bad format: "+t+" at ofset "+(this.o91_1-1|0)+' of "'+this.m91_1+'"')},Pr(R$).toString=function(){return this.q91_1.toString()},Pr(R$).z91=function(t){return this.f92(t)},Pr(R$).y91=function(t){return Gr(us(this.n91_1[t]))},Pr(R$).a92=function(t){return this.f92(t).oa_1},Pr(R$).b92=function(t){this.q91_1.r5(t),this.p91_1=-1},Pr(R$).t91=function(t){var n=this.f92(t);return n instanceof a_?Wo(n,ns().z3z()):n instanceof h_?n:n instanceof __?o_(n,0,0,0):Wo(function(t){if(!(t instanceof Date))throw is("Can't convert to LocalDateTime: "+Gr(t));return Vr().j3z(Us(t.getTime()))}(n),ns().z3z())},Pr(R$).f92=function(t){var n=us(this.n91_1[t]);return null!=n?n:Nr()},Pr(R$).d92=function(){this.r91_1=this.r91_1-1|0},Pr(P$).j8z=function(t){return(null==Ji&&new F$,Ji).j8z(t)},Pr(P$).j8l=function(){return nk().j8l()},Pr(P$).z8y=function(t,n,i,e){(t instanceof ik?t:Nr()).p93(n,i,e)},Pr(P$).a8z=function(t,n,i){(t instanceof ik?t:Nr()).q93(n,i)},Pr(P$).h8z=function(t,n,i,e){(t instanceof ik?t:Nr()).r93(n,i,e)},Pr(P$).b8z=function(t,n){(t instanceof ik?t:Nr()).s93(n)},Pr(P$).c8z=function(t){(t instanceof ik?t:Nr()).t93()},Pr(P$).f8z=function(t){(t instanceof ik?t:Nr()).u93()},Pr(P$).g8z=function(t){(t instanceof ik?t:Nr()).v93()},Pr(L$).q8y=function(t){},Pr(L$).r8y=function(t){},Pr(L$).s8y=function(t){},Pr(L$).t8y=function(){},Pr(L$).u8y=function(t){},Pr(L$).v8y=function(t,n,i,e){},Pr(L$).w8y=function(t,n){},Pr(L$).m8y=function(t,n){},Pr(L$).k8y=function(t,n){},Pr(L$).x8y=function(t){},Pr(L$).o8y=function(t,n){},Pr(L$).k8w=function(t,n,i,e,r){},Pr(F$).j8z=function(t){return 0===t?"no error":t>=100900&&t<=100904?this.g92_1[t-100900|0]:t>=100151&&t<=100158?this.g92_1[t-100150|0]:null},Pr(V$).f94=function(t,n){return new B$(new W$,t,n)},Pr(V$).g94=function(t){},Pr(V$).h94=function(t,n){return this.l94(t,t.i94_1,n)},Pr(V$).l94=function(t,n,i){var e=n;do{e=e.o94_1}while(null!=e.m94_1&&!t.k94_1.p94(t.j94_1,e.m94_1,i));var r=new W$(i);r.o94_1=e,r.n94_1=e.n94_1;var s=r;return e.n94_1.o94_1=s,e.n94_1=s,s},Pr(V$).q94=function(t){return t.m94_1},Pr(V$).r94=function(t){return t.n94_1},Pr(V$).s94=function(t){return t.o94_1},Pr(V$).t94=function(t){return t.i94_1.n94_1},Pr(V$).u94=function(t){t.n94_1.o94_1=t.o94_1,t.o94_1.n94_1=t.n94_1},Pr(V$).v94=function(t,n){var i=t.i94_1;do{i=i.n94_1}while(null!=i.m94_1&&!t.k94_1.p94(t.j94_1,n,i.m94_1));return i},Pr(tk).j8l=function(){return new ik},Pr(ik).p93=function(t,n,i){this.n92_1[0]=t,this.n92_1[1]=n,this.n92_1[2]=i},Pr(ik).q93=function(t,n){100100===t?this.d93_1=null==n?nk().j92_1:n:100106===t?this.j93_1=null==n?nk().j92_1:n:100104===t?(this.e93_1=null==n?nk().j92_1:n,this.w92_1=!(null==n)):100110===t?(this.d93_1=null==n?nk().j92_1:n,this.k93_1=this.d93_1,this.w92_1=!(null==n)):100101===t?this.f93_1=null==n?nk().j92_1:n:100107===t?this.l93_1=null==n?nk().j92_1:n:100102===t?this.g93_1=null==n?nk().j92_1:n:100108===t?this.m93_1=null==n?nk().j92_1:n:100103===t?this.h93_1=null==n?nk().j92_1:n:100109===t?this.n93_1=null==n?nk().j92_1:n:100105===t?this.i93_1=null==n?nk().j92_1:n:100111===t?this.o93_1=null==n?nk().j92_1:n:this.r95(100900)},Pr(ik).r93=function(t,n,i){var e=!1,r=new Float64Array(3);if(J$(this,2),this.z92_1){if(!Q$(this))return this.r95(100902),Xr;this.l92_1=null}for(var s=0;s<3;){var u=t[s+n|0];u<-1e150&&(u=-1e150,e=!0),u>1e150&&(u=1e150,e=!0),r[s]=u,s=s+1|0}if(e&&this.r95(100155),null==this.m92_1){if(this.a93_1<100)return function(t,n,i){var e=t.b93_1[t.a93_1];e.e94_1=i,e.d94_1[0]=n[0],e.d94_1[1]=n[1],e.d94_1[2]=n[2],t.a93_1=t.a93_1+1|0}(this,r,i),Xr;if(!Q$(this))return this.r95(100902),Xr}Z$(this,r,i)||this.r95(100902)},Pr(ik).s93=function(t){J$(this,0),this.k92_1=1,this.a93_1=0,this.z92_1=!1,this.m92_1=null,this.c93_1=t},Pr(ik).t93=function(){J$(this,1),this.k92_1=2,this.l92_1=null,this.a93_1>0&&(this.z92_1=!0)},Pr(ik).u93=function(){J$(this,2),this.k92_1=1},Pr(ik).v93=function(){try{if(J$(this,1),this.k92_1=0,null==this.m92_1){if(!this.w92_1&&Ok().j96(this))return this.c93_1=null,Xr;if(!Q$(this))throw l_()}if((null==ie&&new ok,ie).o96(this),!se.r96(this))throw l_();var t=us(this.m92_1);if(!this.s92_1){if(!(this.x92_1?ue.t96(t,1,!0):ue.s96(t)))throw l_();ne.u96(t),this.d93_1===nk().j92_1&&this.g93_1===nk().j92_1&&this.f93_1===nk().j92_1&&this.e93_1===nk().j92_1&&this.j93_1===nk().j92_1&&this.m93_1===nk().j92_1&&this.l93_1===nk().j92_1&&this.k93_1===nk().j92_1||(this.x92_1?Ok().w96(this,t):Ok().v96(this,t))}ne.q95(t),this.c93_1=null}catch(t){if(!(t instanceof bs))throw t;c_(t),this.r95(100902)}},Pr(ik).x96=function(t){this.j93_1!==nk().j92_1?this.j93_1.w8y(t,us(this.c93_1)):this.d93_1.q8y(t)},Pr(ik).y96=function(t){this.l93_1!==nk().j92_1?this.l93_1.k8y(t,us(this.c93_1)):this.f93_1.s8y(t)},Pr(ik).z96=function(t){this.k93_1!==nk().j92_1?this.k93_1.m8y(t,us(this.c93_1)):this.e93_1.r8y(t)},Pr(ik).a97=function(){this.m93_1!==nk().j92_1?this.m93_1.x8y(us(this.c93_1)):this.g93_1.t8y()},Pr(ik).b97=function(t,n,i,e){this.o93_1!==nk().j92_1?this.o93_1.k8w(t,n,i,e,us(this.c93_1)):this.i93_1.v8y(t,n,i,e)},Pr(ik).r95=function(t){this.n93_1!==nk().j92_1?this.n93_1.o8y(t,us(this.c93_1)):this.h93_1.u8y(t)},Pr(rk).c97=function(t,n,i){var e=n.a96_1-t.a96_1,r=i.a96_1-n.a96_1;return e+r>0?e0?(n.b96_1-i.b96_1)*e+(n.b96_1-t.b96_1)*r:0},Pr(rk).e97=function(t,n,i){var e=n.b96_1-t.b96_1,r=i.b96_1-n.b96_1;return e+r>0?e0?(n.a96_1-i.a96_1)*e+(n.a96_1-t.a96_1)*r:0},Pr(rk).g97=function(t,n,i,e){var r=t<0?0:t,s=i<0?0:i;return r<=s?0===s?(n+e)/2:n+r/(r+s)*(e-n):e+s/(r+s)*(n-e)},Pr(rk).h97=function(t,n,i,e,r){var s=t,u=n,o=i,_=e;if(!this.i97(s,u)){var h=s;s=u,u=h}if(!this.i97(o,_)){var a=o;o=_,_=a}if(!this.i97(s,o)){var l=s;s=o,o=l,l=u,u=_,_=l}if(this.i97(o,u))if(this.i97(u,_)){var c=this.c97(s,o,u),f=this.c97(o,u,_);c+f<0&&(c=-c,f=-f),r.a96_1=this.g97(c,o.a96_1,f,u.a96_1)}else{var v=this.d97(s,o,u),d=-this.d97(s,_,u);v+d<0&&(v=-v,d=-d),r.a96_1=this.g97(v,o.a96_1,d,_.a96_1)}else r.a96_1=(o.a96_1+u.a96_1)/2;if(!this.j97(s,u)){var w=s;s=u,u=w}if(!this.j97(o,_)){var p=o;o=_,_=p}if(!this.j97(s,o)){var m=o;o=s,s=m,m=_,_=u,u=m}if(this.j97(o,u))if(this.j97(u,_)){var g=this.e97(s,o,u),y=this.e97(o,u,_);g+y<0&&(g=-g,y=-y),r.b96_1=this.g97(g,o.b96_1,y,u.b96_1)}else{var b=this.f97(s,o,u),$=-this.f97(s,_,u);b+$<0&&(b=-b,$=-$),r.b96_1=this.g97(b,o.b96_1,$,_.b96_1)}else r.b96_1=(o.b96_1+u.b96_1)/2},Pr(rk).k97=function(t,n){return t.a96_1===n.a96_1&&t.b96_1===n.b96_1},Pr(rk).i97=function(t,n){return t.a96_1Math.abs(r)&&(n=1);var s=t[2],u=Math.abs(s),o=t[n];return u>Math.abs(o)&&(n=2),n},Pr(ok).a98=function(t,n){var i=t.m92_1,e=us(null==i?null:i.m95_1),r=new Float64Array(3),s=new Float64Array(3),u=hs(Array(3),null),o=hs(Array(3),null),_=new Float64Array(3),h=new Float64Array(3),a=new Float64Array(3);r[2]=-2e150,r[1]=r[2],r[0]=r[1],s[2]=2e150,s[1]=s[2],s[0]=s[1];for(var l=us(e.v95_1);l!==e;){for(var c=0;c<3;){var f=l.z95_1[c];fr[c]&&(r[c]=f,o[c]=l),c=c+1|0}l=us(l.v95_1)}var v=0;if(r[1]-s[1]>r[0]-s[0]&&(v=1),r[2]-s[2]>r[v]-s[v]&&(v=2),s[v]>=r[v])return n[0]=0,n[1]=0,n[2]=1,Xr;var d=0,w=us(u[v]),p=us(o[v]);for(_[0]=w.z95_1[0]-p.z95_1[0],_[1]=w.z95_1[1]-p.z95_1[1],_[2]=w.z95_1[2]-p.z95_1[2],l=us(e.v95_1);l!==e;){h[0]=l.z95_1[0]-p.z95_1[0],h[1]=l.z95_1[1]-p.z95_1[1],h[2]=l.z95_1[2]-p.z95_1[2],a[0]=_[1]*h[2]-_[2]*h[1],a[1]=_[2]*h[0]-_[0]*h[2],a[2]=_[0]*h[1]-_[1]*h[0];var m=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];m>d&&(d=m,n[0]=a[0],n[1]=a[1],n[2]=a[2]),l=us(l.v95_1)}d<=0&&(n[2]=0,n[1]=n[2],n[0]=n[1],n[this.z97(_)]=1)},Pr(ok).b98=function(t){for(var n=t.m92_1,i=us(null==n?null:n.n95_1),e=t.m92_1,r=us(null==e?null:e.m95_1),s=0,u=us(i.w94_1);u!==i;){var o=us(u.y94_1);if(o.l95_1<=0)u=us(u.w94_1);else{do{s+=(us(o.i95_1).a96_1-us(us(o.f95_1).i95_1).a96_1)*(us(o.i95_1).b96_1+us(us(o.f95_1).i95_1).b96_1),o=us(o.h95_1)}while(o!==u.y94_1);u=us(u.w94_1)}}if(s<0){for(var _=us(r.v95_1);_!==r;)_.b96_1=-_.b96_1,_=us(_.v95_1);t.p92_1[0]=-t.p92_1[0],t.p92_1[1]=-t.p92_1[1],t.p92_1[2]=-t.p92_1[2]}},Pr(ok).o96=function(t){var n=t.m92_1,i=us(null==n?null:n.m95_1),e=new Float64Array(3),r=!1;e[0]=t.n92_1[0],e[1]=t.n92_1[1],e[2]=t.n92_1[2],0===e[0]&&0===e[1]&&0===e[2]&&(this.a98(t,e),r=!0);var s=t.o92_1,u=t.p92_1,o=this.z97(e);s[o]=0,s[(o+1|0)%3|0]=this.l96_1,s[(o+2|0)%3|0]=this.m96_1,u[o]=0,u[(o+1|0)%3|0]=e[o]>0?-this.m96_1:this.m96_1,u[(o+2|0)%3|0]=e[o]>0?this.l96_1:-this.l96_1;for(var _=us(i.v95_1);_!==i;)_.a96_1=uk(0,_.z95_1,s),_.b96_1=uk(0,_.z95_1,u),_=us(_.v95_1);r&&this.b98(t)},Pr(ak).g98=function(t,n){var i=te,e=t instanceof ek?t:Nr();return i.i97(e,n instanceof ek?n:Nr())},Pr(ak).h98=function(){return new pk},Pr(ck).i98=function(){this.p98_1=[],this.o98_1=[]},Pr(ck).u98=function(t){var n=t,i=this.o98_1,e=this.p98_1,r=i[n].c98_1;t:for(;;){var s=n<<1;sthis.q98_1||ee.g98(us(e[r].d98_1),us(e[u].d98_1))){i[n].c98_1=r,e[r].e98_1=n;break t}i[n].c98_1=u,e[u].e98_1=n,n=s}},Pr(ck).v98=function(t){var n=t,i=this.o98_1,e=this.p98_1,r=i[n].c98_1;t:for(;;){var s=n>>1,u=i[s].c98_1;if(0===s||ee.g98(us(e[u].d98_1),us(e[r].d98_1))){i[n].c98_1=r,e[r].e98_1=n;break t}i[n].c98_1=u,e[u].e98_1=n,n=s}},Pr(ck).j98=function(){for(var t=this.q98_1;t>=1;)this.u98(t),t=t-1|0;return this.t98_1=!0,!0},Pr(ck).k98=function(t){var n;this.q98_1=this.q98_1+1|0;var i=this.q98_1;if(Ar(i,2)>this.r98_1){this.r98_1=this.r98_1<<1;for(var e=0,r=this.r98_1+1|0,s=hs(Array(r),null);e0&&(t[1].c98_1=t[this.q98_1].c98_1,n[t[1].c98_1].e98_1=1,n[i].d98_1=null,n[i].e98_1=this.s98_1,this.s98_1=i,this.q98_1=this.q98_1-1|0,this.q98_1>0&&this.u98(1)),e},Pr(ck).m98=function(t){var n=this.o98_1,i=this.p98_1,e=i[t].e98_1;n[e].c98_1=n[this.q98_1].c98_1,i[n[e].c98_1].e98_1=e,this.q98_1=this.q98_1-1|0,e<=this.q98_1&&(e<=1||ee.g98(us(i[n[e>>1].c98_1].d98_1),us(i[n[e].c98_1].d98_1))?this.u98(e):this.v98(e)),i[t].d98_1=null,i[t].e98_1=this.s98_1,this.s98_1=t},Pr(ck).n98=function(){return this.p98_1[this.o98_1[1].c98_1].d98_1},Pr(ck).w98=function(){return 0===this.q98_1},Pr(pk).i98=function(){this.z98_1.i98(),this.b99_1=null,this.a99_1=null},Pr(pk).j98=function(){var t=hs(Array(50),null),n=0,i=t.length-1|0;if(n<=i)do{var e=n;n=n+1|0,t[e]=new dk}while(n<=i);var r=0,s=2016473283;this.b99_1=new Int32Array(this.c99_1+1|0);for(var u=0,o=this.c99_1-1|0,_=0,h=u;h<=o;)us(this.b99_1)[h]=_,_=_+1|0,h=h+1|0;var a=t[r];null!=a&&(a.x98_1=u);var l,c,f=t[r];for(null!=f&&(f.y98_1=o),r=r+1|0;(r=r-1|0)>=0;){for(u=us(t[r]).x98_1,o=us(t[r]).y98_1;o>(u+10|0);){h=u+((s=Fs(Ar(s,1539415821)+1|0))%(1+(o-u|0)|0)|0)|0,_=us(this.b99_1)[h],us(this.b99_1)[h]=us(this.b99_1)[u],us(this.b99_1)[u]=_,h=u-1|0;var v=o+1|0;do{do{h=h+1|0}while(l=us(us(this.a99_1)[us(this.b99_1)[h]]),c=us(us(this.a99_1)[_]),!ee.g98(l,c));do{v=v-1|0}while(fk(0,us(us(this.a99_1)[us(this.b99_1)[v]]),us(us(this.a99_1)[_])));vk(0,us(this.b99_1),h,v)}while(hu&&fk(0,us(us(this.a99_1)[us(this.b99_1)[g-1|0]]),us(us(this.a99_1)[_]));)us(this.b99_1)[g]=us(this.b99_1)[g-1|0],g=g-1|0;us(this.b99_1)[g]=_,h=h+1|0}}return this.d99_1=this.c99_1,this.e99_1=!0,this.z98_1.j98(),!0},Pr(pk).k98=function(t){if(this.e99_1)return this.z98_1.k98(t);var n=this.c99_1;if(this.c99_1=this.c99_1+1|0,this.c99_1>=this.d99_1){this.d99_1=this.d99_1<<1;var i=this.d99_1,e=hs(Array(i),null),r=this.a99_1;if(null==r);else{var s=r.length;ps(r,e,0,0,s)}this.a99_1=e}return us(this.a99_1)[n]=t,0|-(n+1|0)},Pr(pk).l98=function(){if(0===this.c99_1)return this.z98_1.l98();var t=us(us(this.a99_1)[us(this.b99_1)[this.c99_1-1|0]]);if(!this.z98_1.w98()){var n=us(this.z98_1.n98());if(ee.g98(n,t))return this.z98_1.l98()}do{this.c99_1=this.c99_1-1|0}while(this.c99_1>0&&null==us(this.a99_1)[us(this.b99_1)[this.c99_1-1|0]]);return t},Pr(pk).n98=function(){if(0===this.c99_1)return this.z98_1.n98();var t=us(us(this.a99_1)[us(this.b99_1)[this.c99_1-1|0]]);if(!this.z98_1.w98()){var n=us(this.z98_1.n98());if(ee.g98(n,t))return n}return t},Pr(pk).m98=function(t){var n=t;if(n>=0)return this.z98_1.m98(n),Xr;for(n=0|-(n+1|0),us(this.a99_1)[n]=null;this.c99_1>0&&null==us(this.a99_1)[us(this.b99_1)[this.c99_1-1|0]];)this.c99_1=this.c99_1-1|0},Pr(qk).i99=function(t,n,i){t.y92_1=bk(Ok(),us(n.j95_1),t.y92_1)},Pr(Sk).i99=function(t,n,i){var e=n,r=i;t.x96(cr);var s=e.i95_1;t.y96(us(null==s?null:s.y95_1));var u=e.f95_1,o=null==u?null:u.i95_1;for(t.y96(us(null==o?null:o.y95_1));!yk(Ok(),us(e.j95_1));){var _=e.j95_1;null!=_&&(_.b95_1=!0),r=r.kb();var h=(e=us(e.g95_1)).f95_1,a=null==h?null:h.i95_1;t.y96(us(null==a?null:a.y95_1))}t.a97()},Pr(Ck).i99=function(t,n,i){var e=n,r=i;t.x96(Wk());var s=e.i95_1;t.y96(us(null==s?null:s.y95_1));var u=e.f95_1,o=null==u?null:u.i95_1;t.y96(us(null==o?null:o.y95_1));t:for(;!yk(Ok(),us(e.j95_1));){var _=e.j95_1;null!=_&&(_.b95_1=!0),r=r.kb();var h=e.h95_1,a=(e=us(null==h?null:h.f95_1)).i95_1;if(t.y96(us(null==a?null:a.y95_1)),yk(Ok(),us(e.j95_1)))break t;var l=e.j95_1;null!=l&&(l.b95_1=!0),r=r.kb();var c=(e=us(e.g95_1)).f95_1,f=null==c?null:c.i95_1;t.y96(us(null==f?null:f.y95_1))}t.a97()},Pr(Ek).v96=function(t,n){t.y92_1=null;for(var i=us(n.n95_1.w94_1);i!==n.n95_1;)i.b95_1=!1,i=us(i.w94_1);for(i=us(n.n95_1.w94_1);i!==n.n95_1;)i.c95_1&&!i.b95_1&&this.j99(t,i),i=us(i.w94_1);null!=t.y92_1&&(this.k99(t,t.y92_1),t.y92_1=null)},Pr(Ek).j99=function(t,n){var i=us(n.y94_1),e=mk();if(e.f99_1=new Hr(1,0),e.g99_1=i,e.h99_1=this.h96_1,!t.w92_1){var r=this.l99(i);r.f99_1.ca(e.f99_1)>0&&(e=r),(r=this.l99(us(i.h95_1))).f99_1.ca(e.f99_1)>0&&(e=r);var s=i.g95_1;(r=this.l99(us(null==s?null:s.f95_1))).f99_1.ca(e.f99_1)>0&&(e=r),(r=this.m99(i)).f99_1.ca(e.f99_1)>0&&(e=r),(r=this.m99(us(i.h95_1))).f99_1.ca(e.f99_1)>0&&(e=r);var u=i.g95_1;(r=this.m99(us(null==u?null:u.f95_1))).f99_1.ca(e.f99_1)>0&&(e=r)}var o=e.h99_1;null==o||o.i99(t,us(e.g99_1),e.f99_1)},Pr(Ek).l99=function(t){for(var n=gk(new Hr(0,0),null,this.f96_1),i=null,e=t;!yk(0,us(e.j95_1));)i=bk(0,us(e.j95_1),i),n.f99_1=n.f99_1.jb(),e=us(e.g95_1);e=t;t:for(;;){var r=e.f95_1;if(yk(0,us(null==r?null:r.j95_1)))break t;var s=e.f95_1;i=bk(0,us(null==s?null:s.j95_1),i),n.f99_1=n.f99_1.jb();var u=e.f95_1;e=us(null==u?null:u.h95_1)}return n.g99_1=e,$k(0,i),n},Pr(Ek).m99=function(t){var n=gk(new Hr(0,0),null,this.g96_1),i=new Hr(0,0),e=new Hr(0,0),r=null,s=t;t:for(;!yk(0,us(s.j95_1));){r=bk(0,us(s.j95_1),r),e=e.jb();var u=s.h95_1;if(s=us(null==u?null:u.f95_1),yk(0,us(s.j95_1)))break t;r=bk(0,us(s.j95_1),r),e=e.jb(),s=us(s.g95_1)}var o=s;s=t;t:for(;;){var _=s.f95_1;if(yk(0,us(null==_?null:_.j95_1)))break t;var h=s.f95_1;r=bk(0,us(null==h?null:h.j95_1),r),i=i.jb();var a=s.f95_1,l=(s=us(null==a?null:a.h95_1)).f95_1;if(yk(0,us(null==l?null:l.j95_1)))break t;var c=s.f95_1;r=bk(0,us(null==c?null:c.j95_1),r),i=i.jb();var f=s.f95_1,v=null==f?null:f.g95_1;s=us(null==v?null:v.f95_1)}var d=s;return n.f99_1=e.gb(i),kk(0,e)?n.g99_1=o.f95_1:kk(0,i)?n.g99_1=d:(n.f99_1=n.f99_1.kb(),n.g99_1=d.g95_1),$k(0,r),n},Pr(Ek).k99=function(t,n){var i=n,e=-1;for(t.x96(Kk());null!=i;){var r=us(i.y94_1);do{if(t.w92_1){var s=us(us(r.f95_1).j95_1).c95_1?0:1;e!==s&&(e=s,t.z96(!(0===e)))}var u=r.i95_1;t.y96(us(null==u?null:u.y95_1)),r=us(r.h95_1)}while(r!==i.y94_1);i=i.a95_1}t.a97()},Pr(Ek).w96=function(t,n){for(var i=us(n.n95_1.w94_1);i!==n.n95_1;){if(i.c95_1){t.x96(lr);var e=us(i.y94_1);do{var r=e.i95_1;t.y96(us(null==r?null:r.y95_1)),e=us(e.h95_1)}while(e!==i.y94_1);t.a97()}i=us(i.w94_1)}},Pr(Ek).n99=function(t,n,i){var e=t.b93_1,r=t.a93_1,s=new Float64Array(3),u=0;i||(n[2]=0,n[1]=n[2],n[0]=n[1]);for(var o=1,_=e[o].d94_1[0]-e[0].d94_1[0],h=e[o].d94_1[1]-e[0].d94_1[1],a=e[o].d94_1[2]-e[0].d94_1[2];(o=o+1|0)0){if(u<0)return 2;d=1}else{if(u>0)return 2;d=-1}u=d}}else v>=0?(n[0]=n[0]+s[0],n[1]=n[1]+s[1],n[2]=n[2]+s[2]):(n[0]=n[0]-s[0],n[1]=n[1]-s[1],n[2]=n[2]-s[2])}return u},Pr(Ek).j96=function(t){t.b93_1,t.a93_1;var n=new Float64Array(3);if(t.a93_1<3)return!0;n[0]=t.n92_1[0],n[1]=t.n92_1[1],n[2]=t.n92_1[2],0===n[0]&&0===n[1]&&0===n[2]&&this.n99(t,n,!1);var i=this.n99(t,n,!0);return 2!==i&&(0===i||!1)},Pr(zk).p94=function(t,n,i){var e=se,r=n instanceof U$?n:Nr();return e.p99(this.o99_1,r,i instanceof U$?i:Nr())},Pr(Ik).p99=function(t,n,i){var e=us(t.v92_1),r=n.w93_1,s=i.w93_1,u=r.f95_1;if((null==u?null:u.i95_1)===e){var o,_=s.f95_1;if((null==_?null:_.i95_1)===e){var h;if(te.i97(us(r.i95_1),us(s.i95_1))){var a=te,l=s.f95_1;h=a.d97(us(null==l?null:l.i95_1),us(r.i95_1),us(s.i95_1))<=0}else{var c=te,f=r.f95_1;h=c.d97(us(null==f?null:f.i95_1),us(s.i95_1),us(r.i95_1))>=0}o=h}else{var v=te,d=s.f95_1;o=v.d97(us(null==d?null:d.i95_1),e,us(s.i95_1))<=0}return o}var w=s.f95_1;if((null==w?null:w.i95_1)===e){var p=te,m=r.f95_1;return p.d97(us(null==m?null:m.i95_1),e,us(r.i95_1))>=0}var g=te,y=r.f95_1,b=g.c97(us(null==y?null:y.i95_1),e,us(r.i95_1)),$=te,k=s.f95_1;return b>=$.c97(us(null==k?null:k.i95_1),e,us(s.i95_1))},Pr(Ik).q99=function(t){t.w93_1.k95_1=null,Zi.u94(us(t.x93_1))},Pr(Ik).r99=function(t,n){return!!ne.v97(t.w93_1)&&(t.c94_1=!1,t.w93_1=n,n.k95_1=t,!0)},Pr(Ik).s99=function(t){var n=t,i=n.w93_1.i95_1;do{n=us(Ak(0,n))}while(n.w93_1.i95_1===i);if(n.c94_1){var e=ne.x97(us(Tk(0,n).w93_1.f95_1),us(n.w93_1.h95_1));if(!this.r99(n,e))return null;n=us(Ak(0,n))}return n},Pr(Ik).t99=function(t){var n=t,i=n.w93_1.f95_1,e=null==i?null:i.i95_1;do{var r=(n=us(Ak(0,n))).w93_1.f95_1}while((null==r?null:r.i95_1)===e);return n},Pr(Ik).u99=function(t,n,i){var e=new U$(i);return e.x93_1=Zi.l94(us(t.t92_1),us(n.x93_1),e),e.c94_1=!1,e.a94_1=!1,e.b94_1=!1,i.k95_1=e,e},Pr(Ik).v99=function(t,n){var i=t.r92_1;if(100130===i)return!(0==(1&n));if(100131===i)return!(0===n);if(100132===i)return n>0;if(100133===i)return n<0;if(100134===i)return n>=2||n<=-2;throw l_()},Pr(Ik).w99=function(t,n){n.y93_1=us(Ak(0,n)).y93_1+n.w93_1.l95_1|0,n.z93_1=this.v99(t,n.y93_1)},Pr(Ik).x99=function(t){var n=t.w93_1,i=us(n.j95_1);i.c95_1=t.z93_1,i.y94_1=n,this.q99(t)},Pr(Ik).y99=function(t,n){var i=t,e=t.w93_1;t:for(;i!==n;){i.c94_1=!1;var r=Tk(0,i),s=r.w93_1;if(s.i95_1!==e.i95_1){if(!r.c94_1){this.x99(i);break t}var u=ne,o=e.g95_1;if(s=u.x97(us(null==o?null:o.f95_1),us(s.f95_1)),!this.r99(r,s))throw l_()}if(e.g95_1!==s){var _=ne,h=s.f95_1;if(!_.u95(us(null==h?null:h.h95_1),s))throw l_();if(!ne.u95(e,s))throw l_()}this.x99(i),e=r.w93_1,i=r}return e},Pr(Ik).z99=function(t,n,i,e,r,s){var u=r,o=!0,_=i;do{this.u99(t,n,us(_.f95_1)),_=us(_.g95_1)}while(_!==e);if(null==u){var h=Tk(0,n).w93_1.f95_1;u=null==h?null:h.g95_1}for(var a,l=n,c=us(u);a=Tk(0,l),(_=us(a.w93_1.f95_1)).i95_1===c.i95_1;){if(_.g95_1!==c){var f=ne,v=_.f95_1;if(!f.u95(us(null==v?null:v.h95_1),_))throw l_();var d=ne,w=c.f95_1;if(!d.u95(us(null==w?null:w.h95_1),_))throw l_()}if(a.y93_1=l.y93_1-_.l95_1|0,a.z93_1=this.v99(t,a.y93_1),l.b94_1=!0,!o&&this.a9a(t,l)&&(jk(0,_,c),this.q99(l),!ne.v97(c)))throw l_();o=!1,l=a,c=_}l.b94_1=!0,s&&this.b9a(t,l)},Pr(Ik).c9a=function(t,n,i,e,r){var s=new Float64Array(3);s[0]=n.z95_1[0],s[1]=n.z95_1[1],s[2]=n.z95_1[2];var u=hs(Array(1),null);t.b97(s,i,e,u),n.y95_1=u[0],null==n.y95_1&&(r?t.s92_1||(t.r95(100156),t.s92_1=!0):n.y95_1=i[0])},Pr(Ik).d9a=function(t,n,i){var e=hs(Array(4),null),r=new Float32Array([.5,.5,0,0]),s=n.i95_1;e[0]=null==s?null:s.y95_1;var u=i.i95_1;if(e[1]=null==u?null:u.y95_1,this.c9a(t,us(n.i95_1),e,r,!1),!ne.u95(n,i))throw l_()},Pr(Ik).e9a=function(t,n,i,e){var r=te.n97(n,t),s=te.n97(i,t);e[0]=.5*s/(r+s),e[1]=.5*r/(r+s);var u=t.z95_1;u[0]=u[0]+(e[0]*n.z95_1[0]+e[1]*i.z95_1[0]);var o=t.z95_1;o[1]=o[1]+(e[0]*n.z95_1[1]+e[1]*i.z95_1[1]);var _=t.z95_1;_[2]=_[2]+(e[0]*n.z95_1[2]+e[1]*i.z95_1[2])},Pr(Ik).f9a=function(t,n,i,e,r,s){var u=hs(Array(4),null),o=new Float32Array(4),_=new Float32Array(2),h=new Float32Array(2);u[0]=i.y95_1,u[1]=e.y95_1,u[2]=r.y95_1,u[3]=s.y95_1,n.z95_1[2]=0,n.z95_1[1]=n.z95_1[2],n.z95_1[0]=n.z95_1[1],this.e9a(n,i,e,_),this.e9a(n,r,s,h);var a=_.length;ps(_,o,0,0,a);var l=h.length;ps(h,o,2,0,l),this.c9a(t,n,u,o,!0)},Pr(Ik).a9a=function(t,n){var i=Tk(0,n),e=n.w93_1,r=i.w93_1;if(te.i97(us(e.i95_1),us(r.i95_1))){var s=te,u=r.f95_1;if(s.d97(us(null==u?null:u.i95_1),us(e.i95_1),us(r.i95_1))>0)return!1;if(te.k97(us(e.i95_1),us(r.i95_1))){if(e.i95_1!==r.i95_1){var o=t.u92_1;if(null==o);else{var _=e.i95_1;o.m98(us(null==_?null:_.c96_1))}var h=r.f95_1;this.d9a(t,us(null==h?null:h.h95_1),e)}}else{ne.s95(us(r.f95_1));var a=ne,l=r.f95_1;if(!a.u95(e,us(null==l?null:l.h95_1)))throw l_();i.b94_1=!0,n.b94_1=i.b94_1}}else{var c=te,f=e.f95_1;if(c.d97(us(null==f?null:f.i95_1),us(r.i95_1),us(e.i95_1))<0)return!1;n.b94_1=!0;var v=Ak(0,n);null!=v&&(v.b94_1=n.b94_1),ne.s95(us(e.f95_1));var d=ne,w=r.f95_1;if(!d.u95(us(null==w?null:w.h95_1),e))throw l_()}return!0},Pr(Ik).g9a=function(t){var n=Tk(0,t),i=t.w93_1,e=n.w93_1,r=te,s=i.f95_1,u=us(null==s?null:s.i95_1),o=e.f95_1;if(r.i97(u,us(null==o?null:o.i95_1))){var _=te,h=i.f95_1,a=us(null==h?null:h.i95_1),l=e.f95_1;if(_.d97(a,us(null==l?null:l.i95_1),us(i.i95_1))<0)return!1;t.b94_1=!0;var c=Ak(0,t);null!=c&&(c.b94_1=t.b94_1);var f=ne.s95(i);if(!ne.u95(us(e.f95_1),f))throw l_();var v=f.j95_1;null!=v&&(v.c95_1=t.z93_1)}else{var d=te,w=e.f95_1,p=us(null==w?null:w.i95_1),m=i.f95_1;if(d.d97(p,us(null==m?null:m.i95_1),us(e.i95_1))>0)return!1;n.b94_1=!0,t.b94_1=n.b94_1;var g=ne.s95(e);if(!ne.u95(us(i.h95_1),us(e.f95_1)))throw l_();var y=g.f95_1,b=null==y?null:y.j95_1;null!=b&&(b.c95_1=t.z93_1)}return!0},Pr(Ik).h9a=function(t,n){var i=n,e=Tk(0,i),r=i.w93_1,s=e.w93_1,u=us(r.i95_1),o=us(s.i95_1),_=r.f95_1,h=us(null==_?null:_.i95_1),a=s.f95_1,l=us(null==a?null:a.i95_1),c=new ek;if(u===o)return!1;if(Tu(u.b96_1,h.b96_1)>yu(o.b96_1,l.b96_1))return!1;if(te.i97(u,o)){if(te.d97(l,u,o)>0)return!1}else if(te.d97(h,o,u)<0)return!1;te.h97(h,u,l,o,c),te.i97(c,us(t.v92_1))&&(c.a96_1=us(t.v92_1).a96_1,c.b96_1=us(t.v92_1).b96_1);var f=te.i97(u,o)?u:o;if(te.i97(f,c)&&(c.a96_1=f.a96_1,c.b96_1=f.b96_1),te.k97(c,u)||te.k97(c,o))return this.a9a(t,i),!1;if(!te.k97(h,us(t.v92_1))&&te.d97(h,us(t.v92_1),c)>=0||!te.k97(l,us(t.v92_1))&&te.d97(l,us(t.v92_1),c)<=0){if(l===t.v92_1){if(ne.s95(us(r.f95_1)),!ne.u95(us(s.f95_1),r))throw l_();r=Tk(0,i=us(this.s99(i))).w93_1,this.y99(Tk(0,i),e);var v=i,d=r.f95_1;return this.z99(t,v,us(null==d?null:d.h95_1),r,r,!0),!0}if(h===t.v92_1){ne.s95(us(s.f95_1));var w=ne,p=us(r.h95_1),m=s.f95_1;if(!w.u95(p,us(null==m?null:m.h95_1)))throw l_();e=i;var g=Tk(0,i=this.t99(i)).w93_1.f95_1,y=null==g?null:g.g95_1,b=e,$=s.f95_1;b.w93_1=us(null==$?null:$.h95_1),s=this.y99(e,null);var k=i,x=us(s.g95_1),q=r.f95_1;return this.z99(t,k,x,null==q?null:q.g95_1,y,!0),!0}if(te.d97(h,us(t.v92_1),c)>=0){i.b94_1=!0;var S=Ak(0,i);null!=S&&(S.b94_1=i.b94_1),ne.s95(us(r.f95_1));var C=r.i95_1;null!=C&&(C.a96_1=us(t.v92_1).a96_1);var E=r.i95_1;null!=E&&(E.b96_1=us(t.v92_1).b96_1)}if(te.d97(l,us(t.v92_1),c)<=0){e.b94_1=!0,i.b94_1=e.b94_1,ne.s95(us(s.f95_1));var O=s.i95_1;null!=O&&(O.a96_1=us(t.v92_1).a96_1);var j=s.i95_1;null!=j&&(j.b96_1=us(t.v92_1).b96_1)}return!1}ne.s95(us(r.f95_1)),ne.s95(us(s.f95_1));var T=ne,A=s.f95_1;if(!T.u95(us(null==A?null:A.h95_1),r))throw l_();var z=r.i95_1;null!=z&&(z.a96_1=c.a96_1);var I=r.i95_1;null!=I&&(I.b96_1=c.b96_1);var D=r.i95_1;null!=D&&(D.c96_1=us(t.u92_1).k98(r.i95_1)),this.f9a(t,us(r.i95_1),u,h,o,l),e.b94_1=!0,i.b94_1=e.b94_1;var M=Ak(0,i);return null!=M&&(M.b94_1=i.b94_1),!1},Pr(Ik).b9a=function(t,n){for(var i=n,e=Tk(0,i);;){for(;e.b94_1;)i=e,e=Tk(0,e);if(!i.b94_1){e=i;var r=Ak(0,i);if(null==r)return Xr;if(!(i=r).b94_1)return Xr}i.b94_1=!1;var s,u=i.w93_1,o=e.w93_1,_=u.f95_1,h=null==_?null:_.i95_1,a=o.f95_1;if(h!==(null==a?null:a.i95_1)&&this.g9a(i))if(e.c94_1){if(this.q99(e),!ne.v97(o))throw l_();o=(e=Tk(0,i)).w93_1}else if(i.c94_1){if(this.q99(i),!ne.v97(u))throw l_();u=(i=us(Ak(0,e))).w93_1}if(u.i95_1!==o.i95_1){var l,c=u.f95_1,f=null==c?null:c.i95_1,v=o.f95_1;if(f===(null==v?null:v.i95_1)||i.c94_1||e.c94_1)l=!1;else{var d,w=u.f95_1;if((null==w?null:w.i95_1)===t.v92_1)d=!0;else{var p=o.f95_1;d=(null==p?null:p.i95_1)===t.v92_1}l=d}if(l){if(this.h9a(t,i))return Xr}else this.a9a(t,i)}if(u.i95_1===o.i95_1){var m=u.f95_1,g=null==m?null:m.i95_1,y=o.f95_1;s=g===(null==y?null:y.i95_1)}else s=!1;if(s){if(jk(0,o,u),this.q99(i),!ne.v97(u))throw l_();i=us(Ak(0,e))}}},Pr(Ik).i9a=function(t,n,i){var e,r=n,s=i,u=us(s.g95_1),o=Tk(0,r),_=r.w93_1,h=o.w93_1,a=!1,l=_.f95_1,c=null==l?null:l.i95_1,f=h.f95_1;if(c!==(null==f?null:f.i95_1)&&this.h9a(t,r),te.k97(us(_.i95_1),us(t.v92_1))){var v=ne,d=u.f95_1;if(!v.u95(us(null==d?null:d.h95_1),_))throw l_();u=Tk(0,r=us(this.s99(r))).w93_1,this.y99(Tk(0,r),o),a=!0}if(te.k97(us(h.i95_1),us(t.v92_1))){var w=ne,p=s,m=h.f95_1;if(!w.u95(p,us(null==m?null:m.h95_1)))throw l_();s=this.y99(o,null),a=!0}if(a)return this.z99(t,r,us(s.g95_1),u,u,!0),Xr;if(te.i97(us(h.i95_1),us(_.i95_1))){var g=h.f95_1;e=us(null==g?null:g.h95_1)}else e=_;var y=e,b=ne,$=s.g95_1;y=b.x97(us(null==$?null:$.f95_1),y),this.z99(t,r,y,y.g95_1,y.g95_1,!1);var k=y.f95_1,x=null==k?null:k.k95_1;null!=x&&(x.c94_1=!0),this.b9a(t,r)},Pr(Ik).j9a=function(t,n,i){var e=n,r=e.w93_1;if(te.k97(us(r.i95_1),i))return this.d9a(t,r,us(i.x95_1)),Xr;var s=te,u=r.f95_1;if(!s.k97(us(null==u?null:u.i95_1),i)){if(ne.s95(us(r.f95_1)),e.c94_1){if(!ne.v97(us(r.g95_1)))throw l_();e.c94_1=!1}if(!ne.u95(us(i.x95_1),r))throw l_();return this.k9a(t,i),Xr}var o=Tk(0,e=this.t99(e)),_=us(o.w93_1.f95_1),h=_.g95_1,a=h;if(o.c94_1){if(this.q99(o),!ne.v97(_))throw l_();var l=null==a?null:a.f95_1;_=us(null==l?null:l.h95_1)}if(!ne.u95(us(i.x95_1),_))throw l_();te.l97(us(a))||(a=null),this.z99(t,e,us(_.g95_1),h,a,!0)},Pr(Ik).l9a=function(t,n){var i=n.x95_1,e=new U$(us(null==i?null:i.f95_1)),r=Zi.q94(Zi.v94(us(t.t92_1),e)),s=r instanceof U$?r:Nr(),u=Tk(0,s),o=s.w93_1,_=u.w93_1,h=te,a=o.f95_1;if(0===h.d97(us(null==a?null:a.i95_1),n,us(o.i95_1)))return this.j9a(t,s,n),Xr;var l=te,c=_.f95_1,f=us(null==c?null:c.i95_1),v=o.f95_1,d=l.i97(f,us(null==v?null:v.i95_1))?s:u;if(s.z93_1||d.c94_1){var w;if(d===s){var p=ne,m=n.x95_1;w=p.x97(us(null==m?null:m.f95_1),us(o.h95_1))}else{var g=ne,y=_.f95_1,b=null==y?null:y.g95_1,$=g.x97(us(null==b?null:b.f95_1),us(n.x95_1));w=us($.f95_1)}var k=w;if(d.c94_1){if(!this.r99(d,k))throw l_()}else this.w99(t,this.u99(t,s,k));this.k9a(t,n)}else this.z99(t,s,us(n.x95_1),n.x95_1,null,!0)},Pr(Ik).k9a=function(t,n){t.v92_1=n;for(var i=us(n.x95_1);null==i.k95_1;)if((i=us(i.g95_1))===n.x95_1)return this.l9a(t,n),Xr;var e=us(this.s99(us(i.k95_1))),r=Tk(0,e),s=r.w93_1,u=this.y99(r,null);u.g95_1===s?this.i9a(t,e,u):this.z99(t,e,us(u.g95_1),s,s,!0)},Pr(Ik).m9a=function(t,n){var i=ne.t95(us(t.m92_1)),e=i.i95_1;null!=e&&(e.a96_1=4e150);var r=i.i95_1;null!=r&&(r.b96_1=n);var s=i.f95_1,u=null==s?null:s.i95_1;null!=u&&(u.a96_1=-4e150);var o=i.f95_1,_=null==o?null:o.i95_1;null!=_&&(_.b96_1=n);var h=t,a=i.f95_1;h.v92_1=null==a?null:a.i95_1;var l=new U$(i);l.y93_1=0,l.z93_1=!1,l.c94_1=!1,l.a94_1=!0,l.b94_1=!1,l.x93_1=Zi.h94(us(t.t92_1),l)},Pr(Ik).n9a=function(t){var n=Zi;t.t92_1=n.f94(t,new zk(t)),this.m9a(t,-4e150),this.m9a(t,4e150)},Pr(Ik).o9a=function(t){t:for(;;){var n=Zi.q94(Zi.t94(us(t.t92_1))),i=null==n||n instanceof U$?n:Nr();if(null==i)break t;var e=i;this.q99(e)}Zi.g94(us(t.t92_1))},Pr(Ik).p9a=function(t){for(var n=t.m92_1,i=us(null==n?null:n.o95_1),e=us(i.e95_1);e!==i;){var r,s=us(e.e95_1),u=us(e.h95_1),o=te,_=us(e.i95_1),h=e.f95_1;if(o.k97(_,us(null==h?null:h.i95_1))){var a=e.h95_1;r=!((null==a?null:a.h95_1)===e)}else r=!1;if(r){if(this.d9a(t,u,e),!ne.v97(e))throw l_();u=us((e=u).h95_1)}if(u.h95_1===e){if(u!==e&&(u!==s&&u!==s.f95_1||(s=us(s.e95_1)),!ne.v97(u)))throw l_();if(e!==s&&e!==s.f95_1||(s=us(s.e95_1)),!ne.v97(e))throw l_()}e=s}},Pr(Ik).q9a=function(t){t.u92_1=ee.h98();for(var n=us(t.u92_1),i=t.m92_1,e=us(null==i?null:i.m95_1),r=us(e.v95_1);r!==e;)r.c96_1=n.k98(r),r=us(r.v95_1);if(!n.j98()){var s=t.u92_1;return null==s||s.i98(),t.u92_1=null,!1}return!0},Pr(Ik).r9a=function(t){var n=t.u92_1;null==n||n.i98()},Pr(Ik).s9a=function(t){for(var n=us(t.n95_1.w94_1);n!==t.n95_1;){var i=us(n.w94_1),e=us(n.y94_1),r=e.h95_1;if((null==r?null:r.h95_1)===e&&(jk(0,us(e.g95_1),e),!ne.v97(e)))return!1;n=i}return!0},Pr(Ik).r96=function(t){if(t.s92_1=!1,this.p9a(t),!this.q9a(t))return!1;this.n9a(t);t:for(;;){var n=t.u92_1,i=null==n?null:n.l98(),e=null==i||i instanceof ek?i:Nr();if(null==e)break t;var r=e;n:for(;;){var s=t.u92_1,u=null==s?null:s.n98(),o=null==u||u instanceof ek?u:Nr();if(null==o||!te.k97(o,r))break n;var _=t.u92_1,h=null==_?null:_.l98();o=h instanceof ek?h:Nr(),this.d9a(t,us(r.x95_1),us(o.x95_1))}this.k9a(t,r)}var a=t,l=Zi.q94(Zi.t94(us(t.t92_1)));return a.v92_1=(l instanceof U$?l:Nr()).w93_1.i95_1,this.o9a(t),this.r9a(t),!!this.s9a(us(t.m92_1))&&(ne.u96(us(t.m92_1)),!0)},Pr(Dk).t9a=function(t){var n=us(t.y94_1);t:for(;;){var i=te,e=n.f95_1;if(!i.i97(us(null==e?null:e.i95_1),us(n.i95_1)))break t;var r=n.g95_1;n=us(null==r?null:r.f95_1)}t:for(;;){var s=te,u=us(n.i95_1),o=n.f95_1;if(!s.i97(u,us(null==o?null:o.i95_1)))break t;n=us(n.h95_1)}for(var _=n.g95_1,h=us(null==_?null:_.f95_1);n.h95_1!==h;){var a=te,l=n.f95_1;if(a.i97(us(null==l?null:l.i95_1),us(h.i95_1))){t:for(;;){var c;if(h.h95_1!==n){var f;if(te.l97(us(h.h95_1)))f=!0;else{var v=te,d=us(h.i95_1),w=h.f95_1,p=us(null==w?null:w.i95_1),m=h.h95_1,g=null==m?null:m.f95_1;f=v.d97(d,p,us(null==g?null:g.i95_1))<=0}c=f}else c=!1;if(!c)break t;var y=ne.x97(us(h.h95_1),h);h=us(y.f95_1)}var b=h.g95_1;h=us(null==b?null:b.f95_1)}else{t:for(;;){var $;if(h.h95_1!==n){var k,x=te,q=n.g95_1;if(x.m97(us(null==q?null:q.f95_1)))k=!0;else{var S=te,C=n.f95_1,E=us(null==C?null:C.i95_1),O=us(n.i95_1),j=n.g95_1,T=null==j?null:j.f95_1;k=S.d97(E,O,us(null==T?null:T.i95_1))>=0}$=k}else $=!1;if(!$)break t;var A=ne,z=n,I=n.g95_1,D=A.x97(z,us(null==I?null:I.f95_1));n=us(D.f95_1)}n=us(n.h95_1)}}t:for(;;){var M=h.h95_1;if((null==M?null:M.h95_1)===n)break t;var N=ne.x97(us(h.h95_1),h);h=us(N.f95_1)}},Pr(Dk).s96=function(t){for(var n=us(t.n95_1.w94_1);n!==t.n95_1;){var i=us(n.w94_1);n.c95_1&&this.t9a(n),n=i}return!0},Pr(Dk).t96=function(t,n,i){for(var e=us(t.o95_1.e95_1);e!==t.o95_1;){var r=us(e.e95_1),s=e.f95_1,u=null==s?null:s.j95_1,o=null==u?null:u.c95_1,_=e.j95_1;if(o!=(null==_?null:_.c95_1))e.l95_1=us(e.j95_1).c95_1?n:0|-n;else if(i){if(!ne.v97(e))return!1}else e.l95_1=0;e=r}return!0},Pr(Sx).sl=function(t){if(Pr(Rx).sl.call(this,t),!t.defaultPrevented)if("wheel"===t.type)t.preventDefault(),this.x9d(t instanceof WheelEvent?t:Nr());else for(var n=nq().w9d_1.v();n.w();){var i=n.y();qs(i.m9b_1,this.u9d_1.b9b_1)&&i.sl(t)}},Pr(Sx).handleEvent=function(t){return this.sl(t)},Pr(Sx).y9d=function(t){qs(t,this.j9c_1)||qs(t,this.l9c_1)?this.d9e(t):qs(t,this.k9c_1)?this.c9e(t):qs(t,this.m9c_1)?this.b9e(t):qs(t,this.n9c_1)?this.a9e(t):qs(t,this.o9c_1)&&this.z9d(t)},Pr(Sx).d9e=function(t){this.u9d_1.g9e().j5h_1.q5m()?this.f9e(t):this.e9e(t)},Pr(Sx).e9e=function(t){var n=t.o9b_1,i=t.r9b_1,e=t.s9b_1;switch(n.y9_1){case 3:this.h9e(),this.s9c_1.a6d(0,0);break;case 4:var r=this.u9d_1.g9e().j5h_1,s=r.h5o(),u=r.e6p(),o=Math.max(s,u),_=this.r9c_1.z5l_1,h=Math.max(1,_),a=this.u9d_1.g9e().g5o(h)*this.u9d_1.g9e().s5h_1,l=(e-this.s9c_1.t5l_1)*a/o,c=-(i-this.s9c_1.s5l_1)*a/o,f=Ph(this.r9c_1.a5m_1),v=Math.sin(f),d=Ph(this.r9c_1.a5m_1),w=Math.cos(d),p=this.r9c_1.x5l_1;p.m5i_1=Vh(p.m5i_1,l*w-c*v),p.n5i_1=Vh(p.n5i_1,l*v+c*w),this.s9c_1.a6d(i,e),this.i9e();break;case 6:case 5:this.j9e()}},Pr(Sx).f9e=function(t){var n=t.o9b_1,i=t.r9b_1,e=t.s9b_1;switch(n.y9_1){case 3:this.h9e(),this.u9d_1.g9e().j5h_1.f5m(this.p9c_1.x5l_1.m5i_1,this.p9c_1.x5l_1.n5i_1,this.p9c_1.x5l_1.q5i_1,this.q9c_1);break;case 4:var r=this.u9d_1.g9e().g5o(this.r9c_1.z5l_1)*this.u9d_1.g9e().s5h_1,s=e*r,u=-i*r,o=this.r9c_1.a5m_1,_=Ph(o),h=Math.sin(_),a=Ph(o),l=Math.cos(a),c=this.q9c_1.s5l_1+s*h+u*l,f=this.q9c_1.t5l_1+s*l-u*h;this.u9d_1.g9e().j5h_1.d5m(c,f,this.q9c_1.w5l_1,this.r9c_1.x5l_1),this.i9e();break;case 6:case 5:this.j9e()}},Pr(Sx).c9e=function(t){var n=t.o9b_1,i=t.r9b_1,e=t.s9b_1;switch(n.y9_1){case 3:this.h9e();break;case 4:var r=180*i/this.u9d_1.b9b_1.clientWidth,s=90*e/this.u9d_1.b9b_1.clientHeight;this.r9c_1.a5m_1=Hh(this.p9c_1.a5m_1,r),this.r9c_1.b5m_1=Hh(this.p9c_1.b5m_1,s),this.i9e();break;case 6:case 5:this.j9e()}},Pr(Sx).b9e=function(t){var n=t.o9b_1,i=(t instanceof sq?t:Nr()).k9f();switch(n.y9_1){case 3:this.h9e();break;case 4:0!==i&&(this.r9c_1.z5l_1=this.p9c_1.z5l_1/i,this.i9e());break;case 6:case 5:this.j9e()}},Pr(Sx).a9e=function(t){var n=t.o9b_1,i=(t instanceof uq?t:Nr()).l9g();switch(n.y9_1){case 3:this.h9e(),this.t9c_1=0;break;case 4:this.r9c_1.a5m_1=Wh(this.r9c_1.a5m_1,i-this.t9c_1),this.t9c_1=i,this.i9e();break;case 6:case 5:this.j9e()}},Pr(Sx).z9d=function(t){var n=t.o9b_1,i=t.s9b_1;switch(n.y9_1){case 3:this.h9e();break;case 4:var e=-90*i/this.u9d_1.b9b_1.clientHeight;this.r9c_1.b5m_1=Hh(this.p9c_1.b5m_1,e),this.i9e();break;case 6:case 5:this.j9e()}},Pr(Sx).x9d=function(t){var n=ks(t.timeStamp);(n-this.u9c_1|0)>500&&(this.u9d_1.g9e().l5m(this.r9c_1),this.u9c_1=n);var i=t.deltaMode,e=1+(i===WheelEvent.DOM_DELTA_PIXEL?t.deltaY:i===WheelEvent.DOM_DELTA_LINE?20*t.deltaY:i===WheelEvent.DOM_DELTA_PAGE?200*t.deltaY:t.deltaY)/1e3,r=this.r9c_1;r.z5l_1=r.z5l_1*e,this.i9e()},Pr(Sx).i9e=function(){this.u9d_1.g9e().m5m(this.r9c_1),this.u9d_1.h5h()},Pr(Sx).h9e=function(){var t=this.v9c_1;this.v9c_1=t+1|0,0===t&&(this.u9d_1.g9e().l5m(this.p9c_1),this.r9c_1.x6b(this.p9c_1))},Pr(Sx).j9e=function(){this.v9c_1>0&&(this.v9c_1=this.v9c_1-1|0)},Pr(Cx).y9g=function(){this.r9g_1.a5m_1=Fh().v5m_1,this.m9g_1.g9e().m5m(this.r9g_1),this.m9g_1.h5h()},Pr(Cx).z9g=function(){this.r9g_1.a5m_1=Fh().v5m_1,this.r9g_1.b5m_1=Fh().v5m_1,this.m9g_1.g9e().m5m(this.r9g_1),this.m9g_1.h5h()},Pr(Cx).x9g=function(t){if(this.s9g_1){var n=this.r9g_1.a5m_1,i=this.p9g_1*this.r9g_1.z5l_1;switch(t){case"panDown":n=Bh(n,Fh().y5m_1);break;case"panLeft":n=Bh(n,Fh().w5m_1);break;case"panRight":n=Uh(n,Fh().w5m_1)}this.r9g_1.x5l_1.s6b(n,i,this.r9g_1.x5l_1),this.m9g_1.g9e().m5m(this.r9g_1),this.m9g_1.h5h(),window.setTimeout((e=this,(r=function(t){return e.x9g(t),Xr}).callableName="handlePan",r),50,t)}var e,r},Pr(Cx).v9g=function(t){if(this.s9g_1){if("zoomIn"===t){var n=this.r9g_1;n.z5l_1=n.z5l_1*(1-this.o9g_1)}else if("zoomOut"===t){var i=this.r9g_1;i.z5l_1=i.z5l_1*(1+this.o9g_1)}this.m9g_1.g9e().m5m(this.r9g_1),this.m9g_1.h5h(),window.setTimeout((e=this,(r=function(t){return e.v9g(t),Xr}).callableName="handleZoom",r),50,t)}var e,r},Pr(Cx).w9g=function(t){var n,i;this.s9g_1&&("tiltUp"===t?this.r9g_1.b5m_1=Wh(this.r9g_1.b5m_1,this.q9g_1):"tiltDown"===t&&(this.r9g_1.b5m_1=Hh(this.r9g_1.b5m_1,this.q9g_1)),this.m9g_1.g9e().m5m(this.r9g_1),this.m9g_1.h5h(),window.setTimeout((n=this,(i=function(t){return n.w9g(t),Xr}).callableName="handleTilt",i),50,t))},Pr(Ox).l9h=function(t,n){var i=this.m9h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(Ox).cd=function(t,n){return this.l9h(null!=t&&ss(t,B_)?t:Nr(),n)},Pr(Ox).pc=function(){for(this.ec_1;;)try{var t=this.cc_1;if(0===t){this.dc_1=1;var n=this.k9h_1;return n instanceof F_?this.j9h_1.h5h():n instanceof U_&&this.j9h_1.g9e().i5h_1.i5j_1.m6s(this.k9h_1.n9h_1),Xr}if(1===t)throw this.fc_1}catch(t){throw t}},Pr(Ox).m9h=function(t,n){var i=new Ox(this.j9h_1,n);return i.k9h_1=t,i},Pr(Ax).q9h=function(t){var n={alpha:!0,depth:!0,stencil:!1,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,preferLowPowerToHighPerformance:!1,failIfMajorPerformanceCaveat:!1},i=t.getContext("webgl",n),e=null==i?t.getContext("experimental-webgl",n):i;if(!(e instanceof WebGLRenderingContext)){var r=kr.y5i(kr.t5i_1,"WorldWindow","createContext","webglNotSupported");throw is(Gr(r))}return e},Pr(Ix).l14=function(t,n){return this.r9h_1(t,n)},Pr(Mx).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(Mx).cd=function(t,n){return this.a1h(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(Mx).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2,this.cc_1=1;var n=V_().g5h_1,i=jx(this.b9i_1,null);if((t=n.o14(new Ix(i),this))===Js())return t;continue t;case 1:w_();break;case 2:throw this.fc_1}}catch(t){var e=t;if(2===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},Pr(Mx).b1h=function(t,n){var i=new Mx(this.b9i_1,n);return i.c9i_1=t,i},Pr(Nx).f9i=function(){return this.g9e().i5h_1.h5j_1},Pr(Nx).g9e=function(){return this.d9b_1},Pr(Nx).g9i=function(){return this.h9b_1},Pr(Nx).a9h=function(t,n){var i,e,r={_v:this.e9b_1.q2(t)};if(null==r._v){var s=new Tx((i=this,e=r,function(t){t.worldWindow=i;var n=e._v,r=null==n?null:n.p9h_1;if(null==r);else for(var s=r.v();s.w();)s.y().handleEvent(t);return Xr}));this.e9b_1.g2(t,s),r._v=s}r._v.p9h_1.r(n)||(r._v.p9h_1.r1(0,n),1===r._v.p9h_1.n()&&this.b9b_1.addEventListener(t,r._v.o9h_1,!1))},Pr(Nx).h5h=function(){this.l9b_1=!0},Pr(Nx).h9i=function(t,n){var i=this.b9b_1.getBoundingClientRect();return new Qa(xs(t)-(i.left+this.b9b_1.clientLeft),xs(n)-(i.top+this.b9b_1.clientTop))},Pr(Nx).i9i=function(t){return this.j9i(t.s5l_1,t.t5l_1)},Pr(Nx).k9i=function(t,n,i,e,r){var s,u=new L_,o=this.g9e().q5h_1;if(o.t19())return u;if(0!==i&&0!==e){var _=Math.floor(t),h=ks(_),a=o.u5j_1,l=n+e,c=Math.ceil(l),f=a-ks(c)|0,v=Math.ceil(i),d=ks(v),w=Math.ceil(e);s=new el(h,f,d,ks(w))}else s=new el(Yr(t)-1|0,(o.u5j_1-Yr(n)|0)-1|0,3,3);var p=s;if(!p.v6e(o))return u;if(this.j9b_1.o5o_1=u,this.j9b_1.q5o_1=p,r){var m=p.r5j_1+p.t5j_1/2,g=p.s5j_1+p.u5j_1/2;if(o.w6e(m,g)){var y=da();this.g9e().x5n(m,o.u5j_1-g,y)&&(this.j9b_1.r5o_1=new Qa(m,g),this.j9b_1.s5o_1=y)}}return this.j9b_1.t5o_1=!0,this.l9i(),u},Pr(Nx).j9i=function(t,n,i,e,r,s){return i=i===Wr?0:i,e=e===Wr?0:e,r=r===Wr||r,s===Wr?this.k9i(t,n,i,e,r):s.k9i.call(this,t,n,i,e,r)},Pr(Nx).c5l=function(){window.cancelAnimationFrame(this.k9b_1),iu(this.f9i().gm()),this.g9e().w1h()},Pr(Nx).s9h=function(){this.g9e().i5h_1.b1(),this.g9e().w5j(),this.g9e().s5i(window.devicePixelRatio),this.c9b_1.getExtension("WEBGL_depth_texture"),this.c9b_1.getExtension("OES_element_index_uint");var t,n,i=this.f9i();ru(i,Wr,Wr,(t=new Mx(this,null),(n=function(n,i){return t.a1h(n,i)}).$arity=1,n)),this.h5h(),this.d9i()},Pr(Nx).d9i=function(){this.m9i();var t,n=window;this.k9b_1=n.requestAnimationFrame((t=this,function(n){return t.d9i(),Xr}))},Pr(Nx).m9i=function(){if(this.n9i(),!this.l9b_1)return Xr;this.l9b_1=!1,this.l9i()},Pr(Nx).l9i=function(){var t=this.j9b_1.t5o_1;try{t||this.o9i((Ex(),vr)),(this.g9e().i5o(this.j9b_1)||t)&&this.h5h(),this.g9e().c5r(this.j9b_1)}catch(t){if(!(t instanceof bs))throw t;var n=t;kr.y5i(kr.t5i_1,"WorldWindow","drawFrame","Exception occurred during redrawing.\n"+n)}finally{this.j9b_1.g5s(),t||this.o9i((Ex(),fr))}},Pr(Nx).n9i=function(){var t=this.c9b_1.canvas.clientWidth*this.g9e().s5h_1,n=Yr(t),i=this.c9b_1.canvas.clientHeight*this.g9e().s5h_1,e=Yr(i);(this.c9b_1.canvas.width!==n||this.c9b_1.canvas.height!==e||this.g9e().q5h_1.t19())&&(this.c9b_1.canvas.width=n,this.c9b_1.canvas.height=e,this.g9e().e5l(this.c9b_1.drawingBufferWidth,this.c9b_1.drawingBufferHeight),this.h5h())},Pr(Nx).o9i=function(t){for(var n=this.i9b_1.v();n.w();){var i=n.y();try{i(this,t)}catch(t){if(!(t instanceof bs))throw t;var e=t;kr.t64(kr.t5i_1,"Exception calling redraw callback.\n"+e)}}return Xr},Pr(Rx).sl=function(t){var n=0,i=this.v9d_1.n()-1|0;if(n<=i)t:do{var e=n;if(n=n+1|0,this.v9d_1.h1(e).handleEvent(t),t.defaultPrevented)break t}while(n<=i)},Pr(Rx).handleEvent=function(t){return this.sl(t)},Pr(Lx).u9k=function(t){var n,i=this.r9k_1;if(0===i)n=this.t9k_1;else{if(34737===i){var e=kr.y5i(kr.t5i_1,"GeoTiffKeyEntry","getGeoKeyValue","Invalid key type");throw fs(Gr(e))}n=34736===i?t.h1(this.t9k_1):null}return n},Pr(Lx).v9k=function(t){if(34737!==this.r9k_1){var n=kr.y5i(kr.t5i_1,"GeoTiffKeyEntry","getAsciiGeoKeyValue","Invalid key type");throw is(Gr(n))}var i;if(null==t)i=null;else{var e=zu(),r=this.t9k_1,s=this.s9k_1-1|0;if(r>>8|0:t.getUint32(n,e)>>>8|0;else if(i<=4)s=r?t.getInt32(n,e):t.getUint32(n,e);else{if(!(i<=8)){var o=kr.y5i(kr.t5i_1,"GeoTiffUtil","getBytes","Too many bytes requested");throw fs(Gr(o))}s=t.getFloat64(n,e)}return s},Pr(Wx).t9m=function(t,n,i,e,r,s){return r=r!==Wr&&r,s===Wr?this.e9n(t,n,i,e,r):s.e9n.call(this,t,n,i,e,r)},Pr(Wx).u9m=function(t,n,i,e,r){var s;if(1===e)s=this.e9n(t,n,i,r,!1);else if(2===e)s=this.e9n(t,n,i,r,!0);else if(3===e){var u;switch(i){case 3:u=ks(t.getFloat32(n,r))>>>8|0;break;case 4:u=t.getFloat32(n,r);break;case 8:u=t.getFloat64(n,r);break;default:var o=kr.y5i(kr.t5i_1,"GeoTiffUtil","getSampleBytes","Do not attempt to parse the data not handled: "+i);throw fs(Gr(o))}s=u}else s=this.e9n(t,n,i,r,!1);return s},Pr(Jx).y9q=function(t){if(!t&&2===this.w9m_1){var n=kr.y5i(kr.t5i_1,"TiffIFDEntry","getIFDEntryValue","Invalid Key Type - ASCII not allowed.");throw is(Gr(n))}var i,e=1!==(i=this.w9m_1)&&2!==i&&6!==i&&7!==i?3===i||8===i?2:4===i||9===i||11===i?4:5===i||10===i||12===i?8:-1:1;return Ar(e,this.x9m_1)<=4?To(this.a9n_1?this.y9m_1:this.y9m_1>>Ar(4-e|0,8)):function(t,n){var i=as(),e=0,r=t.x9m_1;if(e=8){var o=t.w9m_1;if(5===o||10===o)i.s(pr.t9m(t.z9m_1,t.y9m_1+u|0,4,t.a9n_1)),i.s(pr.t9m(t.z9m_1,4+(t.y9m_1+u|0)|0,4,t.a9n_1));else{if(12!==o){var _=kr.y5i(kr.t5i_1,"TiffIFDEntry","getIFDEntryValue","Invalid Type of IFD");throw fs(Gr(_))}i.s(pr.t9m(t.z9m_1,t.y9m_1+u|0,8,t.a9n_1))}}else i.s(pr.t9m(t.z9m_1,t.y9m_1+u|0,n,t.a9n_1))}while(ethis.v9r_1*window.devicePixelRatio&&this.a9s(Fl())},Pr(Zx).f9s=function(t){return this.o9b_1.equals(Ll())?0!==this.t9b_1?Xr:void(this.y9r_1.n()===this.t9r_1?(this.p9b_1=this.y9r_1.h1(0).g9s_1,this.q9b_1=this.y9r_1.h1(0).h9s_1,this.a9s(Ul())):this.d9s(this.x9r_1)):Xr},Pr(Zx).i9s=function(t){if(!this.o9b_1.equals(Ll()))return Xr;this.a9s(Fl())},Pr(Zx).d9s=function(t){var n=this.z9r_1;null==n||window.clearTimeout(n);var i,e=window;this.z9r_1=e.setTimeout((i=this,function(){return i.z9r_1=null,i.o9b_1.equals(Ll())&&i.a9s(Fl()),Xr}),t)},Pr(Zx).b9s=function(){var t=this.z9r_1;null==t||window.clearTimeout(t),this.z9r_1=null},Pr(Qx).e9s=function(t){var n;this.o9b_1.equals(Ll())?this.n9t()&&(this.m9t()?(this.l9t(),n=Hl()):n=Fl(),this.a9s(n)):(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl()))&&this.a9s(Vl())},Pr(Qx).f9s=function(t){0===this.t9b_1&&(this.o9b_1.equals(Ll())?this.a9s(Fl()):(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl()))&&this.a9s(Wl()))},Pr(Qx).i9s=function(t){this.o9b_1.equals(Ll())&&this.a9s(Fl())},Pr(Qx).n9t=function(){var t=this.r9b_1,n=this.s9b_1,i=t*t+n*n;return Math.sqrt(i)>this.r9d_1*window.devicePixelRatio},Pr(Qx).m9t=function(){return 1<0)return Xr;var n=1<this.r9u_1*window.devicePixelRatio},Pr(rq).m9t=function(){var t=this.p9u_1,n=this.q9u_1,i=this.o9t();return t<=i&&i<=n},Pr(sq).k9f=function(){return this.h9f_1*this.i9f_1},Pr(sq).w1h=function(){Pr(eq).w1h.call(this),this.h9f_1=1,this.i9f_1=1,this.e9f_1=0,this.j9f_1.b1()},Pr(sq).c9s=function(t){this.o9b_1.equals(Ll())&&this.a9s(Fl())},Pr(sq).i9s=function(t){this.j9f_1.n()<2&&(this.j9f_1.s(t),2===this.j9f_1.n()&&(this.e9f_1=this.s9u(),this.i9f_1=this.i9f_1*this.h9f_1,this.h9f_1=1))},Pr(sq).n9s=function(t){if(2===this.j9f_1.n())if(this.o9b_1.equals(Ll()))this.m9t()&&this.a9s(Hl());else if(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl())){var n=this.s9u()/this.e9f_1,i=Math.abs(n),e=this.g9f_1;this.h9f_1=this.h9f_1*(1-e)+i*e,this.a9s(Vl())}},Pr(sq).p9s=function(t){this.j9f_1.t(t),0===this.o9t()&&(this.o9b_1.equals(Ll())?this.a9s(Fl()):(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl()))&&this.a9s(Wl()))},Pr(sq).o9s=function(t){this.j9f_1.t(t),0===this.o9t()&&(this.o9b_1.equals(Ll())?this.a9s(Fl()):(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl()))&&this.a9s(Bl()))},Pr(sq).m9s=function(){this.e9f_1=this.s9u(),this.h9f_1=1},Pr(sq).m9t=function(){var t=this.s9u()-this.e9f_1;return Math.abs(t)>this.f9f_1*window.devicePixelRatio},Pr(sq).s9u=function(){var t=this.j9f_1.h1(0),n=this.j9f_1.h1(1),i=t.r9t_1-n.r9t_1|0,e=t.s9t_1-n.s9t_1|0,r=Ar(i,i)+Ar(e,e)|0;return Math.sqrt(r)},Pr(uq).l9g=function(){return this.i9g_1+this.j9g_1},Pr(uq).w1h=function(){Pr(eq).w1h.call(this),this.i9g_1=0,this.j9g_1=0,this.f9g_1=0,this.k9g_1.b1()},Pr(uq).c9s=function(t){this.o9b_1.equals(Ll())&&this.a9s(Fl())},Pr(uq).i9s=function(t){this.k9g_1.n()<2&&(this.k9g_1.s(t),2===this.k9g_1.n()&&(this.f9g_1=this.t9u(),this.j9g_1=this.j9g_1+this.i9g_1,this.i9g_1=0))},Pr(uq).n9s=function(t){if(2===this.k9g_1.n())if(this.o9b_1.equals(Ll()))this.m9t()&&this.a9s(Hl());else if(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl())){var n=this.t9u(),i=Fh().m69(n-this.f9g_1),e=this.h9g_1;this.i9g_1=this.i9g_1*(1-e)+i*e,this.a9s(Vl())}},Pr(uq).p9s=function(t){this.k9g_1.t(t),0===this.o9t()&&(this.o9b_1.equals(Ll())?this.a9s(Fl()):(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl()))&&this.a9s(Wl()))},Pr(uq).o9s=function(t){this.k9g_1.t(t),0===this.o9t()&&(this.o9b_1.equals(Ll())?this.a9s(Fl()):(this.o9b_1.equals(Hl())||this.o9b_1.equals(Vl()))&&this.a9s(Bl()))},Pr(uq).m9s=function(){this.f9g_1=this.t9u(),this.i9g_1=0},Pr(uq).m9t=function(){this.i9g_1=Fh().m69(this.t9u()-this.f9g_1);var t=this.i9g_1;return Math.abs(t)>this.g9g_1},Pr(uq).t9u=function(){var t=this.k9g_1.h1(0),n=this.k9g_1.h1(1),i=t.r9t_1-n.r9t_1|0,e=t.s9t_1-n.s9t_1|0,r=Fh(),s=Math.atan2(e,i);return r.k69(s)},Pr(_q).m9t=function(){return!!Pr(Qx).m9t.call(this)&&this.o9w_1.e9v_1},Pr(hq).m9t=function(){return!!Pr(rq).m9t.call(this)&&this.m9x_1.e9v_1},Pr(aq).r9v=function(){this.d9v_1=!1,this.e9v_1=!1},Pr(lq).w1h=function(){Pr(eq).w1h.call(this),this.m9y_1.b1(),this.o9y()},Pr(lq).c9s=function(t){if(!this.o9b_1.equals(Ll()))return Xr;this.a9s(Fl())},Pr(lq).i9s=function(t){if(!this.o9b_1.equals(Ll()))return Xr;if(this.o9t()>this.i9y_1)this.a9s(Fl());else if(1===this.o9t())this.m9y_1.s(new vq(this.o9t(),this.p9b_1,this.q9b_1)),this.d9s(this.k9y_1);else{var n=this.m9y_1.h1(this.m9y_1.n()-1|0);n.q9t_1=this.o9t(),n.r9t_1=this.p9b_1,n.s9t_1=this.q9b_1}},Pr(lq).n9s=function(t){if(!this.o9b_1.equals(Ll()))return Xr;var n=this.r9b_1,i=this.s9b_1,e=n*n+i*i;Math.sqrt(e)>this.j9y_1*window.devicePixelRatio&&this.a9s(Fl())},Pr(lq).p9s=function(t){if(!this.o9b_1.equals(Ll()))return Xr;if(0!==this.o9t())return Xr;var n=this.m9y_1.n();this.m9y_1.h1(n-1|0).q9t_1!==this.i9y_1?this.a9s(Fl()):n===this.h9y_1?(this.p9b_1=this.m9y_1.h1(0).r9t_1,this.q9b_1=this.m9y_1.h1(0).s9t_1,this.a9s(Ul())):this.d9s(this.l9y_1)},Pr(lq).o9s=function(t){if(!this.o9b_1.equals(Ll()))return Xr;this.a9s(Fl())},Pr(lq).d9s=function(t){var n=this.n9y_1;null==n||window.clearTimeout(n);var i,e=window;this.n9y_1=e.setTimeout((i=this,function(){return i.n9y_1=null,i.o9b_1.equals(Ll())&&i.a9s(Fl()),Xr}),t)},Pr(lq).o9y=function(){var t,n=this.n9y_1;null==n?t=null:(window.clearTimeout(n),t=Xr);var i=t;return this.n9y_1=null,i},Pr(fq).n9t=function(){var t=0,n=this.o9t();if(tthis.r9u_1)return!0}while(tthis.q9z_1*window.devicePixelRatio)return!1;var s=t.s9z()-n.s9z()|0,u=t.t9z()-n.t9z()|0,o=Ar(s,s)+Ar(u,u)|0;if(Math.sqrt(o)>this.r9z_1*window.devicePixelRatio)return!1;return!(0==(12&this.u9z(t)&this.u9z(n)&12))},Pr(fq).u9z=function(t){var n=t.s9z(),i=t.t9z(),e=0;return Fs(n)>Fs(i)?(e|=n<0?1:0,e|=n>0?2:0):(e|=i<0?4:0,e|=i>0?8:0),e},Pr(vq).s9z=function(){return this.r9t_1-this.t9t_1|0},Pr(vq).t9z=function(){return this.s9t_1-this.u9t_1|0},Pr(dq).v9z=function(t){return new wq(t.href)},Pr(dq).a7v=function(t){var n;try{n=this.v9z(new URL(t))}catch(t){if(t instanceof bs){var i=t;throw kr.i69(kr.t5i_1,"ElevationSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(wq).y9z=function(){return"string"==typeof this.j7s_1},Pr(wq).z9z=function(){var t=this.j7s_1;return"string"==typeof t?t:Nr()},Pr(wq).toString=function(){return"string"==typeof this.j7s_1?"URL: "+Gr(this.j7s_1):Pr(Nb).toString.call(this)},Pr(mq).ka0=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(mq).cd=function(t,n){return this.ka0(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(mq).pc=function(){for(this.ec_1;;)try{var t=this.cc_1;if(0===t)return this.dc_1=1,new Bx(this.ia0_1).d9n();if(1===t)throw this.fc_1}catch(t){throw t}},Pr(mq).b1h=function(t,n){var i=new mq(this.ia0_1,n);return i.ja0_1=t,i},Pr(gq).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=12,this.ya0_1=this.ta0_1.t6r_1.c7y(this.va0_1,this.wa0_1,this.xa0_1),this.ya0_1.y9z()){if(this.za0_1=this.ya0_1.z9z(),this.dc_1=9,this.cc_1=1,(t=q_(fetch(this.za0_1),this))===Js())return t;continue t}this.ta0_1.f6t(this.ua0_1,"Unsupported elevation source type"),this.cc_1=11;continue t;case 1:if(this.aa1_1=t,this.aa1_1.ok){if(this.cc_1=2,(t=q_(this.aa1_1.arrayBuffer(),this))===Js())return t;continue t}this.ta0_1.f6t(this.ua0_1,"Elevations retrieval failed ("+this.aa1_1.statusText+"): "+this.za0_1),this.cc_1=8;continue t;case 2:if(this.ba1_1=t,this.ca1_1=this.aa1_1.headers.get("Content-Type"),this.da1_1=null,C_(this.ca1_1,"image/bil",!0)||C_(this.ca1_1,"application/bil",!0)||C_(this.ca1_1,"application/bil16",!0)){this.ea1_1=new Int16Array(this.ba1_1),this.cc_1=4;continue t}if(C_(this.ca1_1,"application/bil32",!0)){this.ea1_1=new Float32Array(this.ba1_1),this.cc_1=4;continue t}if(C_(this.ca1_1,"image/tiff",!0)){if(this.cc_1=3,(t=pq(this.ta0_1,this.ba1_1,this))===Js())return t;continue t}if(C_(this.ca1_1,"text/xml",!0)){this.da1_1="Elevations retrieval failed ("+this.aa1_1.statusText+"): "+this.za0_1+".\n",S_.fromCharCode.apply(null,new Uint8Array(this.ba1_1)),this.ea1_1=null,this.cc_1=4;continue t}this.da1_1="Elevations retrieval failed (Unexpected content type "+this.ca1_1+"): "+this.za0_1,this.ea1_1=null,this.cc_1=4;continue t;case 3:this.ea1_1=t,this.cc_1=4;continue t;case 4:if(this.fa1_1=this.ea1_1,null==this.fa1_1){this.ga1_1=null,this.cc_1=7;continue t}if(this.ha1_1=this.fa1_1,this.ia1_1=this.ha1_1,this.ja1_1=this.ya0_1.k7s_1,null==this.ja1_1){this.ka1_1=null,this.cc_1=6;continue t}if(this.cc_1=5,(t=this.ja1_1.g7s(this.ia1_1,this))===Js())return t;continue t;case 5:this.ka1_1=t,this.cc_1=6;continue t;case 6:var n=this.ka1_1;this.ga1_1=null==n?this.ia1_1:n,this.cc_1=7;continue t;case 7:var i,e=this.ga1_1,r=this.ta0_1.d6t(e);if(null==r?i=null:(this.ta0_1.e6t(this.ua0_1,r,"Elevation retrieval succeeded: "+this.za0_1),i=Xr),null==i){var s=this.da1_1;this.ta0_1.f6t(this.ua0_1,null==s?"Elevations retrieval failed: "+this.za0_1:s)}this.cc_1=8;continue t;case 8:this.dc_1=12,this.cc_1=10;continue t;case 9:if(this.dc_1=12,this.fc_1 instanceof Error){var u=this.fc_1;this.ta0_1.f6t(this.ua0_1,"Elevations retrieval failed ("+u.message+"): "+this.za0_1),this.cc_1=10;continue t}throw this.fc_1;case 10:this.dc_1=12,this.cc_1=11;continue t;case 11:return Xr;case 12:throw this.fc_1}}catch(t){var o=t;if(12===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},Pr(yq).a6s=function(t,n,i,e,r){var s=new gq(this,t,n,i,e,r);return s.ec_1=Xr,s.fc_1=null,s.pc()},Pr(yq).d6t=function(t){var n;if(t instanceof Int16Array){for(var i=0,e=t.length,r=new Int16Array(e);i=this.g5j_1||this.j5j_1.r(t)||this.i5j_1.k6s(t.hashCode())||(t.ma4()?this.ka4(t,n,t.la4().w40_1):t.y9z()?this.ka4(t,n,t.z9z()):t.ha4()&&(this.j5j_1.s(t),ru(this.h5j_1,Wr,Wr,(h=new Aq(t,this,n,null),(a=function(t,n){return h.a1h(t,n)}).$arity=1,a)))),null;var h,a},Pr(Mq).b7x=function(t,n){var i,e;ru(this.h5j_1,Wr,Wr,(i=new zq(n,t,null),(e=function(t,n){return i.a1h(t,n)}).$arity=1,e))},Pr(Mq).ka4=function(t,n,i){var e,r,s=new Image;s.onload=Dq(t,{_v:!1},this,n,s),s.onerror=(e=this,r=t,function(t,n,i,s,u){return e.ha3(r),Xr}),this.j5j_1.s(t),s.crossOrigin="anonymous",s.src=i},Pr(Mq).fa4=function(t,n){var i;if(n instanceof HTMLImageElement)i=zs(n.width,n.height);else{if(!(n instanceof HTMLCanvasElement))return null;i=zs(n.width,n.height)}var e=i,r=e.ue(),s=e.ve();if(0===r||0===s){var u=null!=t&&t.z8m_1>0?r/t.z8m_1|0:0,o=null!=t&&t.a8n_1>0?s/t.a8n_1|0:0,_=o>u?o:u;_>0&&(r=r/_|0,s=s/_|0)}else null!=t&&t.z8m_1>0&&t.a8n_1>0&&(r=t.z8m_1,s=t.a8n_1);var h=new Vq(n,r,s);return qs(null==t?null:t.x8m_1,Ry())&&(h.b5u(Xk(),Jk()),h.b5u(Zk(),Jk())),qs(null==t?null:t.y8m_1,Fy())&&(h.b5u(Qk(),tx()),h.b5u(nx(),tx())),h},Pr(Mq).ga3=function(t,n,i){var e=this.fa4(n,i);null==e||this.d69(t,e,e.v8l()),this.j5j_1.t(t),this.i5j_1.m6s(t.hashCode()),V_().h5h(),kr.la1(kr.w5i_1)&&kr.t64(kr.w5i_1,"Image retrieval succeeded: "+t)},Pr(Mq).ha3=function(t){this.j5j_1.t(t),this.i5j_1.o6s(t.hashCode()),kr.t64(kr.u5i_1,"Image retrieval failed: "+t)},Pr(Nq).u8l=function(t,n){return!0===(null==t?null:xu(t)>0)?Hq(this.na4(t,n)):null},Pr(Nq).na4=function(t,n){var i=document.createElement("canvas"),e=i instanceof HTMLCanvasElement?i:Nr(),r=e.getContext("2d"),s=r instanceof CanvasRenderingContext2D?r:Nr(),u=this.oa4(s,t,n),o=Ru(t,["\n"]),_=n.y7a_1?n.x7a_1/2:0,h=u.s5l_1*this.s8l_1.d5p_1,a=Math.ceil(h);e.width=ks(a);var l=u.t5l_1*this.s8l_1.d5p_1,c=Math.ceil(l);e.height=ks(c),s.scale(this.s8l_1.d5p_1,this.s8l_1.d5p_1),s.font=n.b7b_1.toString(),s.textBaseline="bottom",s.textAlign=n.b7b_1.s8z_1,s.fillStyle=n.c7b_1.a8j(),s.strokeStyle=n.e7b_1.a8j(),s.lineWidth=n.x7a_1,s.lineCap="round",s.lineJoin="round";var f=n.b7b_1.s8z_1;qs(f,"left")?s.translate(_,0):qs(f,"right")?s.translate(u.s5l_1-_,0):s.translate(u.s5l_1/2,0);var v=0,d=o.n()-1|0;if(v<=d)do{var w=v;v=v+1|0;var p=o.h1(w);s.translate(0,n.b7b_1.n8z_1*(1+this.t8l_1)+_),n.y7a_1&&s.strokeText(p,0,0),s.fillText(p,0,0)}while(v<=d);return e},Pr(Nq).oa4=function(t,n,i){0===xu(n)&&Za(),t.font=i.b7b_1.toString();var e=Ru(n,["\n"]),r=e.n()*(i.b7b_1.n8z_1*(1+this.t8l_1)),s=0,u=0,o=e.n()-1|0;if(u<=o)do{var _=u;u=u+1|0,s=yu(s,t.measureText(e.h1(_)).width)}while(u<=o);return i.y7a_1&&(s+=i.x7a_1,r+=i.x7a_1),new Qa(s,r)},Pr(Rq).o6z=function(t){return new Uq(t)},Pr(Rq).v9z=function(t){return new Uq(t.href)},Pr(Rq).a7v=function(t){var n;try{n=this.v9z(new URL(t))}catch(t){if(t instanceof bs){var i=t;throw kr.i69(kr.t5i_1,"ImageSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(Rq).y7b=function(t,n){var i,e=Ps(t).qb(new Hr(-1,0)),r=Ps(n).qb(new Hr(65535,0)),s=e.nb(32).rb(r),u=this.n6z_1.q2(s);if(null==u){var o=new Fq(t,n);Pq().n6z_1.g2(s,o),i=o}else i=u;return new Uq(i)},Pr(Fq).fa3=function(){var t=document.createElement("canvas"),n=t instanceof HTMLCanvasElement?t:Nr();n.width=this.pa4_1<=0?16:Ar(this.pa4_1,16),n.height=1;var i=n.getContext("2d"),e=i instanceof CanvasRenderingContext2D?i:Nr();if(e.strokeStyle="white",e.beginPath(),this.pa4_1<=0)e.moveTo(0,.5),e.lineTo(n.width,.5);else{var r=0,s=0;if(s<=15)do{var u=s;s=s+1|0,0!=(this.qa4_1&1<>>0,e=arguments[1]>>0,r=e<0?Math.max(i+e,0):Math.min(e,i),s=arguments[2],u=void 0===s?i:s>>0,o=u<0?Math.max(i+u,0):Math.min(u,i);r>>0;return 0===n?32:31-(r(n)/s|0)|0})),void 0===Math.sign&&(Math.sign=function(t){return 0==(t=+t)||isNaN(t)?Number(t):t>0?1:-1}),void 0===Math.sinh){var u=Math.sqrt(2220446049250313e-31),o=Math.sqrt(u);Math.sinh=function(t){if(Math.abs(t)u&&(n+=t*t*t/6),n}var i=Math.exp(t),e=1/i;return isFinite(i)?isFinite(e)?(i-e)/2:-Math.exp(-t-Math.LN2):Math.exp(t-Math.LN2)}}void 0===Math.log10&&(Math.log10=function(t){return Math.log(t)*Math.LOG10E}),void 0===String.prototype.startsWith&&Object.defineProperty(String.prototype,"startsWith",{value:function(t,n){return n=n||0,this.lastIndexOf(t,n)===n}}),void 0===String.prototype.endsWith&&Object.defineProperty(String.prototype,"endsWith",{value:function(t,n){var i=this.toString();(void 0===n||n>i.length)&&(n=i.length),n-=t.length;var e=i.indexOf(t,n);return-1!==e&&e===n}}),void 0===Math.imul&&(Math.imul=function(t,n){return(4294901760&t)*(65535&n)+(65535&t)*(0|n)|0}),void 0===(e="function"==typeof(i=function(t){"use strict";var n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt,ct,ft,vt,dt,wt,pt,mt,gt,yt,bt,$t,kt,xt,qt,St,Ct,Et,Ot,jt=Math.clz32,Tt=ArrayBuffer.isView,At=Math.imul;function zt(t){return t===ga()?this:t.og(this,wa)}function It(t){return eu(this.i2(),t)?so(this,da)?this:fu():null}function Dt(t,n){return n(t,this)}function Mt(t){return eu(this.i2(),t)?ga():this}function Nt(){}function Rt(){}function Pt(){}function Lt(){}function Ft(){this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1,this.SIZE_BITS=8}function Ut(){this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYTES=2,this.SIZE_BITS=16}function Ht(){this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Vt(){this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Bt(){this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e292,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=8,this.SIZE_BITS=64}function Wt(){}function Yt(){}function Gt(t){return!(t==t)}function Kt(t){return 32-jt(~(0|t|-t))|0}function Xt(t){return function(t){if(t.d1())return[];for(var n=t.n(),i=Ts(Array(n),null),e=t.v(),r=0;e.w();){var s=r;r=s+1|0,i[s]=e.y()}return i}(t)}function Jt(t){return 0===(n=[t]).length?mn():yn(new $h(n,!0));var n}function Zt(t){return gr(n=[t],Yn(n.length));var n}function Qt(t){return Ah(i=Tn((n=[t]).length),n),i;var n,i}function tn(t){return t}function nn(t){return t<0&&function(){throw O_("Index overflow has happened.")}(),t}function en(t,i){!function(t,i){if(t.n()<=1)return n;var e=rn(t);kn(e,i);var r=0,s=e.length;if(r=0))throw Jo(iu("capacity must be non-negative."));return Ts(Array(t),null)}function fn(t,n){t[n]=null}function vn(t,n,i){t.fill(null,n,i)}function dn(t,n){return Co(t,n)}function wn(){h=this;var t=gn(0);t.v2_1=!0,this.w2_1=t}function pn(){return null==h&&new wn,h}function mn(){return t=au(hu($n)),$n.call(t,[]),t;var t}function gn(t){return function(t,n){if($n.call(n,[]),!(t>=0))throw Jo(iu("Negative initial capacity: "+t));return n}(t,au(hu($n)))}function yn(t){return function(t,n){var i=rn(t);return $n.call(n,i),n}(t,au(hu($n)))}function bn(t,n){return tt.x2(n,t.n()),n}function $n(t){pn(),hn.call(this),this.u2_1=t,this.v2_1=!1}function kn(t,n){if(function(){if(null!=a)return a;a=!1;var t=[],n=0;if(n<600)do{var i=n;n=n+1|0,t.push(i)}while(n<600);var e=Sn;t.sort(e);var r=1,s=t.length;if(r=_)return!1}while(r0))throw Jo(iu("Non-positive load factor: "+n));return i}(t,n,au(hu(gi)))}function ti(t){return t.g4_1.length}function ni(t){return t.j4_1.length}function ii(t){t.n4_1=t.n4_1+1|0}function ei(t,n){!function(t,n){var i=ti(t)-t.l4_1|0,e=t.l4_1-t.n()|0;return i=n&&e>=(ti(t)/4|0)}(t,n)?function(t,n){if(n<0)throw p_("too many elements");if(n>ti(t)){var i=tt.q4(ti(t),n);t.g4_1=dn(t.g4_1,i);var e=t,r=t.h4_1;e.h4_1=null==r?null:dn(r,i),t.i4_1=xo(t.i4_1,i);var s=Kn(0,i);s>ni(t)&&ui(t,s)}}(t,t.l4_1+n|0):ui(t,ni(t))}function ri(t){var n=t.h4_1;if(null!=n)return n;var i=cn(ti(t));return t.h4_1=i,i}function si(t,n){return null==n?0:At(ru(n),-1640531527)>>>t.m4_1|0}function ui(t,n){var i,e,r,s;ii(t),t.l4_1>t.o4_1&&function(t){for(var n=0,i=0,e=t.h4_1;n=0&&(t.g4_1[i]=t.g4_1[n],null!=e&&(e[i]=e[n]),i=i+1|0),n=n+1|0;vn(t.g4_1,i,t.l4_1),null==e||vn(e,i,t.l4_1),t.l4_1=i}(t),n!==ni(t)?(t.j4_1=new Int32Array(n),t.m4_1=Xn(0,n)):(i=t.j4_1,e=0,r=0,s=ni(t),r=r===K?0:r,s=s===K?i.length:s,tt.q(r,s,i.length),i.fill(e,r,s));for(var u=0;u0&&eu(t.g4_1[r-1|0],n))return r-1|0;if((e=e-1|0)<0)return-1;var s=i;i=s-1|0,0===s&&(i=ni(t)-1|0)}}function hi(t,n){for(var i=t.l4_1;(i=i-1|0)>=0;)if(t.i4_1[i]>=0&&eu(cu(t.h4_1)[i],n))return i;return-1}function ai(t,n){t.u();t:for(;;)for(var i=si(t,n),e=Xr(At(t.k4_1,2),ni(t)/2|0),r=0;;){var s=t.j4_1[i];if(s<=0){if(t.l4_1>=ti(t)){ei(t,1);continue t}var u=t.l4_1;t.l4_1=u+1|0;var o=u;return t.g4_1[o]=n,t.i4_1[o]=i,t.j4_1[i]=o+1|0,t.o4_1=t.o4_1+1|0,ii(t),r>t.k4_1&&(t.k4_1=r),o}if(eu(t.g4_1[s-1|0],n))return 0|-s;if((r=r+1|0)>e){ui(t,At(ni(t),2));continue t}var _=i;i=_-1|0,0===_&&(i=ni(t)-1|0)}}function li(t,i){fn(t.g4_1,i),function(t,i){for(var e=i,r=i,s=0,u=Xr(At(t.k4_1,2),ni(t)/2|0);;){var o=e;if(e=o-1|0,0===o&&(e=ni(t)-1|0),(s=s+1|0)>t.k4_1)return t.j4_1[r]=0,n;var _=t.j4_1[e];if(0===_)return t.j4_1[r]=0,n;if(_<0?(t.j4_1[r]=-1,r=e,s=0):((si(t,t.g4_1[_-1|0])-e|0)&(ni(t)-1|0))>=s&&(t.j4_1[r]=_,t.i4_1[_-1|0]=r,r=e,s=0),(u=u-1|0)<0)return t.j4_1[r]=-1,n}}(t,t.i4_1[i]),t.i4_1[i]=-1,t.o4_1=t.o4_1-1|0,ii(t)}function ci(t,n){var i=ai(t,n.i2()),e=ri(t);if(i>=0)return e[i]=n.j2(),!0;var r=e[(0|-i)-1|0];return!eu(n.j2(),r)&&(e[(0|-i)-1|0]=n.j2(),!0)}function fi(){this.r4_1=-1640531527,this.s4_1=8,this.t4_1=2,this.u4_1=-1}function vi(t){this.v4_1=t,this.w4_1=0,this.x4_1=-1,this.y4_1=this.v4_1.n4_1,this.z4()}function di(t){vi.call(this,t)}function wi(t){vi.call(this,t)}function pi(t){vi.call(this,t)}function mi(t,n){this.t5_1=t,this.u5_1=n}function gi(t,n,i,e,r,s){this.g4_1=t,this.h4_1=n,this.i4_1=i,this.j4_1=e,this.k4_1=r,this.l4_1=s,this.m4_1=Xn(0,ni(this)),this.n4_1=0,this.o4_1=0,this.p4_1=!1}function yi(){}function bi(){return En(t=au(hu(ki))),ki.call(t),t;var t}function $i(t){return function(t,n){return jn(t,n),ki.call(n),n}(t,au(hu(ki)))}function ki(){}function xi(){return Hn(t=au(hu(Ei))),Ei.call(t),t;var t}function qi(t){return function(t,n){return Bn(t,n),Ei.call(n),n}(t,au(hu(Ei)))}function Si(t,n){return function(t,n,i){Wn(t,n,i),Ei.call(i)}(t,1,n),n}function Ci(t){return Si(t,au(hu(Ei)))}function Ei(){}function Oi(){}function ji(t,n){return u_(t,n),Ai.call(n),n}function Ti(t,n,i){return __(t,n,i),Ai.call(i),i}function Ai(){_u(this,Ai)}function zi(t){var n;if(Gt(t))throw Jo("Cannot round NaN value.");return pu(),t>new mu(-1,2147483647).f6()?(pu(),n=new mu(-1,2147483647)):(pu(),t>>4|0)),i}(t,t>>31,au(hu(Na)));var t}function Di(){}function Mi(t){this.g6_1=t}function Ni(){c=this,Mi.call(this,Object),this.l6_1="Nothing"}function Ri(){return null==c&&new Ni,c}function Pi(){}function Li(t,n,i){Mi.call(this,t),this.n6_1=n,this.o6_1=i}function Fi(t){Mi.call(this,t);var n=t.$metadata$;this.q6_1=null==n?null:n.simpleName}function Ui(){}function Hi(){}function Vi(){}function Bi(){}function Wi(t,n,i){this.r6_1=t,this.s6_1=n,this.t6_1=i}function Yi(){return d||(d=!0,f=Ts(Array(0),null)),f}function Gi(t){return!(null==t)}function Ki(t){return ho(t)}function Xi(t){return null!=t&&"boolean"==typeof t}function Ji(t){return null!=t&&"number"==typeof t}function Zi(t){return null!=t&&"number"==typeof t}function Qi(t){return null!=t&&"number"==typeof t}function te(t){return null!=t&&"number"==typeof t}function ne(t){return null!=t&&"number"==typeof t}function ie(t){return null!=t&&oo(t)}function ee(t){return null!=t&&"string"==typeof t}function re(t){return t instanceof Error}function se(t){return null!=t&&lo(t)}function ue(t){return null!=t&&vo(t)}function oe(t){return null!=t&&co(t)}function _e(t){return null!=t&&fo(t)}function he(t){return null!=t&&wo(t)}function ae(t){return null!=t&&mo(t)}function le(t){return null!=t&&po(t)}function ce(t){return null!=t&&go(t)}function fe(){v=this;var t=Object;this.anyClass=new Li(t,"Any",Gi);var n=Number;this.numberClass=new Li(n,"Number",Ki),this.nothingClass=Ri();var i=Boolean;this.booleanClass=new Li(i,"Boolean",Xi);var e=Number;this.byteClass=new Li(e,"Byte",Ji);var r=Number;this.shortClass=new Li(r,"Short",Zi);var s=Number;this.intClass=new Li(s,"Int",Qi);var u=Number;this.floatClass=new Li(u,"Float",te);var o=Number;this.doubleClass=new Li(o,"Double",ne);var _=Array;this.arrayClass=new Li(_,"Array",ie);var h=String;this.stringClass=new Li(h,"String",ee);var a=Error;this.throwableClass=new Li(a,"Throwable",re);var l=Array;this.booleanArrayClass=new Li(l,"BooleanArray",se);var c=Uint16Array;this.charArrayClass=new Li(c,"CharArray",ue);var f=Int8Array;this.byteArrayClass=new Li(f,"ByteArray",oe);var d=Int16Array;this.shortArrayClass=new Li(d,"ShortArray",_e);var w=Int32Array;this.intArrayClass=new Li(w,"IntArray",he);var p=Array;this.longArrayClass=new Li(p,"LongArray",ae);var m=Float32Array;this.floatArrayClass=new Li(m,"FloatArray",le);var g=Float64Array;this.doubleArrayClass=new Li(g,"DoubleArray",ce)}function ve(){return null==v&&new fe,v}function de(t){return Array.isArray(t)?function(t){var n;switch(t.length){case 1:n=we(t[0]);break;case 0:n=Ri();break;default:n=new Pi}return n}(t):we(t)}function we(t){if(t===String)return ve().stringClass;var n,i=t.$metadata$;if(null!=i){var e;if(null==i.$kClass$){var r=new Fi(t);i.$kClass$=r,e=r}else e=i.$kClass$;n=e}else n=new Fi(t);return n}function pe(t){this.r7_1=t}function me(t){Vo(t,this),_u(this,me)}function ge(t){return ye(n=au(hu($e))),n;var n}function ye(t){return $e.call(t,""),t}function be(){return ye(au(hu($e)))}function $e(t){this.p5_1=void 0!==t?t:""}function ke(t){var n=fs(t).toUpperCase();return n.length>1?t:Vs(n,0)}function xe(t){return function(t){var n=cs(t);return 9<=n&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(t)}function qe(t){return function(t){var n=cs(t);return 452<=n&&n<=460||497<=n&&n<=499?Zu(At(3,(n+1|0)/3|0)):4304<=n&&n<=4346||4349<=n&&n<=4351?t:ke(t)}(t)}function Se(t){if(!(2<=t&&t<=36))throw Jo("radix "+t+" was not in valid range 2..36");return t}function Ce(t){var n,i=il(t);return null==i?sl(t):n=i,n}function Ee(t){var n=+t;return(Gt(n)&&!je(t)||0===n&&He(t))&&sl(t),n}function Oe(t,n){var i=as(t,48)>=0&&as(t,57)<=0?ls(t,48):as(t,65)>=0&&as(t,90)<=0?ls(t,65)+10|0:as(t,97)>=0&&as(t,122)<=0?ls(t,97)+10|0:as(t,128)<0?-1:as(t,65313)>=0&&as(t,65338)<=0?ls(t,65313)+10|0:as(t,65345)>=0&&as(t,65370)<=0?ls(t,65345)+10|0:Oo(t);return i>=n?-1:i}function je(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":return!0;default:return!1}}function Te(){w=this,this.g8_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.h8_1=new RegExp("[\\\\$]","g"),this.i8_1=new RegExp("\\$","g")}function Ae(){return null==w&&new Te,w}function ze(t){return t.y()}function Ie(t,n){Ae(),this.l8_1=t,this.m8_1=Tr(n),this.n8_1=new RegExp(t,Or(n,"","gu",K,K,K,Ne)),this.o8_1=null,this.p8_1=null}function De(t){this.a9_1=t}function Me(t,n,i,e){t.lastIndex=i;var r=t.exec(n);return null==r?null:new Pe(to(r.index,t.lastIndex-1|0),r,e,n)}function Ne(t){return t.d9_1}function Re(t,n){this.e9_1=t,this.f9_1=n,W_.call(this)}function Pe(t,n,i,e){this.j9_1=t,this.k9_1=n,this.l9_1=i,this.m9_1=e,this.g9_1=t,this.h9_1=new Re(n,this),this.i9_1=null}function Le(t){this.n9_1=t}function Fe(t,n){return Ue(),function(t,n,i){if(i=i!==K&&i,Ue(),i){var e=t.length,r=n.length,s=Math.min(e,r);if(0===s)return e-r|0;var u=0;if(u=0&&i<=t.length&&n<=i))throw Jo(iu("Failed requirement."));for(var r=n,s=be();r=0)s.s5(Zu(o));else if(o>>5==-2){var _=Je(t,o,r,i,e);_<=0?(s.s5(65533),r=r+(0|-_)|0):(s.s5(Zu(_)),r=r+1|0)}else if(o>>4==-2){var h=Ze(t,o,r,i,e);h<=0?(s.s5(65533),r=r+(0|-h)|0):(s.s5(Zu(h)),r=r+2|0)}else if(o>>3==-2){var a=Qe(t,o,r,i,e);if(a<=0)s.s5(65533),r=r+(0|-a)|0;else{var l=(a-65536|0)>>10|55296,c=1023&a|56320;s.s5(Zu(l)),s.s5(Zu(c)),r=r+3|0}}else tr(0,r,e),s.s5(65533)}return s.toString()}function Xe(t,n,i,e,r){if(nr(),!(55296<=n&&n<=56319)||i>=e)return tr(0,i,r);var s=cs(Vs(t,i));return 56320<=s&&s<=57343?65536+((1023&n)<<10)|0|1023&s:tr(0,i,r)}function Je(t,n,i,e,r){if(nr(),0==(30&n)||i>=e)return tr(0,i,r);var s=t[i];return 128!=(192&s)?tr(0,i,r):n<<6^s^3968}function Ze(t,n,i,e,r){if(nr(),i>=e)return tr(0,i,r);var s=t[i];if(0==(15&n)){if(160!=(224&s))return tr(0,i,r)}else if(13==(15&n)){if(128!=(224&s))return tr(0,i,r)}else if(128!=(192&s))return tr(0,i,r);if((i+1|0)===e)return tr(1,i,r);var u=t[i+1|0];return 128!=(192&u)?tr(1,i,r):n<<12^s<<6^u^-123008}function Qe(t,n,i,e,r){nr(),i>=e&&tr(0,i,r);var s=t[i];if(0==(15&n)){if((240&s)<=128)return tr(0,i,r)}else if(4==(15&n)){if(128!=(240&s))return tr(0,i,r)}else{if((15&n)>4)return tr(0,i,r);if(128!=(192&s))return tr(0,i,r)}if((i+1|0)===e)return tr(1,i,r);var u=t[i+1|0];if(128!=(192&u))return tr(1,i,r);if((i+2|0)===e)return tr(2,i,r);var o=t[i+2|0];return 128!=(192&o)?tr(2,i,r):n<<18^s<<12^u<<6^o^3678080}function tr(t,n,i){if(nr(),i)throw new me("Malformed sequence starting at "+(n-1|0));return 0|-t}function nr(){g||(g=!0,m=new Int8Array([-17,-65,-67]))}function ir(t){return(new sr).t9(t)}function er(t,i,e,r){if(!rr(t,i,e,r))return n;for(var s=t.cause;null!=s;){if(!rr(s,i,e,"Caused by: "))return n;s=s.cause}}function rr(t,n,i,e){n.p9_1.r5(i).r5(e);var r=t.toString();if(function(t,n){var i;t:{for(var e=t.q9_1,r=0,s=e.length;r0&&32===Vs(n,ul(n)-(s-1|0)|0);)s=s-1|0;return es(n,s)+"... and "+(e-1|0)+" more common stack frames skipped"}(n,u,_),Ws(i)>0){var h;if(0===_)h=0;else{for(var a=0,l=0;l=f&&n.p9_1.r5(i),n.p9_1.r5(w).r5("\n")}}else n.p9_1.r5(u).r5("\n")}else n.p9_1.r5(r).r5("\n");var m=function(t){var n=t._suppressed,i=null==n?null:n;return null==i?dh():i}(t);if(!m.d1())for(var g=i+" ",y=m.v();y.w();)er(y.y(),n,g,"Suppressed: ");return!0}function sr(){this.p9_1=be(),this.q9_1=[],this.r9_1="",this.s9_1=0}function ur(){if(C)return n;C=!0,y=new or("NANOSECONDS",0,1),b=new or("MICROSECONDS",1,1e3),$=new or("MILLISECONDS",2,1e6),k=new or("SECONDS",3,1e9),x=new or("MINUTES",4,6e10),q=new or("HOURS",5,36e11),S=new or("DAYS",6,864e11)}function or(t,n,i){Cs.call(this,t,n),this.w9_1=i}function _r(t,n,i){var e=Js(n.w9_1,i.w9_1);return e>0?t*(n.w9_1/i.w9_1):e<0?t/(i.w9_1/n.w9_1):t}function hr(t,n,i){var e,r=Js(n.w9_1,i.w9_1);if(r>0){var s,u=Ju(n.w9_1/i.w9_1),o=t.ba(u);o.aa(u).equals(t)?s=o:t.ca(new mu(0,0))>0?(pu(),s=new mu(-1,2147483647)):(pu(),s=new mu(0,-2147483648)),e=s}else e=r<0?t.aa(Ju(i.w9_1/n.w9_1)):t;return e}function ar(t,n,i){var e=Js(n.w9_1,i.w9_1);return e>0?t.ba(Ju(n.w9_1/i.w9_1)):e<0?t.aa(Ju(i.w9_1/n.w9_1)):t}function lr(){return ur(),y}function cr(){return ur(),$}function fr(){return ur(),k}function vr(){return ur(),x}function dr(){return ur(),q}function wr(){return ur(),S}function pr(t,n){return mr(t,n)>=0}function mr(t,n){if(null==n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,null==t[r])return r}while(i<=e)}else{var s=0,u=t.length-1|0;if(s<=u)do{var o=s;if(s=s+1|0,eu(n,t[o]))return o}while(s<=u)}return-1}function gr(t,n){for(var i=0,e=t.length;i=0}function kr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function xr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function qr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Sr(t,n,i,e,r,s,u){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,u=u===K?null:u,function(t,n,i,e,r,s,u,o){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,u=u===K?"...":u,o=o===K?null:o,n.s7(e);var _=0,h=0,a=t.length;t:for(;h1&&n.s7(i),!(s<0||_<=s))break t;Ja(n,l,o)}return s>=0&&_>s&&n.s7(u),n.s7(r),n}(t,be(),n,i,e,r,s,u).toString()}function Cr(t,n){return n>=0&&n<=yr(t)?t[n]:null}function Er(t){this.da_1=t}function Or(t,n,i,e,r,s,u){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,u=u===K?null:u,jr(t,be(),n,i,e,r,s,u).toString()}function jr(t,n,i,e,r,s,u,o){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,u=u===K?"...":u,o=o===K?null:o,n.s7(e);var _=0,h=t.v();t:for(;h.w();){var a=h.y();if((_=_+1|0)>1&&n.s7(i),!(s<0||_<=s))break t;Ja(n,a,o)}return s>=0&&_>s&&n.s7(u),n.s7(r),n}function Tr(t){if(so(t,ms)){var n;switch(t.n()){case 0:n=ha();break;case 1:n=Zt(so(t,ps)?t.h1(0):t.v().y());break;default:n=Lr(t,Ci(t.n()))}return n}return function(t){switch(t.n()){case 0:return ha();case 1:return Zt(t.v().y());default:return t}}(Lr(t,xi()))}function Ar(t,n){if(so(n,ms)){var i=gn(t.n()+n.n()|0);return i.z(t),i.z(n),i}var e=yn(t);return zh(e,n),e}function zr(t){return new Br(t)}function Ir(t){if(t.d1())throw k_("List is empty.");return t.h1(wh(t))}function Dr(t){var n;switch(t.n()){case 0:throw k_("List is empty.");case 1:n=t.h1(0);break;default:throw Jo("List has more than one element.")}return n}function Mr(t){return yn(t)}function Nr(t){if(so(t,ms)){var n;switch(t.n()){case 0:n=dh();break;case 1:n=Jt(so(t,ps)?t.h1(0):t.v().y());break;default:n=Mr(t)}return n}return gh(Fr(t))}function Rr(t){if(so(t,ps))return Dr(t);var n=t.v();if(!n.w())throw k_("Collection is empty.");var i=n.y();if(n.w())throw Jo("Collection has more than one element.");return i}function Pr(t){if(so(t,ps))return Vr(t);var n=t.v();if(!n.w())throw k_("Collection is empty.");return n.y()}function Lr(t,n){for(var i=t.v();i.w();){var e=i.y();n.s(e)}return n}function Fr(t){return so(t,ms)?Mr(t):Lr(t,mn())}function Ur(t){return so(t,ms)?qi(t):Lr(t,xi())}function Hr(t){if(so(t,ps))return Ir(t);var n=t.v();if(!n.w())throw k_("Collection is empty.");for(var i=n.y();n.w();)i=n.y();return i}function Vr(t){if(t.d1())throw k_("List is empty.");return t.h1(0)}function Br(t){this.ea_1=t}function Wr(t,n){return n<=r.MIN_VALUE?Pa().fa_1:to(t,n-1|0)}function Yr(t,n){return wt.ga(t,n,-1)}function Gr(t,n,i){if(n.ca(i)>0)throw Jo("Cannot coerce value to an empty range: maximum "+i.toString()+" is less than minimum "+n.toString()+".");return t.ca(n)<0?n:t.ca(i)>0?i:t}function Kr(t,n){return tn?n:t}function Jr(t,n,i){if(n>i)throw Jo("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t}function Zr(t,n){return new Hh(t,n)}function Qr(t){var n=t.v();if(!n.w())return dh();var i=n.y();if(!n.w())return Jt(i);var e=mn();for(e.s(i);n.w();)e.s(n.y());return e}function ts(t){return new ns(t)}function ns(t){this.na_1=t}function is(t){if(0===Ws(t))throw k_("Char sequence is empty.");return Vs(t,ul(t))}function es(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));return rs(t,Kr(t.length-n|0,0))}function rs(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));var i=Xr(n,t.length);return t.substring(0,i)}function ss(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));var i=Xr(n,t.length);return t.substring(i)}function us(){var t,n=(v_(t=au(hu(os))),os.call(t),t);return _u(n,us),n}function os(){_u(this,os)}function _s(t){return t}function hs(t){return 65535&t}function as(t,n){return t-n|0}function ls(t,n){return t-n|0}function cs(t){return t}function fs(t){return String.fromCharCode(t)}function vs(){O=this,this.pa_1=0,this.qa_1=65535,this.ra_1=55296,this.sa_1=56319,this.ta_1=56320,this.ua_1=57343,this.va_1=55296,this.wa_1=57343,this.xa_1=2,this.ya_1=16}function ds(){return null==O&&new vs,O}function ws(t){ds(),this.oa_1=t}function ps(){}function ms(){}function gs(){}function ys(){}function bs(){}function $s(){}function ks(){}function xs(){}function qs(){}function Ss(){}function Cs(t,n){this.x9_1=t,this.y9_1=n}function Es(t){var n=null==t?null:iu(t);return null==n?"null":n}function Os(t,n){var i=null==t?null:iu(t),e=null==i?"null":i,r=null==n?null:iu(n);return e+(null==r?"null":r)}function js(t){for(var n=1,i=[],e=0,r=t.length;e>5,f=new Int32Array(c+1|0),v=1<<(31&l),f[c]=f[c]|v,f);null!=a&&(i.push(a),u=Math.max(u,a.length)),u>n&&(n=u)}var l,c,f,v;return function(t,n){for(var i=0,e=new Int32Array(t);i65535),e)throw Jo("Invalid Char code: "+r);i=Zu(r)}else i=t.b(n);return i}function Bs(t){return"string"==typeof t}function Ws(t){return Bs(t)?t.length:t.a()}function Ys(t,n,i){return Bs(t)?t.substring(n,i):t.c(n,i)}function Gs(t,n){var i=t,e=n;if(i===e)return!0;if(null==i||null==e||!eo(e)||i.length!=e.length)return!1;var r=0,s=i.length;if(rn)i=1;else if(t===n){var e;if(0!==t)e=0;else{var r=1/t;e=r===1/n?0:r<0?-1:1}i=e}else i=t!=t?n!=n?0:1:-1;return i}function Qs(t,n){return tn?1:0}function tu(t){if(!("kotlinHashCodeValue$"in t)){var n=nu(),i=new Object;i.value=n,i.enumerable=!1,Object.defineProperty(t,"kotlinHashCodeValue$",i)}return t.kotlinHashCodeValue$}function nu(){return 4294967296*Math.random()|0}function iu(t){return null==t?"null":eo(t)?"[...]":"function"!=typeof t.toString?su(t):t.toString()}function eu(t,n){return null==t?null==n:null!=n&&("object"==typeof t&&"function"==typeof t.equals?t.equals(n):t!=t?n!=n:"number"==typeof t&&"number"==typeof n?t===n&&(0!==t||1/t==1/n):t===n)}function ru(t){if(null==t)return 0;var n,i=typeof t;switch(i){case"object":n="function"==typeof t.hashCode?t.hashCode():tu(t);break;case"function":n=tu(t);break;case"number":n=Us(t);break;case"boolean":n=uu(t);break;case"string":n=ou(String(t));break;case"bigint":n=function(t){for(var n=BigInt(32),i=BigInt(4294967295),e=t<0?-t:t,r=0,s=t<0?-1:1;0!=e;){var u=Number(e&i);r=At(31,r)+u|0,e>>=n}return At(r,s)}(t);break;case"symbol":n=function(t){var n=(e=t,Symbol.keyFor(e)!=K?(M===K&&(M=new Map),M):(N===K&&(N=new WeakMap),N)),i=n.get(t);var e;if(i!==K)return i;var r=nu();return n.set(t,r),r}(t);break;default:n=function(){throw new Error("Unexpected typeof `"+i+"`")}()}return n}function su(t){return Object.prototype.toString.call(t)}function uu(t){return t?1231:1237}function ou(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=t.charCodeAt(r);n=At(n,31)+s|0}while(r!==e);return n}function _u(t,n){null!=Error.captureStackTrace?Error.captureStackTrace(t,n):t.stack=(new Error).stack}function hu(t){return t.prototype}function au(t){return Object.create(t)}function lu(t,n,i){Error.call(t),function(t,n,i){var e=bo(Object.getPrototypeOf(t));if(0==(1&e)){var r;if(null==n){var s;if(null!==n){var u=null==i?null:i.toString();s=null==u?K:u}else s=K;r=s}else r=n;t.message=r}0==(2&e)&&(t.cause=i),t.name=Object.getPrototypeOf(t).constructor.name}(t,n,i)}function cu(t){var n;return null==t?function(){throw N_()}():n=t,n}function fu(){throw F_()}function vu(t,n){for(var i=t.length,e=n.length,r=0,s=n;rr)for(e.length=n;r>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,u=n.m_1>>>16|0,o=65535&n.m_1,_=n.l_1>>>16|0,h=0,a=0,l=0,c=0;return h=(h=h+((a=(a=a+((l=(l=l+((c=c+(s+(65535&n.l_1)|0)|0)>>>16|0)|0)+(r+_|0)|0)>>>16|0)|0)+(e+o|0)|0)>>>16|0)|0)+(i+u|0)|0,new mu((l&=65535)<<16|(c&=65535),(h&=65535)<<16|(a&=65535))}function Su(t,n){return Uu(),qu(t,n.lb())}function Cu(t,n){if(Uu(),Du(t))return gu();if(Du(n))return gu();if(Tu(t,$u()))return Mu(n)?$u():gu();if(Tu(n,$u()))return Mu(t)?$u():gu();if(Iu(t))return Iu(n)?Cu(Nu(t),Nu(n)):Nu(Cu(Nu(t),n));if(Iu(n))return Nu(Cu(t,Nu(n)));if(Ru(t,ku())&&Ru(n,ku()))return Pu(ju(t)*ju(n));var i=t.m_1>>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,u=n.m_1>>>16|0,o=65535&n.m_1,_=n.l_1>>>16|0,h=65535&n.l_1,a=0,l=0,c=0,f=0;return c=c+((f=f+At(s,h)|0)>>>16|0)|0,f&=65535,l=(l=l+((c=c+At(r,h)|0)>>>16|0)|0)+((c=(c&=65535)+At(s,_)|0)>>>16|0)|0,c&=65535,a=(a=(a=a+((l=l+At(e,h)|0)>>>16|0)|0)+((l=(l&=65535)+At(r,_)|0)>>>16|0)|0)+((l=(l&=65535)+At(s,o)|0)>>>16|0)|0,l&=65535,a=a+(((At(i,h)+At(e,_)|0)+At(r,o)|0)+At(s,u)|0)|0,new mu(c<<16|f,(a&=65535)<<16|l)}function Eu(t,n){Uu();var i=63&n;return 0===i?t:i<32?new mu(t.l_1<>>(32-i|0)|0):new mu(0,t.l_1<<(i-32|0))}function Ou(t,n){Uu();var i=63&n;return 0===i?t:i<32?new mu(t.l_1>>>i|0|t.m_1<<(32-i|0),t.m_1>>i):new mu(t.m_1>>(i-32|0),t.m_1>=0?0:-1)}function ju(t){return Uu(),4294967296*t.m_1+function(t){return Uu(),t.l_1>=0?t.l_1:4294967296+t.l_1}(t)}function Tu(t,n){return Uu(),t.m_1===n.m_1&&t.l_1===n.l_1}function Au(t,n){if(Uu(),n<2||36=0x8000000000000000)return Uu(),U;if(t<0)return Nu(Pu(-t));var n=4294967296;return new mu(t%n|0,t/n|0)}function Lu(t,n){return Uu(),xu(t,n)>0}function Fu(t,n){return Uu(),xu(t,n)>=0}function Uu(){B||(B=!0,P=zu(0),L=zu(1),F=zu(-1),U=new mu(-1,2147483647),H=new mu(0,-2147483648),V=zu(16777216))}function Hu(t,n,i,e,r){return Vu("class",t,n,i,e,r,null)}function Vu(t,n,i,e,r,s,u){return{kind:t,simpleName:n,associatedObjectKey:e,associatedObjects:r,suspendArity:s,$kClass$:K,defaultConstructor:i,iid:u}}function Bu(t,n,i,e,r,s,u,o,_){null!=e&&(t.prototype=Object.create(e.prototype),t.prototype.constructor=t);var h=i(n,s,u,o,null==_?[]:_);t.$metadata$=h,null!=r&&((null!=h.iid?t:t.prototype).$imask$=js(r))}function Wu(t,n,i,e,r){return Vu("interface",t,n,i,e,r,(W===K&&(W=0),W=W+1|0))}function Yu(t,n,i,e,r){return Vu("object",t,n,i,e,r,null)}function Gu(t){return t<<24>>24}function Ku(t){return t instanceof mu?t.la():function(t){return t>2147483647?2147483647:t<-2147483648?-2147483648:0|t}(t)}function Xu(t){return t<<16>>16}function Ju(t){return t instanceof mu?t:Pu(t)}function Zu(t){return hs(Xu(Ku(t)))}function Qu(t){return zu(t)}function to(t,n){return new La(t,n)}function no(){return io(),Hu(K,K,K,K,K)}function io(){if(!G){G=!0;var t=[no(),no()],n=[no(),no()];Y=[t,n,[no(),no()]]}}function eo(t){return!!ro(t)||Tt(t)}function ro(t){return Array.isArray(t)}function so(t,n){return uo(t,n.$metadata$.iid)}function uo(t,n){var i=t.$imask$;return null!=i&&function(t,n){var i=n>>5;if(i>t.length)return!1;var e=1<<(31&n);return!(0==(t[i]&e))}(i,n)}function oo(t){return!!ro(t)&&!t.$type$}function _o(t,n){if("function"==typeof t)return t.$arity===n;var i=null==t?null:t.constructor,e=null==i?null:i.$metadata$,r=null==e?null:e.suspendArity;if(null==r)return!1;var s=r,u=!1,o=0,_=s.length;t:for(;o<_;){var h=s[o];if(o=o+1|0,n===h){u=!0;break t}}return u}function ho(t){return"number"==typeof t||t instanceof mu}function ao(t){return"string"==typeof t||so(t,Nt)}function lo(t){return!!ro(t)&&"BooleanArray"===t.$type$}function co(t){return t instanceof Int8Array}function fo(t){return t instanceof Int16Array}function vo(t){return t instanceof Uint16Array&&"CharArray"===t.$type$}function wo(t){return t instanceof Int32Array}function po(t){return t instanceof Float32Array}function mo(t){return!!ro(t)&&"LongArray"===t.$type$}function go(t){return t instanceof Float64Array}function yo(t,n){if(n===Object)return null!=t;var i=typeof t;if(null==t||null==n||"object"!==i&&"function"!==i)return!1;var e="object"==typeof n?function(t){return Object.getPrototypeOf(t)}(n):n,r=e.$metadata$;if("interface"===(null==r?null:r.kind)){var s=r.iid;return null!=s&&uo(t,s)}return t instanceof e}function bo(t){var n=t.constructor,i=null==n?null:n.$metadata$,e=null==i?null:i.errorInfo;if(null!=e)return e;var r,s=0;if($o(t,"message")&&(s|=1),$o(t,"cause")&&(s|=2),3!==s){var u=(r=t,Object.getPrototypeOf(r));u!=Error.prototype&&(s|=bo(u))}return null!=i&&(i.errorInfo=s),s}function $o(t,n){return t.hasOwnProperty(n)}function ko(t){return new $n(t)}function xo(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Int32Array(n))}function qo(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Int8Array(n))}function So(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)}function Co(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return du(t,n,null)}function Eo(t,n,i){for(var e=new Int32Array(i),r=0,s=0,u=0,o=0,_=t.length;o<_;){var h=Vs(t,o);o=o+1|0;var a=n[h];if(s|=(31&a)<(s=t[r=(i+e|0)/2|0]))i=r+1|0;else{if(n===s)return r;e=r-1|0}return r-(n=t.pd_1.length?n-t.pd_1.length|0:n}function ah(t,n){return n===yr(t.pd_1)?0:n+1|0}function lh(t,n){return 0===n?yr(t.pd_1):n-1|0}function ch(){it=this,this.rd_1=[],this.sd_1=10}function fh(){return null==it&&new ch,it}function vh(){fh(),this.od_1=0,this.qd_1=0}function dh(){return bh()}function wh(t){return t.n()-1|0}function ph(t){return to(0,t.n()-1|0)}function mh(t){return 0===t.length?mn():yn(new $h(t,!0))}function gh(t){switch(t.n()){case 0:return dh();case 1:return Jt(t.h1(0));default:return t}}function yh(){et=this,this.be_1=new mu(-1478467534,-1720727600)}function bh(){return null==et&&new yh,et}function $h(t,n){this.fe_1=t,this.ge_1=n}function kh(){}function xh(t,n){this.je_1=t,this.ke_1=n}function qh(t,n){return so(t,ms)?t.n():n}function Sh(t){this.le_1=t}function Ch(t){this.me_1=t,this.ne_1=0}function Eh(){}function Oh(){var t=(null==st&&new jh,st);return so(t,ks)?t:fu()}function jh(){st=this,this.pe_1=new mu(-888910638,1920087921)}function Th(t,n){return function(t,n){for(var i=n.v();i.w();){var e=i.y(),r=e.ue(),s=e.ve();t.g2(r,s)}}(n,t),n}function Ah(t,n){for(var i=0,e=n.length;i=0))throw Jo(iu("count must be non-negative, but was "+this.bg_1+"."))}function ia(t){t.cg_1=-2===t.dg_1?t.eg_1.fg_1():t.eg_1.gg_1(cu(t.cg_1)),t.dg_1=null==t.cg_1?0:1}function ea(t){this.eg_1=t,this.cg_1=null,this.dg_1=-2}function ra(t,n){this.fg_1=t,this.gg_1=n}function sa(){}function ua(t){this.hg_1=t}function oa(t){return t.v()}function _a(t){return t}function ha(){return la()}function aa(){ot=this,this.ig_1=new mu(1993859828,793161749)}function la(){return null==ot&&new aa,ot}function ca(){}function fa(){}function va(){}function da(){}function wa(t,n){var i,e=t.ng(n.i2());if(e===ga())i=n;else{var r,s=e.kc(_t);if(null==s)r=new ka(e,n);else{var u=e.ng(_t);r=u===ga()?new ka(n,s):new ka(new ka(u,n),s)}i=r}return i}function pa(){}function ma(){ht=this,this.qg_1=new mu(0,0)}function ga(){return null==ht&&new ma,ht}function ya(t){for(var n=t,i=2;;){var e=n.rg_1,r=e instanceof ka?e:null;if(null==r)return i;n=r,i=i+1|0}}function ba(t,n){return eu(t.kc(n.i2()),n)}function $a(t,n){return 0===Ws(t)?iu(n):t+", "+n}function ka(t,n){this.rg_1=t,this.sg_1=n}function xa(t,n){this.jg_1=n;var i;i=t instanceof xa?t.kg_1:t,this.kg_1=i}function qa(t){this.tg_1=t}function Sa(){return function(){if(lt)return n;lt=!0,at=new Ca("COROUTINE_SUSPENDED",0),new Ca("UNDECIDED",1),new Ca("RESUMED",2)}(),at}function Ca(t,n){Cs.call(this,t,n)}function Ea(t){X_.call(this),this.ug_1=t}function Oa(t,n,i){var e;if(i>0)e=t>=n?n:n-ja(n,t,i)|0;else{if(!(i<0))throw Jo("Step is zero.");e=t<=n?n:n+ja(t,n,0|-i)|0}return e}function ja(t,n,i){return Ta(Ta(t,i)-Ta(n,i)|0,i)}function Ta(t,n){var i=t%n|0;return i>=0?i:i+n|0}function Aa(){ct=this,Ia.call(this),this.xg_1=Ii()}function za(){return null==ct&&new Aa,ct}function Ia(){za()}function Da(t,n){if(!(n>t))throw Jo(iu(function(t,n){return"Random range is empty: ["+iu(t)+", "+iu(n)+")."}(t,n)))}function Ma(){ft=this,this.bh_1=new mu(0,0)}function Na(t,n,i,e,r,s){if(null==ft&&new Ma,Ia.call(this),this.ch_1=t,this.dh_1=n,this.eh_1=i,this.fh_1=e,this.gh_1=r,this.hh_1=s,0==(this.ch_1|this.dh_1|this.eh_1|this.fh_1|this.gh_1))throw Jo(iu("Initial state must have at least one non-zero element."));var u=0;if(u<64)do{u=u+1|0,this.we()}while(u<64)}function Ra(){vt=this,this.fa_1=new La(1,0)}function Pa(){return null==vt&&new Ra,vt}function La(t,n){Pa(),Wa.call(this,t,n,1)}function Fa(){dt=this,this.jh_1=new Ua(1,0)}function Ua(t,n){null==dt&&new Fa,Ga.call(this,t,n,1)}function Ha(t,n,i){Dh.call(this),this.th_1=i,this.uh_1=n,this.vh_1=this.th_1>0?t<=n:t>=n,this.wh_1=this.vh_1?t:this.uh_1}function Va(t,n,i){Mh.call(this),this.xh_1=i,this.yh_1=n,this.zh_1=this.xh_1>0?as(t,n)<=0:as(t,n)>=0;var e;e=this.zh_1?t:this.yh_1,this.ai_1=e}function Ba(){}function Wa(t,n,i){if(0===i)throw Jo("Step must be non-zero.");if(i===r.MIN_VALUE)throw Jo("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.ha_1=t,this.ia_1=Oa(t,n,i),this.ja_1=i}function Ya(){}function Ga(t,n,i){if(0===i)throw Jo("Step must be non-zero.");if(i===r.MIN_VALUE)throw Jo("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.oh_1=t;var e=t,s=n;this.ph_1=Zu(Oa(e,s,i)),this.qh_1=i}function Ka(){}function Xa(){}function Ja(t,n,i){null!=i?t.s7(i(n)):null==n||ao(n)?t.s7(n):n instanceof ws?t.s5(n.oa_1):t.s7(Es(n))}function Za(t,n,i){if(t===n)return!0;if(!(i=i!==K&&i))return!1;var e=ke(t),r=ke(n);return e===r||Vs(fs(e).toLowerCase(),0)===Vs(fs(r).toLowerCase(),0)}function Qa(t){return 0===Ws(t)?nl:(n=t,function(t){return n+t});var n}function tl(t){var n;t:{var i=0,e=Ws(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!xe(Vs(t,r))){n=r;break t}}while(i<=e);n=-1}var s=n;return-1===s?t.length:s}function nl(t){return t}function il(t){return function(t,n){Se(n);var i,e,r,s=t.length;if(0===s)return null;var u=Vs(t,0);if(as(u,48)<0){if(1===s)return null;if(i=1,45===u)e=!0,pu(),r=new mu(0,-2147483648);else{if(43!==u)return null;e=!1,pu(),r=new mu(-1,2147483647).lb()}}else i=0,e=!1,pu(),r=new mu(-1,2147483647).lb();pu();var o=new mu(-1,2147483647).lb().aa(Qu(36)),_=o,h=new mu(0,0),a=i;if(a=0}function al(t,n,i){return i=i===K?32:i,iu(function(t,n,i){if(i=i===K?32:i,n<0)throw Jo("Desired length "+n+" is less than zero.");if(n<=Ws(t))return Ys(t,0,Ws(t));var e=ge(),r=1,s=n-Ws(t)|0;if(r<=s)do{var u=r;r=r+1|0,e.s5(i)}while(u!==s);return e.s7(t),e}(ao(t)?t:fu(),n,i))}function ll(t,n,i,e){var r;if(i=i===K?ul(t):i,(e=e!==K&&e)||"string"!=typeof t)r=function(t,n,i,e){if(i=i===K?ul(t):i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=fs(br(n));return t.lastIndexOf(r,i)}var s=Xr(i,ul(t));if(0<=s)do{var u=s;s=s+-1|0;var o,_=Vs(t,u);t:{for(var h=0,a=n.length;h0&&Za(Vs(t,0),n,i)}function fl(t,n,i,e){return i=i===K?0:i,(e=e!==K&&e)||"string"!=typeof t?yl(t,n,i,Ws(t),e):t.indexOf(n,i)}function vl(t,n,i,e){if(i=i===K?0:i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=fs(br(n));return t.indexOf(r,i)}var s=Kr(i,0),u=ul(t);if(s<=u)do{var o=s;s=s+1|0;var _,h=Vs(t,o);t:{for(var a=0,l=n.length;a(Ws(t)-r|0)||e>(Ws(i)-r|0))return!1;var u=0;if(u0,o=gn(u?Xr(e,10):10);t:do{var _=iu(Ys(t,r,s));if(o.s(_),r=s+n.length|0,u&&o.n()===(e-1|0))break t;s=fl(t,n,r,i)}while(-1!==s);var h=iu(Ys(t,r,Ws(t)));return o.s(h),o}function ml(t,n){return iu(Ys(t,n.y8(),n.z8()+1|0))}function gl(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,bl(r=r===K?0:r),new xl(t,i,r,(s=ko(n),u=e,function(t,n){var i=function(t,n,i,e,r){if(!e&&1===n.n()){var s=Rr(n),u=r?ql(t,s,i):fl(t,s,i);return u<0?null:kc(u,s)}var o=r?Yr(Xr(i,ul(t)),0):to(Kr(i,0),Ws(t));if("string"==typeof t){var _=o.ha_1,h=o.ia_1,a=o.ja_1;if(a>0&&_<=h||a<0&&h<=_)do{var l,c=_;_=_+a|0;t:{for(var f=n.v();f.w();){var v=f.y();if(We(v,0,t,c,v.length,e)){l=v;break t}}l=null}if(null!=l)return kc(c,l)}while(c!==h)}else{var d=o.ha_1,w=o.ia_1,p=o.ja_1;if(p>0&&d<=w||p<0&&w<=d)do{var m,g=d;d=d+p|0;t:{for(var y=n.v();y.w();){var b=y.y();if(wl(b,0,t,g,b.length,e)){m=b;break t}}m=null}if(null!=m)return kc(g,m)}while(g!==w)}return null}(t,s,n,u,!1);return null==i?null:kc(i.se_1,i.te_1.length)}));var s,u}function yl(t,n,i,e,r,s){var u=(s=s!==K&&s)?Yr(Xr(i,ul(t)),Kr(e,0)):to(Kr(i,0),Xr(e,Ws(t)));if("string"==typeof t&&"string"==typeof n){var o=u.ha_1,_=u.ia_1,h=u.ja_1;if(h>0&&o<=_||h<0&&_<=o)do{var a=o;if(o=o+h|0,We(n,0,t,a,Ws(n),r))return a}while(a!==_)}else{var l=u.ha_1,c=u.ia_1,f=u.ja_1;if(f>0&&l<=c||f<0&&c<=l)do{var v=l;if(l=l+f|0,wl(n,0,t,v,Ws(n),r))return v}while(v!==c)}return-1}function bl(t){if(!(t>=0))throw Jo(iu("Limit must be non-negative, but was "+t))}function $l(t){if(t.di_1<0)t.bi_1=0,t.ei_1=null;else{var n;if(t.gi_1.ji_1>0?(t.fi_1=t.fi_1+1|0,n=t.fi_1>=t.gi_1.ji_1):n=!1,n||t.di_1>Ws(t.gi_1.hi_1))t.ei_1=to(t.ci_1,ul(t.gi_1.hi_1)),t.di_1=-1;else{var i=t.gi_1.ki_1(t.gi_1.hi_1,t.di_1);if(null==i)t.ei_1=to(t.ci_1,ul(t.gi_1.hi_1)),t.di_1=-1;else{var e=i.ue(),r=i.ve();t.ei_1=Wr(t.ci_1,e),t.ci_1=e+r|0,t.di_1=t.ci_1+(0===r?1:0)|0}}t.bi_1=1}}function kl(t){this.gi_1=t,this.bi_1=-1,this.ci_1=Jr(t.ii_1,0,Ws(t.hi_1)),this.di_1=this.ci_1,this.ei_1=null,this.fi_1=0}function xl(t,n,i,e){this.hi_1=t,this.ii_1=n,this.ji_1=i,this.ki_1=e}function ql(t,n,i,e){return i=i===K?ul(t):i,(e=e!==K&&e)||"string"!=typeof t?yl(t,n,i,0,e,!0):t.lastIndexOf(n,i)}function Sl(t){return Qr(_l(t))}function Cl(t,n,i){return(i=i!==K&&i)||"string"!=typeof t||"string"!=typeof n?wl(t,Ws(t)-Ws(n)|0,n,0,Ws(n),i):Ye(t,n)}function El(t){if(jl(t)){var n=Ol(t);if(!(new mu(387905,-1073741824).ca(n)<=0&&n.ca(new mu(-387905,1073741823))<=0))throw T_(Ol(t).toString()+" ns is out of nanoseconds range")}else{var i=Ol(t);if(!(new mu(1,-1073741824).ca(i)<=0&&i.ca(new mu(-1,1073741823))<=0))throw T_(Ol(t).toString()+" ms is out of milliseconds range");var e=Ol(t);if(new mu(1108857478,-1074).ca(e)<=0&&e.ca(new mu(-1108857478,1073))<=0)throw T_(Ol(t).toString()+" ms is denormalized")}return t}function Ol(t){return t.ob(1)}function jl(t){return 0==(1&t.la())}function Tl(t){return 1==(1&t.la())}function Al(){pt=this,this.li_1=El(new mu(0,0)),this.mi_1=Yl(new mu(-1,1073741823)),this.ni_1=Yl(new mu(1,-1073741824))}function zl(){return null==pt&&new Al,pt}function Il(t){return n=Ol(t).lb(),i=1&t.la(),El(n.nb(1).gb(Qu(i)));var n,i}function Dl(t,n){if(Rl(t)){if(function(t){return!Rl(t)}(n)||t.sb(n).ca(new mu(0,0))>=0)return t;throw Jo("Summing infinite durations of different signs yields an undefined result.")}if(Rl(n))return n;var i,e;if((1&t.la())==(1&n.la())){var r=Ol(t).gb(Ol(n));i=jl(t)?(e=r,new mu(387905,-1073741824).ca(e)<=0&&e.ca(new mu(-387905,1073741823))<=0?Ql(e):Yl(Jl(e))):Xl(r)}else i=Tl(t)?Ml(0,Ol(t),Ol(n)):Ml(0,Ol(n),Ol(t));return i}function Ml(t,n,i){var e,r=Jl(i),s=n.gb(r);if(new mu(1108857478,-1074).ca(s)<=0&&s.ca(new mu(-1108857478,1073))<=0){var u=i.hb(Zl(r));e=Ql(Zl(s).gb(u))}else e=Yl(Gr(s,new mu(1,-1073741824),new mu(-1,1073741823)));return e}function Nl(t){return t.ca(new mu(0,0))<0}function Rl(t){return!!t.equals(zl().mi_1)||t.equals(zl().ni_1)}function Pl(t,n){var i=t.sb(n);if(i.ca(new mu(0,0))<0||0==(1&i.la()))return t.ca(n);var e=(1&t.la())-(1&n.la())|0;return Nl(t)?0|-e:e}function Ll(t){return Rl(t)?0:function(t){return Hl(t,dr())}(t).ib(Qu(24)).la()}function Fl(t){return Rl(t)?0:function(t){return Hl(t,vr())}(t).ib(Qu(60)).la()}function Ul(t){return Rl(t)?0:function(t){return Hl(t,fr())}(t).ib(Qu(60)).la()}function Hl(t,n){var i,e=t;return e.equals(zl().mi_1)?(pu(),i=new mu(-1,2147483647)):e.equals(zl().ni_1)?(pu(),i=new mu(0,-2147483648)):i=hr(Ol(t),function(t){return jl(t)?lr():cr()}(t),n),i}function Vl(t){var n,i=t;if(i.equals(new mu(0,0)))n="0s";else if(i.equals(zl().mi_1))n="Infinity";else if(i.equals(zl().ni_1))n="-Infinity";else{var e=Nl(t),r=be();e&&r.s5(45);var s=function(t){return Nl(t)?Il(t):t}(t),u=function(t){return Hl(t,wr())}(s),o=Ll(s),_=Fl(s),h=Ul(s),a=function(t){var n;n=Rl(t)?0:Tl(t)?Zl(Ol(t).ib(Qu(1e3))).la():Ol(t).ib(Qu(1e9)).la();return n}(s),l=!u.equals(new mu(0,0)),c=!(0===o),f=!(0===_),v=0!==h||!(0===a),d=0;if(l&&(r.w7(u).s5(100),d=d+1|0),c||l&&(f||v)){var w=d;d=w+1|0,w>0&&r.s5(32),r.v7(o).s5(104)}if(f||v&&(c||l)){var p=d;d=p+1|0,p>0&&r.s5(32),r.v7(_).s5(109)}if(v){var m=d;d=m+1|0,m>0&&r.s5(32),0!==h||l||c||f?Bl(r,0,h,a,9,"s",!1):a>=1e6?Bl(r,0,a/1e6|0,a%1e6|0,6,"ms",!1):a>=1e3?Bl(r,0,a/1e3|0,a%1e3|0,3,"us",!1):r.v7(a).r5("ns")}e&&d>1&&r.y7(1,40).s5(41),n=r.toString()}return n}function Bl(t,n,i,e,r,s,u){if(t.v7(i),0!==e){t.s5(46);var o,_=al(e.toString(),r,48);t:{var h=Ws(_)-1|0;if(0<=h)do{var a=h;if(h=h+-1|0,48!==Vs(_,a)){o=a;break t}}while(0<=h);o=-1}var l=o+1|0;!u&&l<3?t.u7(_,0,l):t.u7(_,0,At((l+2|0)/3|0,3))}t.r5(s)}function Wl(t){zl(),this.pi_1=t}function Yl(t){return El(t.nb(1).gb(Qu(1)))}function Gl(t,n){var i=ar(new mu(-387905,1073741823),lr(),n);return i.lb().ca(t)<=0&&t.ca(i)<=0?Ql(ar(t,n,lr())):Yl(Gr(hr(t,n,cr()),new mu(1,-1073741824),new mu(-1,1073741823)))}function Kl(t,n){var i=_r(t,n,lr());if(Gt(i))throw Jo(iu("Duration value cannot be NaN."));var e=zi(i);return new mu(387905,-1073741824).ca(e)<=0&&e.ca(new mu(-387905,1073741823))<=0?Ql(e):Xl(zi(_r(t,n,cr())))}function Xl(t){return new mu(1108857478,-1074).ca(t)<=0&&t.ca(new mu(-1108857478,1073))<=0?Ql(Zl(t)):Yl(Gr(t,new mu(1,-1073741824),new mu(-1,1073741823)))}function Jl(t){return t.aa(Qu(1e6))}function Zl(t){return t.ba(Qu(1e6))}function Ql(t){return El(t.nb(1))}function tc(t){var n,i,e=t.length,r=0;if(e>0&&hl("+-",Vs(t,0))&&(r=r+1|0),(e-r|0)>16){var s;t:{var u=to(r,ul(t));if(so(u,ms)&&u.d1())s=!0;else{for(var o=u.v();o.w();){var _=Vs(t,o.y());if(!(48<=_&&_<=57)){s=!1;break t}}s=!0}}n=s}else n=!1;return n?(45===Vs(t,0)?(pu(),i=new mu(0,-2147483648)):(pu(),i=new mu(-1,2147483647)),i):Ve(t,"+")?Ce(ss(t,1)):Ce(t)}function nc(t,n){var i;if(n){var e;if(72===t)e=dr();else if(77===t)e=vr();else{if(83!==t)throw Jo("Invalid duration ISO time unit: "+fs(t));e=fr()}i=e}else{if(68!==t)throw Jo("Invalid or unsupported duration ISO non-time unit: "+fs(t));i=wr()}return i}function ic(t){var n;switch(t){case"ns":n=lr();break;case"us":ur(),n=b;break;case"ms":n=cr();break;case"s":n=fr();break;case"m":n=vr();break;case"h":n=dr();break;case"d":n=wr();break;default:throw Jo("Unknown duration unit short name: "+t)}return n}function ec(){return oc(),mt}function rc(){}function sc(t){this.si_1=t}function uc(t,n){rc.call(this),this.ti_1=_o(t,2)?t:fu(),this.ui_1=n,this.vi_1=so(this,ca)?this:fu(),this.wi_1=ec()}function oc(){if(!gt){gt=!0;var t=Sa();mt=t}}function _c(){if($t)return n;$t=!0,new hc("SYNCHRONIZED",0),yt=new hc("PUBLICATION",1),bt=new hc("NONE",2)}function hc(t,n){Cs.call(this,t,n)}function ac(t){this.aj_1=t,this.bj_1=kt}function lc(){}function cc(t){return t}function fc(t){return t}function vc(t){return t instanceof pc}function dc(t){return t instanceof pc?t.dj_1:null}function wc(){}function pc(t){this.dj_1=t}function mc(t){this.ej_1=t}function gc(t){return new pc(t)}function yc(t){if(t instanceof pc)throw t.dj_1}function bc(t){S_(t=t===K?"An operation is not implemented.":t,this),_u(this,bc)}function $c(t,n){this.se_1=t,this.te_1=n}function kc(t,n){return new $c(t,n)}function xc(t,n,i){this.fj_1=t,this.gj_1=n,this.hj_1=i}function qc(t){return t}function Sc(t){return t}function Cc(){qt=this,this.ij_1=0,this.jj_1=-1,this.kj_1=1,this.lj_1=8}function Ec(){return null==qt&&new Cc,qt}function Oc(t,n){return Js(255&t,255&n)}function jc(t){Ec(),this.mj_1=t}function Tc(t){return t}function Ac(t){return t}function zc(t){return t.length}function Ic(t){this.oj_1=t,this.pj_1=0}function Dc(t,n){return(null!=new jc(n)?new jc(n):fu())instanceof jc&&qr(t,n)}function Mc(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof jc&&qr(t,s.mj_1))){i=!1;break t}}i=!0}}return i}function Nc(t){this.rj_1=t}function Rc(t){return t}function Pc(t){return t}function Lc(){St=this,this.uj_1=0,this.vj_1=-1,this.wj_1=4,this.xj_1=32}function Fc(){return null==St&&new Lc,St}function Uc(t,n){return Af(t,n)}function Hc(t){Fc(),this.yj_1=t}function Vc(t){return t}function Bc(t){return t}function Wc(t){return t.length}function Yc(t){this.ak_1=t,this.bk_1=0}function Gc(t,n){return(null!=new Hc(n)?new Hc(n):fu())instanceof Hc&&kr(t,n)}function Kc(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof Hc&&kr(t,s.yj_1))){i=!1;break t}}i=!0}}return i}function Xc(t){this.dk_1=t}function Jc(){Ct=this;Fc();Fc(),this.gk_1=new Zc(-1,0)}function Zc(t,n){null==Ct&&new Jc,tf.call(this,t,n,1)}function Qc(){}function tf(t,n,i){if(0===i)throw Jo("Step must be non-zero.");if(i===r.MIN_VALUE)throw Jo("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.lk_1=t,this.mk_1=function(t,n,i){var e;if(i>0){var r;if(Af(t,n)>=0)r=n;else r=n-pf(n,t,i)|0;e=r}else{if(!(i<0))throw Jo("Step is zero.");var s;if(Af(t,n)<=0)s=n;else s=n+pf(t,n,0|-i)|0;e=s}return e}(t,n,i),this.nk_1=i}function nf(t,n,i){this.pk_1=n;var e;e=i>0?Af(t,n)<=0:Af(t,n)>=0,this.qk_1=e,this.rk_1=i,this.sk_1=this.qk_1?t:this.pk_1}function ef(t){return t}function rf(t){return t}function sf(){Et=this,this.tk_1=new mu(0,0),this.uk_1=new mu(-1,-1),this.vk_1=8,this.wk_1=64}function uf(){return null==Et&&new sf,Et}function of(t,n){return If(t,n)}function _f(t){return function(t,n){if(t.ca(new mu(0,0))>=0)return B_(t,n);var i=t.pb(1).aa(Qu(n)).nb(1),e=i.ba(Qu(n)),r=t.hb(e);return r.ca(Qu(n))>=0&&(r=r.hb(Qu(n)),i=i.gb(Qu(1))),B_(i,n)+B_(r,n)}(t,10)}function hf(t){uf(),this.xk_1=t}function af(t){return t}function lf(t){return t}function cf(t){return t.length}function ff(t){this.zk_1=t,this.al_1=0}function vf(t,n){return(null!=new hf(n)?new hf(n):fu())instanceof hf&&$r(t,n)}function df(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof hf&&$r(t,s.xk_1))){i=!1;break t}}i=!0}}return i}function wf(t){this.cl_1=t}function pf(t,n,i){var e,r=zf(t,i),s=zf(n,i);Af(r,s)>=0?e=r-s|0:e=(r-s|0)+i|0;return e}function mf(t){return t}function gf(t){return t}function yf(){Ot=this,this.fl_1=0,this.gl_1=-1,this.hl_1=2,this.il_1=16}function bf(){return null==Ot&&new yf,Ot}function $f(t,n){return Js(65535&t,65535&n)}function kf(t){bf(),this.jl_1=t}function xf(t){return t}function qf(t){return t}function Sf(t){return t.length}function Cf(t){this.ll_1=t,this.ml_1=0}function Ef(t,n){return(null!=new kf(n)?new kf(n):fu())instanceof kf&&xr(t,n)}function Of(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof kf&&xr(t,s.jl_1))){i=!1;break t}}i=!0}}return i}function jf(t){this.ol_1=t}function Tf(t,n){Se(n);var i=t.length;if(0===i)return null;Fc();var e,r=Vs(t,0);if(as(r,48)<0){if(1===i||43!==r)return null;e=1}else e=0;var s,u,o,_=119304647,h=_,a=n,l=0,c=e;if(c0){if(h!==_)return null;if(Af(l,(s=a,u=void 0,o=void 0,u=Qu(-1).qb(new mu(-1,0)),o=Qu(s).qb(new mu(-1,0)),h=u.aa(o).la()))>0)return null}var d=l=At(l,a);if(Af(l=l+v|0,d)<0)return null}while(c=0)return i.aa(e);var r=i.pb(1).aa(e).nb(1),s=If(i.hb(r.ba(e)),e)>=0?1:0;return r.gb(Qu(s))}return Bu(Nt,"CharSequence",Wu),Bu(Rt,"Comparable",Wu),Bu(Pt,"Number",Hu),Bu(Lt,"Unit",Yu),Bu(Ft,"ByteCompanionObject",Yu),Bu(Ut,"ShortCompanionObject",Yu),Bu(Ht,"IntCompanionObject",Yu),Bu(Vt,"FloatCompanionObject",Yu),Bu(Bt,"DoubleCompanionObject",Yu),Bu(Wt,"StringCompanionObject",Yu),Bu(Yt,"BooleanCompanionObject",Yu),Bu(ms,"Collection",Wu),Bu(W_,"AbstractCollection",Hu,K,[ms]),Bu(qs,"MutableIterable",Wu),Bu(un,"AbstractMutableCollection",Hu,W_,[W_,ms,qs]),Bu(on,"IteratorImpl",Hu),Bu(_n,"ListIteratorImpl",Hu,on),Bu(ps,"List",Wu,K,[ms]),Bu(ys,"MutableList",Wu,K,[ps,ms,qs]),Bu(hn,"AbstractMutableList",Hu,un,[un,ys]),Bu(ks,"Map",Wu),Bu(rh,"AbstractMap",Hu,K,[ks]),Bu(xs,"MutableMap",Wu,K,[ks]),Bu(an,"AbstractMutableMap",Hu,rh,[rh,xs]),Bu(bs,"Set",Wu,K,[ms]),Bu(gs,"MutableSet",Wu,K,[bs,ms,qs]),Bu(ln,"AbstractMutableSet",Hu,un,[un,gs]),Bu(wn,"Companion",Yu),Bu(Oi,"RandomAccess",Wu),Bu($n,"ArrayList",Hu,hn,[hn,ys,Oi],mn),Bu(zn,"HashMap",Hu,an,[an,xs],On),Bu(In,"HashMapKeys",Hu,ln,[gs,ln]),Bu(Dn,"HashMapValues",Hu,un,[ms,qs,un]),Bu(Nn,"HashMapEntrySetBase",Hu,ln,[gs,ln]),Bu(Mn,"HashMapEntrySet",Hu,Nn),Bu(Rn,K,Hu),Bu(Pn,"HashMapKeysDefault",Hu,ln),Bu(Ln,K,Hu),Bu(Fn,"HashMapValuesDefault",Hu,un),Bu(Gn,"HashSet",Hu,ln,[ln,gs],Vn),Bu(fi,"Companion",Yu),Bu(vi,"Itr",Hu),Bu(di,"KeysItr",Hu,vi),Bu(wi,"ValuesItr",Hu,vi),Bu(pi,"EntriesItr",Hu,vi),Bu($s,"Entry",Wu),Bu(mi,"EntryRef",Hu,K,[$s]),Bu(yi,"InternalMap",Wu),Bu(gi,"InternalHashMap",Hu,K,[yi],Jn),Bu(ki,"LinkedHashMap",Hu,zn,[zn,xs],bi),Bu(Ei,"LinkedHashSet",Hu,Gn,[Gn,gs],xi),Bu(Yo,"Exception",Hu,Error,K,(function t(){var n=Ho(au(hu(Yo)));return _u(n,t),n})),Bu(y_,"RuntimeException",Hu,Yo,K,d_),Bu(h_,"IllegalStateException",Hu,y_,K,(function t(){var n=s_(au(hu(h_)));return _u(n,t),n})),Bu(Ai,"CancellationException",Hu,h_,K,(function t(){var n,i=(s_(n=au(hu(Ai))),Ai.call(n),n);return _u(i,t),i})),Bu(Di,"KClass",Wu),Bu(Mi,"KClassImpl",Hu,K,[Di]),Bu(Ni,"NothingKClassImpl",Yu,Mi),Bu(Pi,"ErrorKClass",Hu,K,[Di],Pi),Bu(Li,"PrimitiveKClassImpl",Hu,Mi),Bu(Fi,"SimpleKClassImpl",Hu,Mi),Bu(Ui,"KProperty0",Wu),Bu(Hi,"KProperty1",Wu),Bu(Vi,"KMutableProperty1",Wu,K,[Hi]),Bu(Bi,"KMutableProperty0",Wu,K,[Ui]),Bu(Wi,"KTypeImpl",Hu),Bu(fe,"PrimitiveClasses",Yu),Bu(Nh,"Sequence",Wu),Bu(pe,"ConstrainedOnceSequence",Hu,K,[Nh]),Bu(me,"CharacterCodingException",Hu,Yo,K,(function t(){var n,i=(n=au(hu(me)),me.call(n,null),n);return _u(i,t),i})),Bu($e,"StringBuilder",Hu,K,[Nt],be),Bu(Te,"Companion",Yu),Bu(Ie,"Regex",Hu),Bu(De,"MatchGroup",Hu),Bu(Re,K,Hu,W_,[ms,W_]),Bu(Pe,K,Hu),Bu(Le,"sam$kotlin_Comparator$0",Hu),Bu(sr,"ExceptionTraceBuilder",Hu,K,K,sr),Bu(Cs,"Enum",Hu,K,[Rt]),Bu(or,"DurationUnit",Hu,Cs),Bu(Er,K,Hu,K,[Nh]),Bu(Br,K,Hu,K,[Nh]),Bu(ns,K,Hu),Bu(os,"KotlinNothingValueException",Hu,y_,K,us),Bu(vs,"Companion",Yu),Bu(ws,"Char",Hu,K,[Rt]),Bu(Ss,"Companion",Yu),Bu(Ns,K,Hu),Bu(wu,"Companion",Yu),Bu(mu,"Long",Hu,Pt,[Pt,Rt]),Bu(To,"Digit",Yu),Bu(zo,"Letter",Yu),Bu(Do,"OtherLowercase",Yu),Bu(ca,"Continuation",Wu),Bu(Ro,"CoroutineImpl",Hu,K,[ca]),Bu(Po,"CompletedContinuation",Yu,K,[ca]),Bu(Uo,K,Hu,Ro),Bu(n_,"IllegalArgumentException",Hu,y_,K,Ko),Bu(r_,"IndexOutOfBoundsException",Hu,y_,K,i_),Bu(f_,"UnsupportedOperationException",Hu,y_,K,l_),Bu(x_,"NoSuchElementException",Hu,y_,K,b_),Bu(E_,"Error",Hu,Error,K,(function t(){var n=q_(au(hu(E_)));return _u(n,t),n})),Bu(j_,"ArithmeticException",Hu,y_,K,(function t(){var n,i=(v_(n=au(hu(j_))),j_.call(n),n);return _u(i,t),i})),Bu(A_,"AssertionError",Hu,E_,K,(function t(){var n,i=(q_(n=au(hu(A_))),A_.call(n),n);return _u(i,t),i})),Bu(I_,"NumberFormatException",Hu,n_,K,(function t(){var n,i=(Go(n=au(hu(I_))),I_.call(n),n);return _u(i,t),i})),Bu(M_,"ConcurrentModificationException",Hu,y_,K,D_),Bu(R_,"NullPointerException",Hu,y_,K,N_),Bu(L_,"NoWhenBranchMatchedException",Hu,y_,K,P_),Bu(U_,"ClassCastException",Hu,y_,K,F_),Bu(V_,"UninitializedPropertyAccessException",Hu,y_,K,(function t(){var n,i=(v_(n=au(hu(V_))),V_.call(n),n);return _u(i,t),i})),Bu(Y_,"IteratorImpl",Hu),Bu(G_,"ListIteratorImpl",Hu,Y_),Bu(K_,"Companion",Yu),Bu(X_,"AbstractList",Hu,W_,[W_,ps]),Bu(J_,K,Hu),Bu(Z_,K,Hu),Bu(nh,"Companion",Yu),Bu(uh,"AbstractSet",Hu,W_,[W_,bs]),Bu(ih,K,Hu,uh),Bu(eh,K,Hu,W_),Bu(sh,"Companion",Yu),Bu(ch,"Companion",Yu),Bu(vh,"ArrayDeque",Hu,hn,K,oh),Bu(yh,"EmptyList",Yu,K,[ps,Oi]),Bu($h,"ArrayAsCollection",Hu,K,[ms]),Bu(kh,"EmptyIterator",Yu),Bu(xh,"IndexedValue",Hu),Bu(Sh,"IndexingIterable",Hu),Bu(Ch,"IndexingIterator",Hu),Bu(Eh,"MapWithDefault",Wu,K,[ks]),Bu(jh,"EmptyMap",Yu,K,[ks]),Bu(Dh,"IntIterator",Hu),Bu(Mh,"CharIterator",Hu),Bu(Rh,"SequenceScope",Hu,K,K,K,K,K,[1]),Bu(Lh,"SequenceBuilderIterator",Hu,Rh,[Rh,ca],Lh,K,K,[1]),Bu(Fh,K,Hu,K,[Nh]),Bu(Uh,K,Hu),Bu(Hh,"TransformingSequence",Hu,K,[Nh]),Bu(Bh,K,Hu),Bu(Wh,"FilteringSequence",Hu,K,[Nh]),Bu(Xh,K,Hu),Bu(Jh,"FlatteningSequence",Hu,K,[Nh]),Bu(Qh,"DropTakeSequence",Wu,K,[Nh]),Bu(ta,K,Hu),Bu(na,"TakeSequence",Hu,K,[Nh,Qh]),Bu(ea,K,Hu),Bu(ra,"GeneratorSequence",Hu,K,[Nh]),Bu(sa,"EmptySequence",Yu,K,[Nh,Qh]),Bu(ua,K,Hu,K,[Nh]),Bu(aa,"EmptySet",Yu,K,[bs]),Bu(fa,"Key",Yu),Bu(pa,"CoroutineContext",Wu),Bu(da,"Element",Wu,K,[pa]),Bu(va,"ContinuationInterceptor",Wu,K,[da]),Bu(ma,"EmptyCoroutineContext",Yu,K,[pa]),Bu(ka,"CombinedContext",Hu,K,[pa]),Bu(xa,"AbstractCoroutineContextKey",Hu),Bu(qa,"AbstractCoroutineContextElement",Hu,K,[da]),Bu(Ca,"CoroutineSingletons",Hu,Cs),Bu(Ea,"EnumEntriesList",Hu,X_,[ps,X_]),Bu(Ia,"Random",Hu),Bu(Aa,"Default",Yu,Ia),Bu(Ma,"Companion",Yu),Bu(Na,"XorWowRandom",Hu,Ia),Bu(Ra,"Companion",Yu),Bu(Wa,"IntProgression",Hu),Bu(Ka,"ClosedRange",Wu),Bu(La,"IntRange",Hu,Wa,[Wa,Ka]),Bu(Fa,"Companion",Yu),Bu(Ga,"CharProgression",Hu),Bu(Ua,"CharRange",Hu,Ga,[Ga,Ka]),Bu(Ha,"IntProgressionIterator",Hu,Dh),Bu(Va,"CharProgressionIterator",Hu,Mh),Bu(Ba,"Companion",Yu),Bu(Ya,"Companion",Yu),Bu(Xa,"KTypeParameter",Wu),Bu(kl,K,Hu),Bu(xl,"DelimitedRangesSequence",Hu,K,[Nh]),Bu(Al,"Companion",Yu),Bu(Wl,"Duration",Hu,K,[Rt]),Bu(rc,"DeepRecursiveScope",Hu,K,K,K,K,K,[1]),Bu(sc,"DeepRecursiveFunction",Hu),Bu(uc,"DeepRecursiveScopeImpl",Hu,rc,[rc,ca],K,K,K,[1]),Bu(hc,"LazyThreadSafetyMode",Hu,Cs),Bu(ac,"UnsafeLazyImpl",Hu),Bu(lc,"UNINITIALIZED_VALUE",Yu),Bu(wc,"Companion",Yu),Bu(pc,"Failure",Hu),Bu(mc,"Result",Hu),Bu(bc,"NotImplementedError",Hu,E_,K,bc),Bu($c,"Pair",Hu),Bu(xc,"Triple",Hu),Bu(Cc,"Companion",Yu),Bu(jc,"UByte",Hu,K,[Rt]),Bu(Ic,"Iterator",Hu),Bu(Nc,"UByteArray",Hu,K,[ms]),Bu(Lc,"Companion",Yu),Bu(Hc,"UInt",Hu,K,[Rt]),Bu(Yc,"Iterator",Hu),Bu(Xc,"UIntArray",Hu,K,[ms]),Bu(Jc,"Companion",Yu),Bu(tf,"UIntProgression",Hu),Bu(Zc,"UIntRange",Hu,tf,[tf,Ka]),Bu(Qc,"Companion",Yu),Bu(nf,"UIntProgressionIterator",Hu),Bu(sf,"Companion",Yu),Bu(hf,"ULong",Hu,K,[Rt]),Bu(ff,"Iterator",Hu),Bu(wf,"ULongArray",Hu,K,[ms]),Bu(yf,"Companion",Yu),Bu(kf,"UShort",Hu,K,[Rt]),Bu(Cf,"Iterator",Hu),Bu(jf,"UShortArray",Hu,K,[ms]),hu(Lt).toString=function(){return"kotlin.Unit"},hu(Ft).e=function(){return this.MIN_VALUE},hu(Ft).f=function(){return this.MAX_VALUE},hu(Ft).g=function(){return this.SIZE_BYTES},hu(Ft).h=function(){return this.SIZE_BITS},hu(Ut).e=function(){return this.MIN_VALUE},hu(Ut).f=function(){return this.MAX_VALUE},hu(Ut).g=function(){return this.SIZE_BYTES},hu(Ut).h=function(){return this.SIZE_BITS},hu(Ht).e=function(){return this.MIN_VALUE},hu(Ht).f=function(){return this.MAX_VALUE},hu(Ht).g=function(){return this.SIZE_BYTES},hu(Ht).h=function(){return this.SIZE_BITS},hu(Vt).e=function(){return this.MIN_VALUE},hu(Vt).f=function(){return this.MAX_VALUE},hu(Vt).i=function(){return this.POSITIVE_INFINITY},hu(Vt).j=function(){return this.NEGATIVE_INFINITY},hu(Vt).k=function(){return this.NaN},hu(Vt).g=function(){return this.SIZE_BYTES},hu(Vt).h=function(){return this.SIZE_BITS},hu(Bt).e=function(){return this.MIN_VALUE},hu(Bt).f=function(){return this.MAX_VALUE},hu(Bt).i=function(){return this.POSITIVE_INFINITY},hu(Bt).j=function(){return this.NEGATIVE_INFINITY},hu(Bt).k=function(){return this.NaN},hu(Bt).g=function(){return this.SIZE_BYTES},hu(Bt).h=function(){return this.SIZE_BITS},hu(un).t=function(t){this.u();for(var n=this.v();n.w();)if(eu(n.y(),t))return n.x(),!0;return!1},hu(un).z=function(t){this.u();for(var n=!1,i=t.v();i.w();){var e=i.y();this.s(e)&&(n=!0)}return n},hu(un).a1=function(t){return this.u(),n=so(this,qs)?this:fu(),i=t,function(t,n,i){for(var e=!1,r=t.v();r.w();)n(r.y())===i&&(r.x(),e=!0);return e}(n,(function(t){return!i.r(t)}),!0);var n,i},hu(un).b1=function(){this.u();for(var t=this.v();t.w();)t.y(),t.x()},hu(un).toJSON=function(){return this.toArray()},hu(un).u=function(){},hu(on).w=function(){return this.e1_10},hu(_n).q1=function(){if(!this.p1())throw b_();return this.e1_1=this.e1_1-1|0,this.f1_1=this.e1_1,this.n1_1.h1(this.f1_1)},hu(hn).s=function(t){return this.u(),this.r1(this.n(),t),!0},hu(hn).b1=function(){this.u(),this.s1(0,this.n())},hu(hn).v=function(){return new on(this)},hu(hn).r=function(t){return this.t1(t)>=0},hu(hn).t1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(eu(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},hu(hn).u1=function(t){return new _n(this,t)},hu(hn).s1=function(t,n){var i=this.u1(t),e=n-t|0,r=0;if(r0?this:pn().w2_1},hu($n).z2=function(t){},hu($n).n=function(){return this.u2_1.length},hu($n).h1=function(t){var n=this.u2_1[bn(this,t)];return null==n||null!=n?n:fu()},hu($n).o=function(t,n){this.u(),bn(this,t);var i=this.u2_1[t];return this.u2_1[t]=n,null==i||null!=i?i:fu()},hu($n).s=function(t){return this.u(),this.u2_1.push(t),this.i1_1=this.i1_1+1|0,!0},hu($n).r1=function(t,n){this.u(),this.u2_1.splice(function(t,n){return tt.o1(n,t.n()),n}(this,t),0,n),this.i1_1=this.i1_1+1|0},hu($n).z=function(t){if(this.u(),t.d1())return!1;for(var n=(o=this,_=t.n(),h=void 0,h=o.n(),o.u2_1.length=o.n()+_|0,h),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0;var u=nn(s);this.u2_1[n+u|0]=r}var o,_,h;return this.i1_1=this.i1_1+1|0,!0},hu($n).j1=function(t){return this.u(),bn(this,t),this.i1_1=this.i1_1+1|0,t===wh(this)?this.u2_1.pop():this.u2_1.splice(t,1)[0]},hu($n).t=function(t){this.u();var n=0,i=this.u2_1.length-1|0;if(n<=i)do{var e=n;if(n=n+1|0,eu(this.u2_1[e],t))return this.u2_1.splice(e,1),this.i1_1=this.i1_1+1|0,!0}while(n<=i);return!1},hu($n).s1=function(t,n){this.u(),this.i1_1=this.i1_1+1|0,this.u2_1.splice(t,n-t|0)},hu($n).b1=function(){this.u(),this.u2_1=[],this.i1_1=this.i1_1+1|0},hu($n).t1=function(t){return mr(this.u2_1,t)},hu($n).toString=function(){return Sr(this.u2_1,", ","[","]",K,K,Xs)},hu($n).a3=function(){return[].slice.call(this.u2_1)},hu($n).toArray=function(){return this.a3()},hu($n).u=function(){if(this.v2_1)throw l_()},hu(zn).b1=function(){this.f3_1.b1()},hu(zn).n2=function(t){return this.f3_1.h3(t)},hu(zn).o2=function(t){return this.f3_1.o2(t)},hu(zn).b2=function(){return new In(this.f3_1)},hu(zn).c2=function(){return new Dn(this.f3_1)},hu(zn).f2=function(){var t,n=this.g3_1;if(null==n){var i=new Mn(this.f3_1);this.g3_1=i,t=i}else t=n;return t},hu(zn).q2=function(t){return this.f3_1.q2(t)},hu(zn).g2=function(t,n){return this.f3_1.g2(t,n)},hu(zn).k2=function(t){return this.f3_1.k2(t)},hu(zn).n=function(){return this.f3_1.n()},hu(zn).h2=function(t){return this.f3_1.h2(t)},hu(In).n=function(){return this.i3_1.n()},hu(In).d1=function(){return 0===this.i3_1.n()},hu(In).r=function(t){return this.i3_1.h3(t)},hu(In).b1=function(){return this.i3_1.b1()},hu(In).s=function(t){throw l_()},hu(In).z=function(t){throw l_()},hu(In).t=function(t){return!(null==this.i3_1.k2(t))},hu(In).v=function(){return this.i3_1.j3()},hu(In).u=function(){return this.i3_1.u()},hu(Dn).n=function(){return this.k3_1.n()},hu(Dn).d1=function(){return 0===this.k3_1.n()},hu(Dn).l3=function(t){return this.k3_1.o2(t)},hu(Dn).r=function(t){return(null==t||null!=t)&&this.l3(null==t||null!=t?t:fu())},hu(Dn).m3=function(t){throw l_()},hu(Dn).s=function(t){return this.m3(null==t||null!=t?t:fu())},hu(Dn).n3=function(t){throw l_()},hu(Dn).z=function(t){return this.n3(t)},hu(Dn).v=function(){return this.k3_1.o3()},hu(Dn).p3=function(t){return this.k3_1.q3(t)},hu(Dn).t=function(t){return(null==t||null!=t)&&this.p3(null==t||null!=t?t:fu())},hu(Dn).u=function(){return this.k3_1.u()},hu(Mn).v=function(){return this.s3_1.t3()},hu(Nn).n=function(){return this.s3_1.n()},hu(Nn).d1=function(){return 0===this.s3_1.n()},hu(Nn).u3=function(t){return this.s3_1.x3(t)},hu(Nn).r=function(t){return!(null==t||!so(t,$s))&&this.u3(null!=t&&so(t,$s)?t:fu())},hu(Nn).b1=function(){return this.s3_1.b1()},hu(Nn).v3=function(t){throw l_()},hu(Nn).s=function(t){return this.v3(null!=t&&so(t,$s)?t:fu())},hu(Nn).z=function(t){throw l_()},hu(Nn).w3=function(t){return this.s3_1.y3(t)},hu(Nn).t=function(t){return!(null==t||!so(t,$s))&&this.w3(null!=t&&so(t,$s)?t:fu())},hu(Nn).c1=function(t){return this.s3_1.z3(t)},hu(Nn).u=function(){return this.s3_1.u()},hu(Rn).w=function(){return this.a4_1.w()},hu(Rn).y=function(){return this.a4_1.y().i2()},hu(Rn).x=function(){return this.a4_1.x()},hu(Pn).c4=function(t){throw c_("Add is not supported on keys")},hu(Pn).s=function(t){return this.c4(null==t||null!=t?t:fu())},hu(Pn).b1=function(){return this.b4_1.b1()},hu(Pn).h3=function(t){return this.b4_1.n2(t)},hu(Pn).r=function(t){return(null==t||null!=t)&&this.h3(null==t||null!=t?t:fu())},hu(Pn).v=function(){return new Rn(this.b4_1.f2().v())},hu(Pn).k2=function(t){return this.u(),!!this.b4_1.n2(t)&&(this.b4_1.k2(t),!0)},hu(Pn).t=function(t){return(null==t||null!=t)&&this.k2(null==t||null!=t?t:fu())},hu(Pn).n=function(){return this.b4_1.n()},hu(Pn).u=function(){return this.b4_1.u()},hu(Ln).w=function(){return this.d4_1.w()},hu(Ln).y=function(){return this.d4_1.y().j2()},hu(Ln).x=function(){return this.d4_1.x()},hu(Fn).m3=function(t){throw c_("Add is not supported on values")},hu(Fn).s=function(t){return this.m3(null==t||null!=t?t:fu())},hu(Fn).l3=function(t){return this.e4_1.o2(t)},hu(Fn).r=function(t){return(null==t||null!=t)&&this.l3(null==t||null!=t?t:fu())},hu(Fn).v=function(){return new Ln(this.e4_1.f2().v())},hu(Fn).n=function(){return this.e4_1.n()},hu(Fn).u=function(){return this.e4_1.u()},hu(Gn).s=function(t){return null==this.f4_1.g2(t,!0)},hu(Gn).b1=function(){this.f4_1.b1()},hu(Gn).r=function(t){return this.f4_1.h3(t)},hu(Gn).d1=function(){return 0===this.f4_1.n()},hu(Gn).v=function(){return this.f4_1.j3()},hu(Gn).t=function(t){return!(null==this.f4_1.k2(t))},hu(Gn).n=function(){return this.f4_1.n()},hu(vi).z4=function(){for(;this.w4_1=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=this.v4_1.g4_1[this.x4_1];return this.z4(),n},hu(wi).y=function(){if(this.a5(),this.w4_1>=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=cu(this.v4_1.h4_1)[this.x4_1];return this.z4(),n},hu(pi).y=function(){if(this.a5(),this.w4_1>=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=new mi(this.v4_1,this.x4_1);return this.z4(),n},hu(pi).n5=function(){if(this.w4_1>=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=this.v4_1.g4_1[this.x4_1],i=null==n?null:ru(n),e=null==i?0:i,r=cu(this.v4_1.h4_1)[this.x4_1],s=null==r?null:ru(r),u=e^(null==s?0:s);return this.z4(),u},hu(pi).o5=function(t){if(this.w4_1>=this.v4_1.l4_1)throw b_();var n=this.w4_1;this.w4_1=n+1|0,this.x4_1=n;var i=this.v4_1.g4_1[this.x4_1];eu(i,this.v4_1)?t.r5("(this Map)"):t.q5(i),t.s5(61);var e=cu(this.v4_1.h4_1)[this.x4_1];eu(e,this.v4_1)?t.r5("(this Map)"):t.q5(e),this.z4()},hu(mi).i2=function(){return this.t5_1.g4_1[this.u5_1]},hu(mi).j2=function(){return cu(this.t5_1.h4_1)[this.u5_1]},hu(mi).equals=function(t){return!(null==t||!so(t,$s)||!eu(t.i2(),this.i2()))&&eu(t.j2(),this.j2())},hu(mi).hashCode=function(){var t=this.i2(),n=null==t?null:ru(t),i=null==n?0:n,e=this.j2(),r=null==e?null:ru(e);return i^(null==r?0:r)},hu(mi).toString=function(){return this.i2()+"="+this.j2()},hu(gi).n=function(){return this.o4_1},hu(gi).o2=function(t){return hi(this,t)>=0},hu(gi).q2=function(t){var n=_i(this,t);return n<0?null:cu(this.h4_1)[n]},hu(gi).h3=function(t){return _i(this,t)>=0},hu(gi).g2=function(t,n){var i=ai(this,t),e=ri(this);if(i<0){var r=e[(0|-i)-1|0];return e[(0|-i)-1|0]=n,r}return e[i]=n,null},hu(gi).h2=function(t){this.u(),function(t,n){if(n.d1())return!1;ei(t,n.n());for(var i=n.v(),e=!1;i.w();)ci(t,i.y())&&(e=!0)}(this,t.f2())},hu(gi).k2=function(t){var n=function(t,n){t.u();var i=_i(t,n);return i<0?-1:(li(t,i),i)}(this,t);if(n<0)return null;var i=cu(this.h4_1),e=i[n];return fn(i,n),e},hu(gi).b1=function(){this.u();var t=0,n=this.l4_1-1|0;if(t<=n)do{var i=t;t=t+1|0;var e=this.i4_1[i];e>=0&&(this.j4_1[e]=0,this.i4_1[i]=-1)}while(i!==n);vn(this.g4_1,0,this.l4_1);var r=this.h4_1;null==r||vn(r,0,this.l4_1),this.o4_1=0,this.l4_1=0,ii(this)},hu(gi).equals=function(t){return t===this||!(null==t||!so(t,ks))&&function(t,n){return t.o4_1===n.n()&&t.z3(n.f2())}(this,t)},hu(gi).hashCode=function(){for(var t=0,n=this.t3();n.w();)t=t+n.n5()|0;return t},hu(gi).toString=function(){var t=ge(At(this.o4_1,3));t.r5("{");for(var n=0,i=this.t3();i.w();)n>0&&t.r5(", "),i.o5(t),n=n+1|0;return t.r5("}"),t.toString()},hu(gi).u=function(){if(this.p4_1)throw l_()},hu(gi).x3=function(t){var n=_i(this,t.i2());return!(n<0)&&eu(cu(this.h4_1)[n],t.j2())},hu(gi).v5=function(t){return this.x3(so(t,$s)?t:fu())},hu(gi).y3=function(t){this.u();var n=_i(this,t.i2());return!(n<0||!eu(cu(this.h4_1)[n],t.j2())||(li(this,n),0))},hu(gi).q3=function(t){this.u();var n=hi(this,t);return!(n<0||(li(this,n),0))},hu(gi).j3=function(){return new di(this)},hu(gi).o3=function(){return new wi(this)},hu(gi).t3=function(){return new pi(this)},hu(ki).u=function(){return this.f3_1.u()},hu(Ei).u=function(){return this.f4_1.u()},hu(Mi).h6=function(){return this.g6_1},hu(Mi).equals=function(t){return!(t instanceof Ni)&&!(t instanceof Pi)&&t instanceof Mi&&eu(this.h6(),t.h6())},hu(Mi).hashCode=function(){var t=this.i6(),n=null==t?null:ou(t);return null==n?0:n},hu(Mi).toString=function(){return"class "+this.i6()},hu(Ni).i6=function(){return this.l6_1},hu(Ni).j6=function(t){return!1},hu(Ni).h6=function(){throw c_("There's no native JS class for Nothing type")},hu(Ni).equals=function(t){return t===this},hu(Ni).hashCode=function(){return 0},hu(Pi).i6=function(){throw o_(iu("Unknown simpleName for ErrorKClass"))},hu(Pi).j6=function(t){throw o_(iu("Can's check isInstance on ErrorKClass"))},hu(Pi).equals=function(t){return t===this},hu(Pi).hashCode=function(){return 0},hu(Li).equals=function(t){return t instanceof Li&&!!hu(Mi).equals.call(this,t)&&this.n6_1===t.n6_1},hu(Li).i6=function(){return this.n6_1},hu(Li).j6=function(t){return this.o6_1(t)},hu(Fi).i6=function(){return this.q6_1},hu(Fi).j6=function(t){return yo(t,this.h6())},hu(Wi).u6=function(){return this.r6_1},hu(Wi).v6=function(){return this.s6_1},hu(Wi).w6=function(){return this.t6_1},hu(Wi).equals=function(t){return!!(t instanceof Wi&&eu(this.r6_1,t.r6_1)&&eu(this.s6_1,t.s6_1))&&this.t6_1===t.t6_1},hu(Wi).hashCode=function(){return At(At(ru(this.r6_1),31)+ru(this.s6_1)|0,31)+uu(this.t6_1)|0},hu(Wi).toString=function(){var t=this.r6_1,n=so(t,Di)?t:null,i=null==n?iu(this.r6_1):null!=n.i6()?n.i6():"(non-denotable type)",e=this.s6_1.d1()?"":Or(this.s6_1,", ","<",">"),r=this.t6_1?"?":"";return Os(i,e)+r},hu(fe).x6=function(){return this.anyClass},hu(fe).y6=function(){return this.numberClass},hu(fe).z6=function(){return this.nothingClass},hu(fe).a7=function(){return this.booleanClass},hu(fe).b7=function(){return this.byteClass},hu(fe).c7=function(){return this.shortClass},hu(fe).d7=function(){return this.intClass},hu(fe).e7=function(){return this.floatClass},hu(fe).f7=function(){return this.doubleClass},hu(fe).g7=function(){return this.arrayClass},hu(fe).h7=function(){return this.stringClass},hu(fe).i7=function(){return this.throwableClass},hu(fe).j7=function(){return this.booleanArrayClass},hu(fe).k7=function(){return this.charArrayClass},hu(fe).l7=function(){return this.byteArrayClass},hu(fe).m7=function(){return this.shortArrayClass},hu(fe).n7=function(){return this.intArrayClass},hu(fe).o7=function(){return this.longArrayClass},hu(fe).p7=function(){return this.floatArrayClass},hu(fe).q7=function(){return this.doubleArrayClass},hu(fe).functionClass=function(t){var n,i,e=Yi()[t];if(null==e){var r=new Li(Function,"Function"+t,(i=t,function(t){return"function"==typeof t&&t.length===i}));Yi()[t]=r,n=r}else n=e;return n},hu(pe).v=function(){var t=this.r7_1;if(null==t)throw o_("This sequence can be consumed only once.");var n=t;return this.r7_1=null,n.v()},hu($e).a=function(){return this.p5_1.length},hu($e).b=function(t){var n=this.p5_1;if(!(t>=0&&t<=ul(n)))throw e_("index: "+t+", length: "+this.a()+"}");return Vs(n,t)},hu($e).c=function(t,n){return this.p5_1.substring(t,n)},hu($e).s5=function(t){return this.p5_1=this.p5_1+fs(t),this},hu($e).s7=function(t){return this.p5_1=this.p5_1+Es(t),this},hu($e).t7=function(t,n,i){return this.u7(null==t?"null":t,n,i)},hu($e).q5=function(t){return this.p5_1=this.p5_1+Es(t),this},hu($e).v7=function(t){return this.r5(t.toString())},hu($e).w7=function(t){return this.r5(t.toString())},hu($e).x7=function(t){return this.r5(t.toString())},hu($e).r5=function(t){var n=this.p5_1;return this.p5_1=n+(null==t?"null":t),this},hu($e).y7=function(t,n){tt.o1(t,this.a());var i=this.p5_1.substring(0,t)+fs(n);return this.p5_1=i+this.p5_1.substring(t),this},hu($e).z7=function(t,n){tt.o1(t,this.a());var i=null==n?"null":n,e=this.p5_1.substring(0,t)+i;return this.p5_1=e+this.p5_1.substring(t),this},hu($e).a8=function(t){if(t<0)throw Jo("Negative new length: "+t+".");if(t<=this.a())this.p5_1=this.p5_1.substring(0,t);else{var n=this.a();if(nWs(t))throw e_("Start index out of bounds: "+n+", input length: "+Ws(t));return Me(this.n8_1,iu(t),n,this.n8_1)},hu(Ie).r8=function(t,n){if(n<0||n>Ws(t))throw e_("Start index out of bounds: "+n+", input length: "+Ws(t));return i=this,e=t,r=n,new ra((function(){return i.q8(e,r)}),ze);var i,e,r},hu(Ie).s8=function(t,n,i){return n=n===K?0:n,i===K?this.r8(t,n):i.r8.call(this,t,n)},hu(Ie).t8=function(t,n){bl(n);for(var i=this.s8(t),e=0===n?i:function(t,n){if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));return 0===n?Zh():so(t,Qh)?t.ma(n):new na(t,n)}(i,n-1|0),r=mn(),s=0,u=e.v();u.w();){var o=u.y();r.s(iu(Ys(t,s,o.u8().y8()))),s=o.u8().z8()+1|0}return r.s(iu(Ys(t,s,Ws(t)))),r},hu(Ie).toString=function(){return this.n8_1.toString()},hu(De).toString=function(){return"MatchGroup(value="+this.a9_1+")"},hu(De).hashCode=function(){return ou(this.a9_1)},hu(De).equals=function(t){if(this===t)return!0;if(!(t instanceof De))return!1;var n=t instanceof De?t:fu();return this.a9_1===n.a9_1},hu(Re).n=function(){return this.e9_1.length},hu(Re).v=function(){return Zr(zr(ph(this)),(t=this,function(n){return t.h1(n)})).v();var t},hu(Re).h1=function(t){var n=this.e9_1[t];return null==n?null:new De(n)},hu(Pe).u8=function(){return this.g9_1},hu(Pe).y=function(){return Me(this.l9_1,this.m9_1,this.j9_1.d1()?function(t,n){if(n>>i|0|t.m_1<<(32-i|0),t.m_1>>>i|0):new mu(32===i?t.m_1:t.m_1>>>(i-32|0)|0,0)}(this,t)},hu(mu).qb=function(t){return new mu(this.l_1&t.l_1,this.m_1&t.m_1)},hu(mu).rb=function(t){return new mu(this.l_1|t.l_1,this.m_1|t.m_1)},hu(mu).sb=function(t){return new mu(this.l_1^t.l_1,this.m_1^t.m_1)},hu(mu).mb=function(){return new mu(~this.l_1,~this.m_1)},hu(mu).tb=function(){return Gu(this.l_1)},hu(mu).ub=function(){return Xu(this.l_1)},hu(mu).la=function(){return this.l_1},hu(mu).f6=function(){return ju(this)},hu(mu).valueOf=function(){return this.f6()},hu(mu).equals=function(t){return t instanceof mu&&Tu(this,t)},hu(mu).hashCode=function(){return t=this,Uu(),t.l_1^t.m_1;var t},hu(mu).toString=function(){return Au(this,10)},hu(Ro).jc=function(){return cu(this.hc_1)},hu(Ro).mc=function(){var t,n=this.ic_1;if(null==n){var i=this.jc().kc(_t),e=null==i?null:i.nc(this),r=null==e?this:e;this.ic_1=r,t=r}else t=n;return t},hu(Ro).oc=function(t){var i,e=this;if(vc(t))i=null;else{i=null==t||null!=t?t:fu()}for(var r=i,s=dc(t);;){var u=e;null==s?u.ec_1=r:(u.cc_1=u.dc_1,u.fc_1=s);try{var o=u.pc();if(o===Sa())return n;r=o,s=null}catch(t){r=null,s=t}No(u);var _=cu(u.bc_1);if(!(_ instanceof Ro)){if(null!=s){var h=gc(cu(s));_.qc(h)}else{var a=r;_.qc(a)}return n}e=_}},hu(Ro).qc=function(t){return this.oc(t)},hu(Po).jc=function(){throw o_(iu("This continuation is already complete"))},hu(Po).oc=function(t){throw o_(iu("This continuation is already complete"))},hu(Po).qc=function(t){return this.oc(t)},hu(Po).toString=function(){return"This continuation is already complete"},hu(Uo).pc=function(){if(null!=this.fc_1)throw this.fc_1;var t=this.zc_1;return"function"==typeof t?t(this.ad_1,this.bd_1):this.zc_1.cd(this.ad_1,this.bd_1)},hu(W_).r=function(t){var n;t:if(so(this,ms)&&this.d1())n=!1;else{for(var i=this.v();i.w();)if(eu(i.y(),t)){n=!0;break t}n=!1}return n},hu(W_).c1=function(t){var n;t:if(so(t,ms)&&t.d1())n=!0;else{for(var i=t.v();i.w();){var e=i.y();if(!this.r(e)){n=!1;break t}}n=!0}return n},hu(W_).d1=function(){return 0===this.n()},hu(W_).toString=function(){return Or(this,", ","[","]",K,K,(t=this,function(n){return n===t?"(this Collection)":Es(n)}));var t},hu(W_).toArray=function(){return Xt(this)},hu(Y_).w=function(){return this.dd_10},hu(G_).q1=function(){if(!this.p1())throw b_();return this.dd_1=this.dd_1-1|0,this.hd_1.h1(this.dd_1)},hu(K_).x2=function(t,n){if(t<0||t>=n)throw e_("index: "+t+", size: "+n)},hu(K_).o1=function(t,n){if(t<0||t>n)throw e_("index: "+t+", size: "+n)},hu(K_).q=function(t,n,i){if(t<0||n>i)throw e_("fromIndex: "+t+", toIndex: "+n+", size: "+i);if(t>n)throw Jo("fromIndex: "+t+" > toIndex: "+n)},hu(K_).c8=function(t,n,i){if(t<0||n>i)throw e_("startIndex: "+t+", endIndex: "+n+", size: "+i);if(t>n)throw Jo("startIndex: "+t+" > endIndex: "+n)},hu(K_).q4=function(t,n){var i=t+(t>>1)|0;return(i-n|0)<0&&(i=n),(i-2147483639|0)>0&&(i=n>2147483639?r.MAX_VALUE:2147483639),i},hu(K_).w1=function(t){for(var n=1,i=t.v();i.w();){var e=i.y(),r=At(31,n),s=null==e?null:ru(e);n=r+(null==s?0:s)|0}return n},hu(K_).v1=function(t,n){if(t.n()!==n.n())return!1;for(var i=n.v(),e=t.v();e.w();)if(!eu(e.y(),i.y()))return!1;return!0},hu(X_).v=function(){return new Y_(this)},hu(X_).t1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(eu(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},hu(X_).u1=function(t){return new G_(this,t)},hu(X_).equals=function(t){return t===this||!(null==t||!so(t,ps))&&tt.v1(this,t)},hu(X_).hashCode=function(){return tt.w1(this)},hu(J_).w=function(){return this.id_1.w()},hu(J_).y=function(){return this.id_1.y().i2()},hu(Z_).w=function(){return this.jd_1.w()},hu(Z_).y=function(){return this.jd_1.y().j2()},hu(ih).h3=function(t){return this.kd_1.n2(t)},hu(ih).r=function(t){return(null==t||null!=t)&&this.h3(null==t||null!=t?t:fu())},hu(ih).v=function(){return new J_(this.kd_1.f2().v())},hu(ih).n=function(){return this.kd_1.n()},hu(eh).l3=function(t){return this.md_1.o2(t)},hu(eh).r=function(t){return(null==t||null!=t)&&this.l3(null==t||null!=t?t:fu())},hu(eh).v=function(){return new Z_(this.md_1.f2().v())},hu(eh).n=function(){return this.md_1.n()},hu(rh).n2=function(t){return!(null==th(this,t))},hu(rh).o2=function(t){var n;t:{var i=this.f2();if(so(i,ms)&&i.d1())n=!1;else{for(var e=i.v();e.w();)if(eu(e.y().j2(),t)){n=!0;break t}n=!1}}return n},hu(rh).p2=function(t){if(null==t||!so(t,$s))return!1;var n=t.i2(),i=t.j2(),e=(so(this,ks)?this:fu()).q2(n);return!(!eu(i,e)||null==e&&!(so(this,ks)?this:fu()).n2(n))},hu(rh).equals=function(t){if(t===this)return!0;if(null==t||!so(t,ks))return!1;if(this.n()!==t.n())return!1;var n;t:{var i=t.f2();if(so(i,ms)&&i.d1())n=!0;else{for(var e=i.v();e.w();){var r=e.y();if(!this.p2(r)){n=!1;break t}}n=!0}}return n},hu(rh).q2=function(t){var n=th(this,t);return null==n?null:n.j2()},hu(rh).hashCode=function(){return ru(this.f2())},hu(rh).d1=function(){return 0===this.n()},hu(rh).n=function(){return this.f2().n()},hu(rh).d2=function(){return null==this.l2_1&&(this.l2_1=new ih(this)),cu(this.l2_1)},hu(rh).toString=function(){return Or(this.f2(),", ","{","}",K,K,(t=this,function(n){return t.ld(n)}));var t},hu(rh).ld=function(t){return Q_(this,t.i2())+"="+Q_(this,t.j2())},hu(rh).e2=function(){return null==this.m2_1&&(this.m2_1=new eh(this)),cu(this.m2_1)},hu(sh).s2=function(t){for(var n=0,i=t.v();i.w();){var e=i.y(),r=n,s=null==e?null:ru(e);n=r+(null==s?0:s)|0}return n},hu(sh).r2=function(t,n){return t.n()===n.n()&&t.c1(n)},hu(uh).equals=function(t){return t===this||!(null==t||!so(t,bs))&&nt.r2(this,t)},hu(uh).hashCode=function(){return nt.s2(this)},hu(vh).n=function(){return this.qd_1},hu(vh).d1=function(){return 0===this.qd_1},hu(vh).td=function(){if(this.d1())throw k_("ArrayDeque is empty.");var t=this.od_1,n=this.pd_1[t];return null==n||null!=n?n:fu()},hu(vh).ud=function(){var t;if(this.d1())t=null;else{var n=this.od_1,i=this.pd_1[n];t=null==i||null!=i?i:fu()}return t},hu(vh).vd=function(t){_h(this,this.qd_1+1|0),this.od_1=lh(this,this.od_1),this.pd_1[this.od_1]=t,this.qd_1=this.qd_1+1|0},hu(vh).wd=function(t){_h(this,this.qd_1+1|0);var n=this.pd_1,i=this.qd_1;n[hh(this,this.od_1+i|0)]=t,this.qd_1=this.qd_1+1|0},hu(vh).xd=function(){if(this.d1())throw k_("ArrayDeque is empty.");var t=this.od_1,n=this.pd_1[t],i=null==n||null!=n?n:fu();return this.pd_1[this.od_1]=null,this.od_1=ah(this,this.od_1),this.qd_1=this.qd_1-1|0,i},hu(vh).yd=function(){return this.d1()?null:this.xd()},hu(vh).zd=function(){if(this.d1())throw k_("ArrayDeque is empty.");var t=wh(this),n=hh(this,this.od_1+t|0),i=this.pd_1[n],e=null==i||null!=i?i:fu();return this.pd_1[n]=null,this.qd_1=this.qd_1-1|0,e},hu(vh).s=function(t){return this.wd(t),!0},hu(vh).r1=function(t,i){if(tt.o1(t,this.qd_1),t===this.qd_1)return this.wd(i),n;if(0===t)return this.vd(i),n;_h(this,this.qd_1+1|0);var e=hh(this,this.od_1+t|0);if(t<(this.qd_1+1|0)>>1){var r=lh(this,e),s=lh(this,this.od_1);r>=this.od_1?(this.pd_1[s]=this.pd_1[this.od_1],sn(this.pd_1,this.pd_1,this.od_1,this.od_1+1|0,r+1|0)):(sn(this.pd_1,this.pd_1,this.od_1-1|0,this.od_1,this.pd_1.length),this.pd_1[this.pd_1.length-1|0]=this.pd_1[0],sn(this.pd_1,this.pd_1,0,1,r+1|0)),this.pd_1[r]=i,this.od_1=s}else{var u=this.qd_1,o=hh(this,this.od_1+u|0);e=i){var s=this.od_1,u=this.pd_1.length;if(s>1)n>=this.od_1?sn(this.pd_1,this.pd_1,this.od_1+1|0,this.od_1,n):(sn(this.pd_1,this.pd_1,1,0,n),this.pd_1[0]=this.pd_1[this.pd_1.length-1|0],sn(this.pd_1,this.pd_1,this.od_1+1|0,this.od_1,this.pd_1.length-1|0)),this.pd_1[this.od_1]=null,this.od_1=ah(this,this.od_1);else{var r=wh(this),s=hh(this,this.od_1+r|0);n<=s?sn(this.pd_1,this.pd_1,n,n+1|0,s+1|0):(sn(this.pd_1,this.pd_1,n,n+1|0,this.pd_1.length),this.pd_1[this.pd_1.length-1|0]=this.pd_1[0],sn(this.pd_1,this.pd_1,0,1,s+1|0)),this.pd_1[s]=null}return this.qd_1=this.qd_1-1|0,e},hu(vh).b1=function(){var t=this.qd_1,n=hh(this,this.od_1+t|0);this.od_1=this.qd_1?t:function(t,n){return Ts(Array(n),null)}(0,this.qd_1),i=oo(n)?n:fu(),e=this.qd_1,r=hh(this,this.od_1+e|0);this.od_10&&this.zf_1.w()},hu(na).ma=function(t){return t>=this.bg_1?this:new na(this.ag_1,t)},hu(na).v=function(){return new ta(this)},hu(ea).y=function(){if(this.dg_1<0&&ia(this),0===this.dg_1)throw b_();var t=this.cg_1,n=null!=t?t:fu();return this.dg_1=-1,n},hu(ea).w=function(){return this.dg_1<0&&ia(this),1===this.dg_1},hu(ra).v=function(){return new ea(this)},hu(sa).v=function(){return rt},hu(sa).ma=function(t){return ut},hu(ua).v=function(){return this.hg_1},hu(aa).equals=function(t){return!(null==t||!so(t,bs))&&t.d1()},hu(aa).hashCode=function(){return 0},hu(aa).toString=function(){return"[]"},hu(aa).n=function(){return 0},hu(aa).d1=function(){return!0},hu(aa).ce=function(t){return!1},hu(aa).r=function(t){return!1},hu(aa).de=function(t){return t.d1()},hu(aa).c1=function(t){return this.de(t)},hu(aa).v=function(){return rt},hu(ma).kc=function(t){return null},hu(ma).og=function(t,n){return t},hu(ma).pg=function(t){return t},hu(ma).ng=function(t){return this},hu(ma).hashCode=function(){return 0},hu(ma).toString=function(){return"EmptyCoroutineContext"},hu(ka).kc=function(t){for(var n=this;;){var i=n.sg_1.kc(t);if(null!=i)return i;var e=n.rg_1;if(!(e instanceof ka))return e.kc(t);n=e}},hu(ka).og=function(t,n){return n(this.rg_1.og(t,n),this.sg_1)},hu(ka).ng=function(t){if(null!=this.sg_1.kc(t))return this.rg_1;var n=this.rg_1.ng(t);return n===this.rg_1?this:n===ga()?this.sg_1:new ka(n,this.sg_1)},hu(ka).equals=function(t){return this===t||!!(t instanceof ka&&ya(t)===ya(this))&&function(t,n){for(var i=n;;){if(!ba(t,i.sg_1))return!1;var e=i.rg_1;if(!(e instanceof ka))return ba(t,so(e,da)?e:fu());i=e}}(t,this)},hu(ka).hashCode=function(){return ru(this.rg_1)+ru(this.sg_1)|0},hu(ka).toString=function(){return"["+this.og("",$a)+"]"},hu(xa).lg=function(t){return this.jg_1(t)},hu(xa).mg=function(t){return t===this||this.kg_1===t},hu(qa).i2=function(){return this.tg_1},hu(Ea).n=function(){return this.ug_1.length},hu(Ea).h1=function(t){return tt.x2(t,this.ug_1.length),this.ug_1[t]},hu(Ea).vg=function(t){return null!==t&&Cr(this.ug_1,t.y9_1)===t},hu(Ea).r=function(t){return t instanceof Cs&&this.vg(t instanceof Cs?t:fu())},hu(Ea).wg=function(t){if(null===t)return-1;var n=t.y9_1;return Cr(this.ug_1,n)===t?n:-1},hu(Ea).t1=function(t){return t instanceof Cs?this.wg(t instanceof Cs?t:fu()):-1},hu(Aa).yg=function(t){return this.xg_1.yg(t)},hu(Aa).we=function(){return this.xg_1.we()},hu(Aa).zg=function(t){return this.xg_1.zg(t)},hu(Aa).ah=function(t,n){return this.xg_1.ah(t,n)},hu(Ia).we=function(){return this.yg(32)},hu(Ia).zg=function(t){return this.ah(0,t)},hu(Ia).ah=function(t,n){Da(t,n);var i=n-t|0;if(i>0||i===r.MIN_VALUE){var e;if((i&(0|-i))===i){var s=31-jt(i)|0;e=this.yg(s)}else{var u;do{var o=this.we()>>>1|0;u=o%i|0}while(((o-u|0)+(i-1|0)|0)<0);e=u}return t+e|0}for(;;){var _=this.we();if(t<=_&&_>>2|0,this.ch_1=this.dh_1,this.dh_1=this.eh_1,this.eh_1=this.fh_1;var n=this.gh_1;return this.fh_1=n,t=t^t<<1^n^n<<4,this.gh_1=t,this.hh_1=this.hh_1+362437|0,t+this.hh_1|0},hu(Na).yg=function(t){return function(t,n){return(t>>>(32-n|0)|0)&(0|-n)>>31}(this.we(),t)},hu(La).y8=function(){return this.ha_1},hu(La).z8=function(){return this.ia_1},hu(La).ih=function(t){return this.ha_1<=t&&t<=this.ia_1},hu(La).ka=function(t){return this.ih("number"==typeof t?t:fu())},hu(La).d1=function(){return this.ha_1>this.ia_1},hu(La).equals=function(t){return t instanceof La&&(!(!this.d1()||!t.d1())||this.ha_1===t.ha_1&&this.ia_1===t.ia_1)},hu(La).hashCode=function(){return this.d1()?-1:At(31,this.ha_1)+this.ia_1|0},hu(La).toString=function(){return this.ha_1+".."+this.ia_1},hu(Ua).nh=function(){return this.oh_1},hu(Ua).y8=function(){return new ws(this.nh())},hu(Ua).rh=function(){return this.ph_1},hu(Ua).z8=function(){return new ws(this.rh())},hu(Ua).sh=function(t){return as(this.oh_1,t)<=0&&as(t,this.ph_1)<=0},hu(Ua).ka=function(t){return this.sh(t instanceof ws?t.oa_1:fu())},hu(Ua).d1=function(){return as(this.oh_1,this.ph_1)>0},hu(Ua).equals=function(t){return t instanceof Ua&&(!(!this.d1()||!t.d1())||this.oh_1===t.oh_1&&this.ph_1===t.ph_1)},hu(Ua).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.oh_1;t=At(31,n)+this.ph_1|0}return t},hu(Ua).toString=function(){return fs(this.oh_1)+".."+fs(this.ph_1)},hu(Ha).w=function(){return this.vh_1},hu(Ha).we=function(){var t=this.wh_1;if(t===this.uh_1){if(!this.vh_1)throw b_();this.vh_1=!1}else this.wh_1=this.wh_1+this.th_1|0;return t},hu(Va).w=function(){return this.zh_1},hu(Va).ye=function(){var t=this.ai_1;if(t===this.yh_1){if(!this.zh_1)throw b_();this.zh_1=!1}else this.ai_1=this.ai_1+this.xh_1|0;return Zu(t)},hu(Ba).ga=function(t,n,i){return new Wa(t,n,i)},hu(Wa).v=function(){return new Ha(this.ha_1,this.ia_1,this.ja_1)},hu(Wa).d1=function(){return this.ja_1>0?this.ha_1>this.ia_1:this.ha_10?this.ha_1+".."+this.ia_1+" step "+this.ja_1:this.ha_1+" downTo "+this.ia_1+" step "+(0|-this.ja_1)},hu(Ga).v=function(){return new Va(this.oh_1,this.ph_1,this.qh_1)},hu(Ga).d1=function(){return this.qh_1>0?as(this.oh_1,this.ph_1)>0:as(this.oh_1,this.ph_1)<0},hu(Ga).equals=function(t){return t instanceof Ga&&(!(!this.d1()||!t.d1())||this.oh_1===t.oh_1&&this.ph_1===t.ph_1&&this.qh_1===t.qh_1)},hu(Ga).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.oh_1,i=At(31,n),e=this.ph_1;t=At(31,i+e|0)+this.qh_1|0}return t},hu(Ga).toString=function(){return this.qh_1>0?fs(this.oh_1)+".."+fs(this.ph_1)+" step "+this.qh_1:fs(this.oh_1)+" downTo "+fs(this.ph_1)+" step "+(0|-this.qh_1)},hu(kl).y=function(){if(-1===this.bi_1&&$l(this),0===this.bi_1)throw b_();var t=this.ei_1,n=t instanceof La?t:fu();return this.ei_1=null,this.bi_1=-1,n},hu(kl).w=function(){return-1===this.bi_1&&$l(this),1===this.bi_1},hu(xl).v=function(){return new kl(this)},hu(Al).oi=function(t){var n;try{n=function(t,n){var i=t.length;if(0===i)throw Jo("The string is empty");var e=0,r=zl().li_1,s="Infinity",u=Vs(t,e);43!==u&&45!==u||(e=e+1|0);var o=e>0,_=!!o&&cl(t,45);if(i<=e)throw Jo("No components");if(80===Vs(t,e)){if((e=e+1|0)===i)throw Ko();for(var h=!1,a=null;e=0&&p<=ul(t)))throw Jo("Missing unit for value "+w);e=e+1|0;var m=nc(Vs(t,p),h);if(null!=a&&a.z9(m)<=0)throw Jo("Unexpected order of duration components");a=m;var g=ol(w,46);m.equals(fr())&&g>0?(r=Dl(r,Gl(tc(w.substring(0,g)),m)),r=Dl(r,Kl(Ee(w.substring(g)),m))):r=Dl(r,Gl(tc(w),m))}else{if(h||(e=e+1|0)===i)throw Ko();h=!0}}else{if(n)throw Ko();var y=i-e|0;if(We(t,e,s,0,Math.max(y,8),!0))r=zl().mi_1;else{var b=null,$=!1,k=!o;if(o&&40===Vs(t,e)&&41===is(t)&&(k=!0,(e=e+1|0)==(i=i-1|0)))throw Jo("No components");for(;e0){if(r=Dl(r,Gl(Ce(j.substring(0,R)),N)),r=Dl(r,Kl(Ee(j.substring(R)),N)),e0},hu(Zc).equals=function(t){return t instanceof Zc&&(!(!this.d1()||!t.d1())||this.lk_1===t.lk_1&&this.mk_1===t.mk_1)},hu(Zc).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.lk_1;t=At(31,n)+this.mk_1|0}return t},hu(Zc).toString=function(){return new Hc(this.lk_1)+".."+new Hc(this.mk_1)},hu(tf).v=function(){return new nf(this.lk_1,this.mk_1,this.nk_1)},hu(tf).d1=function(){var t;this.nk_1>0?t=Af(this.lk_1,this.mk_1)>0:t=Af(this.lk_1,this.mk_1)<0;return t},hu(tf).equals=function(t){return t instanceof tf&&(!(!this.d1()||!t.d1())||this.lk_1===t.lk_1&&this.mk_1===t.mk_1&&this.nk_1===t.nk_1)},hu(tf).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.lk_1,i=At(31,n),e=this.mk_1;t=At(31,i+e|0)+this.nk_1|0}return t},hu(tf).toString=function(){return this.nk_1>0?new Hc(this.lk_1)+".."+new Hc(this.mk_1)+" step "+this.nk_1:new Hc(this.lk_1)+" downTo "+new Hc(this.mk_1)+" step "+(0|-this.nk_1)},hu(nf).w=function(){return this.qk_1},hu(nf).ck=function(){var t=this.sk_1;if(t===this.pk_1){if(!this.qk_1)throw b_();this.qk_1=!1}else{var n=this.sk_1,i=this.rk_1;this.sk_1=n+i|0}return t},hu(nf).y=function(){return new Hc(this.ck())},hu(hf).yk=function(t){return of(this.xk_1,t)},hu(hf).d=function(t){return function(t,n){return of(t.xk_1,n instanceof hf?n.xk_1:fu())}(this,t)},hu(hf).toString=function(){return _f(this.xk_1)},hu(hf).hashCode=function(){return this.xk_1.hashCode()},hu(hf).equals=function(t){return function(t,n){if(!(n instanceof hf))return!1;var i=n instanceof hf?n.xk_1:fu();return!!t.equals(i)}(this.xk_1,t)},hu(ff).w=function(){return this.al_1i)throw Jo("fromIndex ("+n+") is greater than toIndex ("+i+").");if(n<0)throw e_("fromIndex ("+n+") is less than zero.");if(i>t)throw e_("toIndex ("+i+") is greater than size ("+t+").")}(t.n(),n,i);for(var r=n,s=i-1|0;r<=s;){var u=(r+s|0)>>>1|0,o=e(t.h1(u));if(o<0)r=u+1|0;else{if(!(o>0))return u;s=u-1|0}}return 0|-(r+1|0)},t.$_$.w5=function(t){return t<0&&function(){throw O_("Count overflow has happened.")}(),t},t.$_$.x5=nn,t.$_$.y5=qh,t.$_$.z5=function(t,n){return so(t,ms)?t.r(n):function(t,n){if(so(t,ps))return t.t1(n);for(var i=0,e=t.v();e.w();){var r=e.y();if(nn(i),eu(n,r))return i;i=i+1|0}return-1}(t,n)>=0},t.$_$.a6=pr,t.$_$.b6=function(t,n){return Gs(t,n)},t.$_$.c6=function(t,n){return Gs(t,n)},t.$_$.d6=function(t){return Ks(t)},t.$_$.e6=function(t){return Ks(t)},t.$_$.f6=function(t){return Ks(t)},t.$_$.g6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Int16Array(n))},t.$_$.h6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));var i=du(t,n,new mu(0,0));return i.$type$="LongArray",i},t.$_$.i6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));var i=du(t,n,!1);return i.$type$="BooleanArray",i},t.$_$.j6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));var i=vu(t,Is(n));return i.$type$="CharArray",i},t.$_$.k6=qo,t.$_$.l6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Float64Array(n))},t.$_$.m6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Float32Array(n))},t.$_$.n6=Co,t.$_$.o6=xo,t.$_$.p6=rn,t.$_$.q6=function(t){return Nr(Ur(t))},t.$_$.r6=function(t,n){if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));return function(t,n){if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));if(0===n)return dh();if(so(t,ms)){if(n>=t.n())return Nr(t);if(1===n)return Jt(Pr(t))}var i=0,e=gn(n),r=t.v();t:for(;r.w();){var s=r.y();if(e.s(s),(i=i+1|0)===n)break t}return gh(e)}(t,Kr(t.n()-n|0,0))},t.$_$.s6=function(t,n){var i;if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));if(0===n)return Nr(t);if(so(t,ms)){var e=t.n()-n|0;if(e<=0)return dh();if(1===e)return Jt(Hr(t));if(i=gn(e),so(t,ps)){if(so(t,Oi)){var r=n,s=t.n();if(r=n?i.s(l):h=h+1|0}return gh(i)},t.$_$.t6=dh,t.$_$.u6=Oh,t.$_$.v6=ha,t.$_$.w6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.x6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.y6=So,t.$_$.z6=function(t){return t.d1()?null:t.h1(0)},t.$_$.a7=Vr,t.$_$.b7=Pr,t.$_$.c7=function(t){if(0===t.length)throw k_("Array is empty.");return t[0]},t.$_$.d7=function(t){for(var n=mn(),i=t.v();i.w();)zh(n,i.y());return n},t.$_$.e7=function(t){for(var n=0,i=0,e=t.length;i=0&&n<=wh(t)?t.h1(n):null},t.$_$.g7=function(t,n){return function(t,n){if(so(t,Eh))return t.oe(n);var i=t.q2(n);if(null==i&&!t.n2(n))throw k_("Key "+n+" is missing in the map.");return null==i||null!=i?i:fu()}(t,n)},t.$_$.h7=function(t){return new La(0,function(t){return t.length-1|0}(t))},t.$_$.i7=function(t){return new La(0,yr(t))},t.$_$.j7=ph,t.$_$.k7=Or,t.$_$.l7=Sr,t.$_$.m7=jr,t.$_$.n7=function(t){return t.length-1|0},t.$_$.o7=wh,t.$_$.p7=yr,t.$_$.q7=function(t){return t.d1()?null:t.h1(t.n()-1|0)},t.$_$.r7=Ir,t.$_$.s7=Jt,t.$_$.t7=function(t){return t.length>0?ko(t):dh()},t.$_$.u7=tn,t.$_$.v7=function(t){return t.length>0?(n=t,Ah(i=$i(t.length),n),i):Oh();var n,i},t.$_$.w7=mh,t.$_$.x7=function(t,n){var i=function(t){return so(t,ms)?t.n():null}(n),e=null==i?null:t.n()+i|0,r=Ci(null==e?At(t.n(),2):e);return r.z(t),zh(r,n),r},t.$_$.y7=function(t,n){if(so(t,ms))return Ar(t,n);var i=mn();return zh(i,t),zh(i,n),i},t.$_$.z7=Ar,t.$_$.a8=function(t,n){var i=gn(t.n()+1|0);return i.z(t),i.s(n),i},t.$_$.b8=function(t){return t.d1()?null:t.j1(0)},t.$_$.c8=function(t){return t.d1()?null:t.j1(wh(t))},t.$_$.d8=function(t){if(t.d1())throw k_("List is empty.");return t.j1(wh(t))},t.$_$.e8=function(t){for(var n=0,i=t.length;n0?function(t){switch(t.length){case 0:return ha();case 1:return Zt(t[0]);default:return gr(t,Ci(t.length))}}(t):ha()},t.$_$.i8=function(t){return 1===t.n()?t.h1(0):null},t.$_$.j8=Dr,t.$_$.k8=Rr,t.$_$.l8=en,t.$_$.m8=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),function(t,n,i,e){n<(i-1|0)&&xn(t,n,i-1|0,e)}(t,i,e,n)},t.$_$.n8=function(t,n){if(so(t,ms)){if(t.n()<=1)return Nr(t);var i=rn(t),e=oo(i)?i:fu();return function(t,n){t.length>1&&kn(t,n)}(e,n),ko(e)}var r=Fr(t);return en(r,n),r},t.$_$.o8=function(t){for(var n=zs(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.p8=function(t){return Lr(t,Yn(qh(t,12)))},t.$_$.q8=function(t){if(0===t.n())return dh();var n=t.f2().v();if(!n.w())return dh();var i=n.y();if(!n.w())return Jt(new $c(i.i2(),i.j2()));var e=gn(t.n()),r=new $c(i.i2(),i.j2());e.s(r);do{var s=n.y(),u=new $c(s.i2(),s.j2());e.s(u)}while(n.w());return e},t.$_$.r8=Nr,t.$_$.s8=function(t){switch(t.length){case 0:return dh();case 1:return Jt(t[0]);default:return function(t){return yn(function(t){return new $h(t,!1)}(t))}(t)}},t.$_$.t8=function(t){if(so(t,ms)){var n;switch(t.n()){case 0:n=Oh();break;case 1:n=Qt(so(t,ps)?t.h1(0):t.v().y());break;default:n=Th(t,$i(t.n()))}return n}return function(t){return 0===t.n()?Oh():t}(Th(t,bi()))},t.$_$.u8=Mr,t.$_$.v8=Ur,t.$_$.w8=Tr,t.$_$.x8=function(t){for(var n=new Int16Array(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.y8=function(t){return[].slice.call(t)},t.$_$.z8=function(t){return new Sh((n=t,function(){return As(n)}));var n},t.$_$.a9=function(t,n){return t===n?0:null==t?-1:null==n?1:Js(null!=t&&("string"===(e=typeof(i=t))||"boolean"===e||ho(i)||so(i,Rt))?t:fu(),n);var i,e},t.$_$.b9=Ai,t.$_$.c9=Sa,t.$_$.d9=Fo,t.$_$.e9=Lo,t.$_$.f9=qa,t.$_$.g9=xa,t.$_$.h9=function(t){if(t instanceof xa){var n;if(t.mg(this.i2())){var i=t.lg(this);n=null!=i&&so(i,da)?i:null}else n=null;return n}return _t===t?so(this,da)?this:fu():null},t.$_$.i9=function(t){return t instanceof xa?t.mg(this.i2())&&null!=t.lg(this)?ga():this:_t===t?ga():this},t.$_$.j9=va,t.$_$.k9=ca,t.$_$.l9=Dt,t.$_$.m9=It,t.$_$.n9=Mt,t.$_$.o9=da,t.$_$.p9=zt,t.$_$.q9=Ro,t.$_$.r9=function(t,i,e){var r=Lo(Fo(t,i,e)),s=n;r.qc(s)},t.$_$.s9=function(t){return new Ea(t)},t.$_$.t9=Oa,t.$_$.u9=su,t.$_$.v9=zs,t.$_$.w9=_u,t.$_$.x9=Ms,t.$_$.y9=Is,t.$_$.z9=Vs,t.$_$.aa=Ws,t.$_$.ba=Ys,t.$_$.ca=Hu,t.$_$.da=Js,t.$_$.ea=function(t,n,i,e){return Object.defineProperty(t,n,{configurable:!0,get:i,set:e})},t.$_$.fa=eu,t.$_$.ga=lu,t.$_$.ha=Ts,t.$_$.ia=uu,t.$_$.ja=Us,t.$_$.ka=function(t,n,i,e,r){return io(),e.get=e,e.set=r,e.callableName=t,s=e,u=function(t,n){return io(),(io(),Y)[t][null==n?0:1]}(n,r),o=function(t,n){io();var i=t.$imask$;return null==i?js([n]):i}(e,i),io(),s.$metadata$=u,s.constructor=s,s.$imask$=o,s;var s,u,o},t.$_$.la=ou,t.$_$.ma=ru,t.$_$.na=Wu,t.$_$.oa=oo,t.$_$.pa=lo,t.$_$.qa=co,t.$_$.ra=vo,t.$_$.sa=ao,t.$_$.ta=go,t.$_$.ua=po,t.$_$.va=wo,t.$_$.wa=so,t.$_$.xa=mo,t.$_$.ya=ho,t.$_$.za=fo,t.$_$.ab=_o,t.$_$.bb=function(t){return(t instanceof Mi?t:fu()).h6()},t.$_$.cb=Ds,t.$_$.db=to,t.$_$.eb=function(t){return Gu(Ku(t))},t.$_$.fb=Zu,t.$_$.gb=function(t){return+t},t.$_$.hb=Ku,t.$_$.ib=Ju,t.$_$.jb=function(t){return Xu(Ku(t))},t.$_$.kb=au,t.$_$.lb=Yu,t.$_$.mb=hu,t.$_$.nb=Bu,t.$_$.ob=Gu,t.$_$.pb=Qu,t.$_$.qb=Xu,t.$_$.rb=iu,t.$_$.sb=function(){return E},t.$_$.tb=function(t){return t<0?0|-t:t},t.$_$.ub=function(t){if(Gt(t))throw Jo("Cannot round NaN value.");return t>r.MAX_VALUE?r.MAX_VALUE:tn?n:t},t.$_$.cc=function(t,n){return t>n?n:t},t.$_$.dc=function(t,n){return t.ca(n)>0?n:t},t.$_$.ec=Xr,t.$_$.fc=function(t,n,i){if(n>i)throw Jo("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t},t.$_$.gc=Jr,t.$_$.hc=Gr,t.$_$.ic=function(t,n,i){if(null!==n&&null!==i){if(Js(n,i)>0)throw Jo("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");if(Js(t,n)<0)return n;if(Js(t,i)>0)return i}else{if(null!==n&&Js(t,n)<0)return n;if(null!==i&&Js(t,i)>0)return i}return t},t.$_$.jc=function(t,n){return t.ka(n)},t.$_$.kc=function(t,n){var i=function(t){var n=Qu(r.MIN_VALUE);return t.ca(Qu(r.MAX_VALUE))<=0&&n.ca(t)<=0?t.la():null}(n);return null!=i&&t.ka(i)},t.$_$.lc=Yr,t.$_$.mc=function(t){return wt.ga(t.ia_1,t.ha_1,0|-t.ja_1)},t.$_$.nc=function(t,n){return function(t,n){if(!t)throw Jo("Step must be positive, was: "+iu(n)+".")}(n>0,n),wt.ga(t.ha_1,t.ia_1,t.ja_1>0?n:0|-n)},t.$_$.oc=Wr,t.$_$.pc=Di,t.$_$.qc=Bi,t.$_$.rc=Vi,t.$_$.sc=Ui,t.$_$.tc=Hi,t.$_$.uc=Xa,t.$_$.vc=Rh,t.$_$.wc=Nh,t.$_$.xc=function(t){return function(t){return t instanceof pe?t:new pe(t)}(new ua(t))},t.$_$.yc=function(t,n){return new Wh(t,!0,n)},t.$_$.zc=function(t){var n=t.v();return n.w()?n.y():null},t.$_$.ad=function(t,n){return new Jh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.bd=function(t,n){return new Jh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.cd=Zr,t.$_$.dd=function(t,n){return Yh(Gh([t,n]))},t.$_$.ed=function(t,n){return Yh(Gh([t,zr(n)]))},t.$_$.fd=Gh,t.$_$.gd=function(t){return new Fh(t)},t.$_$.hd=Qr,t.$_$.id=$e,t.$_$.jd=function(t){Ue();for(var n="",i=0,e=t.length;i=0:yl(t,n,0,Ws(t),i)>=0},t.$_$.ld=hl,t.$_$.md=function(t){return Ue(),Ke(t,0,t.length,!1)},t.$_$.nd=function(t,n,i,e){return n=n===K?0:n,i=i===K?t.length:i,e=e!==K&&e,Ue(),tt.c8(n,i,t.length),Ke(t,n,i,e)},t.$_$.od=es,t.$_$.pd=function(t){return Ue(),function(t,n,i,e){if(nr(),!(n>=0&&i<=t.length&&n<=i))throw Jo(iu("Failed requirement."));for(var r=new Int8Array(At(i-n|0,3)),s=0,u=n;u>6|192);var l=s;s=l+1|0,r[l]=Gu(63&_|128)}else if(_<55296||_>=57344){var c=s;s=c+1|0,r[c]=Gu(_>>12|224);var f=s;s=f+1|0,r[f]=Gu(_>>6&63|128);var v=s;s=v+1|0,r[v]=Gu(63&_|128)}else{var d=Xe(t,_,u,i,e);if(d<=0){var w=s;s=w+1|0,r[w]=Ge()[0];var p=s;s=p+1|0,r[p]=Ge()[1];var m=s;s=m+1|0,r[m]=Ge()[2]}else{var g=s;s=g+1|0,r[g]=Gu(d>>18|240);var y=s;s=y+1|0,r[y]=Gu(d>>12&63|128);var b=s;s=b+1|0,r[b]=Gu(d>>6&63|128);var $=s;s=$+1|0,r[$]=Gu(63&d|128),u=u+1|0}}}return r.length===s?r:qo(r,s)}(t,0,t.length,!1)},t.$_$.qd=function(t,n,i){return i=i!==K&&i,Ws(t)>0&&Za(Vs(t,ul(t)),n,i)},t.$_$.rd=Ye,t.$_$.sd=function(t,n,i){if(null==t)return null==n;if(null==n)return!1;if(!(i=i!==K&&i))return t==n;if(t.length!==n.length)return!1;var e=0,r=t.length;if(e=0}(t)},t.$_$.zd=function(t){return ds(),ds(),t<=56319&&55296<=t},t.$_$.ae=function(t){return ds(),ds(),t<=57343&&56320<=t},t.$_$.be=function(t){return 97<=t&&t<=122||!(as(t,128)<0)&&function(t){return 1===function(t){var n=cs(t),i=jo(Io().wb_1,n),e=Io().wb_1[i],r=(e+Io().xb_1[i]|0)-1|0,s=Io().yb_1[i];if(n>r)return 0;var u=3&s;if(0===u){var o=2,_=e,h=0;if(h<=1)do{if(h=h+1|0,(_=_+(s>>o&127)|0)>n)return 3;if((_=_+(s>>(o=o+7|0)&127)|0)>n)return 0;o=o+7|0}while(h<=1);return 3}if(s<=7)return u;var a=n-e|0;return s>>At(2,s<=31?a%2|0:a)&3}(t)||function(t){var n=jo(Mo().zb_1,t);return n>=0&&t<(Mo().zb_1[n]+Mo().ac_1[n]|0)}(cs(t))}(t)},t.$_$.ce=function(t){return ds(),ds(),t<=57343&&55296<=t},t.$_$.de=xe,t.$_$.ee=ul,t.$_$.fe=ll,t.$_$.ge=ql,t.$_$.he=is,t.$_$.ie=al,t.$_$.je=function(t,n){if(dl(t,n)){var i=Ws(n);return t.substring(i)}return t},t.$_$.ke=function(t,n){if(Cl(t,n)){var i=t.length-Ws(n)|0;return t.substring(0,i)}return t},t.$_$.le=function(t,n,i){if(t.length>=(Ws(n)+Ws(i)|0)&&dl(t,n)&&Cl(t,i)){var e=Ws(n),r=t.length-Ws(i)|0;return t.substring(e,r)}return t},t.$_$.me=function(t,n){var i;if(!(n>=0))throw Jo(iu("Count 'n' must be non-negative, but was "+n+"."));switch(n){case 0:i="";break;case 1:i=iu(t);break;default:var e="";if(0!==Ws(t))for(var r=iu(t),s=n;1==(1&s)&&(e+=r),0!=(s=s>>>1|0);)r+=r;return e}return i},t.$_$.ne=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Ae().j8(n),e?"gui":"gu"),s=Ae().k8(i);return t.replace(r,s)},t.$_$.oe=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Ae().j8(fs(n)),e?"gui":"gu"),s=fs(i);return t.replace(r,s)},t.$_$.pe=function(t){var n;switch(Ws(t)){case 0:throw k_("Char sequence is empty.");case 1:n=Vs(t,0);break;default:throw Jo("Char sequence has more than one element.")}return n},t.$_$.qe=function(t,n){return n.d1()?"":function(t,n){var i=n.y8(),e=n.z8()+1|0;return t.substring(i,e)}(t,n)},t.$_$.re=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length)return pl(t,fs(n[0]),i,e);for(var r=ts(function(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,bl(r=r===K?0:r),new xl(t,i,r,(s=n,u=e,function(t,n){var i=vl(t,s,n,u);return i<0?null:kc(i,1)}));var s,u}(t,n,K,i,e)),s=gn(qh(r,10)),u=r.v();u.w();){var o=ml(t,u.y());s.s(o)}return s},t.$_$.se=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length){var r=n[0];if(0!==Ws(r))return pl(t,r,i,e)}for(var s=ts(gl(t,n,K,i,e)),u=gn(qh(s,10)),o=s.v();o.w();){var _=ml(t,o.y());u.s(_)}return u},t.$_$.te=Ve,t.$_$.ue=cl,t.$_$.ve=function(t,n,i,e){return(e=e!==K&&e)||"string"!=typeof t||"string"!=typeof n?wl(t,i,n,0,Ws(n),e):Be(t,n,i)},t.$_$.we=function(t,n,i){i=i===K?t:i;var e,r=ll(t,n);if(-1===r)e=i;else{var s=r+1|0,u=t.length;e=t.substring(s,u)}return e},t.$_$.xe=function(t,n,i){i=i===K?t:i;var e,r=ol(t,n);if(-1===r)e=i;else{var s=r+1|0,u=t.length;e=t.substring(s,u)}return e},t.$_$.ye=function(t,n,i){i=i===K?t:i;var e=ll(t,n);return-1===e?i:t.substring(0,e)},t.$_$.ze=function(t,n,i){i=i===K?t:i;var e=ol(t,n);return-1===e?i:t.substring(0,e)},t.$_$.af=function(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));var i=t.length,e=i-Xr(n,i)|0;return t.substring(e)},t.$_$.bf=rs,t.$_$.cf=function(t){return function(t){var n=fs(t).toUpperCase();if(n.length>1){var i;if(329===t)i=n;else{var e=Vs(n,0),r=n.substring(1).toLowerCase();i=fs(e)+r}return i}return fs(qe(t))}(t)},t.$_$.df=function(t){return null!=t&&"true"===t.toLowerCase()},t.$_$.ef=function(t){var n,e=function(t){return function(t,n){var e=rl(t,n);if(null==e)return null;var r=e;return ri.MAX_VALUE?null:Gu(r)}(t,10)}(t);return null==e?sl(t):n=e,n},t.$_$.ff=function(t){Ue();for(var n=0,i=t.length,e=Is(i);ne.MAX_VALUE?null:Xu(r)}(t,10)}(t);return null==i?sl(t):n=i,n},t.$_$.nf=function(t,n){return B_(Qu(t).qb(new mu(-1,0)),n)},t.$_$.of=function(t,n){return t.toString(Se(n))},t.$_$.pf=B_,t.$_$.qf=function(t){var n,i=function(t){return function(t,n){var i=Tf(t,n);if(null==(null==i?null:new Hc(i)))return null;var e=i;Ec();var r=255;return Af(e,r)>0?null:Gu(e)}(t,10)}(t);return null==(null==i?null:new jc(i))?sl(t):n=i,n},t.$_$.rf=function(t){var n,i=function(t){return Tf(t,10)}(t);return null==(null==i?null:new Hc(i))?sl(t):n=i,n},t.$_$.sf=function(t){var n,i=function(t){return function(t,n){Se(n);var i=t.length;if(0===i)return null;uf();var e,r=new mu(-1,-1),s=Vs(t,0);if(as(s,48)<0){if(1===i||43!==s)return null;e=1}else e=0;var u=new mu(477218588,119304647),o=u,_=Qu(n),h=new mu(0,0),a=e;if(a0){if(!eu(o,u))return null;if(If(h,o=Df(r,_))>0)return null}var f=h=h.ba(_),v=h,d=Qu(c).qb(new mu(-1,0));if(If(h=v.gb(d),f)<0)return null}while(a0?null:Xu(e)}(t,10)}(t);return null==(null==i?null:new kf(i))?sl(t):n=i,n},t.$_$.uf=function(t){return function(t,n){n=n===K?"":n;for(var i=Sl(t),e=mn(),r=i.v();r.w();){var s=r.y();He(s)||e.s(s)}for(var u=gn(qh(e,10)),o=e.v();o.w();){var _=tl(o.y());u.s(_)}for(var h=function(t){var n=t.v();if(!n.w())return null;for(var i=n.y();n.w();){var e=n.y();Js(i,e)>0&&(i=e)}return i}(u),a=null==h?0:h,l=(t.length,At(n.length,i.n()),Qa(n)),c=wh(i),f=mn(),v=0,d=i.v();d.w();){var w=d.y(),p=v;v=p+1|0;var m,g=nn(p);if(0!==g&&g!==c||!He(w)){var y,b=ss(w,a);m=null==(y=null==b?null:l(b))?w:y}else m=null;var $=m;null==$||f.s($)}return jr(f,ge(),"\n").toString()}(t,"")},t.$_$.vf=function(t,n){return function(t,n,i){if(n=n===K?"":n,He(i=i===K?"|":i))throw Jo(iu("marginPrefix must be non-blank string."));for(var e=Sl(t),r=(t.length,At(n.length,e.n()),Qa(n)),s=wh(e),u=mn(),o=0,_=e.v();_.w();){var h=_.y(),a=o;o=a+1|0;var l,c=nn(a);if(0!==c&&c!==s||!He(h)){var f;t:{var v=0,d=Ws(h)-1|0;if(v<=d)do{var w=v;if(v=v+1|0,!xe(Vs(h,w))){f=w;break t}}while(v<=d);f=-1}var p,m,g=f;if(-1===g)p=null;else if(Be(h,i,g)){var y=g+i.length|0;p=h.substring(y)}else p=null;l=null==(m=null==p?null:r(p))?h:m}else l=null;var b=l;null==b||u.s(b)}return jr(u,ge(),"\n").toString()}(t,"",n=n===K?"|":n)},t.$_$.wf=function(t){var n;t:{var i=0,e=Ws(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!xe(Vs(t,r))){n=Ys(t,r,Ws(t));break t}}while(i<=e);n=""}return n},t.$_$.xf=function(t){var n=0,i=Ws(t)-1|0,e=!1;t:for(;n<=i;){var r=xe(Vs(t,e?i:n));if(e){if(!r)break t;i=i-1|0}else r?n=n+1|0:e=!0}return Ys(t,n,i+1|0)},t.$_$.yf=Wl,t.$_$.zf=Kl,t.$_$.ag=function(t,n){return n.z9(fr())<=0?Ql(ar(Qu(t),n,lr())):Gl(Qu(t),n)},t.$_$.bg=j_,t.$_$.cg=ws,t.$_$.dg=Rt,t.$_$.eg=sc,t.$_$.fg=rc,t.$_$.gg=Cs,t.$_$.hg=E_,t.$_$.ig=Yo,t.$_$.jg=n_,t.$_$.kg=h_,t.$_$.lg=r_,t.$_$.mg=mu,t.$_$.ng=x_,t.$_$.og=bc,t.$_$.pg=I_,t.$_$.qg=$c,t.$_$.rg=mc,t.$_$.sg=y_,t.$_$.tg=fu,t.$_$.ug=xc,t.$_$.vg=Nc,t.$_$.wg=jc,t.$_$.xg=Xc,t.$_$.yg=Hc,t.$_$.zg=wf,t.$_$.ah=hf,t.$_$.bh=jf,t.$_$.ch=kf,t.$_$.dh=Lt,t.$_$.eh=f_,t.$_$.fh=function(t,n){if(t!==n){var i=t._suppressed;null==i?t._suppressed=mh([n]):i.s(n)}},t.$_$.gh=function(t){return t},t.$_$.hh=function(t){var n=t.l_1;return 0===n?32+Kt(t.m_1)|0:Kt(n)},t.$_$.ih=gc,t.$_$.jh=cu,t.$_$.kh=function(t,n){return oc(),new uc(t.si_1,n).xi()},t.$_$.lh=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!Gt(t)},t.$_$.mh=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!function(t){return!(t==t)}(t)},t.$_$.nh=Gt,t.$_$.oh=function(t,n){return new ac(n)},t.$_$.ph=function(t){return new ac(t)},t.$_$.qh=function(){throw P_()},t.$_$.rh=Os,t.$_$.sh=function(t){console.error(ir(t))},t.$_$.th=ir,t.$_$.uh=function(){throw us()},t.$_$.vh=function(t){throw H_("lateinit property "+t+" has not been initialized")},t.$_$.wh=Es,t.$_$.xh=kc,t.$_$.yh=Af,t})?i.apply(n,[n]):i)||(t.exports=e)},852:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i=n.$_$.mb,e=n.$_$.ca;function r(t){this.rl_1=t}return(0,n.$_$.nb)(r,"EventListenerHandler",e),i(r).sl=function(t){this.rl_1(t)},i(r).handleEvent=function(t){return this.sl(t)},i(r).toString=function(){return"EventListenerHandler("+this.rl_1+")"},t.$_$=t.$_$||{},t.$_$.a=function(t){return new r(t)},t})?e.apply(n,r):e)||(t.exports=s)},205:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e=n.$_$.ha,r=n.$_$.mb,s=n.$_$.ea,u=n.$_$.ca,o=n.$_$.nb,_=n.$_$.lb,h=n.$_$.wh,a=n.$_$.f;function l(t){for(var n=0,i=e(Array(t),null);n>ie()){case 0:var e=536870911&i,r=(2<=0){if(null===r)return iu();if(n.py(i,s,r))return $s(t),eu()}}else if(s===Gr()&&n.py(i,s,Qr()))return $s(t),n.ly(i);return function(t,n,i,e,r){t:for(;;){var s=n.ny(i);if(null===s||s===Kr()){var u=t.ty_1.kotlinx$atomicfu$value.qb(new yn(-1,268435455));if(e.ca(u)<0){if(n.py(i,s,Zr()))return $s(t),ru()}else{if(null===r)return iu();if(n.py(i,s,r))return $s(t),eu()}}else if(s===Gr()){if(n.py(i,s,Qr()))return $s(t),n.ly(i)}else{if(s===ts())return ru();if(s===Zr())return ru();if(s===is())return $s(t),ru();if(s===Jr())continue t;if(n.py(i,s,Xr())){var o,_=s instanceof Hs;return bs(s instanceof Hs?s.v10_1:s,t,n,i)?(n.oy(i,Qr()),$s(t),o=n.ly(i)):(n.oy(i,ts()),n.dz(i,!1),_&&$s(t),o=ru()),o}}}}(t,n,i,e,r)}function bs(t,n,i,e){var r;if(Xt(t,zi))Xt(t,zi)||It(),r=Bs(t,At);else if(Xt(t,Mo)){t instanceof Po||It();var s=t.h11(n,At);s===Bo()&&i.my(e),r=s===Vo()}else{if(!(t instanceof vs)){var u="Unexpected waiter: "+Bt(t);throw Wt(Bt(u))}r=Bs(t.d11_1,!0)}return r}function $s(t){if(cs(t))return At;var n=t.zy_1.kotlinx$atomicfu$value;t:for(;;){var i=t.vy_1.atomicfu$getAndIncrement$long(),e=Yr(),r=i.aa(Wn(e));if(t.vz().ca(i)<=0)return n.mq_1.ca(r)<0&&null!=n.lz()&&Ls(t,r,n),qs(t),At;if(!n.mq_1.equals(r)){var s=Ps(t,r,n,i);if(null==s)continue t;n=s}var u=Yr();if(ks(t,n,i.ib(Wn(u)).la(),i))return qs(t),At;qs(t)}}function ks(t,n,i,e){var r,s=n.ny(i);return null!=s&&Xt(s,Fr)&&e.ca(t.uy_1.kotlinx$atomicfu$value)>=0&&n.py(i,s,Jr())?(bs(s,t,n,i)?(n.oy(i,Gr()),r=!0):(n.oy(i,ts()),n.dz(i,!1),r=!1),r):function(t,n,i,e){t:for(;;){var r=n.ny(i);if(null!=r&&Xt(r,Fr)){var s;if(e.ca(t.uy_1.kotlinx$atomicfu$value)<0){if(n.py(i,r,new Hs(r)))return!0}else if(n.py(i,r,Jr()))return bs(r,t,n,i)?(n.oy(i,Gr()),s=!0):(n.oy(i,ts()),n.dz(i,!1),s=!1),s}else{if(r===ts())return!1;if(null!==r){if(r===Gr())return!0;if(r===Zr()||r===Qr()||r===ns())return!0;if(r===is())return!0;if(r===Xr())continue t;var u="Unexpected cell state: "+Jt(r);throw Wt(Bt(u))}if(n.py(i,r,Kr()))return!0}}}(t,n,i,e)}function xs(t,n){if(!t.wy_1.atomicfu$addAndGet$long(n).qb(new yn(0,1073741824)).equals(new yn(0,0)))for(;!t.wy_1.kotlinx$atomicfu$value.qb(new yn(0,1073741824)).equals(new yn(0,0)););}function qs(t,n,i){return xs(t,n=n===Rt?new yn(1,0):n)}function Ss(t){this.tz_1=t,this.rz_1=es(),this.sz_1=null}function Cs(t){var n=t.uz();return null==n?new du(mu()):n}function Es(t){t.k11()}function Os(t,n){var i=function(t){var n=t.zy_1.kotlinx$atomicfu$value,i=t.xy_1.kotlinx$atomicfu$value;i.mq_1.ca(n.mq_1)>0&&(n=i);var e=t.yy_1.kotlinx$atomicfu$value;return e.mq_1.ca(n.mq_1)>0&&(n=e),function(t){_o();for(var n=t;;){var i=eo(n);if(i===Zu())return n;var e=null==i||i instanceof uo?i:It();if(null===e){if(n.qz())return n}else n=e}}(n)}(t);if(t.m11()){var e=function(t,n){for(var i=n;;){var e=Yr()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=i.mq_1,u=Yr(),o=s.ba(Wn(u)).gb(Wn(r));if(o.ca(t.w10())<0)return new yn(-1,-1);t:for(;;){var _=i.ny(r);if(null!==_&&_!==Kr()){if(_===Gr())return o;break t}if(i.py(r,_,is())){i.fz();break t}}}while(0<=e);var h=i.oz();if(null==h)return new yn(-1,-1);i=h}}(t,i);e.equals(new yn(-1,-1))||t.l11(e)}return function(t,n,i){var e=$o(),r=n;t:for(;null!=r;){var s=Yr()-1|0;if(0<=s)do{var u=s;s=s+-1|0;var o=r.mq_1,_=Yr();if(o.ba(Wn(_)).gb(Wn(u)).ca(i)<0)break t;n:for(;;){var h=r.ny(u);if(null===h||h===Kr()){if(r.py(u,h,is())){r.fz();break n}}else if(h instanceof Hs){if(r.py(u,h,is())){e=ko(e,h.v10_1),r.dz(u,!0);break n}}else{if(null==h||!Xt(h,Fr))break n;if(r.py(u,h,is())){e=ko(e,h),r.dz(u,!0);break n}}}}while(0<=s);r=r.oz()}var a=e,l=a;if(null!=l)if(l instanceof zn){var c=a instanceof zn?a:It(),f=c.n()-1|0;if(0<=f)do{var v=f;f=f+-1|0,Ts(c.h1(v),t)}while(0<=f)}else{Ts(null==a||null!=a?a:It(),t)}}(t,i,n),i}function js(t,n){!function(t,n){var i=t.sy_1,e=null,r=$o(),s=n;t:for(;;){var u=Yr()-1|0;if(0<=u)do{var o=u;u=u+-1|0;var _=s.mq_1,h=Yr(),a=_.ba(Wn(h)).gb(Wn(o));n:for(;;){var l=s.ny(o);if(l===Qr())break t;if(l===Gr()){if(a.ca(t.w10())<0)break t;if(s.py(o,l,is())){null!=i&&(e=So(i,s.ky(o),e)),s.my(o),s.fz();break n}}else if(l===Kr()||null===l){if(s.py(o,l,is())){s.fz();break n}}else{if(!(null!=l&&Xt(l,Fr)||l instanceof Hs)){if(l===Jr()||l===Xr())break t;if(l===Jr())continue n;break n}if(a.ca(t.w10())<0)break t;var c=l instanceof Hs?l.v10_1:null!=l&&Xt(l,Fr)?l:It();if(s.py(o,l,is())){null!=i&&(e=So(i,s.ky(o),e)),r=ko(r,c),s.my(o),s.fz();break n}}}}while(0<=u);var f=s.oz();if(null==f)break t;s=f}var v=r,d=v;if(null!=d)if(d instanceof zn){var w=v instanceof zn?v:It(),p=w.n()-1|0;if(0<=p)do{var m=p;p=p+-1|0,As(w.h1(m),t)}while(0<=p)}else{As(null==v||null!=v?v:It(),t)}if(null!=e)throw e}(t,Os(t,n))}function Ts(t,n){return zs(t,n,!0)}function As(t,n){return zs(t,n,!1)}function zs(t,n,i){if(t instanceof vs){var e=t.d11_1,r=un(!1);e.qc(r)}else if(Xt(t,zi)){var s=i?Cs(n):n.o11(),u=un(on(s));t.qc(u)}else if(t instanceof Vs){var o=t.a11_1,_=new fu(cu().n11(n.uz())),h=un(_);o.qc(h)}else if(t instanceof Ss)t.j11();else{if(!Xt(t,Mo))throw Wt(Bt("Unexpected waiter: "+t));t.b11(n,is())}}function Is(t,n){return Ds(n,t,!1)}function Ds(t,n,i){var e;switch(n.ob(60).la()){case 0:case 1:e=!1;break;case 2:Os(t,n.qb(new yn(-1,268435455))),e=!i||!t.p11();break;case 3:js(t,n.qb(new yn(-1,268435455))),e=!0;break;default:var r="unexpected close status: "+n.ob(60).la();throw Wt(Bt(r))}return e}function Ms(t,n,i,e){for(;;){var r=n.ny(i);if(null!==r&&r!==Kr())return r===Gr()||r!==ts()&&r!==is()&&r!==Qr()&&r!==Zr()&&(r===Jr()||r!==Xr()&&e.equals(t.w10()));if(n.py(i,r,Zr()))return $s(t),!1}}function Ns(t,n,i){var e;t:for(var r=t.xy_1,s=Gs();;){var u,o=oo(i,n,s);if(to(o))u=!0;else{var _;n:{for(var h=no(o);;){var a=r.kotlinx$atomicfu$value;if(a.mq_1.ca(h.mq_1)>=0){_=!0;break n}if(!h.hz()){_=!1;break n}if(r.atomicfu$compareAndSet(a,h)){a.iz()&&a.x(),_=!0;break n}h.iz()&&h.x()}_=At}u=_}if(u){e=o;break t}}var l,c=e;if(to(c)){Es(t);var f=i.mq_1,v=Yr();f.ba(Wn(v)).ca(t.w10())<0&&i.pz(),l=null}else{var d,w=no(c);if(w.mq_1.ca(n)>0){var p=w.mq_1,m=Yr();!function(t,n){for(var i=t.ty_1;;){var e=i.kotlinx$atomicfu$value,r=e.qb(new yn(-1,268435455));if(r.ca(n)>=0)return At;var s=Ys(r,e.ob(60).la());if(t.ty_1.atomicfu$compareAndSet(e,s))return At}}(t,p.ba(Wn(m)));var g=w.mq_1,y=Yr();g.ba(Wn(y)).ca(t.w10())<0&&w.pz(),d=null}else d=w;l=d}return l}function Rs(t,n,i){var e;t:for(var r=t.yy_1,s=Gs();;){var u,o=oo(i,n,s);if(to(o))u=!0;else{var _;n:{for(var h=no(o);;){var a=r.kotlinx$atomicfu$value;if(a.mq_1.ca(h.mq_1)>=0){_=!0;break n}if(!h.hz()){_=!1;break n}if(r.atomicfu$compareAndSet(a,h)){a.iz()&&a.x(),_=!0;break n}h.iz()&&h.x()}_=At}u=_}if(u){e=o;break t}}var l,c=e;if(to(c)){Es(t);var f=i.mq_1,v=Yr();f.ba(Wn(v)).ca(t.vz())<0&&i.pz(),l=null}else{var d,w,p=no(c);if(cs(t))d=!1;else{var m=ls(t),g=Yr(),y=m.aa(Wn(g));d=n.ca(y)<=0}if(d)t:for(var b=t.zy_1;;){var $=b.kotlinx$atomicfu$value;if($.mq_1.ca(p.mq_1)>=0)break t;if(!p.hz())break t;if(b.atomicfu$compareAndSet($,p)){$.iz()&&$.x();break t}p.iz()&&p.x()}if(p.mq_1.ca(n)>0){var k=p.mq_1,x=Yr();!function(t,n){for(var i=t.uy_1;;){var e=i.kotlinx$atomicfu$value;if(e.ca(n)>=0)return At;if(t.uy_1.atomicfu$compareAndSet(e,n))return At}}(t,k.ba(Wn(x)));var q=p.mq_1,S=Yr();q.ba(Wn(S)).ca(t.vz())<0&&p.pz(),w=null}else w=p;l=w}return l}function Ps(t,n,i,e){var r;t:for(var s=t.zy_1,u=Gs();;){var o,_=oo(i,n,u);if(to(_))o=!0;else{var h;n:{for(var a=no(_);;){var l=s.kotlinx$atomicfu$value;if(l.mq_1.ca(a.mq_1)>=0){h=!0;break n}if(!a.hz()){h=!1;break n}if(s.atomicfu$compareAndSet(l,a)){l.iz()&&l.x(),h=!0;break n}a.iz()&&a.x()}h=At}o=h}if(o){r=_;break t}}var c,f=r;if(to(f))Es(t),Ls(t,n,i),qs(t),c=null;else{var v,d=no(f);if(d.mq_1.ca(n)>0){var w=e.gb(Wn(1)),p=d.mq_1,m=Yr(),g=p.ba(Wn(m));if(t.vy_1.atomicfu$compareAndSet(w,g)){var y=d.mq_1,b=Yr();xs(t,y.ba(Wn(b)).hb(e))}else qs(t);v=null}else v=d;c=v}return c}function Ls(t,n,i){var e=i;t:for(;e.mq_1.ca(n)<0;){var r=e.lz();if(null==r)break t;e=r}for(;;){t:for(;e.gz();){var s=e.lz();if(null==s)break t;e=s}var u;t:{for(var o=t.zy_1,_=e;;){var h=o.kotlinx$atomicfu$value;if(h.mq_1.ca(_.mq_1)>=0){u=!0;break t}if(!_.hz()){u=!1;break t}if(o.atomicfu$compareAndSet(h,_)){h.iz()&&h.x(),u=!0;break t}_.iz()&&_.x()}u=At}if(u)return At}}function Fs(t){return function(n,i,e){return function(t,n,i){return function(e){return t!==is()&&xo(n.sy_1,null==t||null!=t?t:It(),i.jc()),At}}(e,t,n)}}function Us(t,n){if(n=n===Rt?null:n,this.ry_1=t,this.sy_1=n,!(this.ry_1>=0)){var i="Invalid channel capacity: "+this.ry_1+", should be >=0";throw Yn(Bt(i))}this.ty_1=Gn(new yn(0,0)),this.uy_1=Gn(new yn(0,0)),this.vy_1=Gn(function(t){var n;return su(),ou(),0===t?n=new yn(0,0):(ou(),n=2147483647===t?new yn(-1,2147483647):Wn(t)),n}(this.ry_1)),this.wy_1=Gn(ls(this));var e=new us(new yn(0,0),null,this,3);this.xy_1=Zt(e),this.yy_1=Zt(e);var r;if(cs(this)){var s=Wr();r=s instanceof us?s:It()}else r=e;this.zy_1=Zt(r);var u;u=null==this.sy_1?null:Fs(this),this.az_1=u,this.bz_1=Zt(rs()),this.cz_1=Zt(null)}function Hs(t){this.v10_1=t}function Vs(){}function Bs(t,n,i){i=i===Rt?null:i,su();var e,r=t.mp(n,null,i);return null!=r?(t.np(r),e=!0):e=!1,e}function Ws(t,n){return su(),new yn(0,n?1073741824:0).gb(t)}function Ys(t,n){return su(),Wn(n).nb(60).gb(t)}function Gs(){return su(),(t=function(t,n){return i=t,e=n,su(),new us(i,e,e.hy(),0);var i,e}).callableName="createSegment",t;var t}function Ks(){return K}function Xs(){return su(),3}function Js(){return su(),0}function Zs(){return su(),1}function Qs(){return su(),2}function tu(){return su(),4}function nu(){return su(),5}function iu(){return su(),su(),H}function eu(){return su(),su(),U}function ru(){return su(),su(),V}function su(){X||(X=!0,j=new us(new yn(-1,-1),null,null,0),T=To("kotlinx.coroutines.bufferedChannel.segmentSize",32),A=To("kotlinx.coroutines.bufferedChannel.expandBufferCompletionWaitIterations",1e4),z=new jo("BUFFERED"),I=new jo("SHOULD_BUFFER"),D=new jo("S_RESUMING_BY_RCV"),M=new jo("RESUMING_BY_EB"),N=new jo("POISONED"),R=new jo("DONE_RCV"),P=new jo("INTERRUPTED_SEND"),L=new jo("INTERRUPTED_RCV"),F=new jo("CHANNEL_CLOSED"),U=new jo("SUSPEND"),H=new jo("SUSPEND_NO_WAITER"),V=new jo("FAILED"),B=new jo("NO_RECEIVE_RESULT"),W=new jo("CLOSE_HANDLER_CLOSED"),Y=new jo("CLOSE_HANDLER_INVOKED"),G=new jo("NO_CLOSE_CAUSE"))}function uu(){J=this,this.z11_1=2147483647,this.a12_1=0,this.b12_1=-1,this.c12_1=-2,this.d12_1=-3,this.e12_1="kotlinx.coroutines.channels.defaultBuffer",this.f12_1=To("kotlinx.coroutines.channels.defaultBuffer",64,1,2147483646)}function ou(){return null==J&&new uu,J}function _u(t){return!(t instanceof hu)}function hu(){}function au(t){hu.call(this),this.g12_1=t}function lu(){Z=this,this.y10_1=new hu}function cu(){return null==Z&&new lu,Z}function fu(t){cu(),this.h12_1=t}function vu(t){ii(t,this),qn(this,vu)}function du(t){ri(t,this),qn(this,du)}function wu(){}function pu(){}function mu(){return Q}function gu(t,n,i){return t.v12_1===(Ur(),E)?function(t,n,i){var e=zt(Us).r11.call(t,n);if(_u(e)||function(t){return t instanceof au}(e))return e;if(i){var r=t.sy_1,s=null==r?null:So(r,n);if(null!=s)throw s}return cu().z10(At)}(t,n,i):function(t,n){var i,e=Gr(),r=t.xy_1.kotlinx$atomicfu$value;t:for(;;){var s=t.ty_1.atomicfu$getAndIncrement$long(),u=s.qb(Ks()),o=Is(s,t),_=Yr(),h=u.aa(Wn(_)),a=Yr(),l=u.ib(Wn(a)).la();if(!r.mq_1.equals(h)){var c=Ns(t,h,r);if(null==c){if(o)return cu().n11(t.o11());continue t}r=c}var f=ds(t,r,l,n,u,e,o);if(f===Js())return r.pz(),cu().z10(At);if(f===Zs())return cu().z10(At);if(f===Qs()){if(o)return r.fz(),cu().n11(t.o11());var v=null!=e&&Xt(e,Fr)?e:null;null==v||fs(v,0,r,l);var d=r.mq_1,w=Yr(),p=d.ba(Wn(w)).gb(Wn(l));return t.l11(p),cu().z10(At)}if(f===tu())return u.ca(t.w10())<0&&r.pz(),cu().n11(t.o11());if(f!==nu()){if(f===Xs())throw Wt(Bt("unexpected"))}else r.pz()}return i}(t,n)}function yu(t,n,i){if(i=i===Rt?null:i,Us.call(this,t,i),this.u12_1=t,this.v12_1=n,this.v12_1===Vr()){var e="This implementation does not support suspension for senders, use "+si(Us).i6()+" instead";throw Yn(Bt(e))}if(!(this.u12_1>=1)){var r="Buffered channel capacity must be at least 1, but "+this.u12_1+" was specified";throw Yn(Bt(r))}}function bu(){return Uu(),tt}function $u(t){var n=t.f13_1,i=t.e13_1;return n.ca(i)<=0?n:i}function ku(t){var n=$u(t),i=t.g13_1;return n.gb(Wn(i)).hb(t.e13_1).la()}function xu(t){return t.g13_1+t.h13_1|0}function qu(t){var n=$u(t),i=t.g13_1;return n.gb(Wn(i))}function Su(t,n){if(0===t.j13_1)return function(t,n){if(0===t.a13_1)return!0;Eu(t,n),t.g13_1=t.g13_1+1|0,t.g13_1>t.a13_1&&Cu(t);var i=t,e=$u(t),r=t.g13_1;return i.f13_1=e.gb(Wn(r)),!0}(t,n);if(t.g13_1>=t.b13_1&&t.f13_1.ca(t.e13_1)<=0)switch(t.c13_1.y9_1){case 0:return!1;case 2:return!0}if(Eu(t,n),t.g13_1=t.g13_1+1|0,t.g13_1>t.b13_1&&Cu(t),ku(t)>t.a13_1){var i=t.e13_1.gb(Wn(1));ju(t,i,t.f13_1,qu(t),function(t){var n=$u(t),i=t.g13_1,e=n.gb(Wn(i)),r=t.h13_1;return e.gb(Wn(r))}(t))}return!0}function Cu(t){Fu(Bn(t.d13_1),$u(t),null),t.g13_1=t.g13_1-1|0;var n=$u(t).gb(Wn(1));t.e13_1.ca(n)<0&&(t.e13_1=n),t.f13_1.ca(n)<0&&function(t,n){if(0!==t.j13_1){var i=t.i13_1;if(null==i);else for(var e=0,r=i.length;e=0&&s.m13_1.ca(n)<0&&(s.m13_1=n)}}t.f13_1=n}(t,n)}function Eu(t,n){var i=xu(t),e=t.d13_1;Fu(null==e?Ou(t,null,0,2):i>=e.length?Ou(t,e,i,Tt(e.length,2)):e,$u(t).gb(Wn(i)),n)}function Ou(t,n,i,e){if(!(e>0))throw Wt(Bt("Buffer size overflow"));var r=oi(Array(e),null);t.d13_1=r;var s=r;if(null==n)return s;var u=$u(t),o=0;if(o0){var e=$u(t),r=xu(t);i=Lu(n,e.gb(Wn(r)).hb(Wn(1)))===bu()}else i=!1;if(!i)break t;t.h13_1=t.h13_1-1|0;var s=$u(t),u=xu(t);Fu(n,s.gb(Wn(u)),null)}}function Au(t,n){var i,e=Hu(),r=zu(t,n);if(r.ca(new yn(0,0))<0)i=bu();else{var s=n.m13_1,u=function(t,n){var i=Lu(Bn(t.d13_1),n);return i instanceof Mu?i.q13_1:i}(t,r);n.m13_1=r.gb(Wn(1)),e=t.s13(s),i=u}for(var o=i,_=e,h=0,a=_.length;h0||i.ca($u(t))>0||0===t.h13_1?new yn(-1,-1):i}function Iu(t,n,i){var e=new Xi(Gt(i),po());if(e.fr(),zu(t,n).ca(new yn(0,0))<0)n.n13_1=e,n.n13_1=e;else{var r=un(At);e.qc(r)}return e.gp()}function Du(t,n){var i=n,e=n.length;if(0!==t.j13_1){var r=t.i13_1;if(null==r);else for(var s=0,u=r.length;s=i.length){var a=i,l=Tt(2,i.length),c=Math.max(2,l);i=_i(a,c)}var f=e;e=f+1|0,i[f]=h,o.n13_1=null}}}}}return i}function Mu(t,n,i,e){this.o13_1=t,this.p13_1=n,this.q13_1=i,this.r13_1=e}function Nu(t,n,i){Ft.call(this,i),this.b14_1=t,this.c14_1=n}function Ru(t,n,i){Vu.call(this),this.a13_1=t,this.b13_1=n,this.c13_1=i,this.d13_1=null,this.e13_1=new yn(0,0),this.f13_1=new yn(0,0),this.g13_1=0,this.h13_1=0}function Pu(){Bu.call(this),this.m13_1=new yn(-1,-1),this.n13_1=null}function Lu(t,n){return Uu(),t[n.la()&(t.length-1|0)]}function Fu(t,n,i){return Uu(),t[n.la()&(t.length-1|0)]=i}function Uu(){nt||(nt=!0,tt=new jo("NO_VALUE"))}function Hu(){return et||(et=!0,it=oi(Array(0),null)),it}function Vu(){j_.call(this),this.i13_1=null,this.j13_1=0,this.k13_1=0,this.l13_1=null}function Bu(){}function Wu(t,n){if(n.og(0,(e=t,function(t,n){var i=n.i2(),r=e.m15_1.kc(i);if(i!==v)return n!==r?ui.MIN_VALUE:t+1|0;var s=null==r||Xt(r,Me)?r:It(),u=function(t,n){for(var i=t,e=n;;){if(null===i)return null;if(i===e)return i;if(!(i instanceof Oo))return i;i=i.an()}}(Xt(n,Me)?n:It(),s);if(u!==s)throw Wt(Bt("Flow invariant is violated:\n\t\tEmission from another coroutine is detected.\n\t\tChild of "+u+", expected child of "+s+".\n\t\tFlowCollector is not thread-safe and concurrent emissions are prohibited.\n\t\tTo mitigate this restriction please use 'channelFlow' builder instead of 'flow'"));return null==s?t:t+1|0}))!==t.n15_1){var i="Flow invariant is violated:\n\t\tFlow was collected in "+t.m15_1+",\n\t\tbut emission happened in "+n+".\n\t\tPlease refer to 'flow' documentation or use 'flowOn' instead";throw Wt(Bt(i))}var e}function Yu(t,n){Ft.call(this,n),this.x15_1=t}function Gu(){}function Ku(t,n,i){Ft.call(this,i),this.j16_1=t,this.k16_1=n}function Xu(t,n){this.l16_1=n,this.m16_1=t}function Ju(){}function Zu(){return _o(),rt}function Qu(t,n,i){uo.call(this,n),this.mq_1=t,this.nq_1=Yt(i<<16)}function to(t){return t===Zu()}function no(t){if(t===Zu())throw Wt(Bt("Does not contain segment"));return t instanceof Qu?t:It()}function io(t){this.q11_1=t}function eo(t){return t.jz_1.kotlinx$atomicfu$value}function ro(t){for(var n=t.oz();null!==n&&n.gz();)n=n.kz_1.kotlinx$atomicfu$value;return n}function so(t){for(var n=Bn(t.lz());n.gz();){var i=n.lz();if(null==i)return n;n=i}return n}function uo(t){this.jz_1=Zt(null),this.kz_1=Zt(t)}function oo(t,n,i){_o();for(var e=t;e.mq_1.ca(n)<0||e.gz();){var r=eo(e);if(r===Zu())return Zu();var s=null==r||r instanceof uo?r:It();if(null==s){var u=i(e.mq_1.gb(Wn(1)),e);e.mz(u)&&(e.gz()&&e.x(),e=u)}else e=s}return e}function _o(){st||(st=!0,rt=new jo("CLOSED"))}function ho(t,n){for(var i=(g_(),g_(),Et).v();i.w();){var e=i.y();try{e.ss(t,n)}catch(t){if(t instanceof ao)return At;if(!(t instanceof Error))throw t;o_(me(n,t))}}try{vn(n,new m_(t))}catch(t){if(!(t instanceof Error))throw t}o_(n)}function ao(){}function lo(){return wo(),ut}function co(){return wo(),ot}function fo(t,n){mo.call(this,lt),this.up_1=t,this.vp_1=n,this.wp_1=lo(),this.xp_1=(this.jc(),0),this.yp_1=Zt(null)}function vo(t,n,i){var e;if(i=i===Rt?null:i,wo(),t instanceof fo){var r,s=he(n,i);if(t.up_1.ps(t.jc()))t.wp_1=s,t.iq_1=po(),t.up_1.qs(t.jc(),t),r=At;else{var u=po(),o=Ae().nt();if(o.ht())t.wp_1=s,t.iq_1=u,o.gt(t);else{o.jt(!0);try{var _,h=t.jc().kc(v);if(null==h||h.hm())_=!1;else{var a=h.fn();t.hr(s,a);var l=un(on(a));t.qc(l),_=!0}for(_||(t.vp_1,t.xp_1,t.vp_1.qc(n));o.ft(););}catch(n){if(!(n instanceof Error))throw n;var c=n;t.tr(c,null)}finally{o.kt(!0)}}r=At}e=r}else t.qc(n),e=At;return e}function wo(){_t||(_t=!0,ut=new jo("UNDEFINED"),ot=new jo("REUSABLE_CLAIMED"))}function po(){return ht}function mo(t){v_.call(this),this.iq_1=t}function go(t){return 1===t||2===t}function yo(t,n,i){var e,r=t.gr(),s=t.rr(r);if(null!=s)e=un(on(s));else{var u=t.nr(r);e=un(u)}var o=e;if(i){var _=n instanceof fo?n:It();_.vp_1,_.xp_1,_.vp_1.qc(o)}else n.qc(o)}function bo(){return ft}function $o(t){return t===Rt?null:t}function ko(t,n){var i,e=t;if(null==e)i=$o(n);else if(e instanceof zn){(t instanceof zn?t:It()).s(n),i=$o(t)}else{var r=Tn(4),s=t;r.s(null==s||null!=s?s:It()),r.s(n),i=$o(r)}return i}function xo(t,n,i){var e=So(t,n,null);null==e||we(i,e)}function qo(t,n){xn(t,n,this),qn(this,qo)}function So(t,n,i){i=i===Rt?null:i;try{t(n)}catch(t){if(!(t instanceof Error))throw t;var e=t;if(null==i||i.cause===e)return new qo("Exception in undelivered element handler for "+n,e);vn(i,e)}return i}function Co(t,n,i){return e=t,r=n,s=i,function(t){return xo(e,r,s),At};var e,r,s}function Eo(t){this.o16_1=t}function Oo(t,n){Si.call(this,t,!0,!0),this.kp_1=n}function jo(t){this.p16_1=t}function To(t,n,i,e){return i=i===Rt?1:i,e=e===Rt?ui.MAX_VALUE:e,function(t,n,i,e){var r;i=i===Rt?new yn(1,0):i,e===Rt?(bn(),r=new yn(-1,2147483647)):r=e,e=r;var s=null;if(null==s)return n;var u=s,o=li(u);if(null==o)throw Wt(Bt("System property '"+t+"' has unrecognized value '"+u+"'"));var _=o;if(!(i.ca(_)<=0&&_.ca(e)<=0)){var h="System property '"+t+"' should be in range "+i.toString()+".."+e.toString()+", but is '"+_.toString()+"'";throw Wt(Bt(h))}return _}(t,Wn(n),Wn(i),Wn(e)).la()}function Ao(t,n){var i;try{vo(Gt(t),un(At)),i=At}catch(t){if(!(t instanceof Error))throw t;Io(n,t),i=At}return i}function zo(t,n,i,e){var r;e=e===Rt?null:e;try{vo(Gt(Lt(t,n,i)),un(At),e),r=At}catch(t){if(!(t instanceof Error))throw t;Io(i,t),r=At}return r}function Io(t,n){return function(t,n){var i=un(on(n));throw t.qc(i),n}(t,n)}function Do(t,n,i){var e,r;try{r="function"==typeof i?i(n,t):i.cd(n,t)}catch(t){if(!(t instanceof Error))throw t;r=new oe(t)}var s=r;if(s!==Ut()){var u=t.pm(s);if(u!==Ve()){if(u instanceof oe)throw u.mm_1,O_(u.mm_1,t.kp_1);e=Or(u)}else e=Ut()}else e=Ut();return e}function Mo(){}function No(t,n){var i,e=t.f11_1;if(null==e)return null;t:{for(var r=e.v();r.w();){var s=r.y();if(s.q16_1===n){i=s;break t}}i=null}var u=i;if(null==u){var o="Clause with object "+Bt(n)+" is not found";throw Wt(Bt(o))}return u}function Ro(){}function Po(){}function Lo(){if($t)return At;$t=!0,mt=new Fo("SUCCESSFUL",0),gt=new Fo("REREGISTER",1),yt=new Fo("CANCELLED",2),bt=new Fo("ALREADY_SELECTED",3)}function Fo(t,n){pn.call(this,t,n)}function Uo(t){var n;switch(Wo(),t){case 0:n=Vo();break;case 1:n=Bo();break;case 2:Lo(),n=yt;break;case 3:Lo(),n=bt;break;default:throw Wt(Bt("Unexpected internal result: "+t))}return n}function Ho(t,n){Wo();var i=t.mp(At,null,n);if(null==i)return!1;var e=i;return t.np(e),!0}function Vo(){return Lo(),mt}function Bo(){return Lo(),gt}function Wo(){kt||(kt=!0,vt=new jo("STATE_REG"),dt=new jo("STATE_COMPLETED"),wt=new jo("STATE_CANCELLED"),pt=new jo("NO_RESULT"),new jo("PARAM_CLAUSE_0"))}function Yo(){E_.call(this)}function Go(t,n){"function"==typeof t?t(n):t.invoke(n)}function Ko(){}function Xo(t){return Bt(t)}function Jo(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&void 0!==navigator.userAgent&&void 0!==navigator.userAgent.match&&navigator.userAgent.match("\\bjsdom\\b")?r_():"undefined"!=typeof window&&null!=window&&void 0!==window.addEventListener?function(t){var n,i=t.coroutineDispatcher;if(null==i){var e=new x_(t);t.coroutineDispatcher=e,n=e}else n=i;return n}(window):"undefined"==typeof process||void 0===process.nextTick?(null==jt&&new y_,jt):r_()}function Zo(t,n){var i=t.gm().pg(n);return i!==h_().vs_1&&null==i.kc(Ht)?i.pg(h_().vs_1):i}function Qo(t,n){Oo.call(this,t,n)}function t_(){return qt}function n_(t){var n=di(t).i6();return null==n?"Unknown":n}function i_(t){var n=t.__debug_counter;return"number"!=typeof n&&(n=xt=xt+1|0,t.__debug_counter=n),(null!=n&&"number"==typeof n?n:It()).toString()}function e_(){St=this,b_.call(this)}function r_(){return null==St&&new e_,St}function s_(t){var n;$_.call(this),this.e17_1=t,this.f17_1=(n=this,function(){return n.l17(),At})}function u_(t){var n;$_.call(this),this.b18_1=t,this.c18_1="dispatchCoroutine",this.b18_1.addEventListener("message",(n=this,function(t){return t.source==n.b18_1&&t.data==n.c18_1&&(t.stopPropagation(),n.l17()),At}),!0)}function o_(t){console.error(t.toString())}function __(){Ct=this,this.vs_1=Jo(),this.ws_1=(null==x&&new Pr,x),this.xs_1=new a_(this.vs_1,!1),this.ys_1=null}function h_(){return null==Ct&&new __,Ct}function a_(t,n){Dr.call(this),this.e18_1=t,this.f18_1=n,this.g18_1=this.f18_1?this:new a_(this.e18_1,!0)}function l_(){je.call(this)}function c_(t,n,i){wi(t,n,this),qn(this,c_),this.l18_1=i}function f_(){}function v_(){}function d_(){}function w_(t,n){return t+1|0}function p_(t,n){this.l15_1=t,this.m15_1=n,this.n15_1=this.m15_1.og(0,w_),this.o15_1=null}function m_(t){mi(Bt(t),this),qn(this,m_)}function g_(){Ot||(Ot=!0,Et=gi())}function y_(){jt=this,b_.call(this)}function b_(){de.call(this),this.h17_1=new s_(this)}function $_(){this.i17_1=$n(),this.j17_1=16,this.k17_1=!1}function k_(t,n){this.p18_1=t,S_.call(this,n)}function x_(t){de.call(this),this.r18_1=t,this.s18_1=new u_(this.r18_1)}function q_(t){return $i(t,new yn(0,0),new yn(2147483647,0)).la()}function S_(t){Zi.call(this),this.t18_1=t}function C_(){E_.call(this)}function E_(){this.xt_1=this,this.yt_1=this,this.zt_1=!1}function O_(t,n){return t}function j_(){}function T_(){this.ot_1=null}return Nt(Me,"Job",Kt,Rt,[En],Rt,Rt,Rt,[0]),Nt(Ne,"ParentJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt(br,"JobSupport",Mt,Rt,[Me,Ne],Rt,Rt,Rt,[0]),Nt($e,"CoroutineScope",Kt),Nt(Si,"AbstractCoroutine",Mt,br,[br,Me,Dt,$e],Rt,Rt,Rt,[0]),Nt(Ci,"StandaloneCoroutine",Mt,Si,Rt,Rt,Rt,Rt,[0]),Nt(Ei,"LazyStandaloneCoroutine",Mt,Ci,Rt,Rt,Rt,Rt,[0]),Nt(Oi,"$awaitCOROUTINE$0",Mt,Ft),Nt(ji,"DeferredCoroutine",Mt,Si,[Si,Me],Rt,Rt,Rt,[0]),Nt(Ti,"LazyDeferredCoroutine",Mt,ji,Rt,Rt,Rt,Rt,[0]),Nt(Oo,"ScopeCoroutine",Mt,Si,Rt,Rt,Rt,Rt,[0]),Nt(Ai,"DispatchedCoroutine",Mt,Oo,Rt,Rt,Rt,Rt,[0]),Nt(zi,"CancellableContinuation",Kt,Rt,[Dt]),Nt(Ko,"CancelHandlerBase",Mt),Nt(Ji,"NotCompleted",Kt),Nt(Zi,"CancelHandler",Mt,Ko,[Ko,Ji]),Nt(Di,"DisposeOnCancel",Mt,Zi),Nt(f_,"Runnable",Kt),Nt(v_,"SchedulerTask",Mt,Rt,[f_]),Nt(mo,"DispatchedTask",Mt,v_),Nt(Fr,"Waiter",Kt),Nt(Xi,"CancellableContinuationImpl",Mt,mo,[mo,zi,Fr]),Nt(Qi,"Active",Qt,Rt,[Ji]),Nt(te,"CompletedContinuation",Mt),Nt(ne,"InvokeOnCancel",Mt,Zi),Nt(re,"$awaitCOROUTINE$1",Mt,Ft),Nt(se,"CompletableDeferredImpl",Mt,br,[br,Me],Rt,Rt,Rt,[0]),Nt(ue,"CompletableJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt(oe,"CompletedExceptionally",Mt),Nt(_e,"CancelledContinuation",Mt,oe),Nt(ae,"CompletedWithCancellation",Mt),Nt(fe,"Key",Qt,_n),Nt(de,"CoroutineDispatcher",Mt,hn,[hn,cn]),Nt(pe,"Key",Qt),Nt(ge,"Key",Qt),Nt(ye,"CoroutineName",Mt,hn),Nt(ke,"GlobalScope",Qt,Rt,[$e]),Nt(qe,"CoroutineStart",Mt,pn),Nt(Ce,"Delay",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(je,"EventLoop",Mt,de),Nt(Te,"ThreadLocalEventLoop",Qt),Nt(ze,"CompletionHandlerException",Mt,kn),Nt(Ie,"CoroutinesInternalError",Mt,Sn),Nt(De,"Key",Qt),Nt(Re,"ChildHandle",Kt),Nt(Pe,"NonDisposableHandle",Qt,Rt,[Re]),Nt(Xe,"Incomplete",Kt),Nt(Ke,"Empty",Mt,Rt,[Xe]),Nt(E_,"LinkedListNode",Mt,Rt,Rt,E_),Nt(C_,"LinkedListHead",Mt,E_,Rt,C_),Nt(Je,"NodeList",Mt,C_,[C_,Xe],Je),Nt(Yo,"CompletionHandlerBase",Mt,E_),Nt(Ze,"JobNode",Mt,Yo,[Yo,Xe]),Nt(j_,"SynchronizedObject",Mt,Rt,Rt,j_),Nt(pr,"Finishing",Mt,j_,[j_,Xe]),Nt(mr,"ChildCompletion",Mt,Ze),Nt(gr,"AwaitContinuation",Mt,Xi),Nt(yr,"JobSupport$$slambda",Mt,Ft,Rt,Rt,Rt,Rt,[1]),Nt(kr,"JobCancellingNode",Mt,Ze),Nt(xr,"InactiveNodeList",Mt,Rt,[Xe]),Nt(qr,"ChildHandleNode",Mt,kr,[kr,Re]),Nt(Sr,"InvokeOnCancelling",Mt,kr),Nt(Cr,"InvokeOnCompletion",Mt,Ze),Nt(Er,"ResumeOnCompletion",Mt,Ze),Nt(jr,"ResumeAwaitOnCompletion",Mt,Ze),Nt(Tr,"IncompleteStateBox",Mt),Nt(Ar,"ChildContinuation",Mt,kr),Nt(zr,"JobImpl",Mt,br,[br,ue],Rt,Rt,Rt,[0]),Nt(Dr,"MainCoroutineDispatcher",Mt,de),Nt(Nr,"SupervisorJobImpl",Mt,zr,Rt,Rt,Rt,Rt,[0]),Nt(Rr,"TimeoutCancellationException",Mt,An),Nt(Pr,"Unconfined",Qt,de),Nt(Lr,"Key",Qt),Nt(Hr,"BufferOverflow",Mt,pn),Nt(uo,"ConcurrentLinkedListNode",Mt),Nt(Qu,"Segment",Mt,uo,[uo,Ji]),Nt(us,"ChannelSegment",Mt,Qu),Nt(as,"$hasNextCOROUTINE$5",Mt,Ft),Nt(vs,"SendBroadcast",Mt,Rt,[Fr]),Nt(Ss,"BufferedChannelIterator",Mt,Rt,[Fr],Rt,Rt,Rt,[0,3]),Nt(pu,"ReceiveChannel",Kt,Rt,Rt,Rt,Rt,Rt,[0]),Nt(wu,"SendChannel",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Us,"BufferedChannel",Mt,Rt,[pu,wu],Rt,Rt,Rt,[1,4,0,3]),Nt(Hs,"WaiterEB",Mt),Nt(Vs,"ReceiveCatching",Mt,Rt,[Fr]),Nt(uu,"Factory",Qt),Nt(hu,"Failed",Mt,Rt,Rt,hu),Nt(au,"Closed",Mt,hu),Nt(lu,"Companion",Qt),Nt(fu,"ChannelResult",Mt),Nt(vu,"ClosedSendChannelException",Mt,ni),Nt(du,"ClosedReceiveChannelException",Mt,ei),Nt(yu,"ConflatedBufferedChannel",Mt,Us,Rt,Rt,Rt,Rt,[1,0]),Nt(Mu,"Emitter",Mt),Nt(Nu,"$collectCOROUTINE$10",Mt,Ft),Nt(Vu,"AbstractSharedFlow",Mt,j_),Nt(Ru,"SharedFlowImpl",Mt,Vu,Rt,Rt,Rt,Rt,[1]),Nt(Bu,"AbstractSharedFlowSlot",Mt),Nt(Pu,"SharedFlowSlot",Mt,Bu,Rt,Pu),Nt(Yu,"$onSubscriptionCOROUTINE$12",Mt,Ft),Nt(Gu,"SubscribedFlowCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1,0]),Nt(Ku,"$collectCOROUTINE$13",Mt,Ft),Nt(Xu,"ReadonlySharedFlow",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Ju,"OpDescriptor",Mt),Nt(io,"SegmentOrClosed",Mt),Nt(ao,"ExceptionSuccessfullyProcessed",Qt,ai),Nt(fo,"DispatchedContinuation",Mt,mo,[mo,Dt]),Nt(qo,"UndeliveredElementException",Mt,kn),Nt(Eo,"ContextScope",Mt,Rt,[$e]),Nt(jo,"Symbol",Mt),Nt(Mo,"SelectInstance",Kt),Nt(Ro,"ClauseData",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Po,"SelectImplementation",Mt,Zi,[Zi,Mo,Fr],Rt,Rt,Rt,[0,2]),Nt(Fo,"TrySelectDetailedResult",Mt,pn),Nt(Qo,"UndispatchedCoroutine",Mt,Oo,Rt,Rt,Rt,Rt,[0]),Nt(b_,"SetTimeoutBasedDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(e_,"NodeDispatcher",Qt,b_,Rt,Rt,Rt,Rt,[1]),Nt($_,"MessageQueue",Mt,Rt,[bi]),Nt(s_,"ScheduledMessageQueue",Mt,$_),Nt(u_,"WindowMessageQueue",Mt,$_),Nt(__,"Dispatchers",Qt),Nt(a_,"JsMainDispatcher",Mt,Dr),Nt(l_,"UnconfinedEventLoop",Mt,je,Rt,l_),Nt(c_,"JobCancellationException",Mt,An),Nt(d_,"TaskContext",Qt),Nt(p_,"SafeCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(m_,"DiagnosticCoroutineContextException",Mt,kn),Nt(y_,"SetTimeoutDispatcher",Qt,b_,Rt,Rt,Rt,Rt,[1]),Nt(S_,"ClearTimeout",Mt,Zi),Nt(k_,"WindowClearTimeout",Mt,S_),Nt(x_,"WindowDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(T_,"CommonThreadLocal",Mt,Rt,Rt,T_),zt(Si).jc=function(){return this.fm_1},zt(Si).gm=function(){return this.fm_1},zt(Si).hm=function(){return zt(br).hm.call(this)},zt(Si).im=function(t){},zt(Si).jm=function(t,n){},zt(Si).km=function(){return n_(this)+" was cancelled"},zt(Si).lm=function(t){t instanceof oe?this.jm(t.mm_1,t.om()):this.im(null==t||null!=t?t:It())},zt(Si).qc=function(t){var n=this.pm(he(t));if(n===Ve())return At;this.qm(n)},zt(Si).qm=function(t){return this.rm(t)},zt(Si).sm=function(t){we(this.fm_1,t)},zt(Si).tm=function(){var t=(this.fm_1,null);return null==t?zt(br).tm.call(this):'"'+t+'":'+zt(br).tm.call(this)},zt(Si).um=function(t,n,i){t.xm(i,n,this)},zt(Ci).zn=function(t){return we(this.fm_1,t),!0},zt(Ei).en=function(){Ao(this.jo_1,this)},zt(Oi).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.so_1.bo(this))===Ut())return t;continue t;case 1:return null==t||null!=t?t:It();case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},zt(ji).wo=function(t){var n=new Oi(this,t);return n.ec_1=At,n.fc_1=null,n.pc()},zt(Ti).en=function(){Ao(this.ap_1,this)},zt(Ai).rm=function(t){this.qm(t)},zt(Ai).qm=function(t){if(function(t){for(var n=t.fp_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.fp_1.atomicfu$compareAndSet(0,2))return!0;break;case 1:return!1;default:throw Wt(Bt("Already resumed"))}}(this))return At;vo(Gt(this.kp_1),le(t,this.kp_1))},zt(Ai).gp=function(){if(function(t){for(var n=t.fp_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.fp_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw Wt(Bt("Already suspended"))}}(this))return Ut();var t=Or(this.bn());if(t instanceof oe)throw t.mm_1;return null==t||null!=t?t:It()},zt(Di).rp=function(t){return this.qp_1.sp()},zt(Di).invoke=function(t){return this.rp(t)},zt(Di).toString=function(){return"DisposeOnCancel["+this.qp_1+"]"},zt(Xi).er=function(){return this.bq_1},zt(Xi).jc=function(){return this.cq_1},zt(Xi).bn=function(){return this.eq_1.kotlinx$atomicfu$value},zt(Xi).cn=function(){var t=this.bn();return!(null!=t&&Xt(t,Ji))},zt(Xi).lp=function(){return this.bn()instanceof _e},zt(Xi).fr=function(){var t=Fi(this);if(null==t)return At;var n=t;this.cn()&&(n.sp(),this.fq_1.kotlinx$atomicfu$value=d)},zt(Xi).gq=function(){var t=this.eq_1.kotlinx$atomicfu$value;return t instanceof te&&null!=t.sq_1?(this.dr(),!1):(this.dq_1.kotlinx$atomicfu$value=536870911+(0<>ie()){case 0:var e=536870911&i,r=(1<>ie()<=0},zt(je).it=function(){var t=this.et_1,n=null==t?null:t.d1();return null==n||n},zt(je).jt=function(t){this.ct_1=this.ct_1.gb(Oe(0,t)),t||(this.dt_1=!0)},zt(je).kt=function(t){if(this.ct_1=this.ct_1.hb(Oe(0,t)),this.ct_1.ca(new yn(0,0))>0)return At;this.dt_1&&this.lt()},zt(je).lt=function(){},zt(Te).nt=function(){var t,n=this.mt_1.pt();if(null==n){var i=new l_;Ae().mt_1.qt(i),t=i}else t=n;return t},zt(Pe).an=function(){return null},zt(Pe).sp=function(){},zt(Pe).rn=function(t){return!1},zt(Pe).toString=function(){return"NonDisposableHandle"},zt(Ke).hm=function(){return this.rt_1},zt(Ke).st=function(){return null},zt(Ke).toString=function(){return"Empty{"+(this.rt_1?"Active":"New")+"}"},zt(Je).hm=function(){return!0},zt(Je).st=function(){return this},zt(Je).wt=function(t){var n=On();n.r5("List{"),n.r5(t),n.r5("}[");for(var i=!0,e=this.xt_1;!Vt(e,this);){if(e instanceof Ze){var r=e;i?i=!1:n.r5(", "),n.q5(r)}e=e.xt_1}return n.r5("]"),n.toString()},zt(Je).toString=function(){return t_()?this.wt("Active"):zt(C_).toString.call(this)},zt(Ze).ku=function(){var t=this.ju_1;if(null!=t)return t;jn("job")},zt(Ze).hm=function(){return!0},zt(Ze).st=function(){return null},zt(Ze).sp=function(){return this.ku().ln(this)},zt(Ze).toString=function(){return n_(this)+"@"+i_(this)+"[job@"+i_(this.ku())+"]"},zt(pr).st=function(){return this.mu_1},zt(pr).xu=function(t){this.nu_1.kotlinx$atomicfu$value=t},zt(pr).tu=function(){return this.nu_1.kotlinx$atomicfu$value},zt(pr).dv=function(t){this.ou_1.kotlinx$atomicfu$value=t},zt(pr).wu=function(){return this.ou_1.kotlinx$atomicfu$value},zt(pr).uu=function(){return tr(this)===Ye()},zt(pr).qu=function(){return!(null==this.wu())},zt(pr).hm=function(){return null==this.wu()},zt(pr).ru=function(t){var n,i=tr(this);if(null==i)n=nr();else if(i instanceof Error){var e=nr();e.s(i),n=e}else{if(!(i instanceof zn)){var r="State is "+Jt(i);throw Wt(Bt(r))}n=i instanceof zn?i:It()}var s=n,u=this.wu();return null==u||s.r1(0,u),null==t||Vt(t,u)||s.s(t),Qe(this,Ye()),s},zt(pr).vu=function(t){var n=this.wu();if(null==n)return this.dv(t),At;if(t===n)return At;var i=tr(this);if(null==i)Qe(this,t);else if(i instanceof Error){if(t===i)return At;var e=nr();e.s(i),e.s(t),Qe(this,e)}else{if(!(i instanceof zn)){var r="State is "+Jt(i);throw Wt(Bt(r))}(i instanceof zn?i:It()).s(t)}},zt(pr).toString=function(){return"Finishing[cancelling="+this.qu()+", completing="+this.tu()+", rootCause="+this.wu()+", exceptions="+Jt(tr(this))+", list="+this.mu_1+"]"},zt(mr).rp=function(t){!function(t,n,i,e){var r=dr(i);if(null!=r&&vr(t,n,r,e))return At;var s=ir(t,n,e);t.rm(s)}(this.iv_1,this.jv_1,this.kv_1,this.lv_1)},zt(mr).invoke=function(t){return this.rp(t)},zt(gr).lr=function(t){var n=this.sv_1.bn();if(n instanceof pr){var i=n.wu();if(null!=i)return i}return n instanceof oe?n.mm_1:t.fn()},zt(gr).tm=function(){return"AwaitContinuation"},zt(yr).lw=function(t,n){var i=this.mw(t,n);return i.ec_1=At,i.fc_1=null,i.pc()},zt(yr).cd=function(t,n){return this.lw(t instanceof In?t:It(),n)},zt(yr).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=8,this.dw_1=this.bw_1.bn(),this.dw_1 instanceof qr){if(this.cc_1=6,(t=this.cw_1.ze(this.dw_1.cv_1,this))===Ut())return t;continue t}var n=this.dw_1;if(null!=n&&Xt(n,Xe)){if(this.ew_1=this.dw_1.st(),null==this.ew_1){this.fw_1=null,this.cc_1=5;continue t}this.gw_1=this.ew_1,this.hw_1=this.gw_1,this.iw_1=this.hw_1,this.jw_1=this.iw_1.xt_1,this.cc_1=1;continue t}this.cc_1=7;continue t;case 1:if(Vt(this.jw_1,this.iw_1)){this.cc_1=4;continue t}if(this.jw_1 instanceof qr){if(this.kw_1=this.jw_1,this.cc_1=2,(t=this.cw_1.ze(this.kw_1.cv_1,this))===Ut())return t;continue t}this.cc_1=3;continue t;case 2:this.cc_1=3;continue t;case 3:this.jw_1=this.jw_1.xt_1,this.cc_1=1;continue t;case 4:this.fw_1=At,this.cc_1=5;continue t;case 5:case 6:this.cc_1=7;continue t;case 7:return At;case 8:throw this.fc_1}}catch(t){var i=t;if(8===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},zt(yr).mw=function(t,n){var i=new yr(this.bw_1,n);return i.cw_1=t,i},zt(br).i2=function(){return v},zt(br).ym=function(t){this.bm_1.kotlinx$atomicfu$value=t},zt(br).zm=function(){return this.bm_1.kotlinx$atomicfu$value},zt(br).an=function(){var t=this.zm();return null==t?null:t.an()},zt(br).cm=function(t){if(null==t)return this.ym(d),At;t.dn();var n=t.vn(this);this.ym(n),this.cn()&&(n.sp(),this.ym(d))},zt(br).bn=function(){for(var t=this.am_1;;){var n=t.kotlinx$atomicfu$value;if(!(n instanceof Ju))return n;n.nw(this)}},zt(br).hm=function(){var t=this.bn();return!(null==t||!Xt(t,Xe))&&t.hm()},zt(br).cn=function(){var t=this.bn();return!(null!=t&&Xt(t,Xe))},zt(br).dn=function(){for(;;){var t=ur(this,this.bn());if(0===t)return!1;if(1===t)return!0}},zt(br).en=function(){},zt(br).fn=function(){var t,n=this.bn();if(n instanceof pr){var i=n.wu(),e=null==i?null:this.gn(i,n_(this)+" is cancelling");if(null==e)throw Wt(Bt("Job is still new or active: "+this));t=e}else{if(null!=n&&Xt(n,Xe))throw Wt(Bt("Job is still new or active: "+this));t=n instanceof oe?this.hn(n.mm_1):new c_(n_(this)+" has completed normally",null,this)}return t},zt(br).gn=function(t,n){var i=t instanceof An?t:null;return null==i?new c_(null==n?this.km():n,t,this):i},zt(br).hn=function(t,n,i){return n=n===Rt?null:n,i===Rt?this.gn(t,n):i.gn.call(this,t,n)},zt(br).in=function(t){return this.jn(!1,!0,t)},zt(br).jn=function(t,n,i){for(var e=function(t,n,i){var e;if(i){var r=n instanceof kr?n:null;e=null==r?new Sr(n):r}else{var s=n instanceof Ze?n:null,u=null==s?null:s;e=null==u?new Cr(n):u}var o=e;return o.ju_1=t,o}(this,i,t);;)t:{var r=this.bn();if(r instanceof Ke)if(r.rt_1){if(this.am_1.atomicfu$compareAndSet(r,e))return e}else _r(this,r);else{if(null==r||!Xt(r,Xe)){if(n){var s=r instanceof oe?r:null;Go(i,null==s?null:s.mm_1)}return d}var u=r.st();if(null==u)hr(this,r instanceof Ze?r:It());else{var o=null,_=d;if(t&&r instanceof pr&&(null==(o=r.wu())||i instanceof qr&&!r.tu())){if(!or(this,r,u,e))break t;if(null==o)return e;_=e}if(null!=o)return n&&Go(i,o),_;if(or(this,r,u,e))return e}}}},zt(br).ls=function(t){return function(t){for(;;){var n=t.bn();if(null==n||!Xt(n,Xe))return!1;if(ur(t,n)>=0)return!0}}(this)?function(t,n){var i=new Xi(Gt(n),po());i.fr();var e=new Er(i);return Ii(i,t.in(e)),i.gp()}(this,t):(Le(t.jc()),At)},zt(br).ln=function(t){for(;;){var n=this.bn();if(!(n instanceof Ze))return null!=n&&Xt(n,Xe)?(null!=n.st()&&t.du(),At):At;if(n!==t)return At;if(this.am_1.atomicfu$compareAndSet(n,Ge()))return At}},zt(br).mn=function(){return!1},zt(br).nn=function(t){var n;n=null==t?new c_(this.km(),null,this):t,this.pn(n)},zt(br).km=function(){return"Job was cancelled"},zt(br).pn=function(t){this.sn(t)},zt(br).qn=function(t){this.sn(t)},zt(br).rn=function(t){return t instanceof An||!!this.sn(t)&&this.yn()},zt(br).sn=function(t){var n,i=He();return!(!this.mn()||(i=function(t,n){for(;;){var i=t.bn();if(null==i||!Xt(i,Xe)||i instanceof pr&&i.tu())return He();var e=fr(t,i,new oe(ar(t,n)));if(e!==Be())return e}}(this,t))!==Ve())||(i===He()&&(i=function(t,n){for(var i=null;;)t:{var e=t.bn();if(e instanceof pr){if(e.uu())return We();var r=e.qu();if(null!=n||!r){var s,u=i;if(null==u){var o=ar(t,n);i=o,s=o}else s=u;var _=s;e.vu(_)}var h=e.wu(),a=r?null:h;return null==a||rr(t,e.mu_1,a),He()}if(null==e||!Xt(e,Xe))return We();var l,c=i;if(null==c){var f=ar(t,n);i=f,l=f}else l=c;var v=l;if(!e.hm()){var d=fr(t,e,new oe(v));if(d===He()){var w="Cannot happen in "+Jt(e);throw Wt(Bt(w))}if(d===Be())break t;return d}if(cr(t,e,v))return He()}}(this,t)),i===He()||i===Ve()?n=!0:i===We()?n=!1:(this.rm(i),n=!0),n)},zt(br).tn=function(){var t,n=this.bn();if(n instanceof pr)t=n.wu();else if(n instanceof oe)t=n.mm_1;else{if(null!=n&&Xt(n,Xe)){var i="Cannot be cancelling child in this state: "+Jt(n);throw Wt(Bt(i))}t=null}var e=t,r=e instanceof An?e:null;return null==r?new c_("Parent job is "+wr(0,n),e,this):r},zt(br).is=function(t){for(;;){var n=fr(this,this.bn(),t);if(n===He())return!1;if(n===Ve())return!0;if(n!==Be())return this.rm(n),!0}},zt(br).pm=function(t){for(;;){var n=fr(this,this.bn(),t);if(n===He())throw Dn("Job "+this+" is already complete or completing, but is being completed with "+Jt(t),(e=void 0,null==(e=(i=t)instanceof oe?i:null)?null:e.mm_1));if(n!==Be())return n}var i,e},zt(br).un=function(){return Mn((t=new yr(this,null),(n=function(n,i){return t.lw(n,i)}).$arity=1,n));var t,n},zt(br).vn=function(t){var n=new qr(t),i=this.kn(!0,Rt,n);return Xt(i,Re)?i:It()},zt(br).sm=function(t){throw t},zt(br).wn=function(t){},zt(br).xn=function(){return!1},zt(br).yn=function(){return!0},zt(br).zn=function(t){return!1},zt(br).lm=function(t){},zt(br).rm=function(t){},zt(br).toString=function(){return this.ao()+"@"+i_(this)},zt(br).ao=function(){return this.tm()+"{"+wr(0,this.bn())+"}"},zt(br).tm=function(){return n_(this)},zt(br).bo=function(t){t:for(;;){var n=this.bn();if(null==n||!Xt(n,Xe)){if(n instanceof oe)throw n.mm_1;return Or(n)}if(ur(this,n)>=0)break t}return function(t,n){var i=new gr(Gt(n),t);i.fr();var e=new jr(i);return Ii(i,t.in(e)),i.gp()}(this,t)},zt(xr).st=function(){return this.su_1},zt(xr).hm=function(){return!1},zt(xr).toString=function(){return t_()?this.su_1.wt("New"):Fn(this)},zt(qr).an=function(){return this.ku()},zt(qr).rp=function(t){return this.cv_1.qn(this.ku())},zt(qr).invoke=function(t){return this.rp(t)},zt(qr).rn=function(t){return this.ku().rn(t)},zt(Sr).rp=function(t){this.tw_1.atomicfu$compareAndSet(0,1)&&this.sw_1(t)},zt(Sr).invoke=function(t){return this.rp(t)},zt(Cr).rp=function(t){return this.yw_1(t)},zt(Cr).invoke=function(t){return this.rp(t)},zt(Er).rp=function(t){var n=this.dx_1,i=un(At);return n.qc(i),At},zt(Er).invoke=function(t){return this.rp(t)},zt(jr).rp=function(t){var n=this.ku().bn();if(n instanceof oe){var i=this.jx_1,e=n.mm_1,r=un(on(e));i.qc(r)}else{var s=this.jx_1,u=Or(n),o=null==u||null!=u?u:It(),_=un(o);s.qc(_)}},zt(jr).invoke=function(t){return this.rp(t)},zt(Ar).rp=function(t){this.ox_1.kr(this.ox_1.lr(this.ku()))},zt(Ar).invoke=function(t){return this.rp(t)},zt(zr).mn=function(){return!0},zt(zr).yn=function(){return this.rx_1},zt(zr).ks=function(){return this.is(At)},zt(zr).js=function(t){return this.is(new oe(t))},zt(Dr).toString=function(){var t=this.ux();return null==t?n_(this)+"@"+i_(this):t},zt(Dr).ux=function(){var t,n=h_().zs();if(this===n)return"Dispatchers.Main";try{t=n.tx()}catch(n){if(!(n instanceof Un))throw n;t=null}return this===t?"Dispatchers.Main.immediate":null},zt(Nr).rn=function(t){return!1},zt(Pr).ps=function(t){return!1},zt(Pr).qs=function(t,n){var i=t.kc(q);if(null!=i)return i.ay_1=!0,At;throw Hn("Dispatchers.Unconfined.dispatch function can only be used by the yield function. If you wrap Unconfined dispatcher in your code, make sure you properly delegate isDispatchNeeded and dispatch calls.")},zt(Pr).toString=function(){return"Dispatchers.Unconfined"},zt(us).hy=function(){return Bn(this.fy_1)},zt(us).iy=function(){return Yr()},zt(us).jy=function(t,n){ss(this,t,n)},zt(us).ky=function(t){var n=this.gy_1.atomicfu$get(Tt(t,2)).kotlinx$atomicfu$value;return null==n||null!=n?n:It()},zt(us).ly=function(t){var n=this.ky(t);return this.my(t),n},zt(us).my=function(t){ss(this,t,null)},zt(us).ny=function(t){return this.gy_1.atomicfu$get(Tt(t,2)+1|0).kotlinx$atomicfu$value},zt(us).oy=function(t,n){this.gy_1.atomicfu$get(Tt(t,2)+1|0).kotlinx$atomicfu$value=n},zt(us).py=function(t,n,i){return this.gy_1.atomicfu$get(Tt(t,2)+1|0).atomicfu$compareAndSet(n,i)},zt(us).qy=function(t,n){return this.gy_1.atomicfu$get(Tt(t,2)+1|0).atomicfu$getAndSet(n)},zt(us).oq=function(t,n,i){var e=t>=Yr(),r=e?t-Yr()|0:t,s=this.ky(r);t:for(;;){var u=this.ny(r);if(!(null!=u&&Xt(u,Fr)||u instanceof Hs)){if(u===ts()||u===ns()){if(this.my(r),e){var o=this.hy().sy_1;null==o||xo(o,s,i)}return At}if(u===Jr()||u===Xr())continue t;if(u===Qr()||u===Gr())return At;if(u===is())return At;var _="unexpected state: "+Jt(u);throw Wt(Bt(_))}var h=e?ts():ns();if(this.py(r,u,h)){if(this.my(r),this.dz(r,!e),e){var a=this.hy().sy_1;null==a||xo(a,s,i)}return At}}},zt(us).dz=function(t,n){if(n){var i=this.hy(),e=this.mq_1,r=Yr(),s=e.ba(Wn(r)).gb(Wn(t));i.ez(s)}this.fz()},zt(as).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=8,this.cc_1=1;continue t;case 1:this.h10_1=this.f10_1.tz_1,this.i10_1=null,this.j10_1=this.h10_1.yy_1.kotlinx$atomicfu$value,this.cc_1=2;continue t;case 2:if(this.h10_1.wz()){this.g10_1=os(this.f10_1),this.cc_1=10;continue t}this.cc_1=3;continue t;case 3:this.k10_1=this.h10_1.uy_1.atomicfu$getAndIncrement$long();var n=this.k10_1,i=Yr();this.l10_1=n.aa(Wn(i));var e=this.k10_1,r=Yr();if(this.m10_1=e.ib(Wn(r)).la(),this.j10_1.mq_1.equals(this.l10_1)){this.cc_1=5;continue t}if(this.n10_1=Rs(this.h10_1,this.l10_1,this.j10_1),null==this.n10_1){this.cc_1=2;continue t}this.o10_1=this.n10_1,this.cc_1=4;continue t;case 4:this.j10_1=this.o10_1,this.cc_1=5;continue t;case 5:if(this.p10_1=ys(this.h10_1,this.j10_1,this.m10_1,this.k10_1,this.i10_1),this.p10_1===eu()){var s=this.i10_1,u=null!=s&&Xt(s,Fr)?s:null;throw null==u||gs(u,this.h10_1,this.j10_1,this.m10_1),this.j10_1,this.m10_1,this.k10_1,Wt(Bt("unreachable"))}if(this.p10_1===ru()){this.k10_1.ca(this.h10_1.vz())<0&&this.j10_1.pz(),this.cc_1=2;continue t}if(this.p10_1===iu()){if(this.r10_1=this.j10_1,this.s10_1=this.m10_1,this.t10_1=this.k10_1,this.cc_1=6,(t=_s(this.f10_1,this.r10_1,this.s10_1,this.t10_1,this))===Ut())return t;continue t}this.j10_1.pz();var o=this.p10_1,_=null==o||null!=o?o:It();this.f10_1.rz_1=_,this.q10_1=!0,this.cc_1=7;continue t;case 6:return t;case 7:this.g10_1=this.q10_1,this.cc_1=10;continue t;case 8:throw this.fc_1;case 9:this.cc_1=10;continue t;case 10:return this.g10_1}}catch(t){var h=t;if(8===this.dc_1)throw h;this.cc_1=this.dc_1,this.fc_1=h}},zt(Ss).i11=function(t){var n=new as(this,t);return n.ec_1=At,n.fc_1=null,n.pc()},zt(Ss).qr=function(t,n){var i=this.sz_1;null==i||i.qr(t,n)},zt(Ss).y=function(){var t=this.rz_1;if(t===es())throw Wt(Bt("`hasNext()` has not been invoked"));if(this.rz_1=es(),t===is())throw Cs(this.tz_1);return null==t||null!=t?t:It()},zt(Ss).x10=function(t){var n=Bn(this.sz_1);this.sz_1=null,this.rz_1=t;var i=this.tz_1.sy_1;return Bs(n,!0,null==i?null:Co(i,t,n.jc()))},zt(Ss).j11=function(){var t=Bn(this.sz_1);this.sz_1=null,this.rz_1=is();var n=this.tz_1.uz();if(null==n){var i=un(!1);t.qc(i)}else{var e=O_(n),r=un(on(e));t.qc(r)}},zt(Us).vz=function(){return this.ty_1.kotlinx$atomicfu$value.qb(new yn(-1,268435455))},zt(Us).w10=function(){return this.uy_1.kotlinx$atomicfu$value},zt(Us).r11=function(t){if(n=this,!Is(i=this.ty_1.kotlinx$atomicfu$value,n)&&!ps(n,i.qb(new yn(-1,268435455))))return cu().s11();var n,i,e;t:{var r=ts(),s=this.xy_1.kotlinx$atomicfu$value;n:for(;;){var u=this.ty_1.atomicfu$getAndIncrement$long(),o=u.qb(new yn(-1,268435455)),_=Is(u,this),h=Yr(),a=o.aa(Wn(h)),l=Yr(),c=o.ib(Wn(l)).la();if(!s.mq_1.equals(a)){var f=Ns(this,a,s);if(null==f){if(_){e=cu().n11(this.o11());break t}continue n}s=f}var v=ds(this,s,c,t,o,r,_);if(v===Js()){s.pz(),e=cu().z10(At);break t}if(v===Zs()){e=cu().z10(At);break t}if(v===Qs()){if(_){s.fz(),e=cu().n11(this.o11());break t}var d=null!=r&&Xt(r,Fr)?r:null;null==d||fs(d,0,s,c),s.fz(),e=cu().s11();break t}if(v===tu()){o.ca(this.w10())<0&&s.pz(),e=cu().n11(this.o11());break t}if(v!==nu()){if(v===Xs())throw Wt(Bt("unexpected"))}else s.pz()}}return e},zt(Us).c11=function(){},zt(Us).u10=function(){},zt(Us).l11=function(t){var n=this.yy_1.kotlinx$atomicfu$value;t:for(;;){var i=this.uy_1.kotlinx$atomicfu$value,e=this.ry_1,r=i.gb(Wn(e)),s=ls(this),u=r.ca(s)>=0?r:s;if(t.ca(u)<0)return At;var o=i.gb(Wn(1));if(this.uy_1.atomicfu$compareAndSet(i,o)){var _=Yr(),h=i.aa(Wn(_)),a=Yr(),l=i.ib(Wn(a)).la();if(!n.mq_1.equals(h)){var c=Rs(this,h,n);if(null==c)continue t;n=c}var f=ys(this,n,l,i,null);if(f===ru())i.ca(this.vz())<0&&n.pz();else{n.pz();var v,d=this.sy_1;if(null!=(v=null==d?null:So(d,null==f||null!=f?f:It())))throw v}}}},zt(Us).ez=function(t){if(cs(this))return At;for(;ls(this).ca(t)<=0;);var n=(su(),A),i=0;if(i0&&(_=a,h=l)}while(o.w());t=_}else t=_;var c=t,f=this.w10(),v=this.vz(),d=c;t:for(;;){var w=0,p=Yr();if(w=0&&b.ca(f)>=0)break t;var $,k=d.ny(m),x=d.ky(m);if(null!=k&&Xt(k,zi))$=b.ca(f)<0&&b.ca(v)>=0?"receive":b.ca(v)<0&&b.ca(f)>=0?"send":"cont";else if(null!=k&&Xt(k,Mo))$=b.ca(f)<0&&b.ca(v)>=0?"onReceive":b.ca(v)<0&&b.ca(f)>=0?"onSend":"select";else if(k instanceof Vs)$="receiveCatching";else if(k instanceof vs)$="sendBroadcast";else if(k instanceof Hs)$="EB("+Jt(k)+")";else if(Vt(k,Xr())||Vt(k,Jr()))$="resuming_sender";else{if(null==k||Vt(k,Kr())||Vt(k,Qr())||Vt(k,Zr())||Vt(k,ns())||Vt(k,ts())||Vt(k,is()))continue n;$=Bt(k)}var q=$;null!=x?n.r5("("+q+","+x+"),"):n.r5(q+",")}while(w0)return Hu();var n=$u(this),i=this.g13_1,e=n.gb(Wn(i));if(0===this.b13_1&&this.h13_1>0&&(e=e.jb()),0!==this.j13_1){var r=this.i13_1;if(null==r);else for(var s=0,u=r.length;s=0&&o.m13_1.ca(e)<0&&(e=o.m13_1)}}if(e.ca(this.f13_1)<=0)return Hu();var _,h=qu(this);if(this.j13_1>0){var a=h.hb(e).la(),l=this.h13_1,c=this.b13_1-a|0;_=Math.min(l,c)}else _=this.h13_1;var f=_,v=Hu(),d=h,w=this.h13_1,p=d.gb(Wn(w));if(f>0){v=oi(Array(f),null);var m=0,g=Bn(this.d13_1),y=h;if(y.ca(p)<0)t:do{var b=y;y=y.gb(new yn(1,0));var $=Lu(g,b);if($!==bu()){$ instanceof Mu||It();var k=m;if(m=k+1|0,v[k]=$.r13_1,Fu(g,b,bu()),Fu(g,h,$.q13_1),h=h.jb(),m>=f)break t}}while(y.ca(p)<0)}var x=h.hb(n).la();0===this.j13_1&&(e=h);var q=this.e13_1,S=h,C=this.a13_1,E=Math.min(C,x),O=S.hb(Wn(E)),j=q.ca(O)>=0?q:O;return 0===this.b13_1&&j.ca(p)<0&&Vt(Lu(Bn(this.d13_1),j),bu())&&(h=h.jb(),j=j.jb()),ju(this,j,e,h,p),Tu(this),0!==v.length&&(v=Du(this,v)),v},zt(Ru).s14=function(){return new Pu},zt(Ru).t14=function(t){return oi(Array(t),null)},zt(Pu).u14=function(t){return!(this.m13_1.ca(new yn(0,0))>=0||(this.m13_1=t.r14(),0))},zt(Pu).v14=function(t){return this.u14(t instanceof Ru?t:It())},zt(Pu).w14=function(t){var n=this.m13_1;return this.m13_1=new yn(-1,-1),this.n13_1=null,t.s13(n)},zt(Pu).x14=function(t){return this.w14(t instanceof Ru?t:It())},zt(Vu).h14=function(){var t,n,i=this.i13_1;if(null==i){var e=this.t14(2);this.i13_1=e,n=e}else{var r;if(this.j13_1>=i.length){var s=_i(i,Tt(2,i.length));this.i13_1=s,r=s}else r=i;n=r}var u,o=n,_=this.k13_1;t:for(;;){var h,a=o[_];if(null==a){var l=this.s14();o[_]=l,h=l}else h=a;if(u=h,(_=_+1|0)>=o.length&&(_=0),(u instanceof Bu?u:It()).v14(this))break t}this.k13_1=_,this.j13_1=this.j13_1+1|0;var c=u;return null==(t=this.l13_1)||t.k15(1),c},zt(Vu).m14=function(t){var n;this.j13_1=this.j13_1-1|0,n=this.l13_1,0===this.j13_1&&(this.k13_1=0);for(var i=(t instanceof Bu?t:It()).x14(this),e=0,r=i.length;e"},zt(Ro).t16=function(t,n){var i=this.s16_1;return null==i?null:i(t,this.r16_1,n)},zt(Po).h11=function(t,n){return Uo(function(t,n,i){t:for(;;){var e=t.e11_1.kotlinx$atomicfu$value;if(Xt(e,zi)){var r=No(t,n);if(null==r)continue t;var s=r,u=s.t16(t,i);if(t.e11_1.atomicfu$compareAndSet(e,s)){var o=Xt(e,zi)?e:It();return t.g11_1=i,Ho(o,u)?0:(t.g11_1=(Wo(),pt),2)}}else{if(Vt(e,(Wo(),dt))||e instanceof Ro)return 3;if(Vt(e,(Wo(),wt)))return 2;if(Vt(e,(Wo(),vt))){if(t.e11_1.atomicfu$compareAndSet(e,vi(n)))return 1}else{if(!Xt(e,fi)){var _="Unexpected state: "+Bt(e);throw Wt(Bt(_))}if(t.e11_1.atomicfu$compareAndSet(e,ci(e,n)))return 1}}}}(this,t,n))},zt(Qo).qm=function(t){return this.kp_1.qc(le(t,this.kp_1))},zt(e_).a17=function(){process.nextTick(this.h17_1.f17_1)},zt(s_).m17=function(){this.e17_1.a17()},zt(s_).n17=function(){setTimeout(this.f17_1,0)},zt(s_).o17=function(t){setTimeout(this.f17_1,t)},zt(u_).m17=function(){var t;Promise.resolve(At).then((t=this,function(n){return t.l17(),At}))},zt(u_).n17=function(){this.b18_1.postMessage(this.c18_1,"*")},zt(__).zs=function(){var t=this.ys_1;return null==t?this.xs_1:t},zt(a_).tx=function(){return this.g18_1},zt(a_).ps=function(t){return!this.f18_1},zt(a_).qs=function(t,n){return this.e18_1.qs(t,n)},zt(a_).toString=function(){var t=this.ux();return null==t?this.e18_1.toString():t},zt(l_).qs=function(t,n){!function(){throw Hn("runBlocking event loop is not supported")}()},zt(c_).toString=function(){return zt(An).toString.call(this)+"; job="+this.l18_1},zt(c_).equals=function(t){return t===this||!!(t instanceof c_&&t.message==this.message&&Vt(t.l18_1,this.l18_1))&&Vt(t.cause,this.cause)},zt(c_).hashCode=function(){var t=Tt(Tt(dn(Bn(this.message)),31)+tn(this.l18_1)|0,31),n=this.cause,i=null==n?null:tn(n);return t+(null==i?0:i)|0},zt(p_).l14=function(t,n){var i=n.jc();return Le(i),this.o15_1!==i&&(Wu(this,i),this.o15_1=i),this.l15_1.l14(t,n)},zt(p_).a16=function(){},zt(y_).a17=function(){this.h17_1.o17(0)},zt(b_).qs=function(t,n){this.h17_1.x17(n)},zt(b_).at=function(t,n){var i,e,r,s,u=new S_((r=n,s=this,i=function(){return r.pp(s,At),At},e=q_(t),setTimeout(i,e)));n.op(u)},zt($_).n=function(){return this.i17_1.qd_1},zt($_).p17=function(t,n){this.i17_1.r1(t,n)},zt($_).r1=function(t,n){return this.p17(t,null!=n&&Xt(n,f_)?n:It())},zt($_).q17=function(t){return this.i17_1.s(t)},zt($_).s=function(t){return this.q17(null!=t&&Xt(t,f_)?t:It())},zt($_).r17=function(t){return this.i17_1.z(t)},zt($_).z=function(t){return this.r17(t)},zt($_).b1=function(){this.i17_1.b1()},zt($_).s17=function(t){return this.i17_1.r(t)},zt($_).r=function(t){return!(null==t||!Xt(t,f_))&&this.s17(null!=t&&Xt(t,f_)?t:It())},zt($_).t17=function(t){return this.i17_1.c1(t)},zt($_).c1=function(t){return this.t17(t)},zt($_).h1=function(t){return this.i17_1.h1(t)},zt($_).u17=function(t){return this.i17_1.t1(t)},zt($_).t1=function(t){return null!=t&&Xt(t,f_)?this.u17(null!=t&&Xt(t,f_)?t:It()):-1},zt($_).d1=function(){return this.i17_1.d1()},zt($_).v=function(){return this.i17_1.v()},zt($_).u1=function(t){return this.i17_1.u1(t)},zt($_).v17=function(t){return this.i17_1.t(t)},zt($_).t=function(t){return!(null==t||!Xt(t,f_))&&this.v17(null!=t&&Xt(t,f_)?t:It())},zt($_).j1=function(t){return this.i17_1.j1(t)},zt($_).w17=function(t,n){return this.i17_1.o(t,n)},zt($_).o=function(t,n){return this.w17(t,null!=n&&Xt(n,f_)?n:It())},zt($_).x17=function(t){this.q17(t),this.k17_1||(this.k17_1=!0,this.m17())},zt($_).l17=function(){try{var t=this.j17_1,n=0;if(n=0))throw Yn(Bt("replay cannot be negative, but was "+t));if(!(n>=0))throw Yn(Bt("extraBufferCapacity cannot be negative, but was "+n));if(!(t>0||n>0||i.equals(Vr())))throw Yn(Bt("replay or extraBufferCapacity must be positive with non-default onBufferOverflow strategy "+i));var e=t+n|0;return new Ru(t,e<0?ui.MAX_VALUE:e,i)},t.$_$.p=function(t){return new Xu(t,null)},t.$_$.q=E_,t.$_$.r=O_,t.$_$.s=Xi,t.$_$.t=function(t){return new se(t=t===Rt?null:t)},t.$_$.u=ue,t.$_$.v=ye,t.$_$.w=function(t){return new Eo(null!=t.kc(v)?t:t.pg(Ue()))},t.$_$.x=$e,t.$_$.y=Ue,t.$_$.z=Me,t.$_$.a1=po,t.$_$.b1=function(){return new Eo(Mr().pg(h_().zs()))},t.$_$.c1=Mr,t.$_$.d1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Se():i;var r=Zo(t,n),s=i.co()?new Ti(r,e):new ji(r,!0);return s.um(i,s,e),s},t.$_$.e1=function(t,n){n=n===Rt?null:n;var i=t.kc(v),e=null==i?null:i.un();if(null==e);else for(var r=e.v();r.w();)r.y().nn(n)},t.$_$.f1=be,t.$_$.g1=function(t,n){n=n===Rt?null:n;var i=t.kc(v);null==i||i.nn(n)},t.$_$.h1=function(t,n,i){return be(t,wn(n,i=i===Rt?null:i))},t.$_$.i1=function(t,n,i){return i=i===Rt?null:i,t.nn(wn(n,i))},t.$_$.j1=function(t){var n=t.gm().kc(v),i=null==n?null:n.hm();return null==i||i},t.$_$.k1=function(t){var n=t.kc(v);if(null==n)throw Wt(Bt("Current context doesn't contain Job in it: "+t));return n},t.$_$.l1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Se():i;var r=Zo(t,n),s=i.co()?new Ei(r,e):new Ci(r,!0);return s.um(i,s,e),s},t})?e.apply(n,r):e)||(t.exports=s)},755:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt=Math.imul,ct=n.$_$.mb,ft=n.$_$.na,vt=n.$_$.nb,dt=n.$_$.f,wt=(n.$_$.p4,n.$_$.a5),pt=n.$_$.t6,mt=n.$_$.j,gt=n.$_$.oh,yt=n.$_$.ca,bt=n.$_$.tc,$t=n.$_$.ka,kt=n.$_$.r1,xt=n.$_$.kb,qt=n.$_$.w9,St=n.$_$.s1,Ct=n.$_$.u1,Et=n.$_$.jg,Ot=n.$_$.y5,jt=n.$_$.l,Tt=n.$_$.tg,At=n.$_$.pc,zt=n.$_$.wa,It=n.$_$.ug,Dt=n.$_$.d,Mt=n.$_$.qg,Nt=n.$_$.j5,Rt=n.$_$.g5,Pt=n.$_$.m5,Lt=n.$_$.k5,Ft=n.$_$.e5,Ut=n.$_$.h5,Ht=n.$_$.n5,Vt=n.$_$.p5,Bt=n.$_$.f5,Wt=n.$_$.c5,Yt=n.$_$.l5,Gt=n.$_$.i5,Kt=n.$_$.d5,Xt=n.$_$.p6,Jt=n.$_$.d3,Zt=n.$_$.c3,Qt=n.$_$.rg,tn=n.$_$.jh,nn=n.$_$.fa,en=n.$_$.la,rn=n.$_$.xd,sn=n.$_$.rb,un=n.$_$.t1,on=n.$_$.s8,_n=n.$_$.m,hn=n.$_$.s,an=n.$_$.p8,ln=n.$_$.o8,cn=n.$_$.z8,fn=n.$_$.xh,vn=n.$_$.t8,dn=n.$_$.ph,wn=n.$_$.b6,pn=n.$_$.oc,mn=n.$_$.k7,gn=n.$_$.lb,yn=n.$_$.c,bn=n.$_$.mg,$n=n.$_$.cg,kn=n.$_$.s4,xn=n.$_$.yf,qn=n.$_$.if,Sn=n.$_$.ma,Cn=n.$_$.x1,En=n.$_$.n,On=n.$_$.t,jn=n.$_$.x,Tn=n.$_$.y,An=n.$_$.p,zn=n.$_$.q,In=n.$_$.v,Dn=n.$_$.w,Mn=n.$_$.s5,Nn=n.$_$.oa,Rn=n.$_$.nc,Pn=n.$_$.g7,Ln=n.$_$.cb,Fn=n.$_$.u4,Un=n.$_$.n7,Hn=n.$_$.hh,Vn=n.$_$.r,Bn=n.$_$.uc,Wn=n.$_$.ha,Yn=n.$_$.v9,Gn=n.$_$.u6,Kn=n.$_$.d6,Xn=n.$_$.t4,Jn=n.$_$.ra,Zn=n.$_$.y9,Qn=(n.$_$.l4,n.$_$.ta),ti=(n.$_$.m4,n.$_$.ua),ni=n.$_$.xa,ii=n.$_$.y4,ei=n.$_$.zg,ri=n.$_$.v3,si=n.$_$.t3,ui=(n.$_$.n4,n.$_$.va),oi=n.$_$.x4,_i=n.$_$.xg,hi=n.$_$.o3,ai=n.$_$.l3,li=(n.$_$.o4,n.$_$.za),ci=n.$_$.z4,fi=n.$_$.bh,vi=n.$_$.c4,di=n.$_$.a4,wi=(n.$_$.k4,n.$_$.qa),pi=n.$_$.w4,mi=n.$_$.vg,gi=n.$_$.h3,yi=n.$_$.e3,bi=(n.$_$.j4,n.$_$.pa),$i=n.$_$.zb,ki=n.$_$.j6,xi=n.$_$.l6,qi=n.$_$.m6,Si=n.$_$.h6,Ci=n.$_$.y3,Ei=n.$_$.z3,Oi=n.$_$.w3,ji=n.$_$.x3,Ti=n.$_$.o6,Ai=n.$_$.r3,zi=n.$_$.s3,Ii=n.$_$.p3,Di=n.$_$.q3,Mi=n.$_$.g6,Ni=n.$_$.f4,Ri=n.$_$.g4,Pi=n.$_$.d4,Li=n.$_$.e4,Fi=n.$_$.k6,Ui=n.$_$.j3,Hi=n.$_$.k3,Vi=n.$_$.g3,Bi=n.$_$.i3,Wi=n.$_$.i6,Yi=n.$_$.uf,Gi=n.$_$.sd,Ki=n.$_$.aa,Xi=n.$_$.z9,Ji=n.$_$.z2,Zi=n.$_$.cf,Qi=n.$_$.be,te=n.$_$.r4,ne=n.$_$.ah,ie=n.$_$.yg,ee=n.$_$.ch,re=n.$_$.wg,se=n.$_$.dh,ue=n.$_$.v7,oe=n.$_$.q7,_e=n.$_$.o7,he=n.$_$.t5,ae=n.$_$.bb,le=n.$_$.b,ce=n.$_$.i7,fe=n.$_$.b2,ve=n.$_$.h7,de=(n.$_$.v4,n.$_$.a3),we=n.$_$.ih;function pe(){return!1}function me(){return!1}function ge(){return pt()}function ye(t){return t.o34(this)}function be(){return!1}function $e(t){return-1}function ke(t,n,i,e,r){return e=e===dt?null:e,r===dt?this.y37(t,n,i,e):r.y37.call(this,t,n,i,e)}function xe(){return uu()}function qe(){}function Se(){}function Ce(t){return function(){return n=Cr("kotlinx.serialization.Polymorphic",os(),[],function(t){return function(n){return n.x34("type",Ke().n34()),n.x34("value",Cr("kotlinx.serialization.Polymorphic<"+t.y34_1.i6()+">",Nr(),[])),n.r34_1=t.z34_1,wt}}(t)),i=t.y34_1,new $r(n,i);var n,i}}function Ee(t){fs.call(this),this.y34_1=t,this.z34_1=pt();var n=mt();this.a35_1=gt(n,Ce(this))}function Oe(t,n,i){var e,r=t.c35(n,i);return null==r?function(t,n){var i="in the polymorphic scope of '"+n.i6()+"'";throw Te(null==t?"Class discriminator was missing and no default serializers were registered "+i+".":"Serializer for subclass '"+t+"' is not found "+i+".\nCheck if class with serial name '"+t+"' exists and serializer is registered in a corresponding SerializersModule.\nTo be registered automatically, class '"+t+"' has to be '@Serializable', and the base class '"+n.i6()+"' has to be sealed and '@Serializable'.")}(i,t.b35()):e=r,e}function je(t,n){return St(t,n),ze.call(n),n}function Te(t){var n=je(t,xt(ct(ze)));return qt(n,Te),n}function Ae(t,n,i){return Ct(t,n,i),ze.call(i),i}function ze(){qt(this,ze)}function Ie(t){je(t,this),qt(this,Ie)}function De(t,n){var i=function(t,n,i){return Me.call(i,t,1===t.n()?"Field '"+t.h1(0)+"' is required for type with serial name '"+n+"', but it was missing":"Fields "+t+" are required for type with serial name '"+n+"', but they were missing",null),i}(t,n,xt(ct(Me)));return qt(i,De),i}function Me(t,n,i){Ae(n,i,this),qt(this,Me),this.d35_1=t}function Ne(t){var n=function(t){var n,i=Eo(t,[]);if(null==i){var e;if(t===te().z6())e=ds();else{var r=ae(t).Companion;e=null==r?null:r.serializer()}var s=e;n=null!=s&&zt(s,qe)?s:null}else n=i;return n}(t);return null==n?function(t){Zu();var n=zu().q2(t);return null==n||zt(n,qe)?n:Tt()}(t):n}function Re(t,n,i){var e;if(i){for(var r=jt(Ot(n,10)),s=n.v();s.w();){var u=Le(t,s.y());r.s(u)}e=r}else{for(var o=jt(Ot(n,10)),_=n.v();_.w();){var h=Fe(t,_.y());if(null==h)return null;var a=h;o.s(a)}e=o}return e}function Pe(t,n,i){var e=function(t,n,i){var e;if(t.equals(Dt(Kt))||t.equals(Dt(Gt))||t.equals(Dt(Yt))||t.equals(Dt(Wt)))e=new Cs(n.h1(0));else if(t.equals(Dt(Bt)))e=new Es(n.h1(0));else if(t.equals(Dt(Vt))||t.equals(Dt(Ht))||t.equals(Dt(Ut)))e=new Os(n.h1(0));else if(t.equals(Dt(Ft)))e=new js(n.h1(0),n.h1(1));else if(t.equals(Dt(Lt))||t.equals(Dt(Pt))||t.equals(Dt(Rt)))e=new Ts(n.h1(0),n.h1(1));else if(t.equals(Dt(Nt)))l=n.h1(0),c=n.h1(1),e=new ro(l,c);else if(t.equals(Dt(Mt)))e=function(t,n){return new so(t,n)}(n.h1(0),n.h1(1));else if(t.equals(Dt(It)))_=n.h1(0),h=n.h1(1),a=n.h1(2),e=new uo(_,h,a);else{var r;if(t.equals(te().g7())){var s=i();u=null!=s&&zt(s,At)?s:Tt(),o=n.h1(0),r=new As(u,o)}else r=null;e=r}var u,o;var _,h,a;var l,c;return e}(t,n,i);return null==e?function(t,n){return Eo(t,Xt(n).slice())}(t,n):e}function Le(t,n){var i,e=Ue(t,n,!0);return null==e?function(t){throw Te(function(t){nu();var n=t.i6();return i=null==n?"":n,nu(),"Serializer for class '"+i+"' is not found.\nPlease ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.\n";var i}(t)+"To get enum serializer on Kotlin/JS, it should be annotated with @Serializable annotation.")}(Zs(n)):i=e,i}function Fe(t,n){return Ue(t,n,!1)}function Ue(t,n,u){for(var o=Zs(n),_=n.w6(),h=n.v6(),a=jt(Ot(h,10)),l=h.v();l.w();){var c=Qs(l.y());a.s(c)}var f,v,d,w=a;if(w.d1())f=function(t,n){var r;if(Ye(),n)r=(Ye(),e).g35(t);else{var s=(Ye(),i).g35(t);r=null==s?null:zt(s,qe)?s:Tt()}return r}(o,_);else{var p,m=function(t,n,i){var e;if(Ye(),i)e=(Ye(),s).h35(t,n);else{var u=(Ye(),r).h35(t,n);e=new Qt(u)instanceof Qt?u:Tt()}return e}(o,w,_);if(Zt(m))p=null;else{var g=Jt(m);p=null==g||null!=g?g:Tt()}f=p}if(null!=f)return f;if(w.d1())v=t.f35(o);else{var y=Re(t,w,u);if(null==y)return null;var b=y,$=Pe(o,b,(d=w,function(){return d.h1(0).u6()}));v=null==$?t.e35(o,b):$}var k,x=v;return null==(k=null==x?null:zt(x,qe)?x:Tt())?null:function(t,n){return n?Ge(t):zt(t,qe)?t:Tt()}(k,_)}function He(t){return Ye(),Ne(t)}function Ve(t){Ye();var n=Ne(t),i=null==n?null:Ge(n);return null==i?null:zt(i,qe)?i:Tt()}function Be(t,n){return Ye(),Pe(t,tn(Re(yo(),n,!0)),(i=n,function(){return i.h1(0).u6()}));var i}function We(t,n){Ye();var i,e=Pe(t,tn(Re(yo(),n,!0)),(i=n,function(){return i.h1(0).u6()})),r=null==e?null:Ge(e);return null==r?null:zt(r,qe)?r:Tt()}function Ye(){u||(u=!0,i=So(He),e=So(Ve),r=Co(Be),s=Co(We))}function Ge(t){return t.n34().i35()?zt(t,qe)?t:Tt():new Ys(t)}function Ke(t){return Du()}function Xe(t){return null==Y&&new Mu,Y}function Je(){return null==z&&new hu,z}function Ze(t){return Ru()}function Qe(){return null==I&&new au,I}function tr(t){return Lu()}function nr(){return null==D&&new lu,D}function ir(t){return null==X&&new Fu,X}function er(){return null==M&&new cu,M}function rr(t){return null==st&&new _o,st}function sr(){return null==N&&new fu,N}function ur(t){return Hu()}function or(){return null==R&&new vu,R}function _r(t){return null==ut&&new ho,ut}function hr(){return null==P&&new du,P}function ar(t){return null==Z&&new Vu,Z}function lr(){return null==L&&new wu,L}function cr(t){return null==ot&&new ao,ot}function fr(){return null==F&&new pu,F}function vr(t){return null==Q&&new Bu,Q}function dr(){return null==U&&new mu,U}function wr(t){return null==_t&&new lo,_t}function pr(){return null==H&&new gu,H}function mr(t){return Yu()}function gr(){return null==V&&new yu,V}function yr(t){return null==nt&&new Gu,nt}function br(t){return null==S&&new ws,S}function $r(t,n){this.j35_1=t,this.k35_1=n,this.l35_1=this.j35_1.m35()+"<"+this.k35_1.i6()+">"}function kr(t){return t instanceof $r?t.k35_1:t instanceof Gs?kr(t.w35_1):null}function xr(){}function qr(t){this.f36_1=t,this.e36_1=t.o35()}function Sr(t){this.g36_1=t}function Cr(t,n,i,e){if(e=e===dt?zr:e,rn(t))throw un(sn("Blank serial names are prohibited"));if(nn(n,Jr()))throw un(sn("For StructureKind.CLASS please use 'buildClassSerialDescriptor' instead"));var r=new Er(t);return e(r),new Tr(t,n,r.s34_1.n(),on(i),r)}function Er(t){this.p34_1=t,this.q34_1=!1,this.r34_1=pt(),this.s34_1=_n(),this.t34_1=hn(),this.u34_1=_n(),this.v34_1=_n(),this.w34_1=_n()}function Or(t,n,i){if(i=i===dt?Ir:i,rn(t))throw un(sn("Blank serial names are prohibited"));var e=new Er(t);return i(e),new Tr(t,Jr(),e.s34_1.n(),on(n),e)}function jr(t){var n=t.t36_1;return $t("_hashCode",1,bt,(function(t){return jr(t)}),null),n.j2()}function Tr(t,n,i,e,r){this.i36_1=t,this.j36_1=n,this.k36_1=i,this.l36_1=r.r34_1,this.m36_1=an(r.s34_1);var s=r.s34_1;this.n36_1=Xt(s),this.o36_1=tu(r.u34_1);var u,o=r.v34_1;this.p36_1=Xt(o),this.q36_1=ln(r.w34_1);for(var _=cn(this.n36_1),h=jt(Ot(_,10)),a=_.v();a.w();){var l=a.y(),c=fn(l.ke_1,l.je_1);h.s(c)}this.r36_1=vn(h),this.s36_1=tu(e),this.t36_1=dn((u=this,function(){return su(u,u.s36_1)}))}function Ar(t,n){this.v36_1=t,this.w36_1=n}function zr(t){return wt}function Ir(t){return wt}function Dr(){o=this,Rr.call(this)}function Mr(){_=this,Rr.call(this)}function Nr(){return null==_&&new Mr,_}function Rr(){}function Pr(){h=this,Kr.call(this)}function Lr(){a=this,Kr.call(this)}function Fr(){l=this,Kr.call(this)}function Ur(){c=this,Kr.call(this)}function Hr(){f=this,Kr.call(this)}function Vr(){v=this,Kr.call(this)}function Br(){d=this,Kr.call(this)}function Wr(){w=this,Kr.call(this)}function Yr(){p=this,Kr.call(this)}function Gr(){return null==p&&new Yr,p}function Kr(){Rr.call(this)}function Xr(){m=this,rs.call(this)}function Jr(){return null==m&&new Xr,m}function Zr(){g=this,rs.call(this)}function Qr(){return null==g&&new Zr,g}function ts(){y=this,rs.call(this)}function ns(){return null==y&&new ts,y}function is(){b=this,rs.call(this)}function es(){return null==b&&new is,b}function rs(){Rr.call(this)}function ss(){$=this,_s.call(this)}function us(){k=this,_s.call(this)}function os(){return null==k&&new us,k}function _s(){Rr.call(this)}function hs(){}function as(){}function ls(){this.f38_1=-1,this.g38_1=-3}function cs(){}function fs(){}function vs(){q=this,this.i38_1=(null==E&&new Ws,E)}function ds(){return null==q&&new vs,q}function ws(){S=this,this.j38_1=new Xu("kotlin.time.Duration",Gr())}function ps(){}function ms(t){xs.call(this,t)}function gs(t){xs.call(this,t)}function ys(t){xs.call(this,t)}function bs(t,n){qs.call(this,"kotlin.collections.HashMap",t,n)}function $s(t,n){qs.call(this,"kotlin.collections.LinkedHashMap",t,n)}function ks(t){xs.call(this,t)}function xs(t){this.n38_1=t,this.o38_1=1}function qs(t,n,i){this.t38_1=t,this.u38_1=n,this.v38_1=i,this.w38_1=2}function Ss(t){xs.call(this,t),this.b39_1=t.m35()+"Array"}function Cs(t){zs.call(this,t),this.d39_1=new ms(t.n34())}function Es(t){zs.call(this,t),this.v39_1=new gs(t.n34())}function Os(t){zs.call(this,t),this.c3a_1=new ys(t.n34())}function js(t,n){Is.call(this,t,n),this.j3a_1=new bs(t.n34(),n.n34())}function Ts(t,n){Is.call(this,t,n),this.u3a_1=new $s(t.n34(),n.n34())}function As(t,n){Ds.call(this,n),this.z3a_1=t,this.a3b_1=new ks(n.n34())}function zs(t){Ds.call(this,t)}function Is(t,n){Ms.call(this),this.o3a_1=t,this.p3a_1=n}function Ds(t){Ms.call(this),this.p39_1=t}function Ms(){}function Ns(t){Ds.call(this,t),this.h3b_1=new Ss(t.n34())}function Rs(){}function Ps(){C=this,this.q3b_1=Ln(0)}function Ls(){return null==C&&new Ps,C}function Fs(t,n){Ls(),this.r3b_1=t,this.s3b_1=n;var i=this.r3b_1.o35();if(Fn(),i<=64){var e;Fn(),e=64===i?new bn(0,0):new bn(-1,-1).nb(i),this.t3b_1=e,this.u3b_1=Ls().q3b_1}else this.t3b_1=new bn(0,0),this.u3b_1=function(t,n){var i=(n-1|0)>>>6|0;Fn();var e=63&n,r=Ln(i);return 0!==e&&(r[Un(r)]=new bn(-1,-1).nb(n)),r}(0,i)}function Us(t,n){return new Hs(t,new Vs(n))}function Hs(t,n){ru.call(this,t,n,1),this.j3c_1=!0}function Vs(t){this.a3d_1=t}function Bs(t){throw Cn("Descriptor for type `kotlin.Nothing` does not have elements")}function Ws(){E=this,this.d3d_1=es(),this.e3d_1="kotlin.Nothing"}function Ys(t){this.f3d_1=t,this.g3d_1=new Gs(this.f3d_1.n34())}function Gs(t){this.w35_1=t,this.x35_1=this.w35_1.m35()+"?",this.y35_1=Js(this.w35_1)}function Ks(t,n){return function(){var i=es();return Cr(t,i,[],function(t){return function(n){return n.r34_1=t.i3d_1,wt}}(n))}}function Xs(t,n){this.h3d_1=n,this.i3d_1=pt();var i=mt();this.j3d_1=gt(i,Ks(t,this))}function Js(t){if(nu(),zt(t,ps))return t.u36();var n=Vn(t.o35()),i=0,e=t.o35();if(i0){var i=Xi(t,0),e=Qi(i)?Zi(i):Ji(i);n=sn(e)+t.substring(1)}else n=t;return n}function Zu(){it||(it=!0,B=ue([fn(te().h7(),Ke()),fn(Dt($n),Xe(Xn())),fn(te().k7(),Je()),fn(te().f7(),Ze()),fn(te().q7(),Qe()),fn(te().e7(),tr()),fn(te().p7(),nr()),fn(Dt(bn),ir(Fn())),fn(te().o7(),er()),fn(Dt(ne),rr(ii())),fn(Dt(ei),sr()),fn(te().d7(),ur()),fn(te().n7(),or()),fn(Dt(ie),_r(oi())),fn(Dt(_i),hr()),fn(te().c7(),ar()),fn(te().m7(),lr()),fn(Dt(ee),cr(ci())),fn(Dt(fi),fr()),fn(te().b7(),vr()),fn(te().l7(),dr()),fn(Dt(re),wr(pi())),fn(Dt(mi),pr()),fn(te().a7(),mr()),fn(te().j7(),gr()),fn(Dt(se),yr()),fn(te().z6(),ds()),fn(Dt(xn),br(kn()))]))}function Qu(){no.call(this)}function to(t,n,i){t.k3i(n);var e=i();return t.v3h_1||t.l3i(),t.v3h_1=!1,e}function no(){this.u3h_1=_n(),this.v3h_1=!1}function io(){return rt||(rt=!0,et=new Object),et}function eo(t,n){this.m3i_1=t,this.n3i_1=n}function ro(t,n){oo.call(this,t,n);var i,e,r=ns();this.q3i_1=Cr("kotlin.collections.Map.Entry",r,[],(i=t,e=n,function(t){return t.x34("key",i.n34()),t.x34("value",e.n34()),wt}))}function so(t,n){var i,e;oo.call(this,t,n),this.w3i_1=Or("kotlin.Pair",[],(i=t,e=n,function(t){return t.x34("first",i.n34()),t.x34("second",e.n34()),wt}))}function uo(t,n,i){var e;this.x3i_1=t,this.y3i_1=n,this.z3i_1=i,this.a3j_1=Or("kotlin.Triple",[],(e=this,function(t){return t.x34("first",e.x3i_1.n34()),t.x34("second",e.y3i_1.n34()),t.x34("third",e.z3i_1.n34()),wt}))}function oo(t,n){this.s3i_1=t,this.t3i_1=n}function _o(){st=this,this.b3j_1=Us("kotlin.ULong",ir(Fn()))}function ho(){ut=this,this.d3j_1=Us("kotlin.UInt",ur())}function ao(){ot=this,this.f3j_1=Us("kotlin.UShort",ar())}function lo(){_t=this,this.h3j_1=Us("kotlin.UByte",vr())}function co(){return go(),ht}function fo(){}function vo(t,n,i,e,r){fo.call(this),this.z35_1=t,this.a36_1=n,this.b36_1=i,this.c36_1=e,this.d36_1=r}function wo(t){mo.call(this),this.n3j_1=t}function po(t){mo.call(this),this.l3j_1=t}function mo(){}function go(){at||(at=!0,ht=new vo(Gn(),Gn(),Gn(),Gn(),Gn()))}function yo(){return co()}function bo(){this.s3j_1=An(),this.t3j_1=An(),this.u3j_1=An(),this.v3j_1=An(),this.w3j_1=An()}function $o(t,n){var i=function(t,n,i){return ko.call(i,"Serializer for "+n+" already registered in the scope of "+t),i}(t,n,xt(ct(ko)));return qt(i,$o),i}function ko(t){St(t,this),qt(this,ko)}function xo(){}function qo(t){this.e3k_1=t}function So(t){return new To(t)}function Co(t){return new Ao(t)}function Eo(t,n){var i;try{var e,r=le(t,Dt(qo));if(null!=r&&zt(r,qe))e=null!=r&&zt(r,qe)?r:Tt();else if(null!=r&&zt(r,ou)){var s=r.m3d(n.slice());e=zt(s,qe)?s:Tt()}else e=function(t){var n=ae(t).$metadata$;return"interface"==(null==n?null:n.kind)}(t)?new Ee(t):null;i=e}catch(t){i=null}return i}function Oo(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ce(t));return t[n]}function jo(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ve(t));return t[n]}function To(t){this.f3k_1=t}function Ao(t){this.g3k_1=t}return vt(Se,"DeserializationStrategy",ft),vt(qe,"KSerializer",ft,dt,[Se]),vt(fs,"AbstractPolymorphicSerializer",yt,dt,[qe]),vt(Ee,"PolymorphicSerializer",yt,fs),vt(ze,"SerializationException",yt,Et,dt,(function t(){var n,i=(n=xt(ct(ze)),kt(n),ze.call(n),n);return qt(i,t),i})),vt(Ie,"UnknownFieldException",yt,ze),vt(Me,"MissingFieldException",yt,ze),vt(xr,"SerialDescriptor",ft),vt($r,"ContextDescriptor",yt,dt,[xr]),vt(qr,dt,yt),vt(Sr,dt,yt),vt(Er,"ClassSerialDescriptorBuilder",yt),vt(ps,"CachedNames",ft),vt(Tr,"SerialDescriptorImpl",yt,dt,[xr,ps]),vt(Ar,"WrappedSerialDescriptor",yt,dt,[xr]),vt(Rr,"SerialKind",yt),vt(Dr,"ENUM",gn,Rr),vt(Mr,"CONTEXTUAL",gn,Rr),vt(Kr,"PrimitiveKind",yt,Rr),vt(Pr,"BOOLEAN",gn,Kr),vt(Lr,"BYTE",gn,Kr),vt(Fr,"CHAR",gn,Kr),vt(Ur,"SHORT",gn,Kr),vt(Hr,"INT",gn,Kr),vt(Vr,"LONG",gn,Kr),vt(Br,"FLOAT",gn,Kr),vt(Wr,"DOUBLE",gn,Kr),vt(Yr,"STRING",gn,Kr),vt(rs,"StructureKind",yt,Rr),vt(Xr,"CLASS",gn,rs),vt(Zr,"LIST",gn,rs),vt(ts,"MAP",gn,rs),vt(is,"OBJECT",gn,rs),vt(_s,"PolymorphicKind",yt,Rr),vt(ss,"SEALED",gn,_s),vt(us,"OPEN",gn,_s),vt(as,"Decoder",ft),vt(cs,"CompositeDecoder",ft),vt(hs,"AbstractDecoder",yt,dt,[as,cs]),vt(ls,"Companion",gn),vt(vs,"NothingSerializer",gn,dt,[qe]),vt(ws,"DurationSerializer",gn,dt,[qe]),vt(xs,"ListLikeDescriptor",yt,dt,[xr]),vt(ms,"ArrayListClassDesc",yt,xs),vt(gs,"HashSetClassDesc",yt,xs),vt(ys,"LinkedHashSetClassDesc",yt,xs),vt(qs,"MapLikeDescriptor",yt,dt,[xr]),vt(bs,"HashMapClassDesc",yt,qs),vt($s,"LinkedHashMapClassDesc",yt,qs),vt(ks,"ArrayClassDesc",yt,xs),vt(Ss,"PrimitiveArrayDescriptor",yt,xs),vt(Ms,"AbstractCollectionSerializer",yt,dt,[qe]),vt(Ds,"CollectionLikeSerializer",yt,Ms),vt(zs,"CollectionSerializer",yt,Ds),vt(Cs,"ArrayListSerializer",yt,zs),vt(Es,"HashSetSerializer",yt,zs),vt(Os,"LinkedHashSetSerializer",yt,zs),vt(Is,"MapLikeSerializer",yt,Ms),vt(js,"HashMapSerializer",yt,Is),vt(Ts,"LinkedHashMapSerializer",yt,Is),vt(As,"ReferenceArraySerializer",yt,Ds),vt(Ns,"PrimitiveArraySerializer",yt,Ds),vt(Rs,"PrimitiveArrayBuilder",yt),vt(Ps,"Companion",gn),vt(Fs,"ElementMarker",yt),vt(ru,"PluginGeneratedSerialDescriptor",yt,dt,[xr,ps]),vt(Hs,"InlineClassDescriptor",yt,ru),vt(_u,"GeneratedSerializer",ft,dt,[qe]),vt(Vs,dt,yt,dt,[_u]),vt(Ws,"NothingSerialDescriptor",gn,dt,[xr]),vt(Ys,"NullableSerializer",yt,dt,[qe]),vt(Gs,"SerialDescriptorForNullable",yt,dt,[xr,ps]),vt(Xs,"ObjectSerializer",yt,dt,[qe]),vt(ou,"SerializerFactory",ft),vt(hu,"CharArraySerializer",gn,Ns,[qe,Ns]),vt(au,"DoubleArraySerializer",gn,Ns,[qe,Ns]),vt(lu,"FloatArraySerializer",gn,Ns,[qe,Ns]),vt(cu,"LongArraySerializer",gn,Ns,[qe,Ns]),vt(fu,"ULongArraySerializer",gn,Ns,[qe,Ns]),vt(vu,"IntArraySerializer",gn,Ns,[qe,Ns]),vt(du,"UIntArraySerializer",gn,Ns,[qe,Ns]),vt(wu,"ShortArraySerializer",gn,Ns,[qe,Ns]),vt(pu,"UShortArraySerializer",gn,Ns,[qe,Ns]),vt(mu,"ByteArraySerializer",gn,Ns,[qe,Ns]),vt(gu,"UByteArraySerializer",gn,Ns,[qe,Ns]),vt(yu,"BooleanArraySerializer",gn,Ns,[qe,Ns]),vt(bu,"CharArrayBuilder",yt,Rs),vt($u,"DoubleArrayBuilder",yt,Rs),vt(ku,"FloatArrayBuilder",yt,Rs),vt(xu,"LongArrayBuilder",yt,Rs),vt(qu,"ULongArrayBuilder",yt,Rs),vt(Su,"IntArrayBuilder",yt,Rs),vt(Cu,"UIntArrayBuilder",yt,Rs),vt(Eu,"ShortArrayBuilder",yt,Rs),vt(Ou,"UShortArrayBuilder",yt,Rs),vt(ju,"ByteArrayBuilder",yt,Rs),vt(Tu,"UByteArrayBuilder",yt,Rs),vt(Au,"BooleanArrayBuilder",yt,Rs),vt(Iu,"StringSerializer",gn,dt,[qe]),vt(Mu,"CharSerializer",gn,dt,[qe]),vt(Nu,"DoubleSerializer",gn,dt,[qe]),vt(Pu,"FloatSerializer",gn,dt,[qe]),vt(Fu,"LongSerializer",gn,dt,[qe]),vt(Uu,"IntSerializer",gn,dt,[qe]),vt(Vu,"ShortSerializer",gn,dt,[qe]),vt(Bu,"ByteSerializer",gn,dt,[qe]),vt(Wu,"BooleanSerializer",gn,dt,[qe]),vt(Gu,"UnitSerializer",gn,dt,[qe]),vt(Xu,"PrimitiveSerialDescriptor",yt,dt,[xr]),vt(no,"TaggedDecoder",yt,dt,[as,cs]),vt(Qu,"NamedValueDecoder",yt,no),vt(eo,"MapEntry",yt,dt,[Nt]),vt(oo,"KeyValueSerializer",yt,dt,[qe]),vt(ro,"MapEntrySerializer",yt,oo),vt(so,"PairSerializer",yt,oo),vt(uo,"TripleSerializer",yt,dt,[qe]),vt(_o,"ULongSerializer",gn,dt,[qe]),vt(ho,"UIntSerializer",gn,dt,[qe]),vt(ao,"UShortSerializer",gn,dt,[qe]),vt(lo,"UByteSerializer",gn,dt,[qe]),vt(fo,"SerializersModule",yt),vt(vo,"SerialModuleImpl",yt,fo),vt(mo,"ContextualProvider",yt),vt(wo,"Argless",yt,mo),vt(po,"WithTypeArguments",yt,mo),vt(xo,"SerializersModuleCollector",ft),vt(bo,"SerializersModuleBuilder",yt,dt,[xo]),vt(ko,"SerializerAlreadyRegisteredException",yt,Et),vt(qo,"SerializableWith",yt,dt,dt,dt,0),vt(To,dt,yt),vt(Ao,dt,yt),ct(Ee).b35=function(){return this.y34_1},ct(Ee).n34=function(){var t=this.a35_1;return $t("descriptor",1,bt,(function(t){return t.n34()}),null),t.j2()},ct(Ee).toString=function(){return"kotlinx.serialization.PolymorphicSerializer(baseClass: "+this.y34_1+")"},ct($r).n35=function(){return this.j35_1.n35()},ct($r).o35=function(){return this.j35_1.o35()},ct($r).p35=function(){return this.j35_1.p35()},ct($r).i35=function(){return this.j35_1.i35()},ct($r).q35=function(){return this.j35_1.q35()},ct($r).r35=function(t){return this.j35_1.r35(t)},ct($r).s35=function(t){return this.j35_1.s35(t)},ct($r).t35=function(t){return this.j35_1.t35(t)},ct($r).u35=function(t){return this.j35_1.u35(t)},ct($r).v35=function(t){return this.j35_1.v35(t)},ct($r).m35=function(){return this.l35_1},ct($r).equals=function(t){var n=t instanceof $r?t:null;if(null==n)return!1;var i=n;return!!nn(this.j35_1,i.j35_1)&&i.k35_1.equals(this.k35_1)},ct($r).hashCode=function(){var t=this.k35_1.hashCode();return lt(31,t)+en(this.l35_1)|0},ct($r).toString=function(){return"ContextDescriptor(kClass: "+this.k35_1+", original: "+this.j35_1+")"},ct(qr).w=function(){return this.e36_1>0},ct(qr).y=function(){var t=this.f36_1.o35(),n=this.e36_1;return this.e36_1=n-1|0,this.f36_1.s35(t-n|0)},ct(Sr).v=function(){return new qr(this.g36_1)},ct(Er).h36=function(t,n,i,e){if(!this.t34_1.s(t)){var r="Element with name '"+t+"' is already registered in "+this.p34_1;throw un(sn(r))}this.s34_1.s(t),this.u34_1.s(n),this.v34_1.s(i),this.w34_1.s(e)},ct(Er).x34=function(t,n,i,e,r){var s;return i=i===dt?pt():i,e=e!==dt&&e,r===dt?(this.h36(t,n,i,e),s=wt):s=r.h36.call(this,t,n,i,e),s},ct(Tr).m35=function(){return this.i36_1},ct(Tr).q35=function(){return this.j36_1},ct(Tr).o35=function(){return this.k36_1},ct(Tr).n35=function(){return this.l36_1},ct(Tr).u36=function(){return this.m36_1},ct(Tr).u35=function(t){return Oo(this.n36_1,t)},ct(Tr).t35=function(t){var n=this.r36_1.q2(t);return null==n?-3:n},ct(Tr).r35=function(t){return Oo(this.p36_1,t)},ct(Tr).s35=function(t){return Oo(this.o36_1,t)},ct(Tr).v35=function(t){return jo(this.q36_1,t)},ct(Tr).equals=function(t){var n;t:if(this!==t)if(t instanceof Tr)if(this.m35()===t.m35())if(wn(this.s36_1,t.s36_1))if(this.o35()===t.o35()){var i=0,e=this.o35();if(i=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return!1},ct(xs).r35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return pt()},ct(xs).s35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return this.n38_1},ct(xs).equals=function(t){return this===t||t instanceof xs&&!(!nn(this.n38_1,t.n38_1)||this.m35()!==t.m35())},ct(xs).hashCode=function(){return lt(Sn(this.n38_1),31)+en(this.m35())|0},ct(xs).toString=function(){return this.m35()+"("+this.n38_1+")"},ct(qs).m35=function(){return this.t38_1},ct(qs).q35=function(){return ns()},ct(qs).o35=function(){return this.w38_1},ct(qs).u35=function(t){return t.toString()},ct(qs).t35=function(t){var n=qn(t);if(null==n)throw un(t+" is not a valid map index");return n},ct(qs).v35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return!1},ct(qs).r35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return pt()},ct(qs).s35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}var i;switch(t%2|0){case 0:i=this.u38_1;break;case 1:i=this.v38_1;break;default:throw Cn(sn("Unreached"))}return i},ct(qs).equals=function(t){return this===t||t instanceof qs&&this.m35()===t.m35()&&!!nn(this.u38_1,t.u38_1)&&!!nn(this.v38_1,t.v38_1)},ct(qs).hashCode=function(){var t=en(this.m35());return t=lt(31,t)+Sn(this.u38_1)|0,lt(31,t)+Sn(this.v38_1)|0},ct(qs).toString=function(){return this.m35()+"("+this.u38_1+", "+this.v38_1+")"},ct(Ss).m35=function(){return this.b39_1},ct(Cs).n34=function(){return this.d39_1},ct(Cs).e39=function(){return _n()},ct(Cs).f39=function(t){return t.n()},ct(Cs).g39=function(t){return this.f39(t instanceof Wt?t:Tt())},ct(Cs).h39=function(t){return t},ct(Cs).i39=function(t){return this.h39(t instanceof Wt?t:Tt())},ct(Cs).j39=function(t){var n=t instanceof Wt?t:null;return null==n?En(t):n},ct(Cs).k39=function(t){return this.j39(null!=t&&zt(t,Gt)?t:Tt())},ct(Cs).l39=function(t,n){return t.z2(n)},ct(Cs).m39=function(t,n){return this.l39(t instanceof Wt?t:Tt(),n)},ct(Cs).n39=function(t,n,i){t.r1(n,i)},ct(Cs).o39=function(t,n,i){var e=t instanceof Wt?t:Tt();return this.n39(e,n,null==i||null!=i?i:Tt())},ct(Es).n34=function(){return this.v39_1},ct(Es).e39=function(){return hn()},ct(Es).w39=function(t){return t.n()},ct(Es).g39=function(t){return this.w39(t instanceof Bt?t:Tt())},ct(Es).x39=function(t){return t},ct(Es).i39=function(t){return this.x39(t instanceof Bt?t:Tt())},ct(Es).y39=function(t){var n=t instanceof Bt?t:null;return null==n?On(t):n},ct(Es).k39=function(t){return this.y39(null!=t&&zt(t,Vt)?t:Tt())},ct(Es).z39=function(t,n){},ct(Es).m39=function(t,n){return this.z39(t instanceof Bt?t:Tt(),n)},ct(Es).a3a=function(t,n,i){t.s(i)},ct(Es).o39=function(t,n,i){var e=t instanceof Bt?t:Tt();return this.a3a(e,n,null==i||null!=i?i:Tt())},ct(Os).n34=function(){return this.c3a_1},ct(Os).e39=function(){return jn()},ct(Os).d3a=function(t){return t.n()},ct(Os).g39=function(t){return this.d3a(t instanceof Ut?t:Tt())},ct(Os).e3a=function(t){return t},ct(Os).i39=function(t){return this.e3a(t instanceof Ut?t:Tt())},ct(Os).y39=function(t){var n=t instanceof Ut?t:null;return null==n?Tn(t):n},ct(Os).k39=function(t){return this.y39(null!=t&&zt(t,Vt)?t:Tt())},ct(Os).f3a=function(t,n){},ct(Os).m39=function(t,n){return this.f3a(t instanceof Ut?t:Tt(),n)},ct(Os).g3a=function(t,n,i){t.s(i)},ct(Os).o39=function(t,n,i){var e=t instanceof Ut?t:Tt();return this.g3a(e,n,null==i||null!=i?i:Tt())},ct(js).n34=function(){return this.j3a_1},ct(js).e39=function(){return An()},ct(js).k3a=function(t){return lt(t.n(),2)},ct(js).g39=function(t){return this.k3a(t instanceof Ft?t:Tt())},ct(js).l3a=function(t){return t},ct(js).i39=function(t){return this.l3a(t instanceof Ft?t:Tt())},ct(js).m3a=function(t){var n=t instanceof Ft?t:null;return null==n?zn(t):n},ct(js).k39=function(t){return this.m3a(null!=t&&zt(t,Lt)?t:Tt())},ct(js).n3a=function(t,n){},ct(js).m39=function(t,n){return this.n3a(t instanceof Ft?t:Tt(),n)},ct(Ts).n34=function(){return this.u3a_1},ct(Ts).e39=function(){return In()},ct(Ts).v3a=function(t){return lt(t.n(),2)},ct(Ts).g39=function(t){return this.v3a(t instanceof Rt?t:Tt())},ct(Ts).w3a=function(t){return t},ct(Ts).i39=function(t){return this.w3a(t instanceof Rt?t:Tt())},ct(Ts).m3a=function(t){var n=t instanceof Rt?t:null;return null==n?Dn(t):n},ct(Ts).k39=function(t){return this.m3a(null!=t&&zt(t,Lt)?t:Tt())},ct(Ts).x3a=function(t,n){},ct(Ts).m39=function(t,n){return this.x3a(t instanceof Rt?t:Tt(),n)},ct(As).n34=function(){return this.a3b_1},ct(As).e39=function(){return _n()},ct(As).b3b=function(t){return t.n()},ct(As).g39=function(t){return this.b3b(t instanceof Wt?t:Tt())},ct(As).c3b=function(t){return function(t,n){return Xt(t)}(t,this.z3a_1)},ct(As).i39=function(t){return this.c3b(t instanceof Wt?t:Tt())},ct(As).d3b=function(t){return En(Mn(t))},ct(As).k39=function(t){return this.d3b(null!=t&&Nn(t)?t:Tt())},ct(As).e3b=function(t,n){return t.z2(n)},ct(As).m39=function(t,n){return this.e3b(t instanceof Wt?t:Tt(),n)},ct(As).f3b=function(t,n,i){t.r1(n,i)},ct(As).o39=function(t,n,i){var e=t instanceof Wt?t:Tt();return this.f3b(e,n,null==i||null!=i?i:Tt())},ct(Is).q3a=function(t,n,i,e){if(!(e>=0))throw un(sn("Size must be known in advance when using READ_ALL"));var r=Rn(pn(0,lt(e,2)),2),s=r.ha_1,u=r.ia_1,o=r.ja_1;if(o>0&&s<=u||o<0&&u<=s)do{var _=s;s=s+o|0,this.r3a(t,i+_|0,n,!1)}while(_!==u)},ct(Is).q39=function(t,n,i,e){return this.q3a(t,null!=n&&zt(n,Pt)?n:Tt(),i,e)},ct(Is).r3a=function(t,n,i,e){var r,s=t.z37(this.n34(),n,this.o3a_1);if(e){var u=t.d38(this.n34());if(u!==(n+1|0))throw un(sn("Value must follow key in a map, index for key: "+n+", returned index for value: "+u));r=u}else r=n+1|0;var o=r,_=!i.n2(s)||this.p3a_1.n34().q35()instanceof Kr?t.z37(this.n34(),o,this.p3a_1):t.y37(this.n34(),o,this.p3a_1,Pn(i,s));i.g2(s,_)},ct(Is).r39=function(t,n,i,e){return this.r3a(t,n,null!=i&&zt(i,Pt)?i:Tt(),e)},ct(Ds).q39=function(t,n,i,e){if(!(e>=0))throw un(sn("Size must be known in advance when using READ_ALL"));var r=0;if(r>>6|0)-1|0;Fn();var e=63&n;t.u3b_1[i]=t.u3b_1[i].rb(new bn(1,0).nb(e))}(this,t)},ct(Fs).w3b=function(){for(var t=this.r3b_1.o35();!this.t3b_1.equals(new bn(-1,-1));){var n=Hn(this.t3b_1.mb());if(this.t3b_1=this.t3b_1.rb(new bn(1,0).nb(n)),this.s3b_1(this.r3b_1,n))return n}return Fn(),t>64?function(t){var n=0,i=t.u3b_1.length-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=e+1|0;Fn();for(var s=lt(r,64),u=t.u3b_1[e];!u.equals(new bn(-1,-1));){var o=Hn(u.mb());u=u.rb(new bn(1,0).nb(o));var _=s+o|0;if(t.s3b_1(t.r3b_1,_))return t.u3b_1[e]=u,_}t.u3b_1[e]=u}while(n<=i);return-1}(this):-1},ct(Hs).p35=function(){return this.j3c_1},ct(Hs).hashCode=function(){return lt(ct(ru).hashCode.call(this),31)},ct(Hs).equals=function(t){var n;t:if(this!==t)if(t instanceof Hs)if(this.m35()===t.m35())if(t.j3c_1&&wn(this.w3c(),t.w3c()))if(this.o35()===t.o35()){var i=0,e=this.o35();if(i>>1|0}while(s<32);throw De(e,i.m35())},t.$_$.k2=co,t.$_$.l2=yo,t.$_$.m2=bo,t.$_$.n2=function(t,n){go();var i=new bo;return i.x3j(t),i.x3j(n),i.y2()},t.$_$.o2=Se,t.$_$.p2=qe,t.$_$.q2=Me,t.$_$.r2=ze,t.$_$.s2=Oe,t.$_$.t2=Ne,t.$_$.u2=function(t){return Le(yo(),t)},t.$_$.v2=Le,t})?e.apply(n,r):e)||(t.exports=s)},800:function(t,n,i){var e,r,s;r=[n,i(755),i(675)],void 0===(s="function"==typeof(e=function(t,n,i){"use strict";var e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z=Math.imul,Q=n.$_$.l2,tt=i.$_$.mb,nt=i.$_$.lb,it=i.$_$.nb,et=i.$_$.ca,rt=i.$_$.f,st=i.$_$.a5,ut=i.$_$.gg,ot=n.$_$.w1,_t=n.$_$.u1,ht=i.$_$.na,at=i.$_$.f1,lt=i.$_$.r2,ct=i.$_$.tg,ft=i.$_$.fa,vt=i.$_$.ma,dt=i.$_$.k7,wt=i.$_$.k5,pt=i.$_$.j,mt=i.$_$.oh,gt=n.$_$.h2,yt=i.$_$.rb,bt=i.$_$.t1,$t=i.$_$.c,kt=i.$_$.ia,xt=i.$_$.la,qt=i.$_$.i5,St=i.$_$.f2,Ct=i.$_$.n4,Et=i.$_$.db,Ot=i.$_$.wb,jt=i.$_$.wa,Tt=i.$_$.kc,At=i.$_$.hf,zt=i.$_$.p4,It=n.$_$.x,Dt=n.$_$.d2,Mt=n.$_$.g,Nt=n.$_$.n1,Rt=n.$_$.p2,Pt=n.$_$.v,Lt=n.$_$.j1,Ft=n.$_$.u,Ut=n.$_$.h,Ht=n.$_$.j,Vt=n.$_$.e1,Bt=i.$_$.x1,Wt=i.$_$.ph,Yt=n.$_$.h1,Gt=n.$_$.g1,Kt=n.$_$.f1,Xt=i.$_$.tc,Jt=i.$_$.ka,Zt=n.$_$.a2,Qt=i.$_$.w9,tn=n.$_$.r2,nn=n.$_$.b,en=i.$_$.aa,rn=i.$_$.ba,sn=i.$_$.zb,un=i.$_$.ec,on=(n.$_$.o,n.$_$.k),_n=i.$_$.v,hn=i.$_$.m,an=i.$_$.i8,ln=i.$_$.u6,cn=i.$_$.g7,fn=i.$_$.n6,vn=i.$_$.o6,dn=i.$_$.ha,wn=n.$_$.l,pn=i.$_$.eg,mn=i.$_$.kh,gn=i.$_$.q9,yn=i.$_$.fg,bn=i.$_$.dh,$n=i.$_$.c9,kn=n.$_$.y1,xn=i.$_$.d,qn=n.$_$.s2,Sn=i.$_$.jh,Cn=n.$_$.o2,En=n.$_$.r1,On=i.$_$.ze,jn=i.$_$.ke,Tn=i.$_$.xe,An=i.$_$.kd,zn=i.$_$.rh,In=n.$_$.q2,Dn=i.$_$.pb,Mn=i.$_$.jg,Nn=i.$_$.mh,Rn=i.$_$.lh,Pn=i.$_$.z9,Ln=i.$_$.rf,Fn=i.$_$.n3,Un=i.$_$.sf,Hn=i.$_$.u3,Vn=i.$_$.qf,Bn=i.$_$.f3,Wn=i.$_$.tf,Yn=i.$_$.b4,Gn=i.$_$.x4,Kn=n.$_$.z,Xn=i.$_$.y4,Jn=n.$_$.b1,Zn=i.$_$.w4,Qn=n.$_$.a1,ti=i.$_$.z4,ni=n.$_$.y,ii=i.$_$.h8,ei=i.$_$.y2,ri=i.$_$.fb,si=i.$_$.sd,ui=i.$_$.z2,oi=n.$_$.f2,_i=n.$_$.c1,hi=n.$_$.d1,ai=n.$_$.m,li=i.$_$.k4,ci=i.$_$.ob,fi=i.$_$.o4,vi=i.$_$.qb,di=i.$_$.pe,wi=i.$_$.cg,pi=n.$_$.i2,mi=i.$_$.v6,gi=i.$_$.x7,yi=i.$_$.jf,bi=i.$_$.r8,$i=n.$_$.p1,ki=n.$_$.i,xi=i.$_$.qh,qi=i.$_$.r7,Si=i.$_$.d8,Ci=i.$_$.ge,Ei=i.$_$.mg,Oi=i.$_$.u2,ji=i.$_$.u4,Ti=i.$_$.ib,Ai=i.$_$.y9,zi=i.$_$.wd,Ii=i.$_$.o;function Di(){e=this,Ni.call(this,new Li,Q())}function Mi(){return null==e&&new Di,e}function Ni(t,n){Mi(),this.r41_1=t,this.s41_1=n,this.t41_1=new hr}function Ri(){}function Pi(){}function Li(t,n,i,e,u,o,_,h,a,l,c,f,v,d,w,p){t=t!==rt&&t,n=n!==rt&&n,i=i!==rt&&i,e=e!==rt&&e,u=u!==rt&&u,o=o===rt||o,_=_===rt?" ":_,h=h!==rt&&h,a=a!==rt&&a,l=l===rt?"type":l,c=c!==rt&&c,f=f===rt||f,v=v===rt?null:v,d=d!==rt&&d,w=w!==rt&&w,p=p===rt?(function(){if(s)return st;s=!0,new Fi("NONE",0),new Fi("ALL_JSON_OBJECTS",1),r=new Fi("POLYMORPHIC",2)}(),r):p,this.i42_1=t,this.j42_1=n,this.k42_1=i,this.l42_1=e,this.m42_1=u,this.n42_1=o,this.o42_1=_,this.p42_1=h,this.q42_1=a,this.r42_1=l,this.s42_1=c,this.t42_1=f,this.u42_1=v,this.v42_1=d,this.w42_1=w,this.x42_1=p}function Fi(t,n){ut.call(this,t,n)}function Ui(){}function Hi(){}function Vi(){}function Bi(){}function Wi(t){var n=t.i2(),i=t.j2(),e=at();return yr(e,n),e.s5(lt(58)),e.q5(i),e.toString()}function Yi(t){Vi.call(this),this.a43_1=t}function Gi(){return qe()}function Ki(){u=this,Zi.call(this),this.b43_1="null";var t=pt();this.c43_1=mt(t,Gi)}function Xi(){return null==u&&new Ki,u}function Ji(){}function Zi(){Vi.call(this)}function Qi(t,n,i){if(i=i===rt?null:i,Zi.call(this),this.e43_1=n,this.f43_1=i,this.g43_1=yt(t),null!=this.f43_1&&!this.f43_1.p35())throw bt(yt("Failed requirement."))}function te(){}function ne(t){Vi.call(this),this.h43_1=t}function ie(t){return ue(),function(t){return br(),!!si(t,"true",!0)||!si(t,"false",!0)&&null}(t.d2b())}function ee(t){var n;ue();try{n=new vs(t.d2b()).l43()}catch(t){if(t instanceof Me)throw St(t.message);throw t}var i=n,e=Et(Ct.MIN_VALUE,Ct.MAX_VALUE);if(!Tt(jt(e,Ot)?e:ct(),i))throw St(t.d2b()+" is not an Int");return i.la()}function re(t){return ue(),t instanceof Ki?null:t.d2b()}function se(t){ue();var n,i=t instanceof Zi?t:null;return null==i?function(t,n){throw ue(),bt("Element "+$t(t)+" is not a "+n)}(t,"JsonPrimitive"):n=i,n}function ue(){o||(o=!0,Dt("kotlinx.serialization.json.JsonUnquotedLiteral",It(zt)))}function oe(t){return t.x34("JsonPrimitive",be(_e)),t.x34("JsonNull",be(he)),t.x34("JsonLiteral",be(ae)),t.x34("JsonObject",be(le)),t.x34("JsonArray",be(ce)),st}function _e(){return ke().m43_1}function he(){return qe().n43_1}function ae(){return(null==d&&new Se,d).o43_1}function le(){return pe().p43_1}function ce(){return ye().q43_1}function fe(){_=this;var t=Mt();this.r43_1=Nt("kotlinx.serialization.json.JsonElement",t,[],oe)}function ve(){return null==_&&new fe,_}function de(){h=this,this.s43_1=Pt(It(zt),ve()).n34(),this.t43_1="kotlinx.serialization.json.JsonObject"}function we(){a=this,this.p43_1=(null==h&&new de,h)}function pe(){return null==a&&new we,a}function me(){l=this,this.u43_1=Ft(ve()).n34(),this.v43_1="kotlinx.serialization.json.JsonArray"}function ge(){c=this,this.q43_1=(null==l&&new me,l)}function ye(){return null==c&&new ge,c}function be(t){return new je(t)}function $e(){f=this,this.m43_1=Nt("kotlinx.serialization.json.JsonPrimitive",Ut(),[])}function ke(){return null==f&&new $e,f}function xe(){v=this,this.n43_1=Nt("kotlinx.serialization.json.JsonNull",Ht(),[])}function qe(){return null==v&&new xe,v}function Se(){d=this,this.o43_1=Vt("kotlinx.serialization.json.JsonLiteral",Ut())}function Ce(t){var n=jt(t,Ui)?t:null;if(null==n)throw Bt("This serializer can be used only with Json format.Expected Decoder to be JsonDecoder, got "+$t(t));return n}function Ee(t){Ce(t)}function Oe(t){var n=t.w43_1;return Jt("original",1,Xt,(function(t){return Oe(t)}),null),n.j2()}function je(t){this.w43_1=Wt(t)}function Te(t){var n,i;this.x43_1=new Zt(t,(n=this,i=function(t,i){return r=t,s=i,(e=n).y43_1=!r.v35(s)&&r.s35(s).i35(),e.y43_1;var e,r,s},i.callableName="readIfAbsent",i)),this.y43_1=!1}function Ae(t,n){n=n===rt?"object":n,t.z43("Trailing comma before the end of JSON "+n,t.d42_1-1|0,"Trailing commas are non-complaint JSON and not allowed by default. Use 'allowTrailingCommas = true' in 'Json {}' builder to support them.")}function ze(t,n){t.a44("Unexpected special floating-point value "+yt(n)+". By default, non-finite floating point values are prohibited because they do not conform JSON specification",rt,fs())}function Ie(t){Fe.call(this,t),Qt(this,Ie)}function De(t){return new Ie("Value of type '"+t.m35()+"' can't be used in JSON as a key in the map. It should have either primitive or enum kind, but its kind is '"+t.q35()+"'.\n"+J)}function Me(t){Fe.call(this,t),Qt(this,Me)}function Ne(t,n,i){return Pe(t,n+"\nJSON input: "+Ue(i,t))}function Re(t,n,i){return Pe(-1,function(t,n,i){return"Unexpected special floating-point value "+yt(t)+" with key "+n+". By default, non-finite floating point values are prohibited because they do not conform JSON specification. "+fs()+"\nCurrent output: "+Ue(i)}(t,n,i))}function Pe(t,n){return new Me(t>=0?"Unexpected JSON token at offset "+t+": "+n:n)}function Le(t,n){return Pe(-1,"Encountered an unknown key '"+t+"'.\n"+G+"\nCurrent input: "+Ue(n))}function Fe(t){nn(t,this),Qt(this,Fe)}function Ue(t,n){if(n=n===rt?-1:n,en(t)<200)return t;if(-1===n){var i=en(t)-60|0;if(i<=0)return t;var e=en(t);return"....."+yt(rn(t,i,e))}var r=n-30|0,s=n+30|0,u=r<=0?"":".....",o=s>=en(t)?"":".....",_=sn(r,0),h=un(s,en(t));return u+yt(rn(t,_,h))+o}function He(){return Xe(),w}function Ve(t,n,i){if(Xe(),Ye(n,t))return Ge(t,n,i.toLowerCase());if(null!=Be(t,n))return Ge(t,n,i);var e=t.t35(i);return-3!==e?e:n.r41_1.t42_1?Ge(t,n,i):e}function Be(t,n){return Xe(),ft(t.q35(),on())?n.r41_1.u42_1:null}function We(t,n){Xe();var i,e,r=ds(t),s=He();return r.c44(n,s,(i=n,e=t,function(){return function(t,n){Xe();var i=_n(),e=Ye(n,t),r=Be(t,n),s=0,u=t.o35();if(s>12),r=gr(i>>8),s=gr(i>>4),u=gr(i);t[i]="\\u"+ui(e)+ui(r)+ui(s)+ui(u)}while(n<=31);var o=lt(34);t[ei(o)]='\\"';var _=lt(92);t[ei(_)]="\\\\";var h=lt(9);t[ei(h)]="\\t";var a=lt(8);t[ei(a)]="\\b";var l=lt(10);t[ei(l)]="\\n";var c=lt(13);t[ei(c)]="\\r",t[12]="\\f",b=t;var f=new Int8Array(93),v=0;if(v<=31)do{var d=v;v=v+1|0,f[d]=1}while(v<=31);var w=lt(34);f[ei(w)]=34;var p=lt(92);f[ei(p)]=92;var m=lt(9);f[ei(m)]=116;var g=lt(8);f[ei(g)]=98;var y=lt(10);f[ei(y)]=110;var k=lt(13);f[ei(k)]=114,f[12]=102}}function $r(t,n){throw Ne(-1,"Failed to parse literal as '"+n+"' value",yt(t.c47()))}function kr(t,n){oi.call(this),this.z46_1=t,this.a47_1=n,this.b47_1=this.y42().r41_1}function xr(t,n,i,e){var r;t:{var s=t.y42();if(n.v35(i)){var u=n.s35(i);if(!u.i35()&&t.d47(e)instanceof Ki)r=!0;else{if(ft(u.q35(),Ht())){if(u.i35()&&t.d47(e)instanceof Ki){r=!1;break t}var o=t.d47(e),_=o instanceof Zi?o:null,h=null==_?null:re(_);if(null==h){r=!1;break t}if(-3===Ve(u,s,h)){r=!0;break t}}r=!1}}else r=!1}return r}function qr(t,n,i){return t.z47_1=!t.y42().r41_1.n42_1&&!n.v35(i)&&n.s35(i).i35(),t.z47_1}function Sr(t,n,i,e){i=i===rt?null:i,e=e===rt?null:e,kr.call(this,t,n),this.v47_1=n,this.w47_1=i,this.x47_1=e,this.y47_1=0,this.z47_1=!1}function Cr(t,n){kr.call(this,t,n),this.f48_1=n,this.g48_1=this.f48_1.n(),this.h48_1=-1}function Er(t,n){kr.call(this,t,n),this.n48_1=n,this.k3i(jr())}function Or(t,n){Sr.call(this,t,n),this.y48_1=n,this.z48_1=bi(this.y48_1.d2()),this.a49_1=Z(this.z48_1.n(),2),this.b49_1=-1}function jr(){return k}function Tr(){if(E)return st;E=!0,x=new Ar("OBJ",0,Zr(),Qr()),q=new Ar("LIST",1,ts(),ns()),S=new Ar("MAP",2,Zr(),Qr()),C=new Ar("POLY_OBJ",3,ts(),ns())}function Ar(t,n,i,e){ut.call(this,t,n),this.r46_1=i,this.s46_1=e}function zr(t,n){var i,e=n.q35();if(e instanceof _i)Tr(),i=C;else if(ft(e,wn()))i=Mr();else if(ft(e,ai())){var r,s=Ir(n.s35(0),t.b38()),u=s.q35();if(u instanceof hi||ft(u,Ht()))r=Nr();else{if(!t.r41_1.l42_1)throw De(s);r=Mr()}i=r}else i=Dr();return i}function Ir(t,n){var i;if(ft(t.q35(),ki())){var e=$i(n,t),r=null==e?null:Ir(e,n);i=null==r?t:r}else i=t.p35()?Ir(t.s35(0),n):t;return i}function Dr(){return Tr(),x}function Mr(){return Tr(),q}function Nr(){return Tr(),S}function Rr(t,n,i){return t.c49(n,i),function(t,n){var i=n;-1===(i=t.e49(i))&&t.a44("Expected escape sequence to continue, got EOF");var e=t.d49(),r=i;i=r+1|0;var s=Pn(e,r);if(s===lt(117))return Fr(t,t.d49(),i);var u=function(t){return t<117?cs().m49_1[t]:lt(0)}(ei(s));return u===lt(0)&&t.a44("Invalid escaped char '"+ui(s)+"'"),t.g42_1.s5(u),i}(t,i+1|0)}function Pr(t,n,i){t.c49(n,i);var e=t.g42_1.toString();return t.g42_1.a8(0),e}function Lr(t){var n=Sn(t.f42_1);return t.f42_1=null,n}function Fr(t,n,i){return(i+4|0)>=en(n)?(t.d42_1=i,t.f49(),(t.d42_1+4|0)>=en(n)&&t.a44("Unexpected EOF during unicode escape"),Fr(t,n,t.d42_1)):(t.g42_1.s5(ri((((Ur(t,n,i)<<12)+(Ur(t,n,i+1|0)<<8)|0)+(Ur(t,n,i+2|0)<<4)|0)+Ur(t,n,i+3|0)|0)),i+4|0)}function Ur(t,n,i){var e,r=Pn(n,i);if(lt(48)<=r&&r<=lt(57)){var s=ei(r),u=lt(48);e=s-ei(u)|0}else if(lt(97)<=r&&r<=lt(102)){var o=ei(r),_=lt(97);e=10+(o-ei(_)|0)|0}else if(lt(65)<=r&&r<=lt(70)){var h=ei(r),a=lt(65);e=10+(h-ei(a)|0)|0}else t.a44("Invalid toHexChar char '"+ui(r)+"' in unicode escape");return e}function Hr(t,n,i){(en(t.d49())-i|0)=0&&(t.r5("."),t.r5(r.u35(s)))}else r!==m&&(t.r5("["),t.r5("'"),t.q5(r),t.r5("'"),t.r5("]"))}while(i0&&t===lt(34)){var n;t:{var i=this.d42_1;try{this.d42_1=this.d42_1-1|0,n=this.w44();break t}finally{this.d42_1=i}}"null"===n&&this.z43("Expected string literal but 'null' literal was found",this.d42_1-1|0,"Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls if property has a default value.")}this.h49(Br(t))},tt(Vr).j49=function(t,n){var i=is(t),e=n?this.d42_1-1|0:this.d42_1,r=this.d42_1===en(this.d49())||e<0?"EOF":ui(Pn(this.d49(),e));this.a44("Expected "+i+", but had '"+r+"' instead",e)},tt(Vr).h49=function(t,n,i){return n=n===rt||n,i===rt?this.j49(t,n):i.j49.call(this,t,n)},tt(Vr).t44=function(){for(var t=this.d49(),n=this.d42_1;-1!==(n=this.e49(n));){var i=Pn(t,n);if(i!==lt(32)&&i!==lt(10)&&i!==lt(13)&&i!==lt(9))return this.d42_1=n,Br(i);n=n+1|0}return this.d42_1=n,10},tt(Vr).i46=function(t){var n=this.k49();n=this.e49(n);var i=en(this.d49())-n|0;if(i<4||-1===n)return!1;var e=0;if(e<=3)do{var r=e;if(e=e+1|0,Pn("null",r)!==Pn(this.d49(),n+r|0))return!1}while(e<=3);return!(i>4&&0===Br(Pn(this.d49(),n+4|0))||(t&&(this.d42_1=n+4|0),0))},tt(Vr).t46=function(t,n){return t=t===rt||t,n===rt?this.i46(t):n.i46.call(this,t)},tt(Vr).k49=function(){var t=this.d42_1;t:for(;-1!==(t=this.e49(t));){var n=Pn(this.d49(),t);if(n!==lt(32)&&n!==lt(10)&&n!==lt(13)&&n!==lt(9))break t;t=t+1|0}return this.d42_1=t,t},tt(Vr).j46=function(t){var n,i=this.t44();if(t){if(1!==i&&0!==i)return null;n=this.w44()}else{if(1!==i)return null;n=this.v44()}var e=n;return this.f42_1=e,e},tt(Vr).l49=function(){this.f42_1=null},tt(Vr).b8=function(t,n){var i=this.d49();return yt(rn(i,t,n))},tt(Vr).v44=function(){return null!=this.f42_1?Lr(this):this.m46()},tt(Vr).consumeString2=function(t,n,i){for(var e=i,r=n,s=Pn(t,e),u=!1;s!==lt(34);)s===lt(92)?(u=!0,-1===(e=this.e49(Rr(this,r,e)))&&this.a44("Unexpected EOF",e),r=e):(e=e+1|0)>=en(t)&&(u=!0,this.c49(r,e),-1===(e=this.e49(e))&&this.a44("Unexpected EOF",e),r=e),s=Pn(t,e);var o=u?Pr(this,r,e):this.b8(r,e);return this.d42_1=e+1|0,o},tt(Vr).n46=function(){var t,n=this.w44();return"null"===n&&!(Pn((t=this).d49(),t.d42_1-1|0)===lt(34))&&this.a44("Unexpected 'null' value instead of string literal"),n},tt(Vr).w44=function(){if(null!=this.f42_1)return Lr(this);var t=this.k49();(t>=en(this.d49())||-1===t)&&this.a44("EOF",t);var n=Br(Pn(this.d49(),t));if(1===n)return this.v44();0!==n&&this.a44("Expected beginning of the string, but got "+ui(Pn(this.d49(),t)));for(var i=!1;0===Br(Pn(this.d49(),t));)if((t=t+1|0)>=en(this.d49())){i=!0,this.c49(this.d42_1,t);var e=this.e49(t);if(-1===e)return this.d42_1=t,Pr(this,0,0);t=e}var r=i?Pr(this,this.d42_1,t):this.b8(this.d42_1,t);return this.d42_1=t,r},tt(Vr).c49=function(t,n){this.g42_1.t7(this.d49(),t,n)},tt(Vr).l46=function(t){var n=hn(),i=this.t44();if(8!==i&&6!==i)return this.w44(),st;for(;;)if(1!==(i=this.t44())){var e=i;if(8===e||6===e)n.s(i);else if(9===e){if(8!==qi(n))throw Ne(this.d42_1,"found ] instead of } at path: "+this.e42_1,this.d49());Si(n)}else if(7===e){if(6!==qi(n))throw Ne(this.d42_1,"found } instead of ] at path: "+this.e42_1,this.d49());Si(n)}else 10===e&&this.a44("Unexpected end of input due to malformed JSON during ignoring unknown keys");if(this.y44(),0===n.n())return st}else t?this.w44():this.m46()},tt(Vr).toString=function(){return"JsonReader(source='"+this.d49()+"', currentPosition="+this.d42_1+")"},tt(Vr).k46=function(t){var n=this.b8(0,this.d42_1),i=Ci(n,t);this.z43("Encountered an unknown key '"+t+"'",i,"Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.")},tt(Vr).z43=function(t,n,i){var e=0===en(i)?"":"\n"+i;throw Ne(n,t+" at path: "+this.e42_1.n44()+e,this.d49())},tt(Vr).a44=function(t,n,i,e){return n=n===rt?this.d42_1:n,i=i===rt?"":i,e===rt?this.z43(t,n,i):e.z43.call(this,t,n,i)},tt(Vr).l43=function(){var t,n=this.k49();((n=this.e49(n))>=en(this.d49())||-1===n)&&this.a44("EOF"),Pn(this.d49(),n)===lt(34)?((n=n+1|0)===en(this.d49())&&this.a44("EOF"),t=!0):t=!1;var i=t,e=new Ei(0,0),r=new Ei(0,0),s=!1,u=!1,o=!1,_=n;t:for(;n!==en(this.d49());){var h=Pn(this.d49(),n);if(h!==lt(101)&&h!==lt(69)||o)if(h===lt(45)&&o)n===_&&this.a44("Unexpected symbol '-' in numeric literal"),u=!1,n=n+1|0;else if(h===lt(43)&&o)n===_&&this.a44("Unexpected symbol '+' in numeric literal"),u=!0,n=n+1|0;else if(h!==lt(45)){if(0!==Br(h))break t;n=n+1|0;var a=Oi(h,lt(48));0<=a&&a<=9||this.a44("Unexpected symbol '"+ui(h)+"' in numeric literal"),o?r=r.ba(Dn(10)).gb(Dn(a)):(e=e.ba(Dn(10)).hb(Dn(a))).ca(new Ei(0,0))>0&&this.a44("Numeric value overflow")}else n!==_&&this.a44("Unexpected symbol '-' in numeric literal"),s=!0,n=n+1|0;else n===_&&this.a44("Unexpected symbol "+ui(h)+" in numeric literal"),u=!0,o=!0,n=n+1|0}var l,c=!(n===_);if((_===n||s&&_===(n-1|0))&&this.a44("Expected numeric literal"),i&&(c||this.a44("EOF"),Pn(this.d49(),n)!==lt(34)&&this.a44("Expected closing quotation mark"),n=n+1|0),this.d42_1=n,o){var f,v=e.f6()*function(t,n){var i;switch(n){case!1:var e=-t.f6();i=Math.pow(10,e);break;case!0:var r=t.f6();i=Math.pow(10,r);break;default:xi()}return i}(r,u);ji(),v>new Ei(-1,2147483647).f6()?f=!0:(ji(),f=v=en(t.d49())||-1===i)&&t.a44("EOF");var e=t.d49(),r=i;i=r+1|0;var s,u=Pn(e,r),o=32|ei(u),_=lt(116);if(o===ei(_))Hr(t,"rue",i),s=!0;else{var h=lt(102);o===ei(h)?(Hr(t,"alse",i),s=!1):t.a44("Expected valid boolean literal prefix, but had '"+t.w44()+"'")}return s}(this,n);return i&&(this.d42_1===en(this.d49())&&this.a44("EOF"),Pn(this.d49(),this.d42_1)!==lt(34)&&this.a44("Expected closing quotation mark"),this.d42_1=this.d42_1+1|0),e},tt(vs).d49=function(){return this.s49_1},tt(vs).e49=function(t){return t0&&c.r5(","),c.r5(get_name(v))}for(var d=u.v();d.w();){var w=d.y(),p=w.ue(),m=w.ve();if(charSequenceLength(c)>0&&c.r5(","),!(0<=m&&m<=1))throw IllegalStateException_init_$Create$(toString("Check failed."));var g=roundToInt(100*m)/100;c.r5(get_name(p)+";q="+g)}0===charSequenceLength(c)&&c.r5(get_name(this.e2o_1)),this.g2o_1=c.toString();var y,b=null==i?firstOrNull(l):i;if(null==b){var $=firstOrNull(u);y=null==$?null:$.se_1}else y=b;var k=y;this.f2o_1=null==k?Charsets_getInstance().q1k_1:k}function _init_properties_HttpPlainText_kt__iy89z1(){properties_initialized_HttpPlainText_kt_2nx4ox||(properties_initialized_HttpPlainText_kt_2nx4ox=!0,LOGGER_2=KtorSimpleLogger("io.ktor.client.plugins.HttpPlainText"))}function get_ALLOWED_FOR_REDIRECT(){return _init_properties_HttpRedirect_kt__ure7fo(),ALLOWED_FOR_REDIRECT}function get_LOGGER_3(){return _init_properties_HttpRedirect_kt__ure7fo(),LOGGER_3}function handleCall(t,n,i,e,r,s,u){var o=new $handleCallCOROUTINE$7(n,t,i,e,r,s,u);return o.ec_1=Unit_instance,o.fc_1=null,o.pc()}function HttpRedirect$Plugin$install$slambda(t,n,i){this.h2q_1=t,this.i2q_1=n,CoroutineImpl.call(this,i)}function HttpRedirect$Plugin$install$slambda_0(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.a2m(t,n,i)};return r.$arity=2,r}function $handleCallCOROUTINE$7(t,n,i,e,r,s,u){CoroutineImpl.call(this,u),this.o2p_1=t,this.p2p_1=n,this.q2p_1=i,this.r2p_1=e,this.s2p_1=r,this.t2p_1=s}function Config_1(){this.q2q_1=!0,this.r2q_1=!1}function Plugin_1(){Plugin_instance_1=this,this.o2q_1=new AttributeKey("HttpRedirect"),this.p2q_1=new EventDefinition}function Plugin_getInstance_1(){return null==Plugin_instance_1&&new Plugin_1,Plugin_instance_1}function HttpRedirect(t,n){Plugin_getInstance_1(),this.m2q_1=t,this.n2q_1=n}function isRedirect(t){_init_properties_HttpRedirect_kt__ure7fo();var n=t.t22_1;return n===Companion_getInstance_2().c21_1.t22_1||n===Companion_getInstance_2().d21_1.t22_1||n===Companion_getInstance_2().i21_1.t22_1||n===Companion_getInstance_2().j21_1.t22_1||n===Companion_getInstance_2().e21_1.t22_1}function _init_properties_HttpRedirect_kt__ure7fo(){properties_initialized_HttpRedirect_kt_klj746||(properties_initialized_HttpRedirect_kt_klj746=!0,ALLOWED_FOR_REDIRECT=setOf_0([Companion_getInstance_1().z1z_1,Companion_getInstance_1().e20_1]),LOGGER_3=KtorSimpleLogger("io.ktor.client.plugins.HttpRedirect"))}function get_LOGGER_4(){return _init_properties_HttpRequestLifecycle_kt__jgkmfx(),LOGGER_4}function HttpRequestLifecycle$Plugin$install$slambda(t,n){this.c2r_1=t,CoroutineImpl.call(this,n)}function HttpRequestLifecycle$Plugin$install$slambda_0(t,n){var i=new HttpRequestLifecycle$Plugin$install$slambda(t,n),e=function(t,n,e){return i.m27(t,n,e)};return e.$arity=2,e}function Plugin_2(){Plugin_instance_2=this,this.h2r_1=new AttributeKey("RequestLifecycle")}function Plugin_getInstance_2(){return null==Plugin_instance_2&&new Plugin_2,Plugin_instance_2}function HttpRequestLifecycle(){Plugin_getInstance_2()}function attachToClientEngineJob(t,n){_init_properties_HttpRequestLifecycle_kt__jgkmfx();var i=n.in(attachToClientEngineJob$lambda(t));t.in(attachToClientEngineJob$lambda_0(i))}function attachToClientEngineJob$lambda(t){return function(n){return null!=n?(get_LOGGER_4().y1t("Cancelling request because engine Job failed with error: "+n),cancel_2(t,"Engine failed",n)):(get_LOGGER_4().y1t("Cancelling request because engine Job completed"),t.ks()),Unit_instance}}function attachToClientEngineJob$lambda_0(t){return function(n){return t.sp(),Unit_instance}}function _init_properties_HttpRequestLifecycle_kt__jgkmfx(){properties_initialized_HttpRequestLifecycle_kt_3hmcrf||(properties_initialized_HttpRequestLifecycle_kt_3hmcrf=!0,LOGGER_4=KtorSimpleLogger("io.ktor.client.plugins.HttpRequestLifecycle"))}function HttpSend$Plugin$install$slambda(t,n,i){this.r2r_1=t,this.s2r_1=n,CoroutineImpl.call(this,i)}function HttpSend$Plugin$install$slambda_0(t,n,i){var e=new HttpSend$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.m27(t,n,i)};return r.$arity=2,r}function $executeCOROUTINE$8(t,n,i){CoroutineImpl.call(this,i),this.g2s_1=t,this.h2s_1=n}function Config_2(){this.m2s_1=20}function Plugin_3(){Plugin_instance_3=this,this.n2s_1=new AttributeKey("HttpSend")}function Plugin_getInstance_3(){return null==Plugin_instance_3&&new Plugin_3,Plugin_instance_3}function InterceptedSender(t,n){this.q2s_1=t,this.r2s_1=n}function DefaultSender(t,n){this.i2s_1=t,this.j2s_1=n,this.k2s_1=0,this.l2s_1=null}function HttpSend(t){Plugin_getInstance_3(),t=t===VOID?20:t,this.i2n_1=t,this.j2n_1=ArrayList_init_$Create$()}function Sender(){}function SendCountExceedException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,SendCountExceedException)}function get_LOGGER_5(){return _init_properties_HttpTimeout_kt__pucqrr(),LOGGER_5}function HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,e){return t=t===VOID?null:t,n=n===VOID?null:n,i=i===VOID?null:i,HttpTimeoutCapabilityConfiguration.call(e),e.v2s(t),e.w2s(n),e.x2s(i),e}function HttpTimeoutCapabilityConfiguration_init_$Create$(t,n,i){return HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,objectCreate(protoOf(HttpTimeoutCapabilityConfiguration)))}function checkTimeoutValue(t,n){if(!(null==n||n.ca(new Long(0,0))>0))throw IllegalArgumentException_init_$Create$(toString("Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS"));return n}function Companion_2(){Companion_instance_3=this,this.y2s_1=new AttributeKey("TimeoutConfiguration")}function Companion_getInstance_9(){return null==Companion_instance_3&&new Companion_2,Companion_instance_3}function HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e){this.h2t_1=t,this.i2t_1=n,this.j2t_1=i,CoroutineImpl.call(this,e)}function HttpTimeout$Plugin$install$slambda$slambda_0(t,n,i,e){var r=new HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e),s=function(t,n){return r.a1h(t,n)};return s.$arity=1,s}function HttpTimeout$Plugin$install$slambda$lambda(t){return function(n){return t.on(),Unit_instance}}function HttpTimeout$Plugin$install$slambda(t,n,i){this.t2t_1=t,this.u2t_1=n,CoroutineImpl.call(this,i)}function HttpTimeout$Plugin$install$slambda_0(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.a2m(t,n,i)};return r.$arity=2,r}function HttpTimeoutCapabilityConfiguration(){Companion_getInstance_9(),this.s2s_1=new Long(0,0),this.t2s_1=new Long(0,0),this.u2s_1=new Long(0,0)}function hasNotNullTimeouts(t){return null!=t.c2u_1||null!=t.d2u_1||!(null==t.e2u_1)}function Plugin_4(){Plugin_instance_4=this,this.h2u_1=new AttributeKey("TimeoutPlugin"),this.i2u_1=new Long(-1,2147483647)}function Plugin_getInstance_4(){return null==Plugin_instance_4&&new Plugin_4,Plugin_instance_4}function HttpTimeout(t,n,i){Plugin_getInstance_4(),this.c2u_1=t,this.d2u_1=n,this.e2u_1=i}function HttpRequestTimeoutException_init_$Init$(t,n){var i=t.s28_1.o24(),e=t.z2t(Plugin_getInstance_4());return HttpRequestTimeoutException.call(n,i,null==e?null:e.g2u()),n}function HttpRequestTimeoutException_init_$Create$(t){var n=HttpRequestTimeoutException_init_$Init$(t,objectCreate(protoOf(HttpRequestTimeoutException)));return captureStack(n,HttpRequestTimeoutException_init_$Create$),n}function HttpRequestTimeoutException(t,n){IOException_init_$Init$("Request timeout has expired [url="+t+", request_timeout="+toString(null==n?"unknown":n)+" ms]",this),captureStack(this,HttpRequestTimeoutException)}function _init_properties_HttpTimeout_kt__pucqrr(){properties_initialized_HttpTimeout_kt_9oyjbd||(properties_initialized_HttpTimeout_kt_9oyjbd=!0,LOGGER_5=KtorSimpleLogger("io.ktor.client.plugins.HttpTimeout"))}function wrapWithContent(t,n){return new DelegatedCall(t.o27_1,n,t)}function DelegatedCall(t,n,i){HttpClientCall.call(this,t),this.q27_1=new DelegatedRequest(this,i.c2b()),this.r27_1=new DelegatedResponse(this,n,i.t27())}function DelegatedRequest(t,n){this.l2u_1=t,this.m2u_1=n}function DelegatedResponse(t,n,i){HttpResponse.call(this),this.n2u_1=t,this.o2u_1=n,this.p2u_1=i,this.q2u_1=this.p2u_1.gm()}function WebSocketCapability(){}function WebSocketCapability_getInstance(){return WebSocketCapability_instance}function WebSocketException_init_$Init$(t,n){return WebSocketException.call(n,t,null),n}function WebSocketException_init_$Create$(t){var n=WebSocketException_init_$Init$(t,objectCreate(protoOf(WebSocketException)));return captureStack(n,WebSocketException_init_$Create$),n}function WebSocketException(t,n){IllegalStateException_init_$Init$_1(t,n,this),captureStack(this,WebSocketException)}function ClientUpgradeContent(){}function DefaultHttpRequest(t,n){this.r2u_1=t,this.s2u_1=n.t2d_1,this.t2u_1=n.s2d_1,this.u2u_1=n.v2d_1,this.v2u_1=n.u2d_1,this.w2u_1=n.x2d_1}function HttpRequest_0(){}function Companion_3(){}function Companion_getInstance_10(){return Companion_instance_4}function HttpRequestBuilder$setCapability$lambda(){return LinkedHashMap_init_$Create$()}function HttpRequestBuilder(){this.s28_1=new URLBuilder,this.t28_1=Companion_getInstance_1().z1z_1,this.u28_1=new HeadersBuilder,this.v28_1=EmptyContent_getInstance(),this.w28_1=SupervisorJob(),this.x28_1=AttributesJsFn(!0)}function HttpRequestData(t,n,i,e,r,s){this.s2d_1=t,this.t2d_1=n,this.u2d_1=i,this.v2d_1=e,this.w2d_1=r,this.x2d_1=s;var u=this.x2d_1.k1o(get_ENGINE_CAPABILITIES_KEY()),o=null==u?null:u.d2();this.y2d_1=null==o?emptySet():o}function HttpResponseData(t,n,i,e,r,s){this.a2a_1=t,this.b2a_1=n,this.c2a_1=i,this.d2a_1=e,this.e2a_1=r,this.f2a_1=s,this.g2a_1=GMTDate()}function url(t,n){takeFrom(t.s28_1,n)}function isUpgradeRequest(t){return t.v2d_1 instanceof ClientUpgradeContent}function Phases(){Phases_instance=this,this.q2f_1=new PipelinePhase("Before"),this.r2f_1=new PipelinePhase("State"),this.s2f_1=new PipelinePhase("Transform"),this.t2f_1=new PipelinePhase("Render"),this.u2f_1=new PipelinePhase("Send")}function Phases_getInstance(){return null==Phases_instance&&new Phases,Phases_instance}function HttpRequestPipeline(t){Phases_getInstance(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance().q2f_1,Phases_getInstance().r2f_1,Phases_getInstance().s2f_1,Phases_getInstance().t2f_1,Phases_getInstance().u2f_1]),this.g2v_1=t}function Phases_0(){Phases_instance_0=this,this.i29_1=new PipelinePhase("Before"),this.j29_1=new PipelinePhase("State"),this.k29_1=new PipelinePhase("Monitoring"),this.l29_1=new PipelinePhase("Engine"),this.m29_1=new PipelinePhase("Receive")}function Phases_getInstance_0(){return null==Phases_instance_0&&new Phases_0,Phases_instance_0}function HttpSendPipeline(t){Phases_getInstance_0(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_0().i29_1,Phases_getInstance_0().j29_1,Phases_getInstance_0().k29_1,Phases_getInstance_0().l29_1,Phases_getInstance_0().m29_1]),this.o2v_1=t}function get_BodyTypeAttributeKey(){return _init_properties_RequestBody_kt__bo3lwf(),BodyTypeAttributeKey}function _init_properties_RequestBody_kt__bo3lwf(){properties_initialized_RequestBody_kt_agyv1b||(properties_initialized_RequestBody_kt_agyv1b=!0,BodyTypeAttributeKey=new AttributeKey("BodyTypeAttributeKey"))}function DefaultHttpResponse(t,n){HttpResponse.call(this),this.p2v_1=t,this.q2v_1=n.f2a_1,this.r2v_1=n.a2a_1,this.s2v_1=n.d2a_1,this.t2v_1=n.b2a_1,this.u2v_1=n.g2a_1;var i=n.e2a_1,e=isInterface(i,ByteReadChannel)?i:null;this.v2v_1=null==e?Companion_getInstance().e1h():e,this.w2v_1=n.c2a_1}function HttpResponse(){}function get_request(t){return t.b2c().c2b()}function complete(t){var n=ensureNotNull(t.gm().kc(Key_instance));(isInterface(n,CompletableJob)?n:THROW_CCE()).ks()}function bodyAsText(t,n,i){var e=new $bodyAsTextCOROUTINE$13(t,n=n===VOID?Charsets_getInstance().q1k_1:n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()}function $bodyAsTextCOROUTINE$13(t,n,i){CoroutineImpl.call(this,i),this.f2w_1=t,this.g2w_1=n}function Phases_1(){Phases_instance_1=this,this.q29_1=new PipelinePhase("Receive"),this.r29_1=new PipelinePhase("Parse"),this.s29_1=new PipelinePhase("Transform"),this.t29_1=new PipelinePhase("State"),this.u29_1=new PipelinePhase("After")}function Phases_getInstance_1(){return null==Phases_instance_1&&new Phases_1,Phases_instance_1}function HttpResponsePipeline(t){Phases_getInstance_1(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_1().q29_1,Phases_getInstance_1().r29_1,Phases_getInstance_1().s29_1,Phases_getInstance_1().t29_1,Phases_getInstance_1().u29_1]),this.r2w_1=t}function Phases_2(){Phases_instance_2=this,this.v2f_1=new PipelinePhase("Before"),this.w2f_1=new PipelinePhase("State"),this.x2f_1=new PipelinePhase("After")}function Phases_getInstance_2(){return null==Phases_instance_2&&new Phases_2,Phases_instance_2}function HttpReceivePipeline(t){Phases_getInstance_2(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_2().v2f_1,Phases_getInstance_2().w2f_1,Phases_getInstance_2().x2f_1]),this.z2w_1=t}function HttpResponseContainer(t,n){this.a2b_1=t,this.b2b_1=n}function checkCapabilities(t){var n,i=t.a2x_1.x28_1.k1o(get_ENGINE_CAPABILITIES_KEY()),e=null==i?null:i.d2();if(null==e)n=null;else{for(var r=ArrayList_init_$Create$(),s=e.v();s.w();){var u=s.y();null!=u&&isInterface(u,HttpClientPlugin)&&r.s(u)}n=r}if(null==n);else for(var o=n.v();o.w();){var _=o.y();if(null==pluginOrNull(t.b2x_1,_))throw IllegalArgumentException_init_$Create$(toString("Consider installing "+_+" plugin because the request requires it to be installed"))}}function HttpStatement$execute$slambda(t){CoroutineImpl.call(this,t)}function HttpStatement$execute$slambda_0(t){var n=new HttpStatement$execute$slambda(t),i=function(t,i){return n.l2x(t,i)};return i.$arity=1,i}function $executeCOROUTINE$14(t,n,i){CoroutineImpl.call(this,i),this.u2x_1=t,this.v2x_1=n}function $executeUnsafeCOROUTINE$15(t,n){CoroutineImpl.call(this,n),this.l2y_1=t}function $cleanupCOROUTINE$16(t,n,i){CoroutineImpl.call(this,i),this.w2y_1=t,this.x2y_1=n}function HttpStatement(t,n){this.a2x_1=t,this.b2x_1=n,checkCapabilities(this)}function observable(t,n,i,e){return writer(GlobalScope_instance,n,!0,observable$slambda_0(i,t,e,null)).hy()}function observable$slambda(t,n,i,e){this.m2z_1=t,this.n2z_1=n,this.o2z_1=i,CoroutineImpl.call(this,e)}function observable$slambda_0(t,n,i,e){var r=new observable$slambda(t,n,i,e),s=function(t,n){return r.z2c(t,n)};return s.$arity=1,s}function get_HttpRequestCreated(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestCreated}function get_HttpRequestIsReadyForSending(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestIsReadyForSending}function get_HttpResponseReceived(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceived}function get_HttpResponseReceiveFailed(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceiveFailed}function get_HttpResponseCancelled(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseCancelled}function HttpResponseReceiveFail(t,n){this.z2z_1=t,this.a30_1=n}function _init_properties_ClientEvents_kt__xuvbz8(){properties_initialized_ClientEvents_kt_rdee4m||(properties_initialized_ClientEvents_kt_rdee4m=!0,HttpRequestCreated=new EventDefinition,HttpRequestIsReadyForSending=new EventDefinition,HttpResponseReceived=new EventDefinition,HttpResponseReceiveFailed=new EventDefinition,HttpResponseCancelled=new EventDefinition)}function EmptyContent(){EmptyContent_instance=this,NoContent.call(this),this.c30_1=new Long(0,0)}function EmptyContent_getInstance(){return null==EmptyContent_instance&&new EmptyContent,EmptyContent_instance}function buildHeaders(t){t=t===VOID?buildHeaders$lambda:t;var n=new HeadersBuilder;return t(n),n.y2()}function buildHeaders$lambda(t){return Unit_instance}function HttpClient_1(t){return t=t===VOID?HttpClient$lambda_3:t,HttpClient_0(JsClient(),t)}function HttpClient$lambda_3(t){return Unit_instance}function ioDispatcher(){return Dispatchers_getInstance().vs_1}function JsClient(){return Js_instance}function Js(){}function Js_getInstance(){return Js_instance}function createWebSocket($this,urlString_capturingHack,headers){for(var this_0=headers.g1q(),destination=ArrayList_init_$Create$(),tmp0_iterator=this_0.v();tmp0_iterator.w();){var element=tmp0_iterator.y();equals_0(element,"sec-websocket-protocol",!0)&&destination.s(element)}for(var protocolHeaderNames=destination,destination_0=ArrayList_init_$Create$(),tmp0_iterator_0=protocolHeaderNames.v();tmp0_iterator_0.w();){var element_0=tmp0_iterator_0.y(),tmp0_safe_receiver=headers.f1q(element_0);null==tmp0_safe_receiver||destination_0.s(tmp0_safe_receiver)}var this_1=flatten(destination_0),protocols=copyToArray(this_1),tmp;if(2===get_platform(PlatformUtils_getInstance()).y9_1)tmp=new WebSocket(urlString_capturingHack,protocols);else{var ws_capturingHack=eval("require")("ws"),headers_capturingHack=new JsClientEngine$createWebSocket$headers_capturingHack$1;headers.i1q(JsClientEngine$createWebSocket$lambda(headers_capturingHack)),tmp=new ws_capturingHack(urlString_capturingHack,protocols,{headers:headers_capturingHack})}return tmp}function executeWebSocketRequest(t,n,i,e){var r=new $executeWebSocketRequestCOROUTINE$18(t,n,i,e);return r.ec_1=Unit_instance,r.fc_1=null,r.pc()}function JsClientEngine$createWebSocket$headers_capturingHack$1(){}function JsClientEngine$createWebSocket$lambda(t){return function(n,i){return t[n]=joinToString(i,","),Unit_instance}}function $executeCOROUTINE$17(t,n,i){CoroutineImpl.call(this,i),this.b31_1=t,this.c31_1=n}function $executeWebSocketRequestCOROUTINE$18(t,n,i,e){CoroutineImpl.call(this,e),this.m30_1=t,this.n30_1=n,this.o30_1=i}function JsClientEngine(t){if(HttpClientEngineBase.call(this,"ktor-js"),this.l31_1=t,this.m31_1=setOf_0([Plugin_getInstance_4(),WebSocketCapability_instance]),null!=this.l31_1.o2f_1)throw IllegalStateException_init_$Create$(toString("Proxy unsupported in Js engine."))}function mapToKtor(t){return buildHeaders(mapToKtor$lambda(t))}function awaitConnection(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());if(i.fr(),!i.lp()){var e=awaitConnection$lambda(i,t);t.addEventListener("open",e),t.addEventListener("error",e),i.op(awaitConnection$lambda_0(t,e))}return i.gp()}function asString(t){var n=StringBuilder_init_$Create$(),i=JSON;return n.r5(i.stringify(t,["message","target","type","isTrusted"])),n.toString()}function JsError(t){extendThrowable(this,"Error from javascript["+t+"]."),captureStack(this,JsError),this.n31_1=t}function mapToKtor$lambda$lambda(t){return function(n,i){return t.p1q(i,n),Unit_instance}}function mapToKtor$lambda(t){return function(n){return t.forEach(mapToKtor$lambda$lambda(n)),Unit_instance}}function awaitConnection$lambda(t,n){return function(i){var e=i.type;if("open"===e){var r=t,s=_Result___init__impl__xyqfz8(n);r.qc(s)}else if("error"===e){var u=t,o=WebSocketException_init_$Create$(asString(i)),_=_Result___init__impl__xyqfz8(createFailure(o));u.qc(_)}return Unit_instance}}function awaitConnection$lambda_0(t,n){return function(i){return t.removeEventListener("open",n),t.removeEventListener("error",n),null!=i&&t.close(),Unit_instance}}function toRaw(t,n,i,e){var r=new $toRawCOROUTINE$19(t,n,i,e);return r.ec_1=Unit_instance,r.fc_1=null,r.pc()}function buildObject(t){var n={},i=null==n||null!=n?n:THROW_CCE();return t(i),i}function toRaw$lambda(t){return function(n,i){return t[n]=i,Unit_instance}}function toRaw$slambda(t,n){this.k32_1=t,CoroutineImpl.call(this,n)}function toRaw$slambda_0(t,n){var i=new toRaw$slambda(t,n),e=function(t,n){return i.z2c(t,n)};return e.$arity=1,e}function toRaw$lambda_0(t,n,i,e){return function(r){var s;r.method=t.t2d_1.h20_1,r.headers=n,s=i.c29_1?"follow":"manual",r.redirect=s;var u=e;return null==u||(r.body=new Uint8Array(toTypedArray(u))),Unit_instance}}function $toRawCOROUTINE$19(t,n,i,e){CoroutineImpl.call(this,e),this.w31_1=t,this.x31_1=n,this.y31_1=i}function asByteArray(t){return new Int8Array(t.buffer,t.byteOffset,t.length)}function readBodyBrowser(t,n){var i=n.body;return null==i?Companion_getInstance().e1h():channelFromStream(t,i)}function channelFromStream(t,n){return writer(t,VOID,VOID,channelFromStream$slambda_0(n,null)).hy()}function readChunk(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());return i.fr(),t.read().then(readChunk$lambda(i)).catch(readChunk$lambda_0(i)),i.gp()}function channelFromStream$slambda(t,n){this.u32_1=t,CoroutineImpl.call(this,n)}function channelFromStream$slambda_0(t,n){var i=new channelFromStream$slambda(t,n),e=function(t,n){return i.z2c(t,n)};return e.$arity=1,e}function readChunk$lambda(t){return function(n){var i=n.value,e=n.done||null==i?null:i,r=_Result___init__impl__xyqfz8(e);return t.qc(r),Unit_instance}}function readChunk$lambda_0(t){return function(n){var i=t,e=_Result___init__impl__xyqfz8(createFailure(n));return i.qc(e),Unit_instance}}function commonFetch(t,n,i){var e=new CancellableContinuationImpl(intercepted(i),get_MODE_CANCELLABLE());e.fr();var r=AbortController_0();n.signal=r.signal,e.op(commonFetch$lambda(r));var s=2===get_platform(PlatformUtils_getInstance()).y9_1?fetch(t,n):jsRequireNodeFetch()(t,n),u=commonFetch$lambda_0(e);return s.then(u,commonFetch$lambda_1(e)),e.gp()}function readBody(t,n){return 3===get_platform(PlatformUtils_getInstance()).y9_1?readBodyNode(t,n):readBodyBrowser(t,n)}function AbortController_0(){var tmp;if(2===get_platform(PlatformUtils_getInstance()).y9_1)tmp=new AbortController;else{var controller=eval("require")("abort-controller");tmp=new controller}return tmp}function jsRequireNodeFetch(){var tmp;try{tmp=eval("require")("node-fetch")}catch(t){var tmp_0,cause=t;throw Error_init_$Create$("Error loading module 'node-fetch': "+cause)}return tmp}function commonFetch$lambda(t){return function(n){return t.abort(),Unit_instance}}function commonFetch$lambda_0(t){return function(n){var i=_Result___init__impl__xyqfz8(n);return t.qc(i),Unit_instance}}function commonFetch$lambda_1(t){return function(n){var i=Error_init_$Create$_0("Fail to fetch",n),e=_Result___init__impl__xyqfz8(createFailure(i));return t.qc(e),Unit_instance}}function readBodyNode(t,n){return writer(t,VOID,VOID,readBodyNode$slambda_0(n,null)).hy()}function readBodyNode$slambda$lambda(t,n){return function(i){return _ChannelResult___get_isSuccess__impl__odq1z9(t.r11(asByteArray(new Uint8Array(i)))),n.pause()}}function readBodyNode$slambda$lambda_0(t,n){return function(i){var e=new JsError(i);return t.u11(e),n.hy().u11(e)}}function readBodyNode$slambda$lambda_1(t){return function(){return t.w11()}}function readBodyNode$slambda(t,n){this.i33_1=t,CoroutineImpl.call(this,n)}function readBodyNode$slambda_0(t,n){var i=new readBodyNode$slambda(t,n),e=function(t,n){return i.z2c(t,n)};return e.$arity=1,e}function platformRequestDefaultTransform(t,n,i){return null}function platformResponseDefaultTransformers(t){}function isReservedStatusCode(t,n){var i=Companion_getInstance_5().u25(t);return null==i||equals(i,Codes_CLOSED_ABNORMALLY_getInstance())}function JsWebSocketSession$lambda(t){return function(n){var i,e=n,r=e.data;if(r instanceof ArrayBuffer){var s=new Int8Array(r);i=Binary_init_$Create$(!1,s)}else{if(null==r||"string"!=typeof r){var u=IllegalStateException_init_$Create$("Unknown frame type: "+e.type);throw t.q33_1.js(u),u}i=Text_init_$Create$(r)}var o=i;return t.r33_1.r11(o),Unit_instance}}function JsWebSocketSession$lambda_0(t){return function(n){var i=WebSocketException_init_$Create$(""+n);return t.q33_1.js(i),t.r33_1.u11(i),t.s33_1.y11(),Unit_instance}}function JsWebSocketSession$lambda_1(t){return function(n){var i=n.code,e=null!=i&&"number"==typeof i?i:THROW_CCE(),r=n.reason,s=new CloseReason(e,null!=r&&"string"==typeof r?r:THROW_CCE());return t.q33_1.hs(s),t.r33_1.r11(Close_init_$Create$(s)),t.r33_1.w11(),t.s33_1.y11(),Unit_instance}}function JsWebSocketSession$slambda(t,n){this.e34_1=t,CoroutineImpl.call(this,n)}function JsWebSocketSession$slambda_0(t,n){var i=new JsWebSocketSession$slambda(t,n),e=function(t,n){return i.a1h(t,n)};return e.$arity=1,e}function JsWebSocketSession$lambda_2(t){return function(n){return null==n?t.p33_1.close():t.p33_1.close(Codes_NORMAL_getInstance().r25_1,"Client failed"),Unit_instance}}function JsWebSocketSession(t,n){this.o33_1=t,this.p33_1=n,this.q33_1=CompletableDeferred(),Factory_getInstance(),this.r33_1=Channel(2147483647),Factory_getInstance(),this.s33_1=Channel(2147483647),this.t33_1=this.r33_1,this.u33_1=this.s33_1,this.v33_1=this.q33_1,this.p33_1.binaryType="arraybuffer",this.p33_1.addEventListener("message",JsWebSocketSession$lambda(this)),this.p33_1.addEventListener("error",JsWebSocketSession$lambda_0(this)),this.p33_1.addEventListener("close",JsWebSocketSession$lambda_1(this)),launch(this,VOID,VOID,JsWebSocketSession$slambda_0(this,null));var i=this.o33_1.kc(Key_instance);null==i||i.in(JsWebSocketSession$lambda_2(this))}function unwrapCancellationException(t){for(var n=t;n instanceof CancellationException;){if(equals(n,n.cause))return t;n=n.cause}return null==n?t:n}return setMetadataFor(HttpClient$slambda,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClient$slambda_1,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$0,"$executeCOROUTINE$0",classMeta,CoroutineImpl),setMetadataFor(HttpClient,"HttpClient",classMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientConfig,"HttpClientConfig",classMeta,VOID,VOID,HttpClientConfig),setMetadataFor(Companion,"Companion",objectMeta),setMetadataFor($bodyNullableCOROUTINE$1,"$bodyNullableCOROUTINE$1",classMeta,CoroutineImpl),setMetadataFor(HttpClientCall,"HttpClientCall",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),setMetadataFor(DoubleReceiveException,"DoubleReceiveException",classMeta,IllegalStateException),setMetadataFor(NoTransformationFoundException,"NoTransformationFoundException",classMeta,UnsupportedOperationException),setMetadataFor(SavedHttpCall,"SavedHttpCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(HttpRequest_0,"HttpRequest",interfaceMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpRequest,"SavedHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpResponse,"HttpResponse",classMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpResponse,"SavedHttpResponse",classMeta,HttpResponse),setMetadataFor($saveCOROUTINE$3,"$saveCOROUTINE$3",classMeta,CoroutineImpl),setMetadataFor(UnsupportedContentTypeException,"UnsupportedContentTypeException",classMeta,IllegalStateException),setMetadataFor(ObservableContent$content$slambda,"ObservableContent$content$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(ObservableContent,"ObservableContent",classMeta,ReadChannelContent),setMetadataFor(HttpClientEngine$install$slambda,"HttpClientEngine$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClientEngine$executeWithinCallContext$slambda,"HttpClientEngine$executeWithinCallContext$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeWithinCallContextCOROUTINE$4,"$executeWithinCallContextCOROUTINE$4",classMeta,CoroutineImpl),setMetadataFor(HttpClientEngine,"HttpClientEngine",interfaceMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(ClientEngineClosedException,"ClientEngineClosedException",classMeta,IllegalStateException,VOID,ClientEngineClosedException),setMetadataFor(HttpClientEngineBase,"HttpClientEngineBase",classMeta,VOID,[HttpClientEngine],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientEngineConfig,"HttpClientEngineConfig",classMeta,VOID,VOID,HttpClientEngineConfig),setMetadataFor(Companion_0,"Companion",objectMeta),setMetadataFor(KtorCallContextElement,"KtorCallContextElement",classMeta,VOID,[Element]),setMetadataFor(HttpClientPlugin,"HttpClientPlugin",interfaceMeta),setMetadataFor(Plugin,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(BodyProgress$handle$slambda,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress$handle$slambda_1,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress,"BodyProgress",classMeta),setMetadataFor(ResponseException,"ResponseException",classMeta,IllegalStateException),setMetadataFor(RedirectResponseException,"RedirectResponseException",classMeta,ResponseException),setMetadataFor(ClientRequestException,"ClientRequestException",classMeta,ResponseException),setMetadataFor(ServerResponseException,"ServerResponseException",classMeta,ResponseException),setMetadataFor(addDefaultResponseValidation$lambda$slambda,"addDefaultResponseValidation$lambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$1$content$1,VOID,classMeta,ByteArrayContent),setMetadataFor(defaultTransformers$1$content$2,VOID,classMeta,ReadChannelContent),setMetadataFor(defaultTransformers$slambda,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(defaultTransformers$slambda$slambda,"defaultTransformers$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$slambda_1,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_1,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_3,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config,"Config",classMeta,VOID,VOID,Config),setMetadataFor(Companion_1,"Companion",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor($validateResponseCOROUTINE$5,"$validateResponseCOROUTINE$5",classMeta,CoroutineImpl),setMetadataFor($processExceptionCOROUTINE$6,"$processExceptionCOROUTINE$6",classMeta,CoroutineImpl),setMetadataFor(HttpCallValidator,"HttpCallValidator",classMeta,VOID,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(ExceptionHandlerWrapper,"ExceptionHandlerWrapper",classMeta),setMetadataFor(RequestExceptionHandlerWrapper,"RequestExceptionHandlerWrapper",classMeta),setMetadataFor(HttpRequest$1,VOID,classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpPlainText$Plugin$install$slambda,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpPlainText$Plugin$install$slambda_1,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config_0,"Config",classMeta,VOID,VOID,Config_0),setMetadataFor(Plugin_0,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(sam$kotlin_Comparator$0,"sam$kotlin_Comparator$0",classMeta),setMetadataFor(HttpPlainText,"HttpPlainText",classMeta),setMetadataFor(HttpRedirect$Plugin$install$slambda,"HttpRedirect$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($handleCallCOROUTINE$7,"$handleCallCOROUTINE$7",classMeta,CoroutineImpl),setMetadataFor(Config_1,"Config",classMeta,VOID,VOID,Config_1),setMetadataFor(Plugin_1,"Plugin",objectMeta,VOID,[HttpClientPlugin],VOID,VOID,VOID,[4]),setMetadataFor(HttpRedirect,"HttpRedirect",classMeta),setMetadataFor(HttpRequestLifecycle$Plugin$install$slambda,"HttpRequestLifecycle$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Plugin_2,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpRequestLifecycle,"HttpRequestLifecycle",classMeta),setMetadataFor(HttpSend$Plugin$install$slambda,"HttpSend$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$8,"$executeCOROUTINE$8",classMeta,CoroutineImpl),setMetadataFor(Config_2,"Config",classMeta,VOID,VOID,Config_2),setMetadataFor(Plugin_3,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(Sender,"Sender",interfaceMeta,VOID,VOID,VOID,VOID,VOID,[1]),setMetadataFor(InterceptedSender,"InterceptedSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(DefaultSender,"DefaultSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(HttpSend,"HttpSend",classMeta),setMetadataFor(SendCountExceedException,"SendCountExceedException",classMeta,IllegalStateException),setMetadataFor(Companion_2,"Companion",objectMeta),setMetadataFor(HttpTimeout$Plugin$install$slambda$slambda,"HttpTimeout$Plugin$install$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpTimeout$Plugin$install$slambda,"HttpTimeout$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpTimeoutCapabilityConfiguration,"HttpTimeoutCapabilityConfiguration",classMeta,VOID,VOID,HttpTimeoutCapabilityConfiguration_init_$Create$),setMetadataFor(Plugin_4,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpTimeout,"HttpTimeout",classMeta),setMetadataFor(HttpRequestTimeoutException,"HttpRequestTimeoutException",classMeta,IOException),setMetadataFor(DelegatedCall,"DelegatedCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(DelegatedRequest,"DelegatedRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(DelegatedResponse,"DelegatedResponse",classMeta,HttpResponse),setMetadataFor(WebSocketCapability,"WebSocketCapability",objectMeta),setMetadataFor(WebSocketException,"WebSocketException",classMeta,IllegalStateException),setMetadataFor(ClientUpgradeContent,"ClientUpgradeContent",classMeta,NoContent,VOID,VOID,VOID,VOID,[1]),setMetadataFor(DefaultHttpRequest,"DefaultHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(Companion_3,"Companion",objectMeta),setMetadataFor(HttpRequestBuilder,"HttpRequestBuilder",classMeta,VOID,VOID,HttpRequestBuilder),setMetadataFor(HttpRequestData,"HttpRequestData",classMeta),setMetadataFor(HttpResponseData,"HttpResponseData",classMeta),setMetadataFor(Phases,"Phases",objectMeta),setMetadataFor(HttpRequestPipeline,"HttpRequestPipeline",classMeta,Pipeline,VOID,HttpRequestPipeline,VOID,VOID,[2]),setMetadataFor(Phases_0,"Phases",objectMeta),setMetadataFor(HttpSendPipeline,"HttpSendPipeline",classMeta,Pipeline,VOID,HttpSendPipeline,VOID,VOID,[2]),setMetadataFor(DefaultHttpResponse,"DefaultHttpResponse",classMeta,HttpResponse),setMetadataFor($bodyAsTextCOROUTINE$13,"$bodyAsTextCOROUTINE$13",classMeta,CoroutineImpl),setMetadataFor(Phases_1,"Phases",objectMeta),setMetadataFor(HttpResponsePipeline,"HttpResponsePipeline",classMeta,Pipeline,VOID,HttpResponsePipeline,VOID,VOID,[2]),setMetadataFor(Phases_2,"Phases",objectMeta),setMetadataFor(HttpReceivePipeline,"HttpReceivePipeline",classMeta,Pipeline,VOID,HttpReceivePipeline,VOID,VOID,[2]),setMetadataFor(HttpResponseContainer,"HttpResponseContainer",classMeta),setMetadataFor(HttpStatement$execute$slambda,"HttpStatement$execute$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeCOROUTINE$14,"$executeCOROUTINE$14",classMeta,CoroutineImpl),setMetadataFor($executeUnsafeCOROUTINE$15,"$executeUnsafeCOROUTINE$15",classMeta,CoroutineImpl),setMetadataFor($cleanupCOROUTINE$16,"$cleanupCOROUTINE$16",classMeta,CoroutineImpl),setMetadataFor(HttpStatement,"HttpStatement",classMeta,VOID,VOID,VOID,VOID,VOID,[1,0]),setMetadataFor(observable$slambda,"observable$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpResponseReceiveFail,"HttpResponseReceiveFail",classMeta),setMetadataFor(EmptyContent,"EmptyContent",objectMeta,NoContent),setMetadataFor(Js,"Js",objectMeta),setMetadataFor(JsClientEngine$createWebSocket$headers_capturingHack$1,VOID,classMeta),setMetadataFor($executeCOROUTINE$17,"$executeCOROUTINE$17",classMeta,CoroutineImpl),setMetadataFor($executeWebSocketRequestCOROUTINE$18,"$executeWebSocketRequestCOROUTINE$18",classMeta,CoroutineImpl),setMetadataFor(JsClientEngine,"JsClientEngine",classMeta,HttpClientEngineBase,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(JsError,"JsError",classMeta,Error),setMetadataFor(toRaw$slambda,"toRaw$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($toRawCOROUTINE$19,"$toRawCOROUTINE$19",classMeta,CoroutineImpl),setMetadataFor(channelFromStream$slambda,"channelFromStream$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(readBodyNode$slambda,"readBodyNode$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession$slambda,"JsWebSocketSession$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession,"JsWebSocketSession",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),protoOf(HttpClient$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpClient$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClient$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,!(this.k27_1 instanceof HttpClientCall)){var n="Error: HttpClientCall expected, but found "+toString(this.k27_1)+"("+getKClassFromExpression(this.k27_1)+").";throw IllegalStateException_init_$Create$(toString(n))}if(this.cc_1=1,(t=this.i27_1.v26_1.b1t(Unit_instance,this.k27_1.t27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.l27_1=t,this.k27_1.u27(this.l27_1),this.cc_1=2,(t=this.j27_1.g1s(this.k27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var i=t;if(3===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpClient$slambda).n27=function(t,n,i){var e=new HttpClient$slambda(this.i27_1,i);return e.j27_1=t,e.k27_1=n,e},protoOf(HttpClient$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpClient$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpClient$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.dc_1=2,this.cc_1=1,(t=this.e28_1.h1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var n=this.fc_1;throw this.d28_1.y26_1.k25(get_HttpResponseReceiveFailed(),new HttpResponseReceiveFail(this.e28_1.c1t_1.t27(),n)),n}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,Unit_instance}}catch(t){var i=t;if(3===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpClient$slambda_1).h28=function(t,n,i){var e=new HttpClient$slambda_1(this.d28_1,i);return e.e28_1=t,e.f28_1=n,e},protoOf($executeCOROUTINE$0).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.q28_1.y26_1.k25(get_HttpRequestCreated(),this.r28_1),this.cc_1=1,(t=this.q28_1.s26_1.b1t(this.r28_1,this.r28_1.v28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t instanceof HttpClientCall?t:THROW_CCE();case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpClient).gm=function(){return this.r26_1},protoOf(HttpClient).v29=function(t,n){var i=new $executeCOROUTINE$0(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpClient).e1j=function(){if(!this.p26_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;for(var t=this.w26_1.j1o(get_PLUGIN_INSTALLED_LIST()),n=t.p1o().v();n.w();){var i=n.y(),e=t.j1o(i instanceof AttributeKey?i:THROW_CCE());isInterface(e,Closeable)&&e.e1j()}this.q26_1.ks(),this.o26_1&&this.m26_1.e1j()},protoOf(HttpClient).toString=function(){return"HttpClient["+this.m26_1+"]"},protoOf(HttpClientConfig).z29=function(t,n){var i=this.z28_1.q2(t.i2()),e=this.z28_1,r=t.i2(),s=HttpClientConfig$install$lambda_0(i,n);if(e.g2(r,s),this.y28_1.n2(t.i2()))return Unit_instance;var u=this.y28_1,o=t.i2(),_=HttpClientConfig$install$lambda_1(t);u.g2(o,_)},protoOf(HttpClientConfig).n29=function(t,n,i){var e;return n=n===VOID?HttpClientConfig$install$lambda:n,i===VOID?(this.z29(t,n),e=Unit_instance):e=i.z29.call(this,t,n),e},protoOf(HttpClientConfig).o29=function(t,n){this.a29_1.g2(t,n)},protoOf(HttpClientConfig).h29=function(t){for(var n=this.y28_1.e2().v();n.w();)n.y()(t);for(var i=this.a29_1.e2().v();i.w();)i.y()(t)},protoOf(HttpClientConfig).p29=function(t){this.c29_1=t.c29_1,this.d29_1=t.d29_1,this.e29_1=t.e29_1;var n=this.y28_1,i=t.y28_1;n.h2(i);var e=this.z28_1,r=t.z28_1;e.h2(r);var s=this.a29_1,u=t.a29_1;s.h2(u)},protoOf($bodyNullableCOROUTINE$1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=10,this.cc_1=1;continue t;case 1:this.cc_1=2;continue t;case 2:if(this.dc_1=9,this.dc_1=8,instanceOf(this.r2a_1.t27(),this.s2a_1.t1t_1)){this.t2a_1=this.r2a_1.t27(),this.dc_1=10,this.cc_1=7;continue t}this.cc_1=3;continue t;case 3:if(!this.r2a_1.y2a()&&!this.r2a_1.p27_1.atomicfu$compareAndSet(!1,!0))throw new DoubleReceiveException(this.r2a_1);if(this.u2a_1=this.r2a_1.h2a().k1o(Companion_getInstance_6().i2a_1),null==this.u2a_1){if(this.cc_1=4,(t=this.r2a_1.z2a(this))===get_COROUTINE_SUSPENDED())return t;continue t}this.v2a_1=this.u2a_1,this.cc_1=5;continue t;case 4:this.v2a_1=t,this.cc_1=5;continue t;case 5:if(this.w2a_1=this.v2a_1,this.x2a_1=new HttpResponseContainer(this.s2a_1,this.w2a_1),this.cc_1=6,(t=this.r2a_1.o27_1.t26_1.b1t(this.r2a_1,this.x2a_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var n=t.b2b_1,i=equals(n,NullBody_instance)?null:n;if(null!=i&&!instanceOf(i,this.s2a_1.t1t_1)){var e=getKClassFromExpression(i),r=this.s2a_1.t1t_1;throw new NoTransformationFoundException(this.r2a_1.t27(),e,r)}this.t2a_1=i,this.dc_1=10,this.cc_1=7;continue t;case 7:var s=this.t2a_1;return this.dc_1=10,complete(this.r2a_1.t27()),s;case 8:if(this.dc_1=9,this.fc_1 instanceof Error){var u=this.fc_1;throw cancel_0(this.r2a_1.t27(),"Receive failed",u),u}throw this.fc_1;case 9:this.dc_1=10;var o=this.fc_1;throw complete(this.r2a_1.t27()),o;case 10:throw this.fc_1;case 11:return this.dc_1=10,complete(this.r2a_1.t27()),Unit_instance}}catch(t){var _=t;if(10===this.dc_1)throw _;this.cc_1=this.dc_1,this.fc_1=_}},protoOf(HttpClientCall).gm=function(){return this.t27().gm()},protoOf(HttpClientCall).h2a=function(){return this.c2b().h2a()},protoOf(HttpClientCall).c2b=function(){var t=this.q27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("request")},protoOf(HttpClientCall).t27=function(){var t=this.r27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("response")},protoOf(HttpClientCall).y2a=function(){return this.s27_1},protoOf(HttpClientCall).z2a=function(t){return this.t27().d2b()},protoOf(HttpClientCall).e2b=function(t,n){var i=new $bodyNullableCOROUTINE$1(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpClientCall).toString=function(){return"HttpClientCall["+this.c2b().f2b()+", "+this.t27().g2b()+"]"},protoOf(HttpClientCall).u27=function(t){this.r27_1=t},protoOf(DoubleReceiveException).d6=function(){return this.h2b_1},protoOf(NoTransformationFoundException).d6=function(){return this.i2b_1},protoOf(SavedHttpCall).z2a=function(t){return ByteReadChannel_0(this.x2b_1)},protoOf(SavedHttpCall).y2a=function(){return this.y2b_1},protoOf(SavedHttpRequest).b2c=function(){return this.z2b_1},protoOf(SavedHttpRequest).h2a=function(){return this.a2c_1.h2a()},protoOf(SavedHttpRequest).gm=function(){return this.a2c_1.gm()},protoOf(SavedHttpRequest).y1z=function(){return this.a2c_1.y1z()},protoOf(SavedHttpRequest).c2c=function(){return this.a2c_1.c2c()},protoOf(SavedHttpRequest).f2b=function(){return this.a2c_1.f2b()},protoOf(SavedHttpResponse).b2c=function(){return this.d2c_1},protoOf(SavedHttpResponse).g2b=function(){return this.f2c_1},protoOf(SavedHttpResponse).m2c=function(){return this.g2c_1},protoOf(SavedHttpResponse).n2c=function(){return this.h2c_1},protoOf(SavedHttpResponse).o2c=function(){return this.i2c_1},protoOf(SavedHttpResponse).y1z=function(){return this.j2c_1},protoOf(SavedHttpResponse).gm=function(){return this.k2c_1},protoOf(SavedHttpResponse).d2b=function(){return this.l2c_1},protoOf($saveCOROUTINE$3).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.r2b_1.t27().d2b().z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=readBytes(t);return new SavedHttpCall(this.r2b_1.o27_1,this.r2b_1.c2b(),this.r2b_1.t27(),n);case 2:throw this.fc_1}}catch(t){var i=t;if(2===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(ObservableContent$content$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(ObservableContent$content$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(ObservableContent$content$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.x2c_1.c2d_1.b25(this.y2c_1.hy(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(ObservableContent$content$slambda).a2d=function(t,n){var i=new ObservableContent$content$slambda(this.x2c_1,n);return i.y2c_1=t,i},protoOf(ObservableContent).w24=function(){return this.c2d_1.w24()},protoOf(ObservableContent).x24=function(){return this.c2d_1.x24()},protoOf(ObservableContent).y1z=function(){return this.c2d_1.y1z()},protoOf(ObservableContent).z24=function(){return observable(this.f2d_1,this.d2d_1,this.x24(),this.e2d_1)},protoOf(HttpClientEngine$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpClientEngine$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClientEngine$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=3;var n=new HttpRequestBuilder;n.r2e(this.k2e_1.c1t_1);var i=this.l2e_1;if(null==i){n.v28_1=NullBody_instance;var e,r=JsType_instance,s=PrimitiveClasses_getInstance().x6();try{e=createKType(PrimitiveClasses_getInstance().x6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;e=null}n.s2e(typeInfoImpl(r,s,e))}else if(i instanceof OutgoingContent)n.v28_1=i,n.s2e(null);else{n.v28_1=i;var u,o=JsType_instance,_=PrimitiveClasses_getInstance().x6();try{u=createKType(PrimitiveClasses_getInstance().x6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;u=null}n.s2e(typeInfoImpl(o,_,u))}this.m2e_1=n,this.i2e_1.y26_1.k25(get_HttpRequestIsReadyForSending(),this.m2e_1);var h=this.m2e_1.y2();if(h.x2d_1.m1o(get_CLIENT_CONFIG(),this.i2e_1.z26_1),this.n2e_1=h,validateHeaders(this.n2e_1),checkExtensions(this.j2e_1,this.n2e_1),this.cc_1=1,(t=executeWithinCallContext(this.j2e_1,this.n2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.o2e_1=t,this.p2e_1=HttpClientCall_init_$Create$(this.i2e_1,this.n2e_1,this.o2e_1),this.q2e_1=this.p2e_1.t27(),this.i2e_1.y26_1.k25(get_HttpResponseReceived(),this.q2e_1),get_job(this.q2e_1.gm()).in(HttpClientEngine$install$slambda$lambda(this.i2e_1,this.q2e_1)),this.cc_1=2,(t=this.k2e_1.g1s(this.p2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var a=t;if(3===this.dc_1)throw a;this.cc_1=this.dc_1,this.fc_1=a}},protoOf(HttpClientEngine$install$slambda).n27=function(t,n,i){var e=new HttpClientEngine$install$slambda(this.i2e_1,this.j2e_1,i);return e.k2e_1=t,e.l2e_1=n,e},protoOf(HttpClientEngine$executeWithinCallContext$slambda).e2f=function(t,n){var i=this.b1h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpClientEngine$executeWithinCallContext$slambda).cd=function(t,n){return this.e2f(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpClientEngine$executeWithinCallContext$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,_get_closed__iwkfs1(this.b2f_1))throw new ClientEngineClosedException;if(this.cc_1=1,(t=this.b2f_1.f2f(this.c2f_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpClientEngine$executeWithinCallContext$slambda).b1h=function(t,n){var i=new HttpClientEngine$executeWithinCallContext$slambda(this.b2f_1,this.c2f_1,n);return i.d2f_1=t,i},protoOf($executeWithinCallContextCOROUTINE$4).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,(t=createCallContext(this.o2d_1,this.p2d_1.w2d_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.q2d_1=t,this.r2d_1=this.q2d_1.pg(new KtorCallContextElement(this.q2d_1)),this.cc_1=2,(t=async(this.o2d_1,this.r2d_1,VOID,HttpClientEngine$executeWithinCallContext$slambda_0(this.o2d_1,this.p2d_1,null)).wo(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(ClientEngineClosedException).e6=function(){return this.g2f_1},protoOf(HttpClientEngineBase).l2f=function(){return this.j2f_1},protoOf(HttpClientEngineBase).gm=function(){var t=this.k2f_1;return coroutineContext$factory(),t.j2()},protoOf(HttpClientEngineBase).e1j=function(){if(!this.i2f_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;var t=this.gm().kc(Key_instance),n=null!=t&&isInterface(t,CompletableJob)?t:null;if(null==n)return Unit_instance;n.ks()},protoOf(KtorCallContextElement).i2=function(){return Companion_instance_1},protoOf(Plugin).i2=function(){return this.y2f_1},protoOf(Plugin).z2f=function(t){return new BodyProgress},protoOf(Plugin).x29=function(t){return this.z2f(t)},protoOf(Plugin).a2g=function(t,n){handle(t,n)},protoOf(Plugin).y29=function(t,n){return this.a2g(t instanceof BodyProgress?t:THROW_CCE(),n)},protoOf(BodyProgress$handle$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(BodyProgress$handle$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n,i=this.j2g_1.c1t_1.x28_1.k1o(get_UploadProgressListenerAttributeKey());if(null==i)return Unit_instance;n=i,this.l2g_1=n;var e=this.k2g_1;if(this.m2g_1=new ObservableContent(e instanceof OutgoingContent?e:THROW_CCE(),this.j2g_1.c1t_1.w28_1,this.l2g_1),this.cc_1=1,(t=this.j2g_1.g1s(this.m2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var r=t;if(2===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(BodyProgress$handle$slambda).n27=function(t,n,i){var e=new BodyProgress$handle$slambda(i);return e.j2g_1=t,e.k2g_1=n,e},protoOf(BodyProgress$handle$slambda_1).z2g=function(t,n,i){var e=this.a2h(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(BodyProgress$handle$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.z2g(e,n instanceof HttpResponse?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n,i=this.w2g_1.b2c().c2b().h2a().k1o(get_DownloadProgressListenerAttributeKey());if(null==i)return Unit_instance;if(n=i,this.x2g_1=n,this.y2g_1=withObservableDownload(this.w2g_1,this.x2g_1),this.cc_1=1,(t=this.v2g_1.g1s(this.y2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var e=t;if(2===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(BodyProgress$handle$slambda_1).a2h=function(t,n,i){var e=new BodyProgress$handle$slambda_1(i);return e.v2g_1=t,e.w2g_1=n,e},protoOf(RedirectResponseException).d6=function(){return this.d2h_1},protoOf(ClientRequestException).d6=function(){return this.f2h_1},protoOf(ServerResponseException).d6=function(){return this.h2h_1},protoOf(addDefaultResponseValidation$lambda$slambda).y2h=function(t,n){var i=this.z2h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(addDefaultResponseValidation$lambda$slambda).cd=function(t,n){return this.y2h(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(addDefaultResponseValidation$lambda$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=5,this.r2h_1=this.q2h_1.b2c().h2a().j1o(get_ExpectSuccessAttributeKey()),!this.r2h_1)return get_LOGGER().y1t("Skipping default response validation for "+this.q2h_1.b2c().c2b().f2b()),Unit_instance;if(this.s2h_1=this.q2h_1.g2b().t22_1,this.t2h_1=this.q2h_1.b2c(),this.s2h_1<300||this.t2h_1.h2a().l1o(get_ValidateMark()))return Unit_instance;if(this.cc_1=1,(t=save(this.t2h_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.u2h_1=t,this.u2h_1.h2a().m1o(get_ValidateMark(),Unit_instance),this.v2h_1=this.u2h_1,this.w2h_1=this.v2h_1.t27(),this.dc_1=3,this.cc_1=2,(t=bodyAsText(this.w2h_1,VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.x2h_1=t,this.dc_1=5,this.cc_1=4;continue t;case 3:if(this.dc_1=5,this.fc_1 instanceof MalformedInputException){this.fc_1,this.x2h_1="",this.cc_1=4;continue t}throw this.fc_1;case 4:this.dc_1=5;var n=this.x2h_1,i=this.s2h_1,e=300<=i&&i<=399?new RedirectResponseException(this.w2h_1,n):400<=i&&i<=499?new ClientRequestException(this.w2h_1,n):500<=i&&i<=599?new ServerResponseException(this.w2h_1,n):new ResponseException(this.w2h_1,n);throw get_LOGGER().y1t("Default response validation for "+this.q2h_1.b2c().c2b().f2b()+" failed with "+e),e;case 5:throw this.fc_1}}catch(t){var r=t;if(5===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(addDefaultResponseValidation$lambda$slambda).z2h=function(t,n){var i=new addDefaultResponseValidation$lambda$slambda(n);return i.q2h_1=t,i},protoOf(defaultTransformers$1$content$1).w24=function(){return this.f2i_1},protoOf(defaultTransformers$1$content$1).x24=function(){return this.g2i_1},protoOf(defaultTransformers$1$content$1).d25=function(){return this.h2i_1},protoOf(defaultTransformers$1$content$2).x24=function(){return this.j2i_1},protoOf(defaultTransformers$1$content$2).w24=function(){return this.k2i_1},protoOf(defaultTransformers$1$content$2).z24=function(){return this.l2i_1},protoOf(defaultTransformers$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(defaultTransformers$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=3,null==this.u2i_1.c1t_1.u28_1.d1p(HttpHeaders_getInstance().w1v_1)&&this.u2i_1.c1t_1.u28_1.p1q(HttpHeaders_getInstance().w1v_1,"*/*"),this.w2i_1=contentType(this.u2i_1.c1t_1);var n,i=this.v2i_1;if("string"==typeof i){var e=this.w2i_1;n=new TextContent(this.v2i_1,null==e?Text_getInstance().f1v_1:e)}else n=isByteArray(i)?new defaultTransformers$1$content$1(this.w2i_1,this.v2i_1):isInterface(i,ByteReadChannel)?new defaultTransformers$1$content$2(this.u2i_1,this.w2i_1,this.v2i_1):i instanceof OutgoingContent?this.v2i_1:platformRequestDefaultTransform(this.w2i_1,this.u2i_1.c1t_1,this.v2i_1);this.x2i_1=n;var r=this.x2i_1;if(null!=(null==r?null:r.w24())){if(this.u2i_1.c1t_1.u28_1.r1q(HttpHeaders_getInstance().o1w_1),get_LOGGER_0().y1t("Transformed with default transformers request body for "+this.u2i_1.c1t_1.s28_1+" from "+getKClassFromExpression(this.v2i_1)),this.cc_1=1,(t=this.u2i_1.g1s(this.x2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=2;continue t;case 1:this.cc_1=2;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var s=t;if(3===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(defaultTransformers$slambda).n27=function(t,n,i){var e=new defaultTransformers$slambda(i);return e.u2i_1=t,e.v2i_1=n,e},protoOf(defaultTransformers$slambda$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(defaultTransformers$slambda$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(defaultTransformers$slambda$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=5,this.cc_1=1;continue t;case 1:this.dc_1=4,this.dc_1=3,this.cc_1=2;var n=this.i2j_1.hy();if(Companion_getInstance_0(),(t=copyTo(this.g2j_1,n,new Long(-1,2147483647),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.j2j_1=Unit_instance,this.dc_1=5,this.cc_1=6;continue t;case 3:if(this.dc_1=4,this.fc_1 instanceof CancellationException){var i=this.fc_1;throw cancel(this.h2j_1,i),i}if(this.fc_1 instanceof Error){var e=this.fc_1;throw cancel_0(this.h2j_1,"Receive failed",e),e}throw this.fc_1;case 4:this.dc_1=5;var r=this.fc_1;throw complete(this.h2j_1),r;case 5:throw this.fc_1;case 6:return this.dc_1=5,complete(this.h2j_1),Unit_instance}}catch(t){var s=t;if(5===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(defaultTransformers$slambda$slambda).a2d=function(t,n){var i=new defaultTransformers$slambda$slambda(this.g2j_1,this.h2j_1,n);return i.i2j_1=t,i},protoOf(defaultTransformers$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(defaultTransformers$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=11,this.u2j_1=this.t2j_1.ue(),this.v2j_1=this.t2j_1.ve();var n=this.v2j_1;if(!isInterface(n,ByteReadChannel))return Unit_instance;if(this.w2j_1=this.s2j_1.c1t_1.t27(),this.x2j_1=this.u2j_1.t1t_1,this.x2j_1.equals(getKClass(Unit))){if(cancel_1(this.v2j_1),this.cc_1=9,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,Unit_instance),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(PrimitiveClasses_getInstance().d7())){if(this.cc_1=7,(t=this.v2j_1.z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(getKClass(ByteReadPacket))||this.x2j_1.equals(getKClass(Input))){if(this.cc_1=5,(t=this.v2j_1.z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(PrimitiveClasses_getInstance().l7())){if(this.cc_1=3,(t=toByteArray(this.v2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(getKClass(ByteReadChannel))){this.z2j_1=Job(this.w2j_1.gm().kc(Key_instance));var i=this.w2j_1.gm(),e=writer(this.s2j_1,i,VOID,defaultTransformers$slambda$slambda_0(this.v2j_1,this.w2j_1,null));if(e.in(defaultTransformers$slambda$lambda(this.z2j_1)),this.a2k_1=e.hy(),this.cc_1=2,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,this.a2k_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(getKClass(HttpStatusCode))){if(cancel_1(this.v2j_1),this.cc_1=1,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,this.w2j_1.g2b()),this))===get_COROUTINE_SUSPENDED())return t;continue t}this.y2j_1=null,this.cc_1=10;continue t;case 1:case 2:case 4:case 6:case 8:case 9:this.y2j_1=t,this.cc_1=10;continue t;case 3:if(this.b2k_1=t,this.c2k_1=contentLength(this.w2j_1),this.d2k_1=!PlatformUtils_getInstance().y1p_1&&null==this.w2j_1.y1z().d1p(HttpHeaders_getInstance().j1w_1),this.e2k_1=!this.s2j_1.c1t_1.c2b().c2c().equals(Companion_getInstance_1().e20_1),this.d2k_1&&this.e2k_1&&null!=this.c2k_1&&this.c2k_1.ca(new Long(0,0))>0&&this.b2k_1.length!==this.c2k_1.la()){var r="Expected "+toString_0(this.c2k_1)+", actual "+this.b2k_1.length;throw IllegalStateException_init_$Create$(toString(r))}if(this.cc_1=4,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,this.b2k_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.f2k_1=t,this.g2k_1=new HttpResponseContainer(this.u2j_1,this.f2k_1),this.cc_1=6,(t=this.s2j_1.g1s(this.g2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:if(this.h2k_1=t,this.i2k_1=this.h2k_1.h1k(),this.j2k_1=toInt(this.i2k_1),this.k2k_1=new HttpResponseContainer(this.u2j_1,this.j2k_1),this.cc_1=8,(t=this.s2j_1.g1s(this.k2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 10:return null!=this.y2j_1&&get_LOGGER_0().y1t("Transformed with default transformers response body for "+this.s2j_1.c1t_1.c2b().f2b()+" to "+this.u2j_1.t1t_1),Unit_instance;case 11:throw this.fc_1}}catch(t){var s=t;if(11===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(defaultTransformers$slambda_1).h28=function(t,n,i){var e=new defaultTransformers$slambda_1(i);return e.s2j_1=t,e.t2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpCallValidator$Companion$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=5,this.dc_1=3;var n=get_ExpectSuccessAttributeKey();if(this.x2k_1.c1t_1.x28_1.o1o(n,HttpCallValidator$Companion$install$slambda$lambda(this.w2k_1)),this.cc_1=1,(t=this.x2k_1.g1s(this.y2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=5,this.cc_1=2;continue t;case 2:return this.dc_1=5,Unit_instance;case 3:if(this.dc_1=5,this.fc_1 instanceof Error){if(this.z2k_1=this.fc_1,this.a2l_1=unwrapCancellationException(this.z2k_1),this.cc_1=4,(t=processException(this.w2k_1,this.a2l_1,HttpRequest(this.x2k_1.c1t_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.fc_1;case 4:throw this.a2l_1;case 5:throw this.fc_1}}catch(t){var i=t;if(5===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpCallValidator$Companion$install$slambda).n27=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda(this.w2k_1,i);return e.x2k_1=t,e.y2k_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpCallValidator$Companion$install$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=5,this.dc_1=3,this.cc_1=1,(t=this.k2l_1.g1s(this.l2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=5,this.cc_1=2;continue t;case 2:return this.dc_1=5,Unit_instance;case 3:if(this.dc_1=5,this.fc_1 instanceof Error){if(this.m2l_1=this.fc_1,this.n2l_1=unwrapCancellationException(this.m2l_1),this.cc_1=4,(t=processException(this.j2l_1,this.n2l_1,this.k2l_1.c1t_1.c2b(),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.fc_1;case 4:throw this.n2l_1;case 5:throw this.fc_1}}catch(t){var n=t;if(5===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_1).h28=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_1(this.j2l_1,i);return e.k2l_1=t,e.l2l_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_3).a2m=function(t,n,i){var e=this.b2m(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpCallValidator$Companion$install$slambda_3).zi=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.a2m(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_3).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,(t=this.x2l_1.v29(this.y2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.z2l_1=t,this.cc_1=2,(t=validateResponse(this.w2l_1,this.z2l_1.t27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return this.z2l_1;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_3).b2m=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_3(this.w2l_1,i);return e.x2l_1=t,e.y2l_1=n,e},protoOf(Config).d2i=function(t){this.a2i_1.s(t)},protoOf(Companion_1).i2=function(){return this.f2n_1},protoOf(Companion_1).g2n=function(t){var n=new Config;t(n);var i=n;return new HttpCallValidator(reversed(i.a2i_1),reversed(i.b2i_1),i.c2i_1)},protoOf(Companion_1).x29=function(t){return this.g2n(t)},protoOf(Companion_1).h2n=function(t,n){var i=Phases_getInstance().q2f_1;n.s26_1.g1t(i,HttpCallValidator$Companion$install$slambda_0(t,null));var e=new PipelinePhase("BeforeReceive");n.t26_1.f1t(Phases_getInstance_1().q29_1,e),n.t26_1.g1t(e,HttpCallValidator$Companion$install$slambda_2(t,null)),plugin(n,Plugin_getInstance_3()).k2n(HttpCallValidator$Companion$install$slambda_4(t,null))},protoOf(Companion_1).y29=function(t,n){return this.h2n(t instanceof HttpCallValidator?t:THROW_CCE(),n)},protoOf($validateResponseCOROUTINE$5).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4,get_LOGGER_1().y1t("Validating response for request "+this.l2m_1.b2c().c2b().f2b()),this.m2m_1=this.k2m_1.l2k_1,this.n2m_1=this.m2m_1.v(),this.cc_1=1;continue t;case 1:if(!this.n2m_1.w()){this.cc_1=3;continue t}if(this.o2m_1=this.n2m_1.y(),this.cc_1=2,(t=this.o2m_1(this.l2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.cc_1=1;continue t;case 3:return Unit_instance;case 4:throw this.fc_1}}catch(t){var n=t;if(4===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf($processExceptionCOROUTINE$6).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,get_LOGGER_1().y1t("Processing exception "+this.y2m_1+" for request "+this.z2m_1.f2b()),this.a2n_1=this.x2m_1.m2k_1,this.b2n_1=this.a2n_1.v(),this.cc_1=1;continue t;case 1:if(!this.b2n_1.w()){this.cc_1=5;continue t}if(this.c2n_1=this.b2n_1.y(),this.d2n_1=this.c2n_1,this.e2n_1=this.d2n_1,this.e2n_1 instanceof ExceptionHandlerWrapper){if(this.cc_1=3,(t=this.d2n_1.m2n_1(this.y2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.e2n_1 instanceof RequestExceptionHandlerWrapper){if(this.cc_1=2,(t=this.d2n_1.l2n_1(this.y2m_1,this.z2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=4;continue t;case 2:case 3:this.cc_1=4;continue t;case 4:this.cc_1=1;continue t;case 5:return Unit_instance;case 6:throw this.fc_1}}catch(t){var n=t;if(6===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpRequest$1).b2c=function(){throw IllegalStateException_init_$Create$(toString("Call is not initialized"))},protoOf(HttpRequest$1).c2c=function(){return this.n2n_1},protoOf(HttpRequest$1).f2b=function(){return this.o2n_1},protoOf(HttpRequest$1).h2a=function(){return this.p2n_1},protoOf(HttpRequest$1).y1z=function(){return this.q2n_1},protoOf(HttpPlainText$Plugin$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpPlainText$Plugin$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.a2o_1.h2o(this.b2o_1.c1t_1),"string"!=typeof this.c2o_1)return Unit_instance;if(this.d2o_1=contentType(this.b2o_1.c1t_1),null!=this.d2o_1&&this.d2o_1.p1v_1!==Text_getInstance().f1v_1.p1v_1)return Unit_instance;if(this.cc_1=1,(t=this.b2o_1.g1s(wrapContent(this.a2o_1,this.b2o_1.c1t_1,this.c2o_1,this.d2o_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpPlainText$Plugin$install$slambda).n27=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda(this.a2o_1,i);return e.b2o_1=t,e.c2o_1=n,e},protoOf(HttpPlainText$Plugin$install$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpPlainText$Plugin$install$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:var n;if(this.dc_1=3,this.t2o_1=this.s2o_1.ue(),this.u2o_1=this.s2o_1.ve(),this.t2o_1.t1t_1.equals(PrimitiveClasses_getInstance().h7())){var i=this.u2o_1;n=!isInterface(i,ByteReadChannel)}else n=!0;if(n)return Unit_instance;if(this.cc_1=1,(t=this.u2o_1.z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.v2o_1=t,this.w2o_1=this.q2o_1.x2o(this.r2o_1.c1t_1,this.v2o_1),this.cc_1=2,(t=this.r2o_1.g1s(new HttpResponseContainer(this.t2o_1,this.w2o_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(HttpPlainText$Plugin$install$slambda_1).h28=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda_1(this.q2o_1,i);return e.r2o_1=t,e.s2o_1=n,e},protoOf(Plugin_0).i2=function(){return this.c2p_1},protoOf(Plugin_0).d2p=function(t){var n=new Config_0;t(n);var i=n;return new HttpPlainText(i.y2o_1,i.z2o_1,i.a2p_1,i.b2p_1)},protoOf(Plugin_0).x29=function(t){return this.d2p(t)},protoOf(Plugin_0).e2p=function(t,n){var i=Phases_getInstance().t2f_1;n.s26_1.g1t(i,HttpPlainText$Plugin$install$slambda_0(t,null));var e=Phases_getInstance_1().s29_1;n.t26_1.g1t(e,HttpPlainText$Plugin$install$slambda_2(t,null))},protoOf(Plugin_0).y29=function(t,n){return this.e2p(t instanceof HttpPlainText?t:THROW_CCE(),n)},protoOf(sam$kotlin_Comparator$0).o9=function(t,n){return this.f2p_1(t,n)},protoOf(sam$kotlin_Comparator$0).compare=function(t,n){return this.o9(t,n)},protoOf(HttpPlainText).x2o=function(t,n){var i=charset_0(t.t27()),e=null==i?this.e2o_1:i;return get_LOGGER_2().y1t("Reading response body for "+t.c2b().f2b()+" as String with charset "+e),readText(n,e)},protoOf(HttpPlainText).h2o=function(t){if(null!=t.u28_1.d1p(HttpHeaders_getInstance().x1v_1))return Unit_instance;get_LOGGER_2().y1t("Adding Accept-Charset="+this.g2o_1+" to "+t.s28_1),t.u28_1.n1q(HttpHeaders_getInstance().x1v_1,this.g2o_1)},protoOf(HttpRedirect$Plugin$install$slambda).a2m=function(t,n,i){var e=this.b2m(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpRedirect$Plugin$install$slambda).zi=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.a2m(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpRedirect$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,(t=this.j2q_1.v29(this.k2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.l2q_1=t,this.h2q_1.m2q_1&&!get_ALLOWED_FOR_REDIRECT().r(this.l2q_1.c2b().c2c()))return this.l2q_1;if(this.cc_1=2,(t=handleCall(this.j2q_1,Plugin_getInstance_1(),this.k2q_1,this.l2q_1,this.h2q_1.n2q_1,this.i2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpRedirect$Plugin$install$slambda).b2m=function(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(this.h2q_1,this.i2q_1,i);return e.j2q_1=t,e.k2q_1=n,e},protoOf($handleCallCOROUTINE$7).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,!isRedirect(this.r2p_1.t27().g2b()))return this.r2p_1;this.u2p_1=this.r2p_1,this.v2p_1=this.q2p_1,this.w2p_1=this.r2p_1.c2b().f2b().l23_1,this.x2p_1=get_authority(this.r2p_1.c2b().f2b()),this.cc_1=1;continue t;case 1:this.t2p_1.y26_1.k25(this.o2p_1.p2q_1,this.u2p_1.t27()),this.y2p_1=this.u2p_1.t27().y1z().d1p(HttpHeaders_getInstance().k1x_1),get_LOGGER_3().y1t("Received redirect response to "+this.y2p_1+" for request "+this.q2p_1.s28_1);var n=new HttpRequestBuilder;n.r2e(this.v2p_1),n.s28_1.i23_1.b1();var i=this.y2p_1;if(null==i||takeFrom(n.s28_1,i),!this.s2p_1&&isSecure(this.w2p_1)&&!isSecure(n.s28_1.z22_1))return get_LOGGER_3().y1t("Can not redirect "+this.q2p_1.s28_1+" because of security downgrade"),this.u2p_1;if(this.x2p_1!==get_authority_0(n.s28_1)&&(n.u28_1.r1q(HttpHeaders_getInstance().f1w_1),get_LOGGER_3().y1t("Removing Authorization header from redirect for "+this.q2p_1.s28_1)),this.v2p_1=n,this.cc_1=2,(t=this.p2p_1.v29(this.v2p_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.u2p_1=t,!isRedirect(this.u2p_1.t27().g2b()))return this.u2p_1;this.cc_1=1;continue t;case 3:throw this.fc_1;case 4:return Unit_instance}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(Plugin_1).i2=function(){return this.o2q_1},protoOf(Plugin_1).s2q=function(t){var n=new Config_1;t(n);var i=n;return new HttpRedirect(i.q2q_1,i.r2q_1)},protoOf(Plugin_1).x29=function(t){return this.s2q(t)},protoOf(Plugin_1).t2q=function(t,n){plugin(n,Plugin_getInstance_3()).k2n(HttpRedirect$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_1).y29=function(t,n){return this.t2q(t instanceof HttpRedirect?t:THROW_CCE(),n)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpRequestLifecycle$Plugin$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.f2r_1=SupervisorJob(this.d2r_1.c1t_1.w28_1),attachToClientEngineJob(this.f2r_1,ensureNotNull(this.c2r_1.r26_1.kc(Key_instance))),this.cc_1=1;continue t;case 1:if(this.dc_1=4,this.dc_1=3,this.d2r_1.c1t_1.w28_1=this.f2r_1,this.cc_1=2,(t=this.d2r_1.h1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.g2r_1=Unit_instance,this.dc_1=6,this.cc_1=5;continue t;case 3:if(this.dc_1=4,this.fc_1 instanceof Error){var n=this.fc_1;throw this.f2r_1.js(n),n}throw this.fc_1;case 4:this.dc_1=6;var i=this.fc_1;throw this.f2r_1.ks(),i;case 5:return this.dc_1=6,this.f2r_1.ks(),Unit_instance;case 6:throw this.fc_1}}catch(t){var e=t;if(6===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(HttpRequestLifecycle$Plugin$install$slambda).n27=function(t,n,i){var e=new HttpRequestLifecycle$Plugin$install$slambda(this.c2r_1,i);return e.d2r_1=t,e.e2r_1=n,e},protoOf(Plugin_2).i2=function(){return this.h2r_1},protoOf(Plugin_2).z2f=function(t){return new HttpRequestLifecycle},protoOf(Plugin_2).x29=function(t){return this.z2f(t)},protoOf(Plugin_2).i2r=function(t,n){var i=Phases_getInstance().q2f_1;n.s26_1.g1t(i,HttpRequestLifecycle$Plugin$install$slambda_0(n,null))},protoOf(Plugin_2).y29=function(t,n){return this.i2r(t instanceof HttpRequestLifecycle?t:THROW_CCE(),n)},protoOf(HttpSend$Plugin$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpSend$Plugin$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpSend$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,!(this.u2r_1 instanceof OutgoingContent)){var n=trimMargin("\n|Fail to prepare request body for sending. \n|The body type is: "+getKClassFromExpression(this.u2r_1)+", with Content-Type: "+contentType(this.t2r_1.c1t_1)+".\n|\n|If you expect serialized body, please check that you have installed the corresponding plugin(like `ContentNegotiation`) and set `Content-Type` header.");throw IllegalStateException_init_$Create$(toString(n))}var i=this.t2r_1.c1t_1,e=this.u2r_1;if(null==e){i.v28_1=NullBody_instance;var r,s=JsType_instance,u=getKClass(OutgoingContent);try{r=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;r=null}i.s2e(typeInfoImpl(s,u,r))}else if(e instanceof OutgoingContent)i.v28_1=e,i.s2e(null);else{i.v28_1=e;var o,_=JsType_instance,h=getKClass(OutgoingContent);try{o=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;o=null}i.s2e(typeInfoImpl(_,h,o))}this.v2r_1=new DefaultSender(this.r2r_1.i2n_1,this.s2r_1),this.w2r_1=this.v2r_1;for(var a=downTo(get_lastIndex(this.r2r_1.j2n_1),0).v();a.w();){var l=a.y(),c=this.r2r_1.j2n_1.h1(l);this.w2r_1=new InterceptedSender(c,this.w2r_1)}if(this.cc_1=1,(t=this.w2r_1.v29(this.t2r_1.c1t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.x2r_1=t,this.cc_1=2,(t=this.t2r_1.g1s(this.x2r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var f=t;if(3===this.dc_1)throw f;this.cc_1=this.dc_1,this.fc_1=f}},protoOf(HttpSend$Plugin$install$slambda).n27=function(t,n,i){var e=new HttpSend$Plugin$install$slambda(this.r2r_1,this.s2r_1,i);return e.t2r_1=t,e.u2r_1=n,e},protoOf($executeCOROUTINE$8).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n=this.g2s_1.l2s_1;if(null==n||cancel(n),this.g2s_1.k2s_1>=this.g2s_1.i2s_1)throw new SendCountExceedException("Max send count "+this.g2s_1.i2s_1+" exceeded. Consider increasing the property maxSendCount if more is required.");var i=this.g2s_1;if(i.k2s_1=i.k2s_1+1|0,this.cc_1=1,(t=this.g2s_1.j2s_1.u26_1.b1t(this.h2s_1,this.h2s_1.v28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var e=t instanceof HttpClientCall?t:null;if(null==e){var r="Failed to execute send pipeline. Expected [HttpClientCall], but received "+toString(t);throw IllegalStateException_init_$Create$(toString(r))}var s=e;return this.g2s_1.l2s_1=s,s;case 2:throw this.fc_1}}catch(t){var u=t;if(2===this.dc_1)throw u;this.cc_1=this.dc_1,this.fc_1=u}},protoOf(Plugin_3).i2=function(){return this.n2s_1},protoOf(Plugin_3).o2s=function(t){var n=new Config_2;return t(n),new HttpSend(n.m2s_1)},protoOf(Plugin_3).x29=function(t){return this.o2s(t)},protoOf(Plugin_3).p2s=function(t,n){var i=Phases_getInstance().u2f_1;n.s26_1.g1t(i,HttpSend$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_3).y29=function(t,n){return this.p2s(t instanceof HttpSend?t:THROW_CCE(),n)},protoOf(InterceptedSender).v29=function(t,n){return this.q2s_1(this.r2s_1,t,n)},protoOf(DefaultSender).v29=function(t,n){var i=new $executeCOROUTINE$8(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpSend).k2n=function(t){this.j2n_1.s(t)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpTimeout$Plugin$install$slambda$slambda).cd=function(t,n){return this.a1h(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=delay(this.h2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=HttpRequestTimeoutException_init_$Create$(this.i2t_1);return get_LOGGER_5().y1t("Request timeout: "+this.i2t_1.s28_1),cancel_2(this.j2t_1,ensureNotNull(n.message),n),Unit_instance;case 2:throw this.fc_1}}catch(t){var i=t;if(2===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpTimeout$Plugin$install$slambda$slambda).b1h=function(t,n){var i=new HttpTimeout$Plugin$install$slambda$slambda(this.h2t_1,this.i2t_1,this.j2t_1,n);return i.k2t_1=t,i},protoOf(HttpTimeout$Plugin$install$slambda).a2m=function(t,n,i){var e=this.b2m(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpTimeout$Plugin$install$slambda).zi=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.a2m(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpTimeout$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=4,this.x2t_1=isWebsocket(this.w2t_1.s28_1.z22_1),this.x2t_1||this.w2t_1.v28_1 instanceof ClientUpgradeContent){if(this.cc_1=3,(t=this.v2t_1.v29(this.w2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=1;continue t;case 1:this.y2t_1=this.w2t_1.z2t(Plugin_getInstance_4()),null==this.y2t_1&&hasNotNullTimeouts(this.t2t_1)&&(this.y2t_1=HttpTimeoutCapabilityConfiguration_init_$Create$(),this.w2t_1.a2u(Plugin_getInstance_4(),this.y2t_1));var n=this.y2t_1;if(null==n);else n:do{var i=n.b2u();n.w2s(null==i?this.t2t_1.d2u_1:i);var e=n.f2u();n.x2s(null==e?this.t2t_1.e2u_1:e);var r=n.g2u();n.v2s(null==r?this.t2t_1.c2u_1:r);var s=n.g2u(),u=null==s?this.t2t_1.c2u_1:s;if(null==u||equals(u,new Long(-1,2147483647)))break n;var o=this.w2t_1.w28_1,_=launch(this.u2t_1,VOID,VOID,HttpTimeout$Plugin$install$slambda$slambda_0(u,this.w2t_1,o,null));this.w2t_1.w28_1.in(HttpTimeout$Plugin$install$slambda$lambda(_))}while(0);if(this.cc_1=2,(t=this.v2t_1.v29(this.w2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:case 3:return t;case 4:throw this.fc_1}}catch(t){var h=t;if(4===this.dc_1)throw h;this.cc_1=this.dc_1,this.fc_1=h}},protoOf(HttpTimeout$Plugin$install$slambda).b2m=function(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(this.t2t_1,this.u2t_1,i);return e.v2t_1=t,e.w2t_1=n,e},protoOf(HttpTimeoutCapabilityConfiguration).v2s=function(t){this.s2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).g2u=function(){return this.s2s_1},protoOf(HttpTimeoutCapabilityConfiguration).w2s=function(t){this.t2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).b2u=function(){return this.t2s_1},protoOf(HttpTimeoutCapabilityConfiguration).x2s=function(t){this.u2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).f2u=function(){return this.u2s_1},protoOf(HttpTimeoutCapabilityConfiguration).y2=function(){return new HttpTimeout(this.g2u(),this.b2u(),this.f2u())},protoOf(HttpTimeoutCapabilityConfiguration).equals=function(t){return!!(this===t||null!=t&&getKClassFromExpression(this).equals(getKClassFromExpression(t))&&(t instanceof HttpTimeoutCapabilityConfiguration||THROW_CCE(),equals(this.s2s_1,t.s2s_1)&&equals(this.t2s_1,t.t2s_1)&&equals(this.u2s_1,t.u2s_1)))},protoOf(HttpTimeoutCapabilityConfiguration).hashCode=function(){var t=this.s2s_1,n=null==t?null:t.hashCode(),i=null==n?0:n,e=imul(31,i),r=this.t2s_1,s=null==r?null:r.hashCode(),u=imul(31,i=e+(null==s?0:s)|0),o=this.u2s_1,_=null==o?null:o.hashCode();return u+(null==_?0:_)|0},protoOf(Plugin_4).i2=function(){return this.h2u_1},protoOf(Plugin_4).j2u=function(t){var n=HttpTimeoutCapabilityConfiguration_init_$Create$();return t(n),n.y2()},protoOf(Plugin_4).x29=function(t){return this.j2u(t)},protoOf(Plugin_4).k2u=function(t,n){plugin(n,Plugin_getInstance_3()).k2n(HttpTimeout$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_4).y29=function(t,n){return this.k2u(t instanceof HttpTimeout?t:THROW_CCE(),n)},protoOf(DelegatedRequest).b2c=function(){return this.l2u_1},protoOf(DelegatedRequest).h2a=function(){return this.m2u_1.h2a()},protoOf(DelegatedRequest).gm=function(){return this.m2u_1.gm()},protoOf(DelegatedRequest).y1z=function(){return this.m2u_1.y1z()},protoOf(DelegatedRequest).c2c=function(){return this.m2u_1.c2c()},protoOf(DelegatedRequest).f2b=function(){return this.m2u_1.f2b()},protoOf(DelegatedResponse).b2c=function(){return this.n2u_1},protoOf(DelegatedResponse).d2b=function(){return this.o2u_1},protoOf(DelegatedResponse).gm=function(){return this.q2u_1},protoOf(DelegatedResponse).g2b=function(){return this.p2u_1.g2b()},protoOf(DelegatedResponse).m2c=function(){return this.p2u_1.m2c()},protoOf(DelegatedResponse).n2c=function(){return this.p2u_1.n2c()},protoOf(DelegatedResponse).o2c=function(){return this.p2u_1.o2c()},protoOf(DelegatedResponse).y1z=function(){return this.p2u_1.y1z()},protoOf(WebSocketCapability).toString=function(){return"WebSocketCapability"},protoOf(DefaultHttpRequest).b2c=function(){return this.r2u_1},protoOf(DefaultHttpRequest).gm=function(){return this.b2c().gm()},protoOf(DefaultHttpRequest).c2c=function(){return this.s2u_1},protoOf(DefaultHttpRequest).f2b=function(){return this.t2u_1},protoOf(DefaultHttpRequest).y1z=function(){return this.v2u_1},protoOf(DefaultHttpRequest).h2a=function(){return this.w2u_1},protoOf(HttpRequestBuilder).y1z=function(){return this.u28_1},protoOf(HttpRequestBuilder).s2e=function(t){null!=t?this.x28_1.m1o(get_BodyTypeAttributeKey(),t):this.x28_1.n1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).x2u=function(){return this.x28_1.k1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).y2=function(){var t=this.s28_1.y2(),n=this.t28_1,i=this.u28_1.y2(),e=this.v28_1,r=e instanceof OutgoingContent?e:null;if(null==r){var s="No request transformation found: "+toString(this.v28_1);throw IllegalStateException_init_$Create$(toString(s))}return new HttpRequestData(t,n,i,r,this.w28_1,this.x28_1)},protoOf(HttpRequestBuilder).r2e=function(t){return this.w28_1=t.w28_1,this.y2u(t)},protoOf(HttpRequestBuilder).y2u=function(t){return this.t28_1=t.t28_1,this.v28_1=t.v28_1,this.s2e(t.x2u()),takeFrom_0(this.s28_1,t.s28_1),this.s28_1.g23_1=this.s28_1.g23_1,appendAll(this.u28_1,t.u28_1),putAll(this.x28_1,t.x28_1),this},protoOf(HttpRequestBuilder).a2u=function(t,n){var i=get_ENGINE_CAPABILITIES_KEY();this.x28_1.o1o(i,HttpRequestBuilder$setCapability$lambda).g2(t,n)},protoOf(HttpRequestBuilder).z2t=function(t){var n=this.x28_1.k1o(get_ENGINE_CAPABILITIES_KEY()),i=null==n?null:n.q2(t);return null==i||null!=i?i:THROW_CCE()},protoOf(HttpRequestData).toString=function(){return"HttpRequestData(url="+this.s2d_1+", method="+this.t2d_1+")"},protoOf(HttpResponseData).toString=function(){return"HttpResponseData=(statusCode="+this.a2a_1+")"},protoOf(HttpRequestPipeline).a1t=function(){return this.g2v_1},protoOf(HttpSendPipeline).a1t=function(){return this.o2v_1},protoOf(DefaultHttpResponse).b2c=function(){return this.p2v_1},protoOf(DefaultHttpResponse).gm=function(){return this.q2v_1},protoOf(DefaultHttpResponse).g2b=function(){return this.r2v_1},protoOf(DefaultHttpResponse).m2c=function(){return this.s2v_1},protoOf(DefaultHttpResponse).n2c=function(){return this.t2v_1},protoOf(DefaultHttpResponse).o2c=function(){return this.u2v_1},protoOf(DefaultHttpResponse).d2b=function(){return this.v2v_1},protoOf(DefaultHttpResponse).y1z=function(){return this.w2v_1},protoOf(HttpResponse).toString=function(){return"HttpResponse["+get_request(this).f2b()+", "+this.g2b()+"]"},protoOf($bodyAsTextCOROUTINE$13).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n=charset_0(this.f2w_1);this.h2w_1=null==n?this.g2w_1:n,this.i2w_1=this.h2w_1.t1k(),this.j2w_1=this.f2w_1,this.cc_1=1;var i,e=this.j2w_1.b2c(),r=JsType_instance,s=getKClass(ByteReadPacket);try{i=createKType(getKClass(ByteReadPacket),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;i=null}if((t=e.e2b(typeInfoImpl(r,s,i),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var u=t instanceof ByteReadPacket?t:THROW_CCE();return decode(this.i2w_1,u);case 2:throw this.fc_1}}catch(t){var o=t;if(2===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},protoOf(HttpResponsePipeline).a1t=function(){return this.r2w_1},protoOf(HttpReceivePipeline).a1t=function(){return this.z2w_1},protoOf(HttpResponseContainer).ue=function(){return this.a2b_1},protoOf(HttpResponseContainer).ve=function(){return this.b2b_1},protoOf(HttpResponseContainer).toString=function(){return"HttpResponseContainer(expectedType="+this.a2b_1+", response="+toString(this.b2b_1)+")"},protoOf(HttpResponseContainer).hashCode=function(){var t=this.a2b_1.hashCode();return imul(t,31)+hashCode(this.b2b_1)|0},protoOf(HttpResponseContainer).equals=function(t){if(this===t)return!0;if(!(t instanceof HttpResponseContainer))return!1;var n=t instanceof HttpResponseContainer?t:THROW_CCE();return!!this.a2b_1.equals(n.a2b_1)&&!!equals(this.b2b_1,n.b2b_1)},protoOf(HttpStatement$execute$slambda).l2x=function(t,n){var i=this.z2h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpStatement$execute$slambda).cd=function(t,n){return this.l2x(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(HttpStatement$execute$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=save(this.k2x_1.b2c(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t.t27();case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpStatement$execute$slambda).z2h=function(t,n){var i=new HttpStatement$execute$slambda(n);return i.k2x_1=t,i},protoOf($executeCOROUTINE$14).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=13,this.cc_1=1;continue t;case 1:if(this.dc_1=12,this.cc_1=2,(t=this.u2x_1.b2y(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.x2x_1=t,this.cc_1=3;continue t;case 3:this.cc_1=4;continue t;case 4:if(this.dc_1=10,this.cc_1=5,(t=this.v2x_1(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:this.y2x_1=t,this.cc_1=6;continue t;case 6:if(this.z2x_1=this.y2x_1,this.dc_1=12,this.cc_1=7,(t=this.u2x_1.c2y(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:return this.z2x_1;case 8:if(this.dc_1=12,this.cc_1=9,(t=this.u2x_1.c2y(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 9:this.w2x_1=Unit_instance,this.dc_1=13,this.cc_1=15;continue t;case 10:if(this.dc_1=12,this.a2y_1=this.fc_1,this.cc_1=11,(t=this.u2x_1.c2y(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 11:throw this.a2y_1;case 12:if(this.dc_1=13,this.fc_1 instanceof CancellationException)throw unwrapCancellationException(this.fc_1);throw this.fc_1;case 13:throw this.fc_1;case 14:this.dc_1=13,this.cc_1=15;continue t;case 15:return this.w2x_1}}catch(t){var n=t;if(13===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf($executeUnsafeCOROUTINE$15).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4,this.cc_1=1;continue t;case 1:if(this.dc_1=3,this.n2y_1=(new HttpRequestBuilder).r2e(this.l2y_1.a2x_1),this.cc_1=2,(t=this.l2y_1.b2x_1.v29(this.n2y_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t.t27();case 3:if(this.dc_1=4,this.fc_1 instanceof CancellationException)throw unwrapCancellationException(this.fc_1);throw this.fc_1;case 4:throw this.fc_1;case 5:this.dc_1=4,this.cc_1=6;continue t;case 6:return this.m2y_1}}catch(t){var n=t;if(4===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf($cleanupCOROUTINE$16).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4;var n=ensureNotNull(this.x2y_1.gm().kc(Key_instance));this.y2y_1=isInterface(n,CompletableJob)?n:THROW_CCE(),this.z2y_1=this.y2y_1,this.a2z_1=this.z2y_1,this.a2z_1.ks(),this.dc_1=1,cancel_1(this.x2y_1.d2b()),this.dc_1=4,this.cc_1=2;continue t;case 1:if(this.dc_1=4,this.fc_1 instanceof Error){this.b2z_1=this.fc_1,this.cc_1=2;continue t}throw this.fc_1;case 2:if(this.dc_1=4,this.cc_1=3,(t=this.a2z_1.ls(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:return Unit_instance;case 4:throw this.fc_1}}catch(t){var i=t;if(4===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpStatement).c2z=function(t,n){var i=new $executeCOROUTINE$14(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpStatement).d2z=function(t){return this.c2z(HttpStatement$execute$slambda_0(null),t)},protoOf(HttpStatement).b2y=function(t){var n=new $executeUnsafeCOROUTINE$15(this,t);return n.ec_1=Unit_instance,n.fc_1=null,n.pc()},protoOf(HttpStatement).c2y=function(t,n){var i=new $cleanupCOROUTINE$16(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpStatement).toString=function(){return"HttpStatement["+this.a2x_1.s28_1+"]"},protoOf(observable$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(observable$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(observable$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=15,this.cc_1=1;continue t;case 1:this.r2z_1=get_ByteArrayPool(),this.s2z_1=this.r2z_1.c1j(),this.cc_1=2;continue t;case 2:this.cc_1=3;continue t;case 3:this.dc_1=14,this.u2z_1=this.s2z_1;var n=this.m2z_1;this.v2z_1=null==n?new Long(-1,-1):n,this.w2z_1=new Long(0,0),this.cc_1=4;continue t;case 4:if(this.n2z_1.u1a()){this.cc_1=8;continue t}if(this.cc_1=5,(t=readAvailable(this.n2z_1,this.u2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.x2z_1=t,this.cc_1=6,(t=this.p2z_1.hy().x1f(this.u2z_1,0,this.x2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var i=this.w2z_1,e=this.x2z_1;if(this.w2z_1=i.gb(toLong(e)),this.cc_1=7,(t=this.o2z_1(this.w2z_1,this.v2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:this.cc_1=4;continue t;case 8:if(this.y2z_1=this.n2z_1.e1a(),this.p2z_1.hy().u11(this.y2z_1),null==this.y2z_1&&this.w2z_1.equals(new Long(0,0))){if(this.cc_1=9,(t=this.o2z_1(this.w2z_1,this.v2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=10;continue t;case 9:this.cc_1=10;continue t;case 10:this.t2z_1=Unit_instance,this.dc_1=15,this.cc_1=11;continue t;case 11:this.dc_1=15,this.r2z_1.d1j(this.s2z_1),this.q2z_1=Unit_instance,this.cc_1=13;continue t;case 12:this.dc_1=15,this.r2z_1.d1j(this.s2z_1),this.cc_1=13;continue t;case 13:return Unit_instance;case 14:this.dc_1=15;var r=this.fc_1;throw this.r2z_1.d1j(this.s2z_1),r;case 15:throw this.fc_1}}catch(t){var s=t;if(15===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(observable$slambda).a2d=function(t,n){var i=new observable$slambda(this.m2z_1,this.n2z_1,this.o2z_1,n);return i.p2z_1=t,i},protoOf(EmptyContent).x24=function(){return this.c30_1},protoOf(EmptyContent).toString=function(){return"EmptyContent"},protoOf(Js).d30=function(t){var n=new HttpClientEngineConfig;return t(n),new JsClientEngine(n)},protoOf(Js).w29=function(t){return this.d30(t)},protoOf($executeCOROUTINE$17).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=6,this.cc_1=1,(t=callContext(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.d31_1=t,this.e31_1=this.c31_1.x2d_1.j1o(get_CLIENT_CONFIG()),isUpgradeRequest(this.c31_1)){if(this.cc_1=5,(t=executeWebSocketRequest(this.b31_1,this.c31_1,this.d31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=2;continue t;case 2:if(this.f31_1=GMTDate(),this.cc_1=3,(t=toRaw(this.c31_1,this.e31_1,this.d31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:if(this.g31_1=t,this.cc_1=4,(t=commonFetch(this.c31_1.s2d_1.toString(),this.g31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:var n=t,i=new HttpStatusCode(n.status,n.statusText),e=mapToKtor(n.headers),r=Companion_getInstance_3().j20_1,s=readBody(CoroutineScope_0(this.d31_1),n);return new HttpResponseData(i,this.f31_1,e,r,s,this.d31_1);case 5:return t;case 6:throw this.fc_1}}catch(t){var u=t;if(6===this.dc_1)throw u;this.cc_1=this.dc_1,this.fc_1=u}},protoOf($executeWebSocketRequestCOROUTINE$18).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=4,this.p30_1=GMTDate(),this.q30_1=this.n30_1.s2d_1.toString(),this.r30_1=createWebSocket(this.m30_1,this.q30_1,this.n30_1.u2d_1),this.s30_1=new JsWebSocketSession(this.o30_1,this.r30_1),this.dc_1=2,this.cc_1=1,(t=awaitConnection(this.r30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=4,this.cc_1=3;continue t;case 2:if(this.dc_1=4,this.fc_1 instanceof Error){var n=this.fc_1;throw cancel_3(this.o30_1,CancellationException_init_$Create$_0("Failed to connect to "+this.q30_1,n)),n}throw this.fc_1;case 3:return this.dc_1=4,new HttpResponseData(Companion_getInstance_2().r20_1,this.p30_1,Companion_getInstance_4().t1v_1,Companion_getInstance_3().j20_1,this.s30_1,this.o30_1);case 4:throw this.fc_1}}catch(t){var i=t;if(4===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(JsClientEngine).g29=function(){return this.l31_1},protoOf(JsClientEngine).z2d=function(){return this.m31_1},protoOf(JsClientEngine).f2f=function(t,n){var i=new $executeCOROUTINE$17(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(toRaw$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(toRaw$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(toRaw$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.k32_1.b25(this.l32_1.hy(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(toRaw$slambda).a2d=function(t,n){var i=new toRaw$slambda(this.k32_1,n);return i.l32_1=t,i},protoOf($toRawCOROUTINE$19).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=4,this.z31_1={},mergeHeaders(this.w31_1.u2d_1,this.w31_1.v2d_1,toRaw$lambda(this.z31_1)),this.a32_1=this.w31_1.v2d_1,this.a32_1 instanceof ByteArrayContent){this.b32_1=this.a32_1.d25(),this.cc_1=3;continue t}if(this.a32_1 instanceof ReadChannelContent){if(this.cc_1=2,(t=this.a32_1.z24().z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.a32_1 instanceof WriteChannelContent){if(this.cc_1=1,(t=writer(GlobalScope_instance,this.y31_1,VOID,toRaw$slambda_0(this.a32_1,null)).hy().z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.b32_1=null,this.cc_1=3;continue t;case 1:var n=t;this.b32_1=readBytes(n),this.cc_1=3;continue t;case 2:var i=t;this.b32_1=readBytes(i),this.cc_1=3;continue t;case 3:var e=this.b32_1;return buildObject(toRaw$lambda_0(this.w31_1,this.z31_1,this.x31_1,e));case 4:throw this.fc_1}}catch(t){var r=t;if(4===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(channelFromStream$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(channelFromStream$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(channelFromStream$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.w32_1=this.u32_1.getReader(),this.cc_1=1;continue t;case 1:if(this.dc_1=5,this.cc_1=2,(t=readChunk(this.w32_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.x32_1=t,null==this.x32_1){this.dc_1=6,this.cc_1=8;continue t}this.y32_1=this.x32_1,this.cc_1=3;continue t;case 3:if(this.z32_1=this.y32_1,this.cc_1=4,(t=writeFully(this.v32_1.hy(),asByteArray(this.z32_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:this.v32_1.hy().v1f(),this.dc_1=6,this.cc_1=7;continue t;case 5:if(this.dc_1=6,this.fc_1 instanceof Error){var n=this.fc_1;throw this.w32_1.cancel(n),n}throw this.fc_1;case 6:throw this.fc_1;case 7:this.dc_1=6,this.cc_1=1;continue t;case 8:return Unit_instance}}catch(t){var i=t;if(6===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(channelFromStream$slambda).a2d=function(t,n){var i=new channelFromStream$slambda(this.u32_1,n);return i.v32_1=t,i},protoOf(readBodyNode$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(readBodyNode$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(readBodyNode$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6;var n,i=this.i33_1.body;if(null==i)throw IllegalStateException_init_$Create$(toString("Fail to get body"));n=i,this.k33_1=n,this.l33_1=Channel(1),this.k33_1.on("data",readBodyNode$slambda$lambda(this.l33_1,this.k33_1)),this.k33_1.on("error",readBodyNode$slambda$lambda_0(this.l33_1,this.j33_1)),this.k33_1.on("end",readBodyNode$slambda$lambda_1(this.l33_1)),this.dc_1=5,this.m33_1=this.l33_1.v(),this.cc_1=1;continue t;case 1:if(this.cc_1=2,(t=this.m33_1.i11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(!t){this.cc_1=4;continue t}if(this.n33_1=this.m33_1.y(),this.cc_1=3,(t=writeFully(this.j33_1.hy(),this.n33_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:this.j33_1.hy().v1f(),this.k33_1.resume(),this.cc_1=1;continue t;case 4:this.dc_1=6,this.cc_1=7;continue t;case 5:if(this.dc_1=6,this.fc_1 instanceof Error){var e=this.fc_1;throw this.k33_1.destroy(e),e}throw this.fc_1;case 6:throw this.fc_1;case 7:return this.dc_1=6,Unit_instance}}catch(t){var r=t;if(6===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(readBodyNode$slambda).a2d=function(t,n){var i=new readBodyNode$slambda(this.i33_1,n);return i.j33_1=t,i},protoOf(JsWebSocketSession$slambda).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(JsWebSocketSession$slambda).cd=function(t,n){return this.a1h(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(JsWebSocketSession$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=10,this.g34_1=this.e34_1.s33_1,this.cc_1=1;continue t;case 1:this.i34_1=this.g34_1,this.j34_1=null,this.cc_1=2;continue t;case 2:this.cc_1=3;continue t;case 3:this.dc_1=9,this.dc_1=8,this.l34_1=this.i34_1,this.m34_1=this.l34_1.v(),this.cc_1=4;continue t;case 4:if(this.cc_1=5,(t=this.m34_1.i11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(!t){this.cc_1=6;continue t}var n=this.m34_1.y();switch(n.g26_1.y9_1){case 0:var i=n.h26_1;this.e34_1.p33_1.send(String_0(i));break;case 1:var e=n.h26_1,r=e instanceof Int8Array?e:THROW_CCE(),s=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength|0);this.e34_1.p33_1.send(s);break;case 2:var u;n:do{var o=new BytePacketBuilder;try{writeFully_0(o,n.h26_1),u=o.y2();break n}catch(t){if(t instanceof Error){var _=t;throw o.rs(),_}throw t}}while(0);var h=u,a=readShort(h),l=h.h1k();this.e34_1.q33_1.hs(new CloseReason(a,l)),isReservedStatusCode(a,this.e34_1)?this.e34_1.p33_1.close():this.e34_1.p33_1.close(a,l)}this.cc_1=4;continue t;case 6:this.k34_1=Unit_instance,this.dc_1=10,this.cc_1=7;continue t;case 7:this.dc_1=10,cancelConsumed(this.i34_1,this.j34_1),this.h34_1=Unit_instance,this.cc_1=12;continue t;case 8:if(this.dc_1=9,this.fc_1 instanceof Error){var c=this.fc_1;throw this.j34_1=c,c}throw this.fc_1;case 9:this.dc_1=10;var f=this.fc_1;throw cancelConsumed(this.i34_1,this.j34_1),f;case 10:throw this.fc_1;case 11:this.dc_1=10,cancelConsumed(this.i34_1,this.j34_1),this.cc_1=12;continue t;case 12:return Unit_instance}}catch(t){var v=t;if(10===this.dc_1)throw v;this.cc_1=this.dc_1,this.fc_1=v}},protoOf(JsWebSocketSession$slambda).b1h=function(t,n){var i=new JsWebSocketSession$slambda(this.e34_1,n);return i.f34_1=t,i},protoOf(JsWebSocketSession).gm=function(){return this.o33_1},defineProp(protoOf(DoubleReceiveException),"message",(function(){return this.d6()})),defineProp(protoOf(NoTransformationFoundException),"message",(function(){return this.d6()})),defineProp(protoOf(ClientEngineClosedException),"cause",(function(){return this.e6()})),protoOf(HttpClientEngineBase).z2d=get_supportedCapabilities,protoOf(HttpClientEngineBase).h29=install,protoOf(KtorCallContextElement).kc=get,protoOf(KtorCallContextElement).og=fold,protoOf(KtorCallContextElement).ng=minusKey,protoOf(KtorCallContextElement).pg=plus,defineProp(protoOf(RedirectResponseException),"message",(function(){return this.d6()})),defineProp(protoOf(ClientRequestException),"message",(function(){return this.d6()})),defineProp(protoOf(ServerResponseException),"message",(function(){return this.d6()})),protoOf(HttpRequest$1).gm=get_coroutineContext,Companion_instance_1=new Companion_0,WebSocketCapability_instance=new WebSocketCapability,Companion_instance_4=new Companion_3,Js_instance=new Js,_.$_$=_.$_$||{},_.$_$.a=bodyAsText,_.$_$.b=Plugin_getInstance_4,_.$_$.c=set_expectSuccess,_.$_$.d=HttpRequestBuilder,_.$_$.e=url,_.$_$.f=HttpStatement,_.$_$.g=HttpClient_1,_},__WEBPACK_AMD_DEFINE_ARRAY__=[exports,__webpack_require__(675),__webpack_require__(485),__webpack_require__(754),__webpack_require__(205),__webpack_require__(498),__webpack_require__(229),__webpack_require__(997),__webpack_require__(878)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},498:function(t,n,i){var e,r,s;r=[n,i(485),i(675),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r=n.$_$.q,s=i.$_$.ca,u=i.$_$.nb,o=e.$_$.d,_=i.$_$.fa,h=i.$_$.tg,a=i.$_$.fh,l=i.$_$.a5,c=i.$_$.mb,f=i.$_$.f;function v(){}function d(){this.j25_1=new o}function w(){}return u(v,"HandlerRegistration",s,r),u(d,"Events",s,f,f,d),u(w,"EventDefinition",s,f,f,w),c(d).k25=function(t,n){var i=null,e=this.j25_1.v1q(t);if(null==e);else for(var r=e.xt_1;!_(r,e);){if(r instanceof v){var s=r;try{var u=s.o25_1;("function"==typeof u?u:h())(n)}catch(t){if(!(t instanceof Error))throw t;var o,c=t;null==i?o=null:(a(i,c),o=l),null==o&&(i=c)}}r=r.xt_1}if(null!=i)throw i},t.$_$=t.$_$||{},t.$_$.a=w,t.$_$.b=d,t})?e.apply(n,r):e)||(t.exports=s)},997:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j=Math.imul,T=n.$_$.f,A=n.$_$.f1,z=i.$_$.f,I=i.$_$.k,D=n.$_$.a5,M=i.$_$.n,N=i.$_$.o,R=i.$_$.m,P=n.$_$.y9,L=n.$_$.r2,F=n.$_$.jd,U=n.$_$.z9,H=n.$_$.rb,V=n.$_$.cg,B=n.$_$.ce,W=n.$_$.w2,Y=n.$_$.v2,G=n.$_$.e1,K=n.$_$.aa,X=n.$_$.ba,J=n.$_$.z2,Z=n.$_$.ob,Q=i.$_$.t,tt=n.$_$.ig,nt=n.$_$.n1,it=n.$_$.w9,et=n.$_$.mb,rt=n.$_$.ca,st=n.$_$.nb,ut=n.$_$.u2,ot=n.$_$.fb,_t=n.$_$.x2,ht=n.$_$.y7,at=n.$_$.z7,lt=n.$_$.y5,ct=n.$_$.l,ft=n.$_$.y2,vt=n.$_$.w8,dt=n.$_$.h8,wt=n.$_$.x7,pt=n.$_$.t7,mt=n.$_$.t6,gt=n.$_$.kb,yt=n.$_$.sd,bt=n.$_$.d5,$t=n.$_$.wa,kt=n.$_$.xd,xt=n.$_$.r7,qt=n.$_$.wd,St=n.$_$.tg,Ct=n.$_$.sa,Et=n.$_$.xf,Ot=n.$_$.ld,jt=n.$_$.lb,Tt=n.$_$.a8,At=n.$_$.fa,zt=n.$_$.la,It=n.$_$.ma,Dt=i.$_$.e,Mt=n.$_$.jg,Nt=i.$_$.l,Rt=n.$_$.o7,Pt=n.$_$.he,Lt=n.$_$.td,Ft=n.$_$.ee,Ut=e.$_$.q,Ht=n.$_$.v6,Vt=e.$_$.p,Bt=e.$_$.o,Wt=e.$_$.s,Yt=e.$_$.r,Gt=n.$_$.u6,Kt=n.$_$.gf,Xt=n.$_$.i,Jt=n.$_$.oh,Zt=n.$_$.xh,Qt=n.$_$.m,tn=n.$_$.s5,nn=n.$_$.t2,en=n.$_$.s1,rn=n.$_$.lf,sn=n.$_$.u7,un=n.$_$.zb,on=n.$_$.u,_n=n.$_$.dg,hn=n.$_$.na,an=n.$_$.de,ln=n.$_$.ue,cn=n.$_$.x9,fn=n.$_$.re,vn=n.$_$.u8,dn=n.$_$.a7,wn=n.$_$.k7,pn=n.$_$.t1,mn=e.$_$.x,gn=n.$_$.ud,yn=n.$_$.r6,bn=n.$_$.kg,$n=n.$_$.y1,kn=n.$_$.vd,xn=n.$_$.jf,qn=n.$_$.s7,Sn=e.$_$.y,Cn=e.$_$.u,En=e.$_$.t,On=n.$_$.te,jn=n.$_$.q5,Tn=n.$_$.m7,An=n.$_$.wh,zn=n.$_$.ph,In=n.$_$.c,Dn=n.$_$.tc,Mn=n.$_$.ka,Nn=n.$_$.pd,Rn=i.$_$.j,Pn=n.$_$.pb,Ln=n.$_$.bf,Fn=e.$_$.c,Un=e.$_$.v;function Hn(){return oi(),r}function Vn(){return oi(),s}function Bn(){return oi(),u}function Wn(){return oi(),_}function Yn(t,n){n=n!==T&&n,oi();var i,e,r=A();return Zn(I(z().q1k_1.u1k(),t),(i=r,e=n,function(t){return Hn().r(t)||(oi(),h).r(t)?i.s5(ot(t)):e&&32===t?i.s5(L(43)):i.r5(Qn(t)),D})),r.toString()}function Gn(t,n,i,e){return n=n===T?0:n,i=i===T?t.length:i,e=e===T?z().q1k_1:e,oi(),ti(t,n,i,!1,e)}function Kn(t,n,i,e){n=n!==T&&n,i=i!==T&&i,e=e===T?z().q1k_1:e,oi();var r,s,u,_=A();return Zn(I(e.u1k(),t),(r=i,s=_,u=n,function(t){return 32===t?r?s.s5(L(43)):s.r5("%20"):Hn().r(t)||!u&&(oi(),o).r(t)?s.s5(ot(t)):s.r5(Qn(t)),D})),_.toString()}function Xn(t,n,i,e,r){return n=n===T?0:n,i=i===T?t.length:i,e=e!==T&&e,r=r===T?z().q1k_1:r,oi(),ti(t,n,i,e,r)}function Jn(t){return oi(),function(t,n){oi();for(var i=A(),e=z().q1k_1,r=0;rs.c1c_1;)n(s.u1h());i=!1;var u=N(t,r);if(null==u)break t;r=u,i=!0}}finally{i&&R(t,r)}}}function Qn(t){oi();var n=255&t,i=P(3);return i[0]=L(37),i[1]=ni(n>>4),i[2]=ni(15&n),F(i)}function ti(t,n,i,e,r){oi();var s=n;if(s255?u/3|0:u);e>n&&o.t7(t,n,e);for(var _=e,h=null;_=i){var c=_,f=K(t);throw new ei("Incomplete trailing HEX escape: "+H(X(t,c,f))+", in "+t+" at "+_)}var v=ri(U(t,_+1|0)),d=ri(U(t,_+2|0));if(-1===v||-1===d)throw new ei("Wrong HEX escape: %"+J(U(t,_+1|0))+J(U(t,_+2|0))+", in "+t+", at "+_);var w=l;l=w+1|0,h[w]=Z(j(v,16)+d|0),_=_+3|0}o.r5(Q(h,0,l,s))}else o.s5(a),_=_+1|0}return o.toString()}function ei(t){nt(t,this),it(this,ei)}function ri(t){return oi(),L(48)<=t&&t<=L(57)?ut(t,L(48)):L(65)<=t&&t<=L(70)?ut(t,L(65))+10|0:L(97)<=t&&t<=L(102)?ut(t,L(97))+10|0:-1}function si(t){return oi(),Yn(t,!0)}function ui(t){return function(n){return t.r5(Qn(n)),D}}function oi(){if(!a){a=!0;for(var t=at(ht(_t(L(97),L(122)),_t(L(65),L(90))),_t(L(48),L(57))),n=ct(lt(t,10)),i=t.v();i.w();){var e=i.y().oa_1,l=ft(e),c=Z(l);n.s(c)}r=vt(n),s=vt(at(ht(_t(L(97),L(122)),_t(L(65),L(90))),_t(L(48),L(57)))),u=vt(at(ht(_t(L(97),L(102)),_t(L(65),L(70))),_t(L(48),L(57))));for(var f=dt([new V(L(58)),new V(L(47)),new V(L(63)),new V(L(35)),new V(L(91)),new V(L(93)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126)),new V(L(43))]),v=ct(lt(f,10)),d=f.v();d.w();){var w=d.y().oa_1,p=ft(w),m=Z(p);v.s(m)}o=v,_=dt([new V(L(58)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(43)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),wt(Vn(),dt([new V(L(33)),new V(L(35)),new V(L(36)),new V(L(38)),new V(L(43)),new V(L(45)),new V(L(46)),new V(L(94)),new V(L(95)),new V(L(96)),new V(L(124)),new V(L(126))]));for(var g=pt([new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),y=ct(lt(g,10)),b=g.v();b.w();){var $=b.y().oa_1,k=ft($),x=Z(k);y.s(x)}h=y}}function _i(t,n,i){return function(t,n,i,e){return i=i===T?mt():i,fi.call(e,t,n,t+"/"+n,i),e}(t,n,i,gt(et(fi)))}function hi(){l=this,this.e1u_1=_i("*","*")}function ai(){return null==l&&new hi,l}function li(){c=this,this.j1u_1=_i("application","*"),this.k1u_1=_i("application","atom+xml"),this.l1u_1=_i("application","cbor"),this.m1u_1=_i("application","json"),this.n1u_1=_i("application","hal+json"),this.o1u_1=_i("application","javascript"),this.p1u_1=_i("application","octet-stream"),this.q1u_1=_i("application","rss+xml"),this.r1u_1=_i("application","xml"),this.s1u_1=_i("application","xml-dtd"),this.t1u_1=_i("application","zip"),this.u1u_1=_i("application","gzip"),this.v1u_1=_i("application","x-www-form-urlencoded"),this.w1u_1=_i("application","pdf"),this.x1u_1=_i("application","vnd.openxmlformats-officedocument.spreadsheetml.sheet"),this.y1u_1=_i("application","vnd.openxmlformats-officedocument.wordprocessingml.document"),this.z1u_1=_i("application","vnd.openxmlformats-officedocument.presentationml.presentation"),this.a1v_1=_i("application","protobuf"),this.b1v_1=_i("application","wasm"),this.c1v_1=_i("application","problem+json"),this.d1v_1=_i("application","problem+xml")}function ci(){f=this,this.e1v_1=_i("text","*"),this.f1v_1=_i("text","plain"),this.g1v_1=_i("text","css"),this.h1v_1=_i("text","csv"),this.i1v_1=_i("text","html"),this.j1v_1=_i("text","javascript"),this.k1v_1=_i("text","vcard"),this.l1v_1=_i("text","xml"),this.m1v_1=_i("text","event-stream")}function fi(t,n,i,e){ai(),e=e===T?mt():e,pi.call(this,i,e),this.p1v_1=t,this.q1v_1=n}function vi(t){nt("Bad Content-Type format: "+t,this),it(this,vi)}function di(t){var n,i=t.s1v("charset");if(null==i)n=null;else{var e;try{e=Dt.s1n(i)}catch(t){if(!(t instanceof Mt))throw t;e=null}n=e}return n}function wi(){}function pi(t,n){n=n===T?mt():n,this.z1t_1=t,this.a1u_1=n}function mi(t){if(yi(),0===K(t))return!0;if(function(t){if(yi(),t.length<2)return!1;if(Lt(t)!==L(34)||Pt(t)!==L(34))return!1;var n=1;t:do{var i=qt(t,L(34),n);if(i===Ft(t))break t;for(var e=0,r=i-1|0;U(t,r)===L(92);)e=e+1|0,r=r-1|0;if(0==(e%2|0))return!1;n=i+1|0}while(nFt(t))r=te().w22_1;else{te();var s=ie();(function(t,n,i,e,r){var s=0,u=i,o=-1,_=i,h=Ft(n);if(_<=h)do{var a=_;if(_=_+1|0,s===e)return D;var l=U(n,a);l===L(38)?(oe(t,n,u,o,a,r),u=a+1|0,o=-1,s=s+1|0):l===L(61)&&-1===o&&(o=a)}while(a!==h);if(s===e)return D;oe(t,n,u,o,n.length,r)})(s,t,n,i,e),r=s.y2()}return r}function oe(t,n,i,e,r,s){if(-1===e){var u=_e(i,r,n),o=he(u,r,n);if(o>u){var _=s?Xn(n,u,o):n.substring(u,o);t.m1q(_,mt())}return D}var h=_e(i,e,n),a=he(h,e,n);if(a>h){var l=s?Xn(n,h,a):n.substring(h,a),c=_e(e+1|0,r,n),f=he(c,r,n),v=s?Xn(n,c,f,!0):n.substring(c,f);t.p1q(l,v)}}function _e(t,n,i){for(var e=t;et&&an(U(i,e-1|0));)e=e-1|0;return e}function ae(t){var n=t.a23_1;if(K(n)>0||"file"===t.z22_1.j23_1)return D;t.a23_1=ce().b24_1.m23_1,t.z22_1.equals(Ce().c24_1)&&(t.z22_1=ce().b24_1.l23_1),0===t.b23_1&&(t.b23_1=ce().b24_1.n23_1)}function le(){x=this,this.b24_1=function(t){return be(new fe,t)}(function(t){var n;if(2===Un(Fn()).y9_1){var i=function(){var t=null;"undefined"!=typeof window?t=window.location:"undefined"!=typeof self&&(t=self.location);var n="";return t&&(n=t.origin),n&&"null"!=n?n:"http://localhost"}();n=null!=i&&"string"==typeof i?i:St()}else n="http://localhost";return n}()).y2()}function ce(){return null==x&&new le,x}function fe(t,n,i,e,r,s,u,o,_){ce(),t=t===T?Ce().c24_1:t,n=n===T?"":n,i=i===T?0:i,e=e===T?null:e,r=r===T?null:r,s=s===T?mt():s,u=u===T?te().w22_1:u,o=o===T?"":o,_=_!==T&&_,this.z22_1=t,this.a23_1=n,this.b23_1=i,this.c23_1=_,this.d23_1=null==e?null:Yn(e),this.e23_1=null==r?null:Yn(r),this.f23_1=Kn(o);for(var h=ct(lt(s,10)),a=s.v();a.w();){var l=Jn(a.y());h.s(l)}this.g23_1=h,this.h23_1=function(t){var n=ie();return function(t,n){for(var i=n.g1q().v();i.w();){for(var e=i.y(),r=n.f1q(e),s=null==r?mt():r,u=Yn(e),o=ct(lt(s,10)),_=s.v();_.w();){var h=si(_.y());o.s(h)}t.m1q(u,o)}}(n,t),n}(u),this.i23_1=new ze(this.h23_1)}function ve(t){var n=A();return n.r5(pe(t)),n.r5(t.a23_1),0!==t.b23_1&&t.b23_1!==t.z22_1.k23_1&&(n.r5(":"),n.r5(t.b23_1.toString())),n.toString()}function de(){return q}function we(t,n){n.s7(t.z22_1.j23_1);var i=t.z22_1.j23_1;if("file"===i)return function(t,n,i){t.s7("://"),t.s7(n),ln(i,L(47))||t.s5(L(47)),t.s7(i)}(n,t.a23_1,ge(t)),n;if("mailto"===i)return function(t,n,i){t.s7(":"),t.s7(n),t.s7(i)}(n,pe(t),t.a23_1),n;n.s7("://"),n.s7(ve(t)),function(t,n,i,e){!kt(n)&&!On(n,"/")&&t.s5(L(47)),t.s7(n),i.d1()&&!e||t.s7("?");for(var r=i.h1q(),s=Qt(),u=r.v();u.w();){var o,_=u.y(),h=_.i2(),a=_.j2();if(a.d1())o=qn(Zt(h,null));else{for(var l=ct(lt(a,10)),c=a.v();c.w();){var f=c.y(),v=Zt(h,f);l.s(v)}o=l}jn(s,o)}Tn(s,t,"&",T,T,T,T,je)}(n,ge(t),t.h23_1,t.c23_1);var e=t.f23_1;return K(e)>0&&(n.s5(L(35)),n.s7(t.f23_1)),n}function pe(t){var n=A();return Oe(n,t.d23_1,t.e23_1),n.toString()}function me(t,n){t.g23_1=kt(n)?mt():"/"===n?ye():vn(fn(n,cn([L(47)])))}function ge(t){return function(t){if(t.d1())return"";if(1===t.n()){var n=dn(t);return 0===K(n)?"/":dn(t)}return wn(t,"/")}(t.g23_1)}function ye(){return qe(),S}function be(t,n){if(qe(),kt(n))return t;var i;try{i=function(t,n){var i;qe();t:{var e=0,r=K(n)-1|0;if(e<=r)do{var s=e;e=e+1|0;var u=U(n,s);if(!an(u)){i=s;break t}}while(e<=r);i=-1}var o,_=i;t:{var h=K(n)-1|0;if(0<=h)do{var a=h;h=h+-1|0;var l=U(n,a);if(!an(l)){o=a;break t}}while(0<=h);o=-1}var c=o+1|0,f=function(t,n,i){qe();var e=n,r=-1,s=U(t,e);for(L(97)<=s&&s<=L(122)||L(65)<=s&&s<=L(90)||(r=e);e0){var v=_,d=_+f|0,w=n.substring(v,d);t.z22_1=Ce().p24(w),_=_+(f+1|0)|0}var p=function(t,n,i,e){qe();for(var r=0;(n+r|0)=2)t:for(;;){var m,g=gn(n,mn("@/\\?#"),_),y=null==(m=g>0?g:null)?c:m;if(!(y=c)return t.g23_1=U(n,c-1|0)===L(47)?ye():mt(),t;var q,S=t;q=0===p?yn(t.g23_1,1):mt(),S.g23_1=q;var C,E=gn(n,mn("?#"),_),O=null==(C=E>0?E:null)?c:C;if(O>_){var j,A=_,z=n.substring(A,O);if(1===t.g23_1.n()){var I=dn(t.g23_1);j=0===K(I)}else j=!1;var M=j?mt():t.g23_1,N="/"===z?ye():fn(z,cn([L(47)])),R=at(1===p?ye():mt(),N);t.g23_1=at(M,R),_=O}return _0?s:null)?e:r,o=i+1|0;return ue(n.substring(o,u),T,T,!1).i1q((_=t,function(t,n){return _.h23_1.m1q(t,n),D})),u;var _}(t,n,_,c)),function(t,n,i,e){if(qe(),i0?s:null)?e:r;if(t.a23_1=n.substring(i,u),(u+1|0)?@[\\]{}',e))throw new Fi(t,r)}},et(Pi).t1z=function(t){for(var n=0,i=0;i=0?i:e}return n}(n),s=(e.ca(r)<=0?e:r).la(),u=ht(s);return function(t,n,i,e){var r=qe(ee(ve(t)),!0),s=0,u=!0,o=Ti(n,1);if(null!=o){var _=o,h=1;try{t:do{var a,l,c=_,f=c.d1c_1-c.c1c_1|0;if(f>=h)try{var v,d=_,w=e-s|0,p=d.d1c_1-d.c1c_1|0;if(w0&&d.k1h(p),S=0}else S=s0)}finally{u&&ji(n,_)}}if(s=N)try{var U=M,H=U.b1c_1,V=U.c1c_1,B=U.d1c_1,W=pe(new Int8Array(H.f1h_1.buffer,H.f1h_1.byteOffset+V|0,B-V|0),r,e-s|0);i.s7(W.d1o_1),s=s+W.d1o_1.length|0;var Y=W.e1o_1;U.g1h(Y),N=z=Y>0?1:z===de()?0:z+1|0}finally{var G=M;R=G.d1c_1-G.c1c_1|0}else R=F;if(I=!1,0===R)P=Ai(n,M);else{var K;if(R0)}finally{I&&ji(n,M)}}}}(t,n,u,i),u.toString()}function bn(t,n,i,e,r){var s=e;if(s>=r)return 0;var u=0,o=zi(n,1,null);try{var _;t:for(;;){var h=o,a=h.f1c_1-h.d1c_1|0,l=ce(t,i,s,r,h);if(!(l>=0))throw I(T("Check failed."));if(s=s+l|0,u=u+(a-(h.f1c_1-h.d1c_1|0)|0)|0,(_=s>=r?0:0===l?8:1)<=0)break t;o=zi(n,_,o)}}finally{n.c1h()}return u+function(t,n){var i=1,e=0,r=zi(n,1,null);try{t:for(;;){var s=r,u=s.f1c_1-s.d1c_1|0;if(i=0,e=e+(u-(s.f1c_1-s.d1c_1|0)|0)|0,!(i>0))break t;r=zi(n,1,r)}}finally{n.c1h()}return e}(0,n)|0}function $n(){this.d1h_1=8}function kn(t){this.b1c_1=t,this.c1c_1=0,this.d1c_1=0,this.e1c_1=0,this.f1c_1=this.b1c_1.f1h_1.byteLength,this.g1c_1=this.b1c_1.f1h_1.byteLength}function xn(t,n){throw new $e("Unable to discard "+t+" bytes: only "+n+" available for reading")}function qn(t,n){throw new $e("Unable to discard "+t+" bytes: only "+n+" available for writing")}function Sn(t,n,i){var e=function(t,n,i,e){return Cn.call(e,"Not enough free space to write "+t+" of "+n+" bytes, available "+i+" bytes."),e}(t,n,i,vt(N(Cn)));return K(e,Sn),e}function Cn(t){wt(t=t===F?"Not enough free space":t,this),K(this,Cn)}function En(t,n,i){var e=n.d1c_1-n.c1c_1|0,r=Math.min(e,i);(t.f1c_1-t.d1c_1|0)<=r&&function(t,n){if(((t.f1c_1-t.d1c_1|0)+(t.g1c_1-t.f1c_1|0)|0)0&&t.s1h()}(t,r);var s=t.b1c_1,u=t.d1c_1;t.f1c_1;var o=n.b1c_1,_=n.c1c_1;n.d1c_1,o.x1h(s,_,r,u);var h=r;n.g1h(h);var a=h;return t.h1h(a),a}function On(){return h||(h=!0,o=new jn),o}function jn(t,n,i){t=t===F?4096:t,n=n===F?1e3:n,i=i===F?p:i,Te.call(this,n),this.b1i_1=t,this.c1i_1=i}function Tn(t,n,i,e){i=i===F?0:i,e=e===F?n.length-i|0:e;var r=t.b1c_1,s=t.d1c_1,u=t.f1c_1-s|0;if(u=0))throw A(T("length shouldn't be negative: "+i));if(!(i<=(n.d1c_1-n.c1c_1|0))){var e="length shouldn't be greater than the source read remaining: "+i+" > "+(n.d1c_1-n.c1c_1|0);throw A(T(e))}if(!(i<=(t.f1c_1-t.d1c_1|0))){var r="length shouldn't be greater than the destination write remaining space: "+i+" > "+(t.f1c_1-t.d1c_1|0);throw A(T(r))}var s=t.b1c_1,u=t.d1c_1,o=t.f1c_1-u|0;if(o=0))throw A(T("Failed requirement."));if(!(i<=(n.f1c_1-n.d1c_1|0)))throw A(T("Failed requirement."));var e=t.b1c_1,r=t.c1c_1;if((t.d1c_1-r|0)r)!function(t,n,i,e){var r=t.k1d_1.c1j(),s=t.k1d_1.c1j();r.m1h(8),s.m1h(8),r.o1k(s),s.o1k(n.f1j()),En(r,n,i-e|0),En(s,n,e),Hn(t,r),t.b1k(Dn(s))}(t,n,i,r);else{var s=t.k1d_1.c1j();s.m1h(8),s.o1k(n.f1j()),En(s,n,i),Hn(t,s)}n.g1j(t.k1d_1)}function Yn(t){if(t.q1d_1)return null;var n=t.y1j();return null==n?(t.q1d_1=!0,null):(function(t,n){var i=Mn(t.l1d_1);if(i===di().q1f_1){if(Hn(t,n),!t.p1d_1.equals(new L(0,0)))throw I("It should be no tail remaining bytes if current tail is EmptyBuffer");var e=n.lz(),r=null==e?null:Dn(e);t.b1k(null==r?new L(0,0):r)}else i.o1k(n),t.b1k(t.p1d_1.gb(Dn(n)))}(t,n),n)}function Gn(t,n,i){for(var e=t,r=n,s=i;;){var u=e,o=u.o1d_1-u.n1d_1|0;if(o>=r)return s;var _=s.lz(),h=null==_?Yn(e):_;if(null==h)return null;var a=h;if(0!==o){var l=En(s,a,r-o|0);e.o1d_1=s.d1c_1;var c=e,f=c.p1d_1.hb(z(l));c.b1k(f),a.d1c_1>a.c1c_1?a.l1h(l):(s.o1k(null),s.o1k(a.f1j()),a.g1j(e.k1d_1));var v=s;if((v.d1c_1-v.c1c_1|0)>=r)return s;r>8&&Kn(0,r)}else s!==di().q1f_1&&e.n1k(s),s=a}}function Kn(t,n){throw I("minSize of "+n+" is too big (should be less than 8)")}function Xn(t,n){0==(n.d1c_1-n.c1c_1|0)&&t.n1k(n)}function Jn(){}function Zn(t,n,i){t=t===F?di().q1f_1:t,n=n===F?Dn(t):n,i=i===F?di().t1f():i,this.k1d_1=i,this.l1d_1=t,this.m1d_1=t.b1c_1,this.n1d_1=t.c1c_1,this.o1d_1=t.d1c_1;var e=this.o1d_1-this.n1d_1|0;this.p1d_1=n.hb(z(e)),this.q1d_1=!1}function Qn(t,n,i,e){i=i===F?0:i;var r=e=e===F?n.length-i|0:e,s=i,u=!0,o=Ti(t,1);if(null!=o){var _=o;try{t:for(;;){var h=_,a=r,l=h.d1c_1-h.c1c_1|0,c=Math.min(a,l);if(zn(h,n,s,c),s=s+c|0,!((r=r-c|0)>0))break t;u=!1;var f=Ai(t,_);if(null==f)break t;_=f,u=!0}}finally{u&&ji(t,_)}}r>0&&_i(r)}function ti(t,n,i){var e=i=i===F?n.f1c_1-n.d1c_1|0:i,r=0,s=!0,u=Ti(t,1);if(null!=u){var o=u;try{t:for(;;){var _=o,h=e,a=_.d1c_1-_.c1c_1|0,l=Math.min(h,a);if(In(_,n,l),r=r+l|0,!((e=e-l|0)>0))break t;s=!1;var c=Ai(t,o);if(null==c)break t;o=c,s=!0}}finally{s&&ji(t,o)}}e>0&&_i(e)}function ni(t){var n=t.u19_1.c1j();return n.m1h(8),t.m1j(n),n}function ii(t,n,i,e){var r=t.w19_1;if(null==r)t.v19_1=n,t.b1a_1=0;else{r.o1k(n);var s=t.y19_1;r.i1h(s),t.b1a_1=t.b1a_1+(s-t.a1a_1|0)|0}t.w19_1=i,t.b1a_1=t.b1a_1+e|0,t.x19_1=i.b1c_1,t.y19_1=i.d1c_1,t.a1a_1=i.c1c_1,t.z19_1=i.f1c_1}function ei(t,n,i,e){n.i1h(t.y19_1);var r=n.d1c_1-n.c1c_1|0,s=i.d1c_1-i.c1c_1|0,u=be(),o=s0))break t;s=zi(t,1,s)}}finally{t.c1h()}}function ui(t,n,i,e){var r=i=i===F?0:i,s=e=e===F?n.length-i|0:e,u=zi(t,1,null);try{t:for(;;){var o=u,_=s,h=o.f1c_1-o.d1c_1|0,a=Math.min(_,h);if(Tn(o,n,r,a),r=r+a|0,!((s=s-a|0)>0))break t;u=zi(t,1,u)}}finally{t.c1h()}}function oi(t,n){var i,e;if(n===F){var r=t.r1d();if(r.ca(z(_t.MAX_VALUE))>0)throw A("Unable to convert to a ByteArray: packet is too big");i=r.la()}else i=n;if(0!==(n=i)){var s=new Int8Array(n);Qn(t,s,0,n),e=s}else e=Oi();return e}function _i(t){throw new $e("Premature end of stream: expected "+t+" bytes")}function hi(t,n,i){return function(t,n,i){if(0===i)return"";if((n.o1d_1-n.n1d_1|0)>=i){var e,r=qe(ve(t).s1k_1,!0),s=n.l1j(),u=n.m1d_1.f1h_1;t:try{var o=0===s.c1c_1&&i===u.byteLength?u:new DataView(u.buffer,u.byteOffset+s.c1c_1|0,i);e=r.f1o(o);break t}catch(t){if(t instanceof Error){var _=t.message;throw new ue("Failed to decode bytes: "+(null==_?"no cause provided":_))}throw t}var h=e;return n.g1h(i),h}return function(t,n,i){var e=qe(ee(ve(t)),!0),r=i,s=ht(i);t:try{var u=!0,o=Ti(n,6);if(null!=o){var _=o,h=6;try{n:do{var a,l,c=_,f=c.d1c_1-c.c1c_1|0;if(f>=h)try{var v,d=_,w=d.d1c_1-d.c1c_1|0,p=r,m=Math.min(w,p);if(0===d.c1c_1&&d.b1c_1.f1h_1.byteLength===m){var g;i:{var y=d.b1c_1.f1h_1;try{g=e.b1o(y,Se(!0));break i}catch(t){if(t instanceof Error){var b=t.message;throw new ue("Failed to decode bytes: "+(null==b?"no cause provided":b))}throw t}}v=g}else{var $;i:{var k=new Int8Array(d.b1c_1.f1h_1.buffer,d.b1c_1.f1h_1.byteOffset+d.c1c_1|0,m);try{$=e.b1o(k,Se(!0));break i}catch(t){if(t instanceof Error){var x=t.message;throw new ue("Failed to decode bytes: "+(null==x?"no cause provided":x))}throw t}}v=$}var q=v;s.r5(q),d.g1h(m),h=(r=r-m|0)>0?6:0}finally{var S=_;a=S.d1c_1-S.c1c_1|0}else a=f;if(u=!1,0===a)l=Ai(n,_);else{var C;if(a0)}finally{u&&ji(n,_)}}if(r>0){var j=!0,T=Ti(n,1);if(null!=T){var A=T;try{n:for(;;){var z,I=A,D=I.d1c_1-I.c1c_1|0,M=r,N=Math.min(D,M);if(0===I.c1c_1&&I.b1c_1.f1h_1.byteLength===N)z=e.f1o(I.b1c_1.f1h_1);else{var R;i:{var P=new Int8Array(I.b1c_1.f1h_1.buffer,I.b1c_1.f1h_1.byteOffset+I.c1c_1|0,N);try{R=e.b1o(P,Se(!0));break i}catch(t){if(t instanceof Error){var L=t.message;throw new ue("Failed to decode bytes: "+(null==L?"no cause provided":L))}throw t}}z=R}var F=z;s.r5(F),I.g1h(N),r=r-N|0,j=!1;var U=Ai(n,A);if(null==U)break n;A=U,j=!0}}finally{j&&ji(n,A)}}}s.r5(e.c1o());break t}catch(t){if(t instanceof Error){var H=t.message;throw new ue("Failed to decode bytes: "+(null==H?"no cause provided":H))}throw t}if(r>0)throw new $e("Not enough bytes available: had only "+(i-r|0)+" instead of "+i);return s.toString()}(t,n,i)}((i=i===F?se().q1k_1:i).t1k(),t,n)}function ai(t,n,i,e,r){if(i=i===F?0:i,e=e===F?at(n):e,(r=r===F?se().q1k_1:r)===se().q1k_1)return function(t,n,i,e){var r=i,s=zi(t,1,null);try{var u;t:for(;;){var o=s,_=Ci(o.b1c_1,n,r,e,o.d1c_1,o.f1c_1),h=mi(_),a=gi(_);r=r+(65535&$t(h))|0;var l=65535&$t(a);if(o.h1h(l),(u=0==(65535&$t(h))&&r>>16|0);return qt(n)}(t)}function gi(t){return function(t){var n=xt(65535&t);return qt(n)}(t)}function yi(t){wt(t,this),K(this,yi)}function bi(t){throw new yi("Expected "+t+" more character bytes")}function $i(t){return 0==(t>>>16|0)}function ki(t){return t<=1114111}function xi(t){throw A("Malformed code-point "+t+" found")}function qi(t){return 55232+(t>>>10|0)|0}function Si(t){return 56320+(1023&t)|0}function Ci(t,n,i,e,r,s){St();var u=qt(-1),o=i+(65535&$t(u))|0,_=Math.min(e,o);St();var h=qt(-1),a=65535&$t(h),l=gt(s,a),c=r,f=i;t:for(;;){if(c>=l||f>=_)return pi(qt(xt(f-i|0)),qt(xt(c-r|0)));var v=f;f=v+1|0;var d=Ct(n,v),w=65535&yt(d);if(0!=(65408&w))break t;var p=c;c=p+1|0;var m=bt(w);t.f1h_1.setInt8(p,m)}return function(t,n,i,e,r,s,u,o){var _=i,h=s,a=u-3|0;for(;!((a-h|0)<=0||_>=e);){var l=_;_=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(_!==e&&Et(Ct(n,_))){var d=_;_=d+1|0,v=Ei(f,Ct(n,d))}else v=63;c=v}else c=yt(f);var w,p=c,m=h;if(0<=p&&p<=127){var g=bt(p);t.f1h_1.setInt8(m,g),w=1}else if(128<=p&&p<=2047){var y=bt(192|p>>6&31);t.f1h_1.setInt8(m,y);var b=m+1|0,$=bt(128|63&p);t.f1h_1.setInt8(b,$),w=2}else if(2048<=p&&p<=65535){var k=bt(224|p>>12&15);t.f1h_1.setInt8(m,k);var x=m+1|0,q=bt(128|p>>6&63);t.f1h_1.setInt8(x,q);var S=m+2|0,C=bt(128|63&p);t.f1h_1.setInt8(S,C),w=3}else if(65536<=p&&p<=1114111){var E=bt(240|p>>18&7);t.f1h_1.setInt8(m,E);var O=m+1|0,j=bt(128|p>>12&63);t.f1h_1.setInt8(O,j);var T=m+2|0,A=bt(128|p>>6&63);t.f1h_1.setInt8(T,A);var z=m+3|0,I=bt(128|63&p);t.f1h_1.setInt8(z,I),w=4}else xi(p);h=h+w|0}return h===a?function(t,n,i,e,r,s,u,o){var _=i,h=s;t:for(;;){var a=u-h|0;if(a<=0||_>=e)break t;var l=_;_=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(_!==e&&Et(Ct(n,_))){var d=_;_=d+1|0,v=Ei(f,Ct(n,d))}else v=63;c=v}else c=yt(f);var w,p=c;if(1<=p&&p<=127?w=1:128<=p&&p<=2047?w=2:2048<=p&&p<=65535?w=3:65536<=p&&p<=1114111?w=4:xi(p),w>a){_=_-1|0;break t}var m,g=h;if(0<=p&&p<=127){var y=bt(p);t.f1h_1.setInt8(g,y),m=1}else if(128<=p&&p<=2047){var b=bt(192|p>>6&31);t.f1h_1.setInt8(g,b);var $=g+1|0,k=bt(128|63&p);t.f1h_1.setInt8($,k),m=2}else if(2048<=p&&p<=65535){var x=bt(224|p>>12&15);t.f1h_1.setInt8(g,x);var q=g+1|0,S=bt(128|p>>6&63);t.f1h_1.setInt8(q,S);var C=g+2|0,E=bt(128|63&p);t.f1h_1.setInt8(C,E),m=3}else if(65536<=p&&p<=1114111){var O=bt(240|p>>18&7);t.f1h_1.setInt8(g,O);var j=g+1|0,T=bt(128|p>>12&63);t.f1h_1.setInt8(j,T);var A=g+2|0,z=bt(128|p>>6&63);t.f1h_1.setInt8(A,z);var I=g+3|0,D=bt(128|63&p);t.f1h_1.setInt8(I,D),m=4}else xi(p);h=h+m|0}return pi(qt(xt(_-r|0)),qt(xt(h-o|0)))}(t,n,_,e,r,h,u,o):pi(qt(xt(_-r|0)),qt(xt(h-o|0)))}(t,n,f=f-1|0,_,i,c,l,r)}function Ei(t,n){return(yt(t)-55232|0)<<10|yt(n)-56320|0}function Oi(){return Ii(),c}function ji(t,n){if(Ii(),n===t)return j;n.d1c_1>n.c1c_1?(n.g1c_1-n.f1c_1|0)<8?t.l1k(n):t.n1d_1=n.c1c_1:t.k1k(n)}function Ti(t,n){return Ii(),t.i1k(n)}function Ai(t,n){return Ii(),n===t?t.g1e()?t:null:t.j1k(n)}function zi(t,n,i){return Ii(),null!=i&&t.c1h(),t.o1j(n)}function Ii(){f||(f=!0,c=new Int8Array(0))}function Di(t,n,i){D.call(this,i),this.t1l_1=t,this.u1l_1=n}function Mi(t,n,i){D.call(this,i),this.h1l_1=t,this.i1l_1=n}function Ni(){this.j19_1=U(null)}function Ri(t,n,i,e){D.call(this,e),this.d1m_1=t,this.e1m_1=n,this.f1m_1=i}function Pi(t,n,i,e){D.call(this,e),this.s1m_1=t,this.t1m_1=n,this.u1m_1=i}function Li(){Te.call(this,128)}function Fi(){}function Ui(){}function Hi(t){return function(n){return t.q1n_1=null,null!=n&&t.jr(function(t){for(var n=t;n instanceof Y;){if(ot(n,n.cause))return t;var i=n.cause;if(null==i)return n;n=i}return n}(n)),j}}function Vi(t,n){cn.call(this,t,n),this.q1n_1=null}function Bi(){var t=new Vi(di().q1f_1,!1);return t.u11(null),t}function Wi(){w=this,this.b1n_1=At(Bi)}function Yi(){return null==w&&new Wi,w}function Gi(){}function Ki(){}function Xi(t,n,i,e){return i=i===F?0:i,e=e===F?n.byteLength-i|0:e,new Qi(new DataView(n,i,e))}function Ji(){m=this,this.p1k_1=new Qi(new DataView(new ArrayBuffer(0)))}function Zi(){return null==m&&new Ji,m}function Qi(t){Zi(),this.f1h_1=t}function te(t,n,i,e,r){!function(t,n,i,e,r){var s=new Int8Array(t,i,e);new Int8Array(n.f1h_1.buffer,n.f1h_1.byteOffset+r|0,e).set(s,0)}(t.buffer,n,i+t.byteOffset|0,e,r)}function ne(){}function ie(t){this.s1k_1=t}function ee(t){return t.s1k_1}function re(){y=this,this.q1k_1=new he("UTF-8"),this.r1k_1=new he("ISO-8859-1")}function se(){return null==y&&new re,y}function ue(t){Lt(this,t),K(this,ue)}function oe(t){this.t1n_1=t}function _e(t){this.u1n_1=t}function he(t){ie.call(this,t),this.w1n_1=t}function ae(t){_e.call(this,t),this.y1n_1=t}function le(t){oe.call(this,t),this.a1o_1=t}function ce(t,n,i,e,r){if(!(i<=e))throw A(T("Failed requirement."));if(fe(t).equals(se().r1k_1))return function(t,n,i,e){if(n>=i)return 0;var r=e.b1c_1,s=e.d1c_1,u=e.f1c_1,o=r.r1n(s,u-s|0).f1h_1,_=new Int8Array(o.buffer,o.byteOffset,o.byteLength),h=0,a=n;if(a255&&me(f);var v=h;h=v+1|0,_[v]=bt(f)}while(a0;){var _=e-u|0,h=o/6|0,a=Math.min(_,h),l=mt(a,1),c=Ot(Ct(n,(u+l|0)-1|0)),f=c&&1===l?u+2|0:c?(u+l|0)-1|0:u+l|0,v=T(Ft(n,u,f)),d=s.encode(v);if(d.length>o)break t;ge(r,d),u=f,o=o-d.length|0}return u-i|0}function fe(t){return t.u1n_1}function ve(t){return t.t1n_1}function de(){return b}function we(t,n){this.d1o_1=t,this.e1o_1=n}function pe(t,n,i){if(0===i)return new we("",0);try{var e=gt(i,t.byteLength),r=n.f1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}return function(t,n,i){for(var e=gt(i>=268435455?_t.MAX_VALUE:E(i,8),t.byteLength);e>8;){try{var r=n.f1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}e=e/2|0}for(e=8;e>0;){try{var s=n.f1o(t.subarray(0,e));if(s.length<=i)return new we(s,e)}catch(t){}e=e-1|0}t:try{n.f1o(t);break t}catch(t){if(t instanceof Error){var u=t.message;throw new ue("Failed to decode bytes: "+(null==u?"no cause provided":u))}throw t}throw new ue("Unable to decode buffer")}(t,n,i)}function me(t){throw new ue("The character with unicode point "+t+" couldn't be mapped to ISO-8859-1 character")}function ge(t,n,i,e){i=i===F?0:i,e=e===F?n.byteLength-i|0:e;var r=t.b1c_1,s=t.d1c_1;if((t.f1c_1-s|0)=0))throw A(T("Failed requirement."));if(this.cc_1=1,(t=this.m1f_1.o1f(this.n1f_1,this))===M())return t;continue t;case 1:this.m1f_1.f1e();var n=this.m1f_1.e1a();if(null!=n)throw n;return!this.m1f_1.u1a()&&this.m1f_1.s1a()>=this.n1f_1;case 2:throw this.fc_1}}catch(t){var i=t;if(2===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},N(cn).u1f=function(){return this.u18_1},N(cn).f1a=function(){return!(null==this.a19_1.kotlinx$atomicfu$value)},N(cn).s1a=function(){return this.y18_1.kotlinx$atomicfu$value},N(cn).t1a=function(){var t=4088-this.z18_1.kotlinx$atomicfu$value|0;return Math.max(0,t)},N(cn).u1a=function(){return!(t=this,n=t.a19_1.kotlinx$atomicfu$value,null==(null==n?null:n.i19_1)&&(!this.f1a()||0!==this.z18_1.kotlinx$atomicfu$value));var t,n},N(cn).e1a=function(){var t=this.a19_1.kotlinx$atomicfu$value;return null==t?null:t.i19_1},N(cn).a1c=function(t,n){var i=new nn(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).o1f=function(t,n){var i=new en(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).v1f=function(){Xt(this)},N(cn).f1e=function(){this.g19_1,function(t,n){Ii();var i=n.n(),e=n.c1a();if(null==e)return 0;var r=e;i<=be()&&null==r.lz()&&t.e1k(r)?n.p1j():t.d1k(r)}(this.c19_1,this.h19_1)},N(cn).w1f=function(t,n){var i=new rn(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).x1f=function(t,n,i,e){var r=new sn(this,t,n,i,e);return r.ec_1=j,r.fc_1=null,r.pc()},N(cn).t1d=function(t){(function(t,n){if(!(n>=0))throw A(T("Can't read negative amount of bytes: "+n));if(t.z18_1.atomicfu$getAndAdd(0|-n),t.w18_1.atomicfu$addAndGet$long(z(n)),t.y18_1.atomicfu$getAndAdd(0|-n),!(t.z18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.s1a()+", "+n+" in "+t;throw I(T(i))}if(!(t.s1a()>=0)){var e="Readable bytes count is negative: "+t.s1a()+", "+n+" in "+t;throw I(T(e))}})(this,t),this.f19_1.k19()},N(cn).y1f=function(t,n){var i=new un(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).a1g=function(t,n){return this.b1g(t instanceof kn?t:B(),n)},N(cn).b1g=function(t,n){var i=new _n(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).c1g=function(t,n,i,e){var r=new hn(this,t,n,i,e);return r.ec_1=j,r.fc_1=null,r.pc()},N(cn).d1g=function(t){var n=new an(this,t);return n.ec_1=j,n.fc_1=null,n.pc()},N(cn).u1d=function(t,n){var i=new ln(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).jr=function(t){return null==this.e1a()&&!this.f1a()&&this.u11(null==t?W("Channel cancelled"):t)},N(cn).u11=function(t){var n=null==t?vn():new dn(t);return!!this.a19_1.atomicfu$compareAndSet(null,n)&&(null!=t?(this.c19_1.rs(),this.b19_1.rs(),this.h19_1.rs()):(this.v1f(),this.b19_1.rs()),this.f19_1.e1g(t),!0)},N(cn).f1g=function(t,n){var i,e=this.c19_1.r1d();return e.ca(n)<=0?(t.b19_1.g1g(this.c19_1),t.h1c(e.la()),this.t1d(e.la()),i=e):i=new L(0,0),i},N(cn).h1c=function(t){(function(t,n){if(!(n>=0))throw A(T("Can't write negative amount of bytes: "+n));if(t.z18_1.atomicfu$getAndAdd(n),t.x18_1.atomicfu$addAndGet$long(z(n)),!(t.z18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.z18_1.kotlinx$atomicfu$value+", "+n+" in "+t;throw I(T(i))}})(this,t),this.f1a()&&(this.b19_1.rs(),function(t){if(t.f1a()){var n=t.e1a();throw null==n?new fn("Channel "+t+" is already closed"):n}}(this)),(this.u1f()||0===this.t1a())&&this.v1f()},N(pn).hy=function(){return this.j1g_1},N(pn).un=function(){return this.i1g_1.un()},N(pn).hm=function(){return this.i1g_1.hm()},N(pn).i2=function(){return this.i1g_1.i2()},N(pn).an=function(){return this.i1g_1.an()},N(pn).vn=function(t){return this.i1g_1.vn(t)},N(pn).nn=function(t){this.i1g_1.nn(t)},N(pn).og=function(t,n){return this.i1g_1.og(t,n)},N(pn).kc=function(t){return this.i1g_1.kc(t)},N(pn).fn=function(){return this.i1g_1.fn()},N(pn).jn=function(t,n,i){return this.i1g_1.jn(t,n,i)},N(pn).in=function(t){return this.i1g_1.in(t)},N(pn).ng=function(t){return this.i1g_1.ng(t)},N(pn).pg=function(t){return this.i1g_1.pg(t)},N(pn).dn=function(){return this.i1g_1.dn()},N(pn).toString=function(){return"ChannelJob["+this.i1g_1+"]"},N(mn).hy=function(){return this.k1g_1},N(mn).gm=function(){return this.l1g_1.gm()},N(gn).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(gn).cd=function(t,n){return this.a1h(null!=t&&rt(t,J)?t:B(),n)},N(gn).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=3,this.u1g_1&&this.v1g_1.h1g(O(this.y1g_1.gm().kc(st)));var n=new mn(this.y1g_1,this.v1g_1);if(this.z1g_1=rt(n,J)?n:B(),this.dc_1=2,this.cc_1=1,(t=this.w1g_1(this.z1g_1,this))===M())return t;continue t;case 1:this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var i=this.fc_1;if(!ot(this.x1g_1,ut().ws_1)&&null!=this.x1g_1)throw i;this.v1g_1.jr(i),this.cc_1=4;continue t}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,j}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},N(gn).b1h=function(t,n){var i=new gn(this.u1g_1,this.v1g_1,this.w1g_1,this.x1g_1,n);return i.y1g_1=t,i},N($n).e1h=function(){return di().q1f_1},N(kn).g1h=function(t){if(0===t)return j;var n=this.c1c_1+t|0;(t<0||n>this.d1c_1)&&xn(t,this.d1c_1-this.c1c_1|0),this.c1c_1=n},N(kn).h1h=function(t){var n=this.d1c_1+t|0;(t<0||n>this.f1c_1)&&qn(t,this.f1c_1-this.d1c_1|0),this.d1c_1=n},N(kn).i1h=function(t){var n=this.f1c_1;if(t=n){if(t===n)return this.d1c_1=t,!1;qn(t-this.d1c_1|0,this.f1c_1-this.d1c_1|0)}return this.d1c_1=t,!0},N(kn).j1h=function(t){(t<0||t>this.d1c_1)&&xn(t-this.c1c_1|0,this.d1c_1-this.c1c_1|0),this.c1c_1!==t&&(this.c1c_1=t)},N(kn).k1h=function(t){var n=this.c1c_1-t|0;n=0))throw A(T("startGap shouldn't be negative: "+t));return this.c1c_1>=t?(this.e1c_1=t,j):this.c1c_1===this.d1c_1?(t>this.f1c_1&&function(t,n){if(n>t.g1c_1)throw A("Start gap "+n+" is bigger than the capacity "+t.g1c_1);var i=t.g1c_1-t.f1c_1|0;throw I("Unable to reserve "+n+" start gap: there are already "+i+" bytes reserved in the end")}(this,t),this.d1c_1=t,this.c1c_1=t,this.e1c_1=t,j):void function(t,n){var i="Unable to reserve "+n+" start gap: ",e=t.d1c_1-t.c1c_1|0;throw I(i+"there are already "+e+" content bytes starting at offset "+t.c1c_1)}(this,t)},N(kn).m1h=function(t){if(!(t>=0))throw A(T("endGap shouldn't be negative: "+t));var n=this.g1c_1-t|0;return n>=this.d1c_1?(this.f1c_1=n,j):(n<0&&function(t,n){throw A("End gap "+n+" is too big: capacity is "+t.g1c_1)}(this,t),n=0))throw A(T("newReadPosition shouldn't be negative: "+t));if(!(t<=this.c1c_1)){var n="newReadPosition shouldn't be ahead of the read position: "+t+" > "+this.c1c_1;throw A(T(n))}this.c1c_1=t,this.e1c_1>t&&(this.e1c_1=t)},N(kn).t1h=function(t){t.f1c_1=this.f1c_1,t.e1c_1=this.e1c_1,t.c1c_1=this.c1c_1,t.d1c_1=this.d1c_1},N(kn).u1h=function(){var t=this.c1c_1;if(t===this.d1c_1)throw new $e("No readable bytes available.");return this.c1c_1=t+1|0,this.b1c_1.f1h_1.getInt8(t)},N(kn).v1h=function(t){var n=this.d1c_1;if(n===this.f1c_1)throw new Cn("No free space in the buffer to write a byte");this.b1c_1.f1h_1.setInt8(n,t),this.d1c_1=n+1|0},N(kn).w1h=function(){this.q1h(),this.o1h()},N(kn).toString=function(){return"Buffer[0x"+ft(ct(this),16)+"]("+(this.d1c_1-this.c1c_1|0)+" used, "+(this.f1c_1-this.d1c_1|0)+" free, "+(this.e1c_1+(this.g1c_1-this.f1c_1|0)|0)+" reserved of "+this.g1c_1+")"},N(jn).d1i=function(){return new wi(this.c1i_1.e1i(this.b1i_1),null,this)},N(jn).f1i=function(t){this.c1i_1.g1i(t.b1c_1),N(Te).k1i.call(this,t),t.v1i()},N(jn).k1i=function(t){return this.f1i(t instanceof wi?t:B())},N(jn).w1i=function(t){N(Te).x1i.call(this,t);var n=t.b1c_1;if(!z(n.f1h_1.byteLength).equals(z(this.b1i_1))){var i=t.b1c_1,e=z(i.f1h_1.byteLength),r="Buffer size mismatch. Expected: "+this.b1i_1+", actual: "+e.toString();throw I(T(r))}if(t===di().q1f_1)throw I(T("ChunkBuffer.Empty couldn't be recycled"));if(t===u.e1h())throw I(T("Empty instance couldn't be recycled"));if(0!==t.y1i())throw I(T("Unable to clear buffer: it is still in use."));if(null!=t.lz())throw I(T("Recycled instance shouldn't be a part of a chain."));if(null!=t.u1i_1)throw I(T("Recycled instance shouldn't be a view or another buffer."))},N(jn).x1i=function(t){return this.w1i(t instanceof wi?t:B())},N(jn).z1i=function(t){var n=N(Te).a1j.call(this,t);return n.b1j(),n.w1h(),n},N(jn).a1j=function(t){return this.z1i(t instanceof wi?t:B())},N(Rn).n=function(){return this.h1j()},N(Rn).t19=function(){return 0===this.h1j()},N(Rn).i1j=function(){},N(Rn).j1j=function(t,n,i){},N(Rn).s5=function(t){var n=N(ri).s5.call(this,t);return n instanceof Rn?n:B()},N(Rn).s7=function(t){var n=N(ri).s7.call(this,t);return n instanceof Rn?n:B()},N(Rn).t7=function(t,n,i){var e=N(ri).t7.call(this,t,n,i);return e instanceof Rn?e:B()},N(Rn).y2=function(){var t=this.n(),n=this.c1a();return null==n?Fn().k1j_1:new Un(n,z(t),this.u19_1)},N(Rn).toString=function(){return"BytePacketBuilder[0x"+ct(this)+"]"},N(Un).y1j=function(){return null},N(Un).z1j=function(t,n,i){return 0},N(Un).a1k=function(){},N(Un).toString=function(){return"ByteReadPacket["+ct(this)+"]"},N(Zn).d1f=function(){return!(0!=(this.o1d_1-this.n1d_1|0)||!this.p1d_1.equals(new L(0,0))||!this.q1d_1&&null!=Yn(this))},N(Zn).l1j=function(){var t=this.l1d_1;return t.j1h(this.n1d_1),t},N(Zn).b1k=function(t){if(!(t.ca(new L(0,0))>=0)){var n="tailRemaining shouldn't be negative: "+t.toString();throw A(T(n))}this.p1d_1=t},N(Zn).r1d=function(){var t=this.o1d_1-this.n1d_1|0;return z(t).gb(this.p1d_1)},N(Zn).g1e=function(){return this.n1d_1!==this.o1d_1||!this.p1d_1.equals(new L(0,0))},N(Zn).rs=function(){var t=this.l1j(),n=di().q1f_1;t!==n&&(Hn(this,n),this.b1k(new L(0,0)),Nn(t,this.k1d_1))},N(Zn).e1j=function(){this.rs(),this.q1d_1||(this.q1d_1=!0),this.a1k()},N(Zn).c1a=function(){var t=this.l1j(),n=di().q1f_1;return t===n?null:(Hn(this,n),this.b1k(new L(0,0)),t)},N(Zn).c1k=function(){var t=this.l1j(),n=t.lz(),i=di().q1f_1;if(t===i)return null;if(null==n)Hn(this,i),this.b1k(new L(0,0));else{Hn(this,n);var e=this.p1d_1,r=n.d1c_1-n.c1c_1|0,s=e.hb(z(r));this.b1k(s)}return t.o1k(null),t},N(Zn).d1k=function(t){if(t===di().q1f_1)return j;var n=Dn(t);if(this.l1d_1===di().q1f_1){Hn(this,t);var i=this.o1d_1-this.n1d_1|0,e=n.hb(z(i));this.b1k(e)}else Mn(this.l1d_1).o1k(t),this.b1k(this.p1d_1.gb(n))},N(Zn).e1k=function(t){var n=Mn(this.l1j()),i=t.d1c_1-t.c1c_1|0;if(0===i||(n.f1c_1-n.d1c_1|0)=0))throw A(T("Negative discard is not allowed: "+t));return function(t,n,i){for(var e=n,r=i;;){if(0===e)return r;var s=t.m1k(1);if(null==s)return r;var u=s,o=u.d1c_1-u.c1c_1|0,_=e,h=Math.min(o,_);u.g1h(h),t.n1d_1=t.n1d_1+h|0,Xn(t,u),e=e-h|0,r=r+h|0}}(this,t,0)},N(Zn).g1h=function(t){if(this.f1k(t)!==t)throw new $e("Unable to discard "+t+" bytes due to end of packet")},N(Zn).g1k=function(t,n){if(0===t&&(0===n||this.d1f()))return"";var i=this.r1d();if(i.ca(new L(0,0))>0&&z(n).ca(i)>=0)return hi(this,i.la());var e=gt(mt(t,16),n),r=ht(e);return Vn(this,r,t,n),r.toString()},N(Zn).h1k=function(t,n,i){return t=t===F?0:t,n=n===F?_t.MAX_VALUE:n,i===F?this.g1k(t,n):i.g1k.call(this,t,n)},N(Zn).i1k=function(t){return Gn(this,t,this.l1j())},N(Zn).j1k=function(t){return this.k1k(t)},N(Zn).k1k=function(t){return function(t,n,i){for(var e=t,r=n,s=i;;){if(r===s)return Yn(e);var u=r.f1j();if(r.g1j(e.k1d_1),null!=u){if(u.d1c_1>u.c1c_1){Hn(e,u);var o=e,_=o.p1d_1,h=u.d1c_1-u.c1c_1|0,a=_.hb(z(h));return o.b1k(a),u}r=u}else Hn(e,s),e.b1k(new L(0,0)),r=s}}(this,t,di().q1f_1)},N(Zn).l1k=function(t){var n=t.lz();if(null==n)return Wn(this,t);var i,e,r=n,s=t.d1c_1-t.c1c_1|0,u=8-(t.g1c_1-t.f1c_1|0)|0,o=Math.min(s,u);if(r.e1c_1o){t.s1h(),this.o1d_1=t.d1c_1;var _=this.p1d_1.gb(z(o));this.b1k(_)}else{Hn(this,r);var h=this.p1d_1,a=(r.d1c_1-r.c1c_1|0)-o|0,l=h.hb(z(a));this.b1k(l),t.f1j(),t.g1j(this.k1d_1)}},N(Zn).y1j=function(){var t=this.k1d_1.c1j();try{t.m1h(8);var n=t.d1c_1,i=t.f1c_1-t.d1c_1|0,e=this.z1j(t.b1c_1,n,i);return 0!==e||(this.q1d_1=!0,t.d1c_1>t.c1c_1)?(t.h1h(e),t):(t.g1j(this.k1d_1),null)}catch(n){if(n instanceof Error){var r=n;throw t.g1j(this.k1d_1),r}throw n}},N(Zn).q1j=function(){this.q1d_1||(this.q1d_1=!0)},N(Zn).m1k=function(t){var n=this.l1j();return(this.o1d_1-this.n1d_1|0)>=t?n:Gn(this,t,n)},N(Zn).n1k=function(t){var n=t.f1j(),i=null==n?di().q1f_1:n;Hn(this,i);var e=this.p1d_1,r=i.d1c_1-i.c1c_1|0,s=e.hb(z(r));return this.b1k(s),t.g1j(this.k1d_1),i},N(ri).h1j=function(){return this.b1a_1+(this.y19_1-this.a1a_1|0)|0},N(ri).l1j=function(){var t=this.v19_1;return null==t?di().q1f_1:t},N(ri).v1f=function(){!function(t){var n=t.c1a();if(null==n)return j;var i=n;try{var e=i;t:for(;;){var r=e,s=r.c1c_1,u=r.d1c_1-r.c1c_1|0;t.j1j(r.b1c_1,s,u);var o=e.lz();if(null==o)break t;e=o}}finally{Nn(i,t.u19_1)}}(this)},N(ri).c1a=function(){var t=this.v19_1;if(null==t)return null;var n=t,i=this.w19_1;return null==i||i.i1h(this.y19_1),this.v19_1=null,this.w19_1=null,this.y19_1=0,this.z19_1=0,this.a1a_1=0,this.b1a_1=0,this.x19_1=Zi().p1k_1,n},N(ri).m1j=function(t){if(null!=t.lz())throw I(T("It should be a single buffer chunk."));ii(this,t,t,0)},N(ri).n1j=function(t){var n=Mn(t),i=Dn(t),e=n.d1c_1-n.c1c_1|0,r=i.hb(z(e));r.ca(z(_t.MAX_VALUE))>=0&&function(t,n){throw A("Long value "+t.toString()+" of "+n+" doesn't fit into 32-bit integer")}(r,"total size increase"),ii(this,t,n,r.la())},N(ri).v1h=function(t){var n=this.y19_1;return n=3){var i,e=this.x19_1,r=yt(t);if(0<=r&&r<=127){var s=bt(r);e.f1h_1.setInt8(n,s),i=1}else if(128<=r&&r<=2047){var u=bt(192|r>>6&31);e.f1h_1.setInt8(n,u);var o=n+1|0,_=bt(128|63&r);e.f1h_1.setInt8(o,_),i=2}else if(2048<=r&&r<=65535){var h=bt(224|r>>12&15);e.f1h_1.setInt8(n,h);var a=n+1|0,l=bt(128|r>>6&63);e.f1h_1.setInt8(a,l);var c=n+2|0,f=bt(128|63&r);e.f1h_1.setInt8(c,f),i=3}else if(65536<=r&&r<=1114111){var v=bt(240|r>>18&7);e.f1h_1.setInt8(n,v);var d=n+1|0,w=bt(128|r>>12&63);e.f1h_1.setInt8(d,w);var p=n+2|0,m=bt(128|r>>6&63);e.f1h_1.setInt8(p,m);var g=n+3|0,y=bt(128|63&r);e.f1h_1.setInt8(g,y),i=4}else xi(r);var b=i;return this.y19_1=n+b|0,this}return function(t,n){t:{var i=t.o1j(3);try{var e,r=i.b1c_1,s=i.d1c_1,u=yt(n);if(0<=u&&u<=127){var o=bt(u);r.f1h_1.setInt8(s,o),e=1}else if(128<=u&&u<=2047){var _=bt(192|u>>6&31);r.f1h_1.setInt8(s,_);var h=s+1|0,a=bt(128|63&u);r.f1h_1.setInt8(h,a),e=2}else if(2048<=u&&u<=65535){var l=bt(224|u>>12&15);r.f1h_1.setInt8(s,l);var c=s+1|0,f=bt(128|u>>6&63);r.f1h_1.setInt8(c,f);var v=s+2|0,d=bt(128|63&u);r.f1h_1.setInt8(v,d),e=3}else if(65536<=u&&u<=1114111){var w=bt(240|u>>18&7);r.f1h_1.setInt8(s,w);var p=s+1|0,m=bt(128|u>>12&63);r.f1h_1.setInt8(p,m);var g=s+2|0,y=bt(128|u>>6&63);r.f1h_1.setInt8(g,y);var b=s+3|0,$=bt(128|63&u);r.f1h_1.setInt8(b,$),e=4}else xi(u);var k=e;if(i.h1h(k),!(k>=0))throw I(T("The returned value shouldn't be negative"));break t}finally{t.c1h()}}}(this,t),this},N(ri).s7=function(t){return null==t?this.t7("null",0,4):this.t7(t,0,at(t)),this},N(ri).t7=function(t,n,i){return null==t?this.t7("null",n,i):(ai(this,t,n,i,se().q1k_1),this)},N(ri).g1g=function(t){var n=t.c1a();if(null==n)return t.rs(),j;var i=this.w19_1;if(null==i)return this.n1j(n),j;ei(this,i,n,t.k1d_1)},N(ri).d1a=function(t){var n=this.w19_1;if(null==n)return this.n1j(t),j;ei(this,n,t,this.u19_1)},N(ri).s1d=function(t,n){var i=n;t:for(;i.ca(new L(0,0))>0;){var e=t.o1d_1-t.n1d_1|0,r=z(e);if(!(r.ca(i)<=0)){var s,u=t.m1k(1);null==u?_i(1):s=u;var o=s,_=o.c1c_1;try{si(this,o,i.la())}finally{var h=o.c1c_1;if(h<_)throw I("Buffer's position shouldn't be rewinded");h===o.d1c_1?t.k1k(o):t.n1d_1=h}break t}i=i.hb(r);var a,l=t.c1k();if(null==l)throw new $e("Unexpected end of packet");a=l,this.m1j(a)}},N(ri).rs=function(){this.e1j()},N(ri).o1j=function(t){if((this.z19_1-this.y19_1|0)>=t){var n=this.w19_1;if(null!=n)return n.i1h(this.y19_1),n}return ni(this)},N(ri).c1h=function(){var t=this.w19_1;null==t||(this.y19_1=t.d1c_1)},N(ri).p1j=function(){var t=this.l1j();if(t!==di().q1f_1){if(null!=t.lz())throw I(T("Check failed."));t.o1h(),t.m1h(8),this.y19_1=t.d1c_1,this.a1a_1=this.y19_1,this.z19_1=t.f1c_1}},N(li).c1j=function(){return di().q1f_1},N(li).v1k=function(t){if(t!==di().q1f_1)throw A(T("Only ChunkBuffer.Empty instance could be recycled."))},N(li).d1j=function(t){return this.v1k(t instanceof wi?t:B())},N(li).sp=function(){},N(ci).c1j=function(){return new wi(p.e1i(_),null,this)},N(ci).v1k=function(t){p.g1i(t.b1c_1)},N(ci).d1j=function(t){return this.v1k(t instanceof wi?t:B())},N(fi).c1j=function(){throw kt("This pool doesn't support borrow")},N(fi).v1k=function(t){},N(fi).d1j=function(t){return this.v1k(t instanceof wi?t:B())},N(vi).t1f=function(){return On()},N(wi).o1k=function(t){null==t?this.f1j():function(t,n){if(!t.s1i_1.atomicfu$compareAndSet(null,n))throw I("This chunk has already a next chunk.")}(this,t)},N(wi).lz=function(){return this.s1i_1.kotlinx$atomicfu$value},N(wi).y1i=function(){return this.t1i_1.kotlinx$atomicfu$value},N(wi).f1j=function(){return this.s1i_1.atomicfu$getAndSet(null)},N(wi).w1k=function(){var t=this.u1i_1,n=null==t?this:t;n.x1k();var i=new wi(this.b1c_1,n,this.r1i_1);return this.t1h(i),i},N(wi).g1j=function(t){if(this.y1k()){var n=this.u1i_1;if(null!=n)this.v1i(),n.g1j(t);else{var i=this.r1i_1;(null==i?t:i).d1j(this)}}},N(wi).v1i=function(){if(!this.t1i_1.atomicfu$compareAndSet(0,-1))throw I("Unable to unlink: buffer is in use.");this.f1j(),this.u1i_1=null},N(wi).x1k=function(){t:for(var t=this.t1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<=0)throw I("Unable to acquire chunk: it is already released.");var i=n+1|0;if(t.atomicfu$compareAndSet(n,i))break t}},N(wi).b1j=function(){t:for(var t=this.t1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<0)throw I("This instance is already disposed and couldn't be borrowed.");if(n>0)throw I("This instance is already in use but somehow appeared in the pool.");if(t.atomicfu$compareAndSet(n,1))break t}},N(wi).y1k=function(){var t;t:for(var n=this.t1i_1;;){var i=n.kotlinx$atomicfu$value;if(i<=0)throw I("Unable to release: it is already released.");var e=i-1|0;if(n.atomicfu$compareAndSet(i,e)){t=e;break t}}return 0===t},N(wi).w1h=function(){if(null!=this.u1i_1)throw A(T("Unable to reset buffer with origin"));N(kn).w1h.call(this),this.s1i_1.kotlinx$atomicfu$value=null},N(Di).pc=function(){var t,n,i,e=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,t=this.t1l_1,n=this.u1l_1,i=void 0,(i=new Mi(t,n,this)).ec_1=j,i.fc_1=null,(e=i.pc())===M())return e;continue t;case 1:if(e)return j;this.cc_1=2;continue t;case 2:return this.t1l_1.k19(),j;case 3:throw this.fc_1}}catch(t){var r=t;if(3===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},N(Mi).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.j1l_1=!1,this.k1l_1=jt(),this.h1l_1.j19_1.atomicfu$compareAndSet(null,this.k1l_1)&&this.i1l_1()){if(this.j1l_1=!0,this.cc_1=1,(t=this.k1l_1.ls(this))===M())return t;continue t}this.cc_1=2;continue t;case 1:this.cc_1=2;continue t;case 2:return this.j1l_1;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},N(Ni).f1b=function(t,n){var i=new Di(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(Ni).k19=function(){var t=this.j19_1.atomicfu$getAndSet(null);null==t||t.ks()},N(Ni).e1g=function(t){var n=this.j19_1.atomicfu$getAndSet(null);if(null==n)return j;var i=n;null!=t?i.js(t):i.ks()},N(Ri).pc=function(){var t,n,i,e,r=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=10,this.d1m_1===this.e1m_1)throw A(T("Failed requirement."));if(null!=this.d1m_1.e1a())return this.e1m_1.u11(this.d1m_1.e1a()),new L(0,0);this.g1m_1=this.f1m_1,this.cc_1=1;continue t;case 1:if(!(this.g1m_1.ca(new L(0,0))>0)){this.cc_1=9;continue t}if(this.cc_1=2,(r=this.d1m_1.d1g(this))===M())return r;continue t;case 2:if(this.h1m_1=r,this.h1m_1){this.cc_1=3;continue t}this.cc_1=9;continue t;case 3:if(this.i1m_1=this.d1m_1.f1g(this.e1m_1,this.g1m_1),this.i1m_1.equals(new L(0,0))){if(this.cc_1=6,t=this.d1m_1,n=this.e1m_1,i=this.g1m_1,e=void 0,(e=new Pi(t,n,i,this)).ec_1=j,e.fc_1=null,(r=e.pc())===M())return r;continue t}if(0===this.e1m_1.t1a()){if(this.cc_1=4,(r=this.e1m_1.a1c(1,this))===M())return r;continue t}this.cc_1=5;continue t;case 4:this.cc_1=5;continue t;case 5:this.j1m_1=this.i1m_1,this.cc_1=8;continue t;case 6:var s=r;if(s.equals(new L(0,0))){this.cc_1=9;continue t}this.cc_1=7;continue t;case 7:this.j1m_1=s,this.cc_1=8;continue t;case 8:var u=this.j1m_1;this.g1m_1=this.g1m_1.hb(u),u.ca(new L(0,0))>0&&this.e1m_1.v1f(),this.cc_1=1;continue t;case 9:return this.f1m_1.hb(this.g1m_1);case 10:throw this.fc_1}}catch(t){var o=t;if(10===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},N(Pi).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=9,this.v1m_1=di().t1f().c1j(),this.cc_1=1;continue t;case 1:this.cc_1=2;continue t;case 2:if(this.dc_1=8,this.v1m_1.p1h(Tt(this.u1m_1,z(this.v1m_1.g1c_1)).la()),this.cc_1=3,(t=this.s1m_1.a1g(this.v1m_1,this))===M())return t;continue t;case 3:if(this.x1m_1=t,-1===this.x1m_1){this.v1m_1.g1j(di().t1f()),this.w1m_1=new L(0,0),this.dc_1=9,this.cc_1=6;continue t}this.cc_1=4;continue t;case 4:if(this.cc_1=5,(t=this.t1m_1.w1f(this.v1m_1,this))===M())return t;continue t;case 5:this.w1m_1=z(this.x1m_1),this.dc_1=9,this.cc_1=6;continue t;case 6:var n=this.w1m_1;return this.dc_1=9,this.v1m_1.g1j(di().t1f()),n;case 7:return this.dc_1=9,this.v1m_1.g1j(di().t1f()),j;case 8:this.dc_1=9;var i=this.fc_1;throw this.v1m_1.g1j(di().t1f()),i;case 9:throw this.fc_1}}catch(t){var e=t;if(9===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},N(Li).d1i=function(){return new Int8Array(4096)},N(Ui).d1j=function(t){},N(Ui).sp=function(){},N(Vi).h1g=function(t){var n=this.q1n_1;null==n||n.on(),this.q1n_1=t,t.kn(!0,F,Hi(this))},N(Vi).toString=function(){return"ByteChannel["+this.q1n_1+", "+ct(this)+"]"},N(Wi).e1h=function(){var t=this.b1n_1;return Dt("Empty",1,It,(function(t){return t.e1h()}),null),t.j2()},N(Ki).e1i=function(t){return new Qi(new DataView(new ArrayBuffer(t)))},N(Ki).g1i=function(t){},N(Qi).r1n=function(t,n){if(!(t>=0))throw A(T("offset shouldn't be negative: "+t));if(!(n>=0))throw A(T("length shouldn't be negative: "+n));var i=z(t+n|0),e=z(this.f1h_1.byteLength);if(i.ca(e)>0){var r=z(this.f1h_1.byteLength);throw Mt("offset + length > size: "+t+" + "+n+" > "+r.toString())}return new Qi(new DataView(this.f1h_1.buffer,this.f1h_1.byteOffset+t|0,n))},N(Qi).x1h=function(t,n,i,e){var r=new Int8Array(this.f1h_1.buffer,this.f1h_1.byteOffset+n|0,i);new Int8Array(t.f1h_1.buffer,t.f1h_1.byteOffset+e|0,i).set(r)},N(ne).s1n=function(t){switch(t){case"UTF-8":case"utf-8":case"UTF8":case"utf8":return se().q1k_1}var n;switch(t){case"ISO-8859-1":case"iso-8859-1":n=!0;break;default:var i=Rt(t,Nt(95),Nt(45));n="iso-8859-1"===i||"iso-8859-1"===i.toLowerCase()}if(n||"latin1"===t||"Latin1"===t)return se().r1k_1;throw A("Charset "+t+" is not supported")},N(ie).equals=function(t){return this===t||null!=t&&this.constructor==t.constructor&&(t instanceof ie||B(),this.s1k_1===t.s1k_1)},N(ie).hashCode=function(){return Pt(this.s1k_1)},N(ie).toString=function(){return this.s1k_1},N(he).u1k=function(){return new ae(this)},N(he).t1k=function(){return new le(this)},N(he).toString=function(){return"CharsetImpl(name="+this.w1n_1+")"},N(he).hashCode=function(){return Pt(this.w1n_1)},N(he).equals=function(t){if(this===t)return!0;if(!(t instanceof he))return!1;var n=t instanceof he?t:B();return this.w1n_1===n.w1n_1},N(ae).toString=function(){return"CharsetEncoderImpl(charset="+this.y1n_1+")"},N(ae).hashCode=function(){return this.y1n_1.hashCode()},N(ae).equals=function(t){if(this===t)return!0;if(!(t instanceof ae))return!1;var n=t instanceof ae?t:B();return!!this.y1n_1.equals(n.y1n_1)},N(le).toString=function(){return"CharsetDecoderImpl(charset="+this.a1o_1+")"},N(le).hashCode=function(){return this.a1o_1.hashCode()},N(le).equals=function(t){if(this===t)return!0;if(!(t instanceof le))return!1;var n=t instanceof le?t:B();return!!this.a1o_1.equals(n.a1o_1)},N(we).toString=function(){return"DecodeBufferResult(charactersDecoded="+this.d1o_1+", bytesConsumed="+this.e1o_1+")"},N(we).hashCode=function(){var t=Pt(this.d1o_1);return E(t,31)+this.e1o_1|0},N(we).equals=function(t){if(this===t)return!0;if(!(t instanceof we))return!1;var n=t instanceof we?t:B();return this.d1o_1===n.d1o_1&&this.e1o_1===n.e1o_1},N(Ce).c1o=function(){return this.g1o_1.decode()},N(Ce).f1o=function(t){return this.g1o_1.decode(t)},N(Ce).b1o=function(t,n){return this.g1o_1.decode(t,n)},N(Ee).c1o=function(){return""},N(Ee).f1o=function(t){var n;t:{var i=new Rn;try{var e=t instanceof Int8Array?t:B(),r=0,s=e.length;if(r255&&i.v1h(bt(o>>8)),i.v1h(bt(255&o))}while(r=(e=e===F?at(n):e))return Oi();var s=di().t1f().c1j();try{var u;if((r=r+ce(t,n,r,e,s)|0)===e){var o=s.d1c_1-s.c1c_1|0,_=new Int8Array(o),h=_.length-0|0;return zn(s instanceof kn?s:B(),_,0,h),_}t:{var a=new Rn;try{a.m1j(s.w1k()),bn(t,a,n,r,e),u=a.y2();break t}catch(t){if(t instanceof Error){var l=t;throw a.rs(),l}throw t}}return oi(u)}finally{s.g1j(di().t1f())}}(t,n,i=i===F?0:i,e=e===F?at(n):e)},t.$_$.k=function(t,n,i,e){var r;i=i===F?0:i,e=e===F?at(n):e;t:{var s=new Rn;try{bn(t,s,n,i,e),r=s.y2();break t}catch(t){if(t instanceof Error){var u=t;throw s.rs(),u}throw t}}return r},t.$_$.l=ee,t.$_$.m=ji,t.$_$.n=Ti,t.$_$.o=Ai,t.$_$.p=Rn,t.$_$.q=Un,t.$_$.r=ye,t.$_$.s=Zn,t.$_$.t=function(t,n,i,e){n=n===F?0:n,i=i===F?t.length:i,e=e===F?se().q1k_1:e,(n<0||i<0||(n+i|0)>t.length)&&function(t,n,i){if(!(t>=0))throw Mt("offset ("+t+") shouldn't be negative");if(!(n>=0))throw Mt("length ("+n+") shouldn't be negative");if(!((t+n|0)<=i.length))throw Mt("offset ("+t+") + length ("+n+") > bytes.size ("+i.length+")");throw Ut()}(n,i,t);var r=t,s=r.byteOffset+n|0,u=r.buffer.slice(s,s+i|0),o=new wi(Xi(Zi(),u),null,di().r1f_1);o.n1h();var _=Pn(o,di().s1f_1);return yn(e.t1k(),_,_t.MAX_VALUE)},t.$_$.u=function(t,n){},t.$_$.v=oi,t.$_$.w=function(t){var n;if((t.o1d_1-t.n1d_1|0)>2){var i=t.n1d_1;t.n1d_1=i+2|0,n=t.m1d_1.f1h_1.getInt16(i,!1)}else n=function(t){var n,i=Ti(t,2);null==i?_i(2):n=i;var e=n,r=function(t){var n,i=t.b1c_1,e=t.c1c_1;if((t.d1c_1-e|0)<2)throw new $e("Not enough bytes to read a short integer of size 2.");return n=i.f1h_1.getInt16(e,!1),t.g1h(2),n}(e);return ji(t,e),r}(t);return n},t.$_$.x=function(t,n,i){return n=n===F?se().q1k_1:n,i=i===F?_t.MAX_VALUE:i,yn(n.t1k(),t,i)},t.$_$.y=ui,t.$_$.z=function(t,n){var i,e=t.y19_1;(t.z19_1-e|0)>2?(t.y19_1=e+2|0,t.x19_1.f1h_1.setInt16(e,n,!1),i=!0):i=!1,i||function(t,n){(function(t,n){var i=t.b1c_1,e=t.d1c_1,r=t.f1c_1-e|0;if(r<2)throw Sn("short integer",2,r);i.f1h_1.setInt16(e,n,!1),t.h1h(2)})(t.o1j(2),n),t.c1h()}(t,n)},t.$_$.a1=ai,t.$_$.b1=xe,t.$_$.c1=function(){return d||(d=!0,v=new Li),v},t.$_$.d1=function(t){return function(t,n,i){if(0===t.length)return Yi().e1h();var e=di().t1f().c1j(),r=e,s=n,u=s+i|0;t:for(;;){r.m1h(8);var o=u-s|0,_=r,h=_.f1c_1-_.d1c_1|0,a=Math.min(o,h);if(Tn(r instanceof kn?r:B(),t,s,a),(s=s+a|0)===u)break t;var l=r;r=di().t1f().c1j(),l.o1k(r)}var c=new Vi(e,!1);return f=c,f.u11(null),c;var f}(t,0,t.length)},t.$_$.e1=Gi,t.$_$.f1=wn,t.$_$.g1=function(t){return t.jr(null)},t.$_$.h1=function(t,n,i,e){return function(t,n,i,e,r){var s=t.gm().kc(it()),u=et(t,n,F,(o=e,_=i,h=r,a=s,l=null,c=new gn(o,_,h,a,l),f=function(t,n){return c.a1h(t,n)},f.$arity=1,f));var o,_,h,a,l,c,f;return u.in(function(t){return function(n){return t.u11(n),j}}(i)),new pn(u,i)}(t,n=n===F?X():n,function(t){return t=t!==F&&t,new Vi(di().q1f_1,t)}(i=i!==F&&i),!0,e)},t})?e.apply(n,r):e)||(t.exports=s)},754:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(485),i(205)],void 0===(s="function"==typeof(e=function(t,n,i,e,r){"use strict";var s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M,N,R,P,L,F,U,H,V,B,W=Math.imul,Y=n.$_$.aa,G=n.$_$.x1,K=n.$_$.mb,X=n.$_$.c,J=n.$_$.tg,Z=n.$_$.a5,Q=n.$_$.la,tt=n.$_$.ca,nt=n.$_$.nb,it=n.$_$.na,et=n.$_$.q9,rt=n.$_$.f,st=n.$_$.c9,ut=i.$_$.v,ot=n.$_$.v,_t=n.$_$.fa,ht=n.$_$.ma,at=n.$_$.m5,lt=n.$_$.jh,ct=n.$_$.j5,ft=n.$_$.wa,vt=n.$_$.y9,dt=n.$_$.z9,wt=n.$_$.z2,pt=e.$_$.c1,mt=n.$_$.f9,gt=e.$_$.i,yt=n.$_$.o9,bt=n.$_$.y5,$t=n.$_$.l,kt=n.$_$.p5,xt=n.$_$.rb,qt=n.$_$.n5,St=n.$_$.gg,Ct=n.$_$.lb,Et=n.$_$.z6,Ot=n.$_$.m,jt=n.$_$.u,Tt=n.$_$.u6,At=n.$_$.ia,zt=n.$_$.e1,It=n.$_$.ee,Dt=n.$_$.r2,Mt=n.$_$.w2,Nt=n.$_$.sd,Rt=r.$_$.d,Pt=n.$_$.mg,Lt=n.$_$.dg,Ft=n.$_$.ab,Ut=n.$_$.l5,Ht=n.$_$.kb,Vt=n.$_$.c5,Bt=n.$_$.t6,Wt=n.$_$.o7,Yt=n.$_$.r7,Gt=n.$_$.w7,Kt=e.$_$.x,Xt=n.$_$.ga,Jt=n.$_$.w9,Zt=e.$_$.r,Qt=(n.$_$.v4,n.$_$.a3),tn=n.$_$.ih,nn=n.$_$.b3,en=n.$_$.c3,rn=n.$_$.n4,sn=n.$_$.k9,un=n.$_$.ha,on=n.$_$.e9,_n=n.$_$.r8,hn=n.$_$.nh,an=n.$_$.ib,ln=n.$_$.kg,cn=n.$_$.w1,fn=n.$_$.d3,vn=n.$_$.qh;function dn(t){this.i1o_1=t;var n=this.i1o_1;if(0===Y(n))throw G("Name can't be blank")}function wn(){}function pn(t,n){et.call(this,n),this.y1o_1=t}function mn(t){return t.z1o_1}function gn(t){return Fn(t)}function yn(t){return new kn(t.i2().z1o_1,t.j2())}function bn(t){return new kn(Fn(t.i2()),t.j2())}function $n(){this.b1p_1=ot()}function kn(t,n){this.h1p_1=t,this.i1p_1=n}function xn(){return new $n}function qn(){mt.call(this,gt)}function Sn(t){this.l1p_1=t,this.k1p_1=t.m1p_1.v()}function Cn(t,n,i){this.m1p_1=t,this.n1p_1=n,this.o1p_1=i,this.p1p_1=this.m1p_1.n()}function En(){if(h)return Z;h=!0,s=new On("Jvm",0),u=new On("Native",1),o=new On("Browser",2),_=new On("Node",3)}function On(t,n){St.call(this,t,n)}function jn(){a=this,this.y1p_1=Si().equals(An()),this.z1p_1=Si().equals(zn()),this.a1q_1=Si().equals((En(),s)),this.b1q_1=Si().equals((En(),u)),this.c1q_1=!1,this.d1q_1=!0}function Tn(){return null==a&&new jn,a}function An(){return En(),o}function zn(){return En(),_}function In(){}function Dn(t,n){var i,e=t.k1q_1.q2(n);if(null==e){var r=Ot();t.l1q(n),t.k1q_1.g2(n,r),i=r}else i=e;return i}function Mn(t,n){t=t!==rt&&t,n=n===rt?8:n,this.j1q_1=t,this.k1q_1=this.j1q_1?xn():jt(n)}function Nn(t,n){return t.t1q_1.q2(n)}function Rn(t,n){t=t!==rt&&t,n=n===rt?Tt():n,this.s1q_1=t;for(var i=this.s1q_1?xn():ot(),e=n.f2().v();e.w();){var r=e.y(),s=r.i2(),u=r.j2(),o=u.n(),_=$t(o),h=0;if(h=this.y1r_1.n()){this.w1r_1.f1s(),this.cc_1=5;continue t}this.cc_1=3;continue t;case 3:this.z1r_1=this.y1r_1.h1(this.x1r_1),this.w1r_1.e1s_1=this.x1r_1+1|0,this.cc_1=4;var n=this.z1r_1;if((t=(Ft(n,2)?n:J())(this.w1r_1,this.w1r_1.d1s_1,this))===st())return t;continue t;case 4:this.cc_1=1;continue t;case 5:return this.w1r_1.d1s_1;case 6:throw this.fc_1}}catch(t){var i=t;if(6===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},K(Zn).gm=function(){return this.c1s_1},K(Zn).f1s=function(){this.e1s_1=-1},K(Zn).g1s=function(t,n){return this.d1s_1=t,this.h1s(n)},K(Zn).h1s=function(t){var n=this.e1s_1;return n<0?this.d1s_1:n>=this.b1s_1.n()?(this.f1s(),this.d1s_1):function(t,n){var i=new Jn(t,n);return i.ec_1=Z,i.fc_1=null,i.pc()}(this,t)},K(Zn).i1s=function(t,n){return this.e1s_1=0,this.d1s_1=t,this.h1s(n)},K(ii).t19=function(){return this.m1s_1.d1()},K(ii).n=function(){return this.m1s_1.n()},K(ii).p1s=function(t){var n;this.n1s_1&&((n=this).m1s_1=n.o1s(),n.n1s_1=!1),this.m1s_1.s(t)},K(ii).q1s=function(t){var n=this.m1s_1;t instanceof Vt&&t.z2(t.n()+n.n()|0);var i=0,e=n.n();if(i=0;){var i=n;n=i-1|0;var e=this.r1t_1.n1t_1[i];if(e!==this&&null!=e)return e.jc()}throw G(xt("Not started"))},K(bi).ef=function(t){if(en(t)){var n=lt(nn(t)),i=Qt(tn(n));return yi(this.r1t_1,i),Z}gi(this.r1t_1,!1)},K(bi).qc=function(t){return this.ef(t)},K($i).gm=function(){return this.l1t_1.jc()},K($i).h1s=function(t){var n;return this.p1t_1!==this.k1t_1.n()?(this.s1t(on(t)),gi(this,!0)?(function(t){if(t.o1t_1<0)throw G("No more continuations to resume");var n=t.o1t_1;t.o1t_1=n-1|0,t.n1t_1[n]=null}(this),n=this.m1t_1):n=st()):n=this.m1t_1,n},K($i).g1s=function(t,n){return this.m1t_1=t,this.h1s(n)},K($i).i1s=function(t,n){if(this.p1t_1=0,this.p1t_1===this.k1t_1.n())return t;if(this.m1t_1=t,this.o1t_1>=0)throw G("Already started");return this.h1s(n)},K($i).s1t=function(t){this.o1t_1=this.o1t_1+1|0,this.n1t_1[this.o1t_1]=t},K(ki).toString=function(){return"TypeInfo(type="+this.t1t_1+", reifiedType="+this.u1t_1+", kotlinType="+this.v1t_1+")"},K(ki).hashCode=function(){var t=this.t1t_1.hashCode();return t=W(t,31)+ht(this.u1t_1)|0,W(t,31)+(null==this.v1t_1?0:ht(this.v1t_1))|0},K(ki).equals=function(t){if(this===t)return!0;if(!(t instanceof ki))return!1;var n=t instanceof ki?t:J();return!!this.t1t_1.equals(n.t1t_1)&&!!_t(this.u1t_1,n.u1t_1)&&!!_t(this.v1t_1,n.v1t_1)},K(qi).k1o=function(t){var n=this.w1t_1.q2(t);return null==n||null!=n?n:J()},K(qi).l1o=function(t){return this.w1t_1.n2(t)},K(qi).m1o=function(t,n){this.w1t_1.g2(t,n)},K(qi).n1o=function(t){this.w1t_1.k2(t)},K(qi).o1o=function(t,n){var i=this.w1t_1.q2(t);if(null!=i)return null!=i?i:J();var e=n();return this.w1t_1.g2(t,e),e},K(qi).p1o=function(){return _n(this.w1t_1.d2())},K(Oi).y1t=function(t){if(this.x1t_1.z9(Ai())>0)return Z;console.debug("TRACE: "+t)},K(qi).j1o=function(t){var n=this.k1o(t);if(null==n)throw G("No instance for key "+t);return n},g=new Bn,z=new Gn,V=!1,B=new Ri,t.$_$=t.$_$||{},t.$_$.a=function(t,n){var i=new pn(t,n);return i.ec_1=Z,i.fc_1=null,i.pc()},t.$_$.b=B,t.$_$.c=Tn,t.$_$.d=Un,t.$_$.e=Ci,t.$_$.f=function(t){return new Oi},t.$_$.g=ci,t.$_$.h=fi,t.$_$.i=li,t.$_$.j=function(t,n){return n.j6(t)},t.$_$.k=function(t,n,i){return new ki(n,t,i)},t.$_$.l=dn,t.$_$.m=xi,t.$_$.n=function(t){var n=pt(t=t===rt?null:t),i=new qn;return n.pg(i)},t.$_$.o=function(t){for(var n=this.h1q().v();n.w();){var i=n.y();t(i.i2(),i.j2())}return Z},t.$_$.p=function(t){var n=this.f1q(t);return null==n?null:Et(n)},t.$_$.q=Mn,t.$_$.r=Rn,t.$_$.s=In,t.$_$.t=function(t,n){for(var i=n.h1q().v();i.w();){var e=i.y(),r=e.i2(),s=e.j2();t.m1q(r,s)}return t},t.$_$.u=function(t){var n=wt(t).toLowerCase();return dt(n,0)===t},t.$_$.v=Si,t.$_$.w=function(t,n){for(var i=n.p1o().v();i.w();){var e=i.y();t.m1o(e instanceof dn?e:J(),n.j1o(e))}},t.$_$.x=function(t){for(var n=0,i=t.length,e=vt(i);n=e)throw new jt(n,"Unexpected end of string "+(null==r?"":" in ["+r+"]"),i);return P(n,i)}function Ct(t,n){var i,e=t.f5a_1,r=e.oh_1;if(n<=e.ph_1&&r<=n){var s=L(n),u=l(48);i=s-L(u)|0}else{var o=t.c5a_1,_=o.oh_1;if(n<=o.ph_1&&_<=n){var h=10+L(n)|0,a=l(97);i=h-L(a)|0}else{var c=t.e5a_1,f=c.oh_1;if(n<=c.ph_1&&f<=n){var v=10+L(n)|0,d=l(65);i=v-L(d)|0}else i=-1}}return i}function Et(){s=this,this.b5a_1=F(l(97),l(122)),this.c5a_1=F(l(97),l(102)),this.d5a_1=F(l(65),l(90)),this.e5a_1=F(l(65),l(70)),this.f5a_1=F(l(48),l(57)),this.g5a_1=U([new I(l(95)),new I(l(45)),new I(l(33)),new I(l(46)),new I(l(126)),new I(l(39)),new I(l(40)),new I(l(41)),new I(l(42))]),this.h5a_1=c([l(48),l(49),l(50),l(51),l(52),l(53),l(54),l(55),l(56),l(57),l(65),l(66),l(67),l(68),l(69),l(70)]),this.i5a_1=l(65533)}function Ot(){return null==s&&new Et,s}function jt(t,n,i){if(i=i===S?-1:i,Q(n,this),tt(this,jt),this.i5b_1=t,this.j5b_1=n,this.k5b_1=i,!(this.k5b_1>=-1))throw y(g("Failed requirement."))}function Tt(){return u}function At(t){var n=t.o5a_1;return Z("internalDecoded",1,J,(function(t){return At(t)}),null),n.j2()}function zt(t){var n=t.p5a_1;return Z("internalEncoded",1,J,(function(t){return zt(t)}),null),n.j2()}function It(){this.l5b_1=1,this.m5b_1=2}function Dt(t,n){if(this.m5a_1=!(t===ft().f59_1),this.n5a_1=!(n===ft().f59_1),this.o5a_1=M((i=this,e=n,r=t,function(){return i.m5a_1||e===ft().f59_1?Ot().g5b(r):e})),this.p5a_1=M(function(t,n,i){return function(){return t===ft().f59_1?n.n5b(i):t}}(t,this,n)),t===ft().f59_1&&n===ft().f59_1)throw y("Neither encoded nor decoded");var i,e,r}function Mt(t){if(Pt.call(this,t,t),null!=t&&0!==E(t))throw y(g("Expected empty value, got: "+t));this.t5b_1=!0}function Nt(){o=this,this.s59_1=new Mt(null),this.t59_1=new Mt("")}function Rt(){return null==o&&new Nt,o}function Pt(t,n){Rt(),Dt.call(this,t,n)}function Lt(){_=this,this.r5a_1=new Ut(null,null),this.s5a_1=new Ut("","")}function Ft(){return null==_&&new Lt,_}function Ut(t,n){var i;Ft(),Dt.call(this,t,n),this.e5c_1=M((i=t,function(){var t=i;if(null==t)return dt().g59_1;var n,e=t,r=new mt,s=0;t:for(;;){var u=D(e,l(47),s);if(n=u,!(u>-1))break t;if(sL(h)}if(r)return Tt()}while(0<=i);return Tt()}function Bt(){var t;this.f5c_1=M((t=this,function(){var n=t.m24();return n.d1()?null:et(n)})),this.g5c_1=M(function(t){return function(){var n=t.w5a();if(null==n)return Rt().l5a(null);var i,e=n,r=rt(e,l(64)),s=Rt();return i=r===Tt()?null:e.substring(0,r),s.l5a(i)}}(this)),this.h5c_1=M(function(t){return function(){return Ht(t).o5b()}}(this)),this.i5c_1=M(function(t){return function(){return Ht(t).q5a()}}(this)),this.j5c_1=M(function(t){return function(){var n=t.w5a();if(null==n)return null;var i,e=n,r=rt(e,l(64)),s=Vt(0,e);if(s===Tt()){var u=r+1|0;i=e.substring(u)}else{var o=r+1|0;i=e.substring(o,s)}var _=i;return Ot().h5b(_)}}(this)),this.k5c_1=M(function(t){return function(){var n=t.w5a();if(null==n)return-1;var i=n,e=Vt(0,i);if(e===Tt())return-1;var r,s=Ot(),u=e+1|0,o=i.substring(u),_=s.h5b(o);try{r=st(_)}catch(t){if(!(t instanceof ut))throw t;r=-1}return r}}(this))}function Wt(t){var n=t.y5c_1;return Z("ssp",1,J,(function(t){return Wt(t)}),null),n.j2()}function Yt(t,n){var i=n.s5c_1.q5a();null!=i&&t.r5("//").r5(i);var e=n.t5c_1.q5a();null!=e&&t.r5(e),n.u5c_1.t19()||t.s5(l(63)).r5(n.u5c_1.q5a())}function Gt(t){var n=t.k5d_1;return Z("uriString",1,J,(function(t){return Gt(t)}),null),n.j2()}function Kt(t){return function(){return Rt().l5a((n=t,Yt(i=H(),n),i.toString()));var n,i}}function Xt(t,n,i,e,r){var s;Bt.call(this),this.r5c_1=t,this.s5c_1=Rt().y5b(n),this.t5c_1=null==i?Ft().r5a_1:i,this.u5c_1=Rt().y5b(e),this.v5c_1=Rt().y5b(r),this.w5c_1=!0,this.x5c_1=null==this.r5c_1,this.y5c_1=M(Kt(this)),this.z5c_1=M((s=this,function(){return Wt(s).q5a()})),this.a5d_1=M(function(t){return function(){return Wt(t).o5b()}}(this)),this.b5d_1=M(function(t){return function(){return t.s5c_1.o5b()}}(this)),this.c5d_1=M(function(t){return function(){return t.s5c_1.q5a()}}(this)),this.d5d_1=M(function(t){return function(){return t.t5c_1.q5a()}}(this)),this.e5d_1=M(function(t){return function(){return t.t5c_1.o5b()}}(this)),this.f5d_1=M(function(t){return function(){return t.u5c_1.o5b()}}(this)),this.g5d_1=M(function(t){return function(){return t.u5c_1.q5a()}}(this)),this.h5d_1=M(function(t){return function(){return t.v5c_1.o5b()}}(this)),this.i5d_1=M(function(t){return function(){return t.v5c_1.q5a()}}(this)),this.j5d_1=M(function(t){return function(){return t.t5c_1.m24()}}(this)),this.k5d_1=M(function(t){return function(){var n=H();return null!=t.r5c_1&&n.r5(t.r5c_1).s5(l(58)),Yt(n,t),t.v5c_1.t19()||n.s5(l(35)).r5(t.l5d()),n.toString()}}(this))}function Jt(t){var n=t.h5e_1;return Z("cachedString",1,J,(function(t){return Jt(t)}),null),n.j2()}function Zt(t,n,i){var e;this.m5d_1=t,this.n5d_1=n,this.o5d_1=null==i?Rt().s59_1:i,this.p5d_1=!1,this.q5d_1=null==this.m5d_1,this.r5d_1=M((e=this,function(){return e.n5d_1.q5a()})),this.s5d_1=M(function(t){return function(){return t.n5d_1.o5b()}}(this)),this.t5d_1=null,this.u5d_1=null,this.v5d_1=null,this.w5d_1=null,this.x5d_1=null,this.y5d_1=null,this.z5d_1=M(function(t){return function(){return t.o5d_1.o5b()}}(this)),this.a5e_1=M(function(t){return function(){return t.o5d_1.q5a()}}(this)),this.b5e_1=at(),this.c5e_1=null,this.d5e_1=null,this.e5e_1=null,this.f5e_1=null,this.g5e_1=-1,this.h5e_1=M(function(t){return function(){var n=H();return n.r5(t.m5d_1).s5(l(58)),n.r5(t.i5e()),t.o5d_1.t19()||n.s5(l(35)).r5(t.l5d()),n.toString()}}(this))}function Qt(t){var n=t.q5e_1;return Z("cachedSsi",1,J,(function(t){return Qt(t)}),null),n.j2()}function tn(t){var n=t.r5e_1;return Z("cachedFsi",1,J,(function(t){return tn(t)}),null),n.j2()}function nn(t){var n=t.v5e_1;return Z("ssp",1,J,(function(t){return nn(t)}),null),n.j2()}function en(t){var n=t.w5e_1;return Z("authorityPart",1,J,(function(t){return en(t)}),null),n.j2()}function rn(t){var n=t.z5e_1;return Z("pathPart",1,J,(function(t){return rn(t)}),null),n.j2()}function sn(t){var n=t.d5f_1;return Z("queryPart",1,J,(function(t){return sn(t)}),null),n.j2()}function un(t){var n=t.g5f_1;return Z("fragmentPart",1,J,(function(t){return un(t)}),null),n.j2()}function on(){}function _n(t){var n;Bt.call(this),this.p5e_1=t,this.q5e_1=M((n=this,function(){return D(n.p5e_1,l(58))})),this.r5e_1=M(function(t){return function(){return D(t.p5e_1,l(35),Qt(t))}}(this)),this.s5e_1=M(function(t){return function(){var n=Qt(t);return n===Tt()||t.p5e_1.length!==(n+1|0)&&P(t.p5e_1,n+1|0)===l(47)}}(this)),this.t5e_1=M(function(t){return function(){return Qt(t)===Tt()}}(this)),this.u5e_1=M(function(t){return function(){var n=Qt(t);return n===Tt()?null:t.p5e_1.substring(0,n)}}(this)),this.v5e_1=M(function(t){return function(){var n,i=Qt(t),e=tn(t),r=Rt();if(e===Tt()){var s=i+1|0;n=t.p5e_1.substring(s)}else{var u=i+1|0;n=t.p5e_1.substring(u,e)}return r.l5a(n)}}(this)),this.w5e_1=M(function(t){return function(){var n=h.j5f(t.p5e_1,Qt(t));return Rt().l5a(n)}}(this)),this.x5e_1=M(function(t){return function(){return en(t).o5b()}}(this)),this.y5e_1=M(function(t){return function(){return en(t).q5a()}}(this)),this.z5e_1=M(function(t){return function(){var n=Qt(t),i=n>-1&&((n+1|0)===t.p5e_1.length||P(t.p5e_1,n+1|0)!==l(47))?null:h.k5f(t.p5e_1,n);return Ft().l5a(i)}}(this)),this.a5f_1=M(function(t){return function(){return rn(t).o5b()}}(this)),this.b5f_1=M(function(t){return function(){return rn(t).q5a()}}(this)),this.c5f_1=M(function(t){return function(){return rn(t).m24()}}(this)),this.d5f_1=M(function(t){return function(){var n,i=D(t.p5e_1,l(63),Qt(t));if(i===Tt())n=null;else{var e,r=tn(t);if(r===Tt()){var s=i+1|0;e=t.p5e_1.substring(s)}else if(r=this.i59_1)throw m("Index "+t+" should be less than "+this.i59_1);if(null==this.h59_1)throw y(g("Required value was null."));return this.h59_1[t]},v(mt).l59=function(t){if(null!=this.j59_1){if((this.k59_1+1|0)===pt(this).length){for(var n=0,i=a(pt(this).length,2),e=x(Array(i),null);nr&&i.t7(t,r,u);for(var o=(r=u)+1|0;o>4]),i.s5(this.h5a_1[15&c[d]])}while(v-1&&(t.r5(" at index "),t.v7(this.k5b_1)),t.r5(": "),t.r5(this.i5b_1),t.toString()},v(Dt).o5b=function(){return At(this)},v(Dt).q5a=function(){return zt(this)},v(Mt).t19=function(){return this.t5b_1},v(Nt).y5b=function(t){return null==t?this.s59_1:t},v(Nt).l5a=function(t){return this.z5b(t,ft().f59_1)},v(Nt).z5b=function(t,n){return null==t?this.s59_1:0===E(t)?this.t59_1:null==n?this.s59_1:0===E(n)?this.t59_1:new Pt(t,n)},v(Pt).t19=function(){return!1},v(Pt).n5b=function(t){return Ot().d5b(t)},v(Lt).l5a=function(t){return this.z5b(t,ft().f59_1)},v(Lt).z5b=function(t,n){return null==t?this.r5a_1:0===E(t)?this.s5a_1:new Ut(t,n)},v(Lt).t5a=function(t){var n=t.m5a_1?t.q5a():t.o5b();return null==n||0===E(n)||it(n,"/")?t:new Ut(t.m5a_1?"/"+t.q5a():ft().f59_1,t.n5a_1?"/"+t.o5b():ft().f59_1)},v(Ut).n5b=function(t){return Ot().k5a(t,"/")},v(Ut).m24=function(){var t=this.e5c_1;return Z("pathSegments",1,J,(function(t){return t.m24()}),null),t.j2()},v(Bt).d=function(t){return this.x5a(null!=t&&_t(t,bt)?t:ot())},v(Xt).w5a=function(){var t=this.c5d_1;return Z("encodedAuthority",1,J,(function(t){return t.w5a()}),null),t.j2()},v(Xt).l5d=function(){var t=this.i5d_1;return Z("encodedFragment",1,J,(function(t){return t.l5d()}),null),t.j2()},v(Xt).m24=function(){var t=this.j5d_1;return Z("pathSegments",1,J,(function(t){return t.m24()}),null),t.j2()},v(Xt).equals=function(t){return!(null==t||!_t(t,bt))&&this.toString()===g(t)},v(Xt).hashCode=function(){return ht(this.toString())},v(Xt).toString=function(){return Gt(this)},v(Xt).y5a=function(){return(new gt).u59(this.r5c_1).w59(this.s5c_1).x59(this.t5c_1).y59(this.u5c_1).z59(this.v5c_1)},v(Xt).d=function(t){return this.x5a(null!=t&&_t(t,bt)?t:ot())},v(Zt).i5e=function(){var t=this.r5d_1;return Z("encodedSchemeSpecificPart",1,J,(function(t){return t.i5e()}),null),t.j2()},v(Zt).l5d=function(){var t=this.a5e_1;return Z("encodedFragment",1,J,(function(t){return t.l5d()}),null),t.j2()},v(Zt).equals=function(t){return!(null==t||!_t(t,bt))&&this.toString()===g(t)},v(Zt).hashCode=function(){return ht(this.toString())},v(Zt).toString=function(){return Jt(this)},v(Zt).y5a=function(){return(new gt).u59(this.m5d_1).v59(this.n5d_1).z59(this.o5d_1)},v(Zt).d=function(t){return this.x5a(null!=t&&_t(t,bt)?t:ot())},v(on).j5f=function(t,n){var i,e=t.length;if(e>(n+2|0)&&P(t,n+1|0)===l(47)&&P(t,n+2|0)===l(47)){var r=n+3|0;t:for(;r(n+2|0)&&P(t,n+1|0)===l(47)&&P(t,n+2|0)===l(47)){i=n+3|0;t:for(;i=0&&!i.d1()&&t.z4b_1!==t.b4c_1){t.f4c("\n");try{t.s4b_1=pt();var e=t.b4c_1,r=0;if(r":"/>":">";t.d4i_1.s7(i)}function Ze(t,n){Ct.call(this,t,n)}function Qe(t,n,i,e){var r,s,u,o=i;if(i===mn(9)||i===mn(10)||i===mn(13))u=!0;else{var _=mn(32),h=mn(55295),a=new gn(_,h),l=a.lk_1;u=yn(i,a.mk_1)<=0&&0<=yn(i,l)}if(u)s=!0;else{var c=mn(57344),f=mn(65533),v=new gn(c,f),d=v.lk_1;s=yn(i,v.mk_1)<=0&&0<=yn(i,d)}if(s){var w=kn(i),p=bn(xn(w));r=$n(p)}else r=$n(bn(0));var m=r;if(o===mn(0))throw ht("XML documents may not contain null strings directly or indirectly");if(m===ut(38))t.s7("&");else if(m!==ut(60)||e.equals(hr()))if(m===ut(62)&&e.equals(cr()))t.s7(">");else if(m===ut(34)&&e.equals(ar()))t.s7(""");else if(m===ut(39)&&e.equals(lr()))t.s7("'");else{var g,y=mn(1),b=mn(8),$=new gn(y,b),k=$.lk_1;if(yn(o,$.mk_1)<=0&&0<=yn(o,k)||o===mn(11)||o===mn(12))g=!0;else{var x=mn(14),q=mn(31),S=new gn(x,q),C=S.lk_1;g=yn(o,S.mk_1)<=0&&0<=yn(o,C)}if(g){var E=n.g4i_1.y9_1;0===E?_r(n,o):1===E&&or(t,o)}else{var O,j=mn(127),T=mn(132),A=new gn(j,T),z=A.lk_1;if(yn(o,A.mk_1)<=0&&0<=yn(o,z))O=!0;else{var I=mn(134),D=mn(159),M=new gn(I,D),N=M.lk_1;O=yn(o,M.mk_1)<=0&&0<=yn(o,N)}if(O){var R=n.g4i_1.y9_1;0===R?t.s5(m):1===R&&or(t,o)}else{var P=mn(55296),L=mn(57343),F=new gn(P,L),U=F.lk_1;if(yn(o,F.mk_1)<=0&&0<=yn(o,U)||o===mn(65534)||o===mn(65535))_r(n,o);else{var H=mn(65535);if(qn(kn(o),kn(H))>0){var V=mn(65536),B=mn(kn(o)-kn(V)|0),W=mn(kn(B)>>>10|0),Y=mn(55296),G=mn(kn(W)+kn(Y)|0),K=mn(1023),X=mn(kn(B)&kn(K)),J=mn(56320),Z=mn(kn(X)+kn(J)|0),Q=kn(G),tt=bn(xn(Q));t.s5($n(tt));var nt=kn(Z),it=bn(xn(nt));t.s5($n(it))}else t.s5(m)}}}}else t.s7("<")}function tr(t,n,i){for(var e=pr(n).v();e.w();){var r=e.y().yj_1;Qe(t.d4i_1,t,r,i)}}function nr(t){0===t.k4i_1.y9_1&&(t.f4i_1.equals(Re())||t.x4c(null,null,null),t.k4i_1=vr())}function ir(t,n){var i=t.s4b_1;if(t.m4i_1>=0&&!i.d1()&&t.m4i_1!==t.b4b()){t.f4c("\n");try{t.s4b_1=pt();for(var e=function(t,n){if(!t.v().w())return pt();var i=rt(),e=null,r=0;if(r0&&null!=i&&t.l4i_1.n4i(i)!=n&&t.s4c(i,n)}function rr(t,n,i,e){t.d4i_1.s5(ut(32)),Q(n)>0&&t.d4i_1.s7(n).s5(ut(58)),t.d4i_1.s7(i).s5(ut(61));var r=-1===xt(e,ut(34))?new Cn(new Sn(ut(34)),ar()):new Cn(new Sn(ut(39)),lr()),s=r.ue().oa_1,u=r.ve();t.d4i_1.s5(s),tr(t,e,u),t.d4i_1.s5(s)}function sr(){this.o4i_1=-1,this.p4i_1=2147483647}function ur(t,n){Ct.call(this,t,n)}function or(t,n){t.s7("&#x").s7(En(n,16)).s5(ut(59))}function _r(t,n){throw ht("In xml "+t.g4i_1.s4i_1+" the character 0x"+En(n,16)+" is not valid")}function hr(){return We(),x}function ar(){return We(),q}function lr(){return We(),S}function cr(){return We(),C}function fr(){return Ye(),O}function vr(){return Ye(),j}function dr(){return Ye(),A}function wr(t,n,i,e){n=n===et||n,i=i===et?Re():i,e=e===et?$r():e,Ir.call(this),this.d4i_1=t,this.e4i_1=n,this.f4i_1=i,this.g4i_1=e,this.h4i_1=!0,this.i4i_1=!1,this.j4i_1=Bt(Array(12),null),this.k4i_1=fr(),this.l4i_1=new Tr,this.m4i_1=-1}function pr(t){return new gr(t)}function mr(t){this.a4j_1=t,this.z4i_1=0}function gr(t){this.b4j_1=t}function yr(){if(N)return G;N=!0,D=new br("XML10",0,"1.0"),M=new br("XML11",1,"1.1")}function br(t,n,i){Ct.call(this,t,n),this.s4i_1=i}function $r(){return yr(),M}function kr(t,n){var i=0===n?0:xr(t,n-1|0)/2|0,e=xr(t,n)/2|0;return Z(i,e)}function xr(t,n){return W(t.o4g_1[n],2)}function qr(t,n){return W(n,2)}function Sr(t,n){return W(n,2)+1|0}function Cr(t,n){return ft(t.n4g_1[qr(0,n)])}function Er(t,n){return ft(t.n4g_1[Sr(0,n)])}function Or(t){this.c4j_1=t}function jr(t){this.e4j_1=t,this.d4j_1=0}function Tr(){this.m4g_1=1,this.n4g_1=Bt(Array(10),null),this.o4g_1=new Int32Array(20),this.p4g_1=0,this.q4g_1=new Or(this)}function Ar(t,n){if(Q(t)>0){var i=t.toString();if(!Mr(i))throw Ce("Indents can only be whitespace or comments: "+i);n.s(new de(null,Pi(),i)),t.d8()}}function zr(){this.g4j_1="\x3c!----\x3e"}function Ir(t){t=t===et?pt():t,this.s4b_1=Yt(t)}function Dr(){return Rr(),P}function Mr(t){var n;Rr();t:{for(var i=0;i=Dr().length)&&Dr()[t]}function Rr(){if(!L){L=!0;var t=Rn(33),n=ut(9);t[Tn(n)]=!0;var i=ut(10);t[Tn(i)]=!0;var e=ut(13);t[Tn(e)]=!0;var r=ut(32);t[Tn(r)]=!0,P=t}}function Pr(t,n){var i=t.item(n);return null==i||null!=i?i:X()}function Lr(){this.i4j_1=1,this.j4j_1=2,this.k4j_1=3,this.l4j_1=4,this.m4j_1=5,this.n4j_1=6,this.o4j_1=7,this.p4j_1=8,this.q4j_1=9,this.r4j_1=10,this.s4j_1=11,this.t4j_1=12}function Fr(t){this.u4j_1=t,this.v4j_1=0}function Ur(){}function Hr(){U=this,this.y4j_1=Fn("xmlBoolean",Ln())}function Vr(t,n){var i;if(1!==t.nodeType)i=null;else{var e=(null!=t?t:X()).attributes,r=rt(),s=e.length,u=0;if(u=d;){switch(null==w?-1:w.y9_1){case 1:var p=new di(l,!0);Ve(p,t,v),Ie(t,p),Be(p,v,t),p.e1j();break;case 9:case 4:l.appendChild(ft(l.ownerDocument).createTextNode(t.e4b()));break;case 5:l.appendChild(ft(l.ownerDocument).createCDATASection(t.e4b()));break;case 3:l.appendChild(ft(l.ownerDocument).createComment(t.e4b()));break;case 8:throw Ce("Entity references are not expected here");case 10:throw Bn("Attributes are not expected in the event stream")}w=t.w()?t.y():null}""===v.q2("")&&v.k2("");var m=Rt(v.f2()),g=tn(m,Jr),y=Lt(nn(g,(c=l,function(t){var n=t.i2(),i=t.j2();return c.setAttributeNS("http://www.w3.org/2000/xmlns/",""===n?"xmlns":"xmlns:"+n,i),new xe(n,i)}))),b=(new XMLSerializer).serializeToString(l instanceof Node?l:X()),$=xt(b,ut(62),19)+1|0,k=(b.length-19|0)-3|0;return us(y,b.substring($,k))}catch(t){if(t instanceof je)throw Oe("Failure to parse children into string at "+f,t);if(t instanceof fn)throw Oe("Failure to parse children into string at "+f,t);throw t}}function Jr(t){var n=t.i2(),i=t.j2();return""!==n||!(""===i)}function Zr(){}function Qr(t){return Wn(t),ts.call(t),t}function ts(){ln(this,ts)}function ns(t,n){t||console.error("Assertion failed: "+n())}function is(t){t||console.error("Assertion failed")}function es(){}function rs(t){return function(t,n){return ss(pt(),t,n),n}(t,wt(K(hs)))}function ss(t,n,i){return hs.call(i),i.a4k_1=ee().b4f(t),i.b4k_1=n,i}function us(t,n){return ss(t,n,wt(K(hs)))}function os(){V=this,this.c4k_1=new es}function _s(t){return'"'+t.z4a()+" -> "+t.x4a()+'"'}function hs(){null==V&&new os}function as(t){return t.prototype}function ls(t,n,i,e){return function(t,n,i){for(var e=0,r=W(t.length,2),s=Bt(Array(r),null);e");var _=e.toString()+n+"",h=(new DOMParser).parseFromString(_,"text/xml");return new oi(null!=h?h:X())}(0,t,n));this.k4k_1=cs(null,[],[]),this.er().g4b()===Ti()&&vs(this)}function ps(t){var n=document.implementation,i=t.p4e(),e=n.createDocument(null==i?"":i,Pe(t));return null!=e?e:X()}return it(ii,"DomReader$$o$iterator$slambda",nt,Y,et,et,et,et,[1]),it(Wi,"IterableNamespaceContext",Nt),it(ui,et,nt,et,[Wi]),it(Te,"XmlReader",Nt),it(oi,"DomReader",nt,et,[Te]),it(fi,"Companion",yt),it(vi,et,nt),it(He,"XmlWriter",Nt),it(Ir,"PlatformXmlWriterBase",nt,et,[He]),it(di,"DomWriter",nt,Ir,[Ir,He],(function(t){return function(t,n){return t=t===et?Re():t,di.call(n,null,et,t),n}(t,wt(K(di)))})),it(Oi,"EventType",nt,Ct),it(wi,"START_DOCUMENT",nt,Oi),it(pi,"START_ELEMENT",nt,Oi),it(mi,"END_ELEMENT",nt,Oi),it(gi,"COMMENT",nt,Oi),it(yi,"TEXT",nt,Oi),it(bi,"CDSECT",nt,Oi),it($i,"DOCDECL",nt,Oi),it(ki,"END_DOCUMENT",nt,Oi),it(xi,"ENTITY_REF",nt,Oi),it(qi,"IGNORABLE_WHITESPACE",nt,Oi),it(Si,"ATTRIBUTE",nt,Oi),it(Ci,"PROCESSING_INSTRUCTION",nt,Oi),it(Hi,"Companion",yt,et,[zt]),it(Bi,"Namespace",Nt),it(Gi,"QNameSerializer",yt,et,[zt]),it(Xi,"SimpleIterator",nt),it(Ji,"SimpleNamespace",nt,et,[Bi]),it(ie,"Companion",yt,et,[zt]),it(ue,"SimpleNamespaceContext",nt,et,[Wi],(function(){return t=wt(K(ue)),ue.call(t,[]),t;var t}),et,{0:ee}),it(oe,"XMLConstants",yt),it(le,"XmlBufferedReaderBase",nt,et,[Te]),it(_e,"XmlBufferedReader",nt,le),it(ce,"XmlDelegatingReader",nt,et,[Te]),it(ve,"Companion",yt),it(qe,"XmlEvent",nt),it(de,"TextEvent",nt,qe),it(we,"ProcessingInstructionEvent",nt,de),it(pe,"EntityRefEvent",nt,de),it(me,"EndDocumentEvent",nt,qe),it(be,"NamedEvent",nt,qe),it(ge,"EndElementEvent",nt,be),it(ye,"StartDocumentEvent",nt,qe),it($e,"StartElementEvent",nt,be),it(ke,"Attribute",nt,qe),it(xe,"NamespaceImpl",nt,et,[Bi]),it(ts,"IOException",nt,Kn,et,(function t(){var n=Qr(wt(K(ts)));return ln(n,t),n})),it(je,"XmlException",nt,ts,et,(function t(){var n,i=(Qr(n=wt(K(je))),je.call(n),n);return ln(i,t),i})),it(De,"Companion",yt),it(Ne,"XmlDeclMode",nt,Ct),it(Ze,"EscapeMode",nt,Ct),it(sr,"Companion",yt),it(ur,"WriteState",nt,Ct),it(wr,"KtXmlWriter",nt,Ir,[Ir,He]),it(mr,et,nt),it(gr,et,nt),it(br,"XmlVersion",nt,Ct),it(Or,et,nt,et,[Wi]),it(jr,et,nt),it(Tr,"NamespaceHolder",nt,et,et,Tr),it(zr,"Companion",yt),it(Lr,"NodeConsts",yt),it(Fr,"NodeListIterator",nt),it(Ur,"ICompactFragment",Nt),it(Hr,"XmlBooleanSerializer",yt,et,[zt]),it(Kr,"QName",nt),it(Zr,"XmlStreaming",yt),it(es,"Factory",nt,et,et,es),it(os,"Companion",yt),it(hs,"CompactFragment",nt,et,[Ur]),it(fs,"FragmentNamespaceContext",nt,ue),it(ds,"Companion",yt),it(ws,"XMLFragmentStreamReader",nt,ce),K(ii).j4a=function(t,n){var i=this.k4a(t,n);return i.ec_1=G,i.fc_1=null,i.pc()},K(ii).cd=function(t,n){return this.j4a(t instanceof J?t:X(),n)},K(ii).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=8,this.d4a_1=this.b4a_1.l4a_1,this.cc_1=1;continue t;case 1:if(null==this.d4a_1){this.cc_1=7;continue t}this.e4a_1=this.d4a_1.attributes,this.f4a_1=this.e4a_1.length,this.g4a_1=Z(0,this.f4a_1).v(),this.cc_1=2;continue t;case 2:if(!this.g4a_1.w()){this.cc_1=6;continue t}this.h4a_1=this.g4a_1.y();var n=this.e4a_1.item(this.h4a_1);if(this.i4a_1=null!=n&&null!=n?n:X(),"xmlns"===this.i4a_1.prefix){this.cc_1=4;var i=this.i4a_1.localName,e=null==i?this.i4a_1.name:i,r=this.i4a_1;if((t=this.c4a_1.ze(new xe(e,r.value),this))===tt())return t;continue t}var s=this.i4a_1.prefix;if((null==s||0===Q(s))&&"xmlns"===this.i4a_1.localName){this.cc_1=3;var u=this.i4a_1;if((t=this.c4a_1.ze(new xe("",u.value),this))===tt())return t;continue t}this.cc_1=5;continue t;case 3:case 4:this.cc_1=5;continue t;case 5:this.cc_1=2;continue t;case 6:this.d4a_1=this.d4a_1.parentElement,this.cc_1=1;continue t;case 7:return G;case 8:throw this.fc_1}}catch(t){var o=t;if(8===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},K(ii).k4a=function(t,n){var i=new ii(this.b4a_1,n);return i.c4a_1=t,i},K(ui).t4a=function(t){var n=this.l4a_1;return null==n?null:Vr(n,t)},K(ui).u4a=function(t){var n=this.l4a_1;return null==n?null:Br(n,t)},K(ui).v4a=function(){return this},K(ui).v=function(){return ot((t=this,n=null,i=new ii(t,n),e=function(t,n){return i.j4a(t,n)},e.$arity=1,e)).v();var t,n,i,e},K(oi).x4a=function(){var t,n=this.s4a();if(null==n)t=null;else{var i=n.namespaceURI;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a namespace uri");return e},K(oi).y4a=function(){var t,n=this.s4a();if(null==n)t=null;else{var i=n.localName;t=null==i?n.tagName:i}var e=t;if(null==e)throw Ce("Only elements have a local name");return e},K(oi).z4a=function(){var t,n=this.s4a();if(null==n)t=null;else{var i=n.prefix;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a prefix");return e},K(oi).a4b=function(){return this.o4a_1},K(oi).b4b=function(){return this.q4a_1},K(oi).c4b=function(){var t=ei(this);if(7!==t.nodeType)throw ht(_t("Failed requirement."));return(null!=t?t:X()).target},K(oi).d4b=function(){var t=ei(this);if(7!==t.nodeType)throw ht(_t("Failed requirement."));return(null!=t?t:X()).data},K(oi).e4b=function(){var t,n=this.n4a_1,i=null==n?null:n.nodeType;if(5===(null==i?null:i)||8===(null==i?null:i)||3===(null==i?null:i)||4===(null==i?null:i)){var e=this.n4a_1;t=(null!=e&&null!=e?e:X()).data}else{if(7!==(null==i?null:i))throw Ce("Node is not a text node");var r=this.n4a_1,s=null!=r&&null!=r?r:X();t=s.nodeName+" "+s.data}return t},K(oi).f4b=function(){var t=this.n4a_1,n=null==t||null!=t?t:X(),i=null==n?null:n.attributes,e=null==i?null:i.length;return null==e?0:e},K(oi).g4b=function(){var t=this.n4a_1;return null==t?Ni():_i(t,this.p4a_1)},K(oi).h4b=function(){return si(this.n4a_1,at()).toString()},K(oi).s4a=function(){var t,n=this.n4a_1,i=null==n?null:n.nodeType;if(1===(null==i?null:i)){var e=this.n4a_1;t=null!=e&&null!=e?e:X()}else t=null;return t},K(oi).i4b=function(){return new ui(this)},K(oi).j4b=function(){for(var t=function(t){var n,i=t.r4a_1;if(null==i){var e=ri(t).attributes,r=rt(),s=e.length,u=0;if(u0&&function(t){for(var n=t,i=n.firstChild;null!=i;){var e=i.nextSibling;Wr(i)&&n.removeChild(i),i=e}}(this.r4c())}var h,a=function(t,n){return t.createElementNS(n.p4e(),Pe(n))}(this.r4c(),Fe(t,n,i));ft(this.x4b_1).appendChild(a),this.x4b_1=a},K(di).n4c=function(t){ai(this);var n,i,e=this.x4b_1;if(null==e)li(this,(n=this,i=t,function(t){return n.n4c(i),G}));else{var r=this.r4c().createComment(t);e.appendChild(r)}},K(di).u4c=function(t){this.z4b_1=-1;var n,i,e=this.x4b_1;if(null==e){if(!kt(t))throw Ce("Not in an element -- text");li(this,(n=this,i=t,function(t){return n.f4c(i),G}))}else{var r=this.r4c().createTextNode(t);e.appendChild(r)}},K(di).v4c=function(t){this.z4b_1=-1;var n=this.r4c().createCDATASection(t),i=this.x4b_1;if(null==(null==i?null:i.appendChild(n)))throw Ce("Not in an element -- cdsect")},K(di).o4c=function(t){hi(this,2147483647);var n,i,e=this.x4b_1,r=null==e?null:e.nodeType;if(1!==(null==r?null:r))throw Ce("Document already started");if(null==this.w4b_1)li(this,(n=this,i=t,function(t){return n.o4c(i),G}));else{var s,u=xt(t,ut(32));if(u<0)s=qt(t,"");else{var o=t.substring(0,u),_=u+1|0,h=t.substring(_);s=qt(o,h)}var a=s,l=a.ue(),c=a.ve(),f=this.r4c().createProcessingInstruction(l,c);this.r4c().appendChild(f)}},K(di).p4c=function(t,n){var i,e,r,s=this.x4b_1;if(null==s)li(this,(i=this,e=t,r=n,function(t){return i.p4c(e,r),G}));else{var u=this.r4c().createProcessingInstruction(t,n);s.appendChild(u)}this.z4b_1=-1},K(di).f4c=function(t){var n,i,e=this.x4b_1;if(null==e)li(this,(n=this,i=t,function(t){return n.f4c(i),G}));else if(9!==e.nodeType){var r=this.r4c().createTextNode(t);e.appendChild(r)}this.z4b_1=-1},K(di).w4c=function(t,n,i,e){var r,s=ci(this,"attribute");null!=t&&0!==Q(t)||null!=i&&0!==Q(i)?null==i||0===Q(i)?s.setAttributeNS(t,n,e):(r=null==t?"":t,s.setAttributeNS(r,i+":"+n,e)):s.setAttribute(n,e)},K(di).q4c=function(t){hi(this,2147483647);var n,i,e=this.w4b_1;if(null==e)li(this,(n=this,i=t,function(t){return n.q4c(i),G}));else{var r=St(t,[" "],et,3),s=r.h1(0),u=r.n()>1?r.h1(1):"",o=r.n()>2?r.h1(2):"",_=e.implementation.createDocumentType(s,u,o);e.appendChild(_)}},K(di).x4c=function(t,n,i){hi(this,2147483647),this.c4c_1=t,this.d4c_1=n,this.e4c_1=i},K(di).y4c=function(){this.x4b_1=null},K(di).z4c=function(t,n,i){this.b4c_1=this.b4c_1-1|0,hi(this,2147483647),this.x4b_1=ci(this,"No current element or no parent element").parentNode},K(di).a4d=function(t){var n=this.x4b_1;return null==n?null:Vr(n,t)},K(di).e1j=function(){var t;ns(0===this.b4c_1,(t=this,function(){return"Closing a dom writer but not all elements were closed (depth:"+t.b4c_1+")"})),this.x4b_1=null},K(wi).d4d=function(t){return new ye(t.h4b(),t.m2c(),t.k4b(),t.l4b())},K(wi).e4d=function(t,n){t.x4c(n.m2c(),n.k4b(),n.l4b())},K(pi).d4d=function(t){return new $e(t.h4b(),t.x4a(),t.y4a(),t.z4a(),function(t){for(var n=0,i=t.f4b(),e=Bt(Array(i),null);n")},K(wr).q4c=function(t){if(ir(this,2147483647),nr(this),!this.k4i_1.equals(vr()))throw Ce("Writing a DTD is only allowed once, in the prolog");this.k4i_1=(Ye(),T);var n=this.d4i_1.s7("")},K(wr).o4c=function(t){Je(this,!1),ir(this,2147483647),nr(this),this.d4i_1.s7("")},K(wr).p4c=function(t,n){Je(this,!1),ir(this,2147483647),nr(this),this.d4i_1.s7("0&&this.d4i_1.s5(ut(32)).s7(n),this.d4i_1.s7("?>")},K(wr).t4c=function(t,n,i){if(Je(this,!1),e=this,r=r===et?e.b4b():r,ir(e,r),nr(this),this.k4i_1.equals((Ye(),z)))throw Ce("Attempting to write tag after the document finished");var e,r,s;if(this.k4i_1=dr(),""===t)s="";else{var u=this.t4i(t);s=null!=u?u:null==i?this.l4i_1.u4i():i}var o=s;(function(t,n,i,e,r){var s=W(n,3);if(t.j4i_1.length<(s+3|0)){var u=t.j4i_1.length+12|0,o=Bt(Array(u),null),_=t.j4i_1;pn(_,o,0,0,s),t.j4i_1=o}var h=s;s=h+1|0,t.j4i_1[h]=i;var a=s;s=a+1|0,t.j4i_1[a]=e,t.j4i_1[s]=r})(this,this.b4b(),null==t?"":t,o,n),this.d4i_1.s5(ut(60)),Q(o)>0&&(this.d4i_1.s7(o),this.d4i_1.s5(ut(58))),this.d4i_1.s7(n),this.i4i_1=!0,this.l4i_1.b4g(),er(this,t,o)},K(wr).z4c=function(t,n,i){if(this.l4i_1.a4g(),ir(this,2147483647),(null==t?"":t)!==Ge(this,this.b4b())||Xe(this,this.b4b())!==n)throw ht(" does not match start");if(this.i4i_1)Je(this,!0);else{this.d4i_1.s7("0&&(this.d4i_1.s7(e),this.d4i_1.s5(ut(58))),this.d4i_1.s7(n),this.d4i_1.s5(ut(62))}},K(wr).n4c=function(t){Je(this,!1),ir(this,2147483647),nr(this);var n=!1;this.d4i_1.s7("\x3c!--");for(var i=pr(t).v();i.w();){var e=i.y().yj_1,r=ut(45),s=Tn(r);e===mn(s)?n?(n=!1,this.d4i_1.s7("-")):(n=!0,this.d4i_1.s5(ut(45))):Qe(this.d4i_1,this,e,hr())}this.d4i_1.s7("--\x3e")},K(wr).u4c=function(t){Je(this,!1),tr(this,t,cr()),this.m4i_1=-1},K(wr).v4c=function(t){Je(this,!1);var n=0;this.d4i_1.s7(""),this.m4i_1=-1},K(wr).f4c=function(t){Je(this,!1),nr(this);for(var n=0,i=t.length;n0&&null!=t)&&Q(t)>0&&(this.v4i(i,t),er(this,t,i)),!this.i4i_1)throw st("illegal position for attribute");rr(this,null==(r=null!=i&&0!==Q(i)&&this.a4d(i)!=t?this.t4i(t):i)?"":r,n,e)},K(wr).s4c=function(t,n){var i=this.l4i_1.w4i(t);if(null!=i){if(this.e4i_1)return G;throw st(i!==n?"Attempting to set prefix to different values in the same tag":"Namespace attribute duplicated")}if(this.l4i_1.x4i(t,n),!this.i4i_1)throw st("illegal position for attribute");Q(t)>0?rr(this,"xmlns",t,n):rr(this,"","xmlns",n)},K(wr).y4c=function(){if(is(0===this.b4b()),!this.k4i_1.equals(dr()))throw Ce("Attempting to end document when in invalid state: "+this.k4i_1);for(;this.b4b()>0;)this.z4c(Ge(this,this.b4b()-1|0),Ke(this,this.b4b()-1|0),Xe(this,this.b4b()-1|0));this.v1f()},K(wr).v4i=function(t,n){n!==this.a4d(t)&&this.l4i_1.x4i(t,n)},K(wr).a4d=function(t){return this.l4i_1.n4i(t)},K(wr).t4i=function(t){return null==t?null:this.l4i_1.y4i(t)},K(wr).e1j=function(){this.l4i_1.b1()},K(mr).w=function(){return this.z4i_1=this.o4g_1.length&&(this.o4g_1=Dn(this.o4g_1,W(this.o4g_1.length,2))),this.o4g_1[this.p4g_1]=0===this.p4g_1?0:this.o4g_1[this.p4g_1-1|0]},K(Tr).a4g=function(){var t=kr(this,this.p4g_1),n=t.ha_1,i=t.ia_1;if(n<=i)do{var e=n;n=n+1|0,this.n4g_1[qr(0,e)]=null,this.n4g_1[Sr(0,e)]=null}while(e!==i);this.o4g_1[this.p4g_1]=0,this.p4g_1=this.p4g_1-1|0},K(Tr).f4j=function(){return this.o4g_1[this.p4g_1]},K(Tr).b1=function(){this.n4g_1=Bt(Array(10),null),this.o4g_1=new Int32Array(20),this.p4g_1=0},K(Tr).y4g=function(t){this.x4i(t.z4a(),t.x4a())},K(Tr).x4i=function(t,n){var i=this.p4g_1>=1?this.o4g_1[this.p4g_1-1|0]:0,e=this.o4g_1[this.p4g_1];if(i=this.n4g_1.length&&((s=this).n4g_1=In(s.n4g_1,W(s.n4g_1.length,2))),function(t,n,i){var e=t.n4g_1,r=qr(0,n),s=null==i?null:_t(i);e[r]=null==s?"":s}(this,u,t),function(t,n,i){var e=t.n4g_1,r=Sr(0,n),s=null==i?null:_t(i);e[r]=null==s?"":s}(this,u,n);var o=this.o4g_1,_=this.p4g_1;o[_]=o[_]+1|0},K(Tr).n4i=function(t){var n,i=_t(t);if("xml"===i)return"http://www.w3.org/XML/1998/namespace";if("xmlns"===i)return"http://www.w3.org/2000/xmlns/";t:{for(var e=Mn(this.f4j()-1|0,0).v();e.w();){var r=e.y();if(Cr(this,r)===i){n=r;break t}}n=null}var s=null==n?null:Er(this,n);return null==s?0===Q(i)?"":null:s},K(Tr).y4i=function(t){var n,i=_t(t);if("http://www.w3.org/XML/1998/namespace"===i)n="xml";else if("http://www.w3.org/2000/xmlns/"===i)n="xmlns";else if(""===i){var e;t:{var r=Z(0,this.f4j());if(gt(r,Wt)&&r.d1())e=!0;else{for(var s=r.v();s.w();){var u=Cr(this,s.y());if(0===Q(u)){e=!1;break t}}e=!0}}n=e?"":null}else{var o;t:{for(var _=Mn(this.f4j()-1|0,0).v();_.w();){var h,a=_.y();if(Er(this,a)===i){var l;n:{var c=Z(a+1|0,this.f4j());if(gt(c,Wt)&&c.d1())l=!0;else{for(var f=c.v();f.w();){var v=f.y();if(Cr(this,a)===Cr(this,v)){l=!1;break n}}l=!0}}h=l}else h=!1;if(h){o=a;break t}}o=null}n=null==o?null:Cr(this,o)}return n},K(Tr).v=function(){return new jr(this)},K(Tr).u4i=function(){var t;do{t="n"+this.m4g_1}while(null!=this.n4i(t));return t},K(Tr).w4i=function(t){var n=kr(this,this.p4g_1),i=n.ha_1,e=n.ia_1,r=i,s=Nn(i,e,2);if(r<=s)do{var u=r;if(r=r+2|0,this.n4g_1[qr(0,u)]===t)return this.n4g_1[Sr(0,u)]}while(u!==s);return null},K(zr).h4j=function(t){for(var n=rt(),i=at(),e=0,r=0,s=t.length;r");break;default:i.s5(u)}else switch(e){case 1:case 2:case 3:i.t7("\x3c!----\x3e",0,e),e=0,i.s5(u);break;case 0:case 4:i.s5(u);break;case 5:e=4,i.s5(ut(45)).s5(u);break;case 6:throw Ce("-- is not allowed to occur inside xml comment text")}}if(e>0)throw Ce("Indent can not contain unclosed comment");return Ar(i,n),n},K(Ir).b4i=function(t){this.s4b_1=R.h4j(t)},K(Fr).w=function(){return this.v4j_1=0){if(vn(t,0)!==ut(123))throw ht("Not a valid qname literal");e=_t(dn(t,1,r));var s=r+1|0,u=Q(t);i=_t(dn(t,s,u))}else e=n.x4a(),i=_t(t);return Gr(e,i)},t.$_$.o1=function(t,n,i){if(i.g4b().equals(Ai()))throw ht("Cannot really validly write an end element here");Ie(i,t),i.g4b().equals(Ti())&&Be(t,n,i)},t.$_$.p1=function(t){for(var n=t.length,i=wn(n),e=ut(32),r=0,s=t.length;r0&&i.f8(i.a()-1|0),i.toString()},t.$_$.q1=function(){return H},t})?e.apply(n,r):e)||(t.exports=s)},931:function(t,n,i){var e,r,s;r=[n,i(675),i(681),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,T,A,z,I,D,M=Math.imul,N=n.$_$.m,R=i.$_$.i,P=n.$_$.a5,L=i.$_$.k1,F=n.$_$.wa,U=n.$_$.r4,H=n.$_$.gh,V=n.$_$.a,B=e.$_$.u2,W=n.$_$.tg,Y=e.$_$.p2,G=i.$_$.q,K=e.$_$.u,X=e.$_$.m1,J=n.$_$.mb,Z=n.$_$.lb,Q=n.$_$.nb,tt=n.$_$.f,nt=(e.$_$.o,e.$_$.c),it=n.$_$.k8,et=e.$_$.i,rt=e.$_$.n1,st=n.$_$.p4,ut=e.$_$.x,ot=e.$_$.v,_t=e.$_$.g,ht=i.$_$.x,at=i.$_$.z,lt=i.$_$.o1,ct=(i.$_$.o,n.$_$.x1),ft=n.$_$.aa,vt=i.$_$.l,dt=n.$_$.kb,wt=e.$_$.w1,pt=n.$_$.ca,mt=e.$_$.a,gt=e.$_$.u1,yt=e.$_$.o2,bt=n.$_$.gg,$t=n.$_$.ma,kt=n.$_$.fa,xt=e.$_$.l2,qt=n.$_$.na,St=e.$_$.n2,Ct=i.$_$.q1,Et=i.$_$.l1,Ot=i.$_$.n,jt=i.$_$.i1,Tt=i.$_$.a1,At=i.$_$.m,zt=n.$_$.d5,It=e.$_$.m2,Dt=i.$_$.y,Mt=n.$_$.d,Nt=i.$_$.r,Rt=e.$_$.m,Pt=e.$_$.l,Lt=i.$_$.p1,Ft=n.$_$.se,Ut=n.$_$.df,Ht=i.$_$.p,Vt=n.$_$.ef,Bt=n.$_$.qf,Wt=n.$_$.f3,Yt=n.$_$.mf,Gt=n.$_$.tf,Kt=n.$_$.b4,Xt=n.$_$.jf,Jt=n.$_$.rf,Zt=n.$_$.n3,Qt=n.$_$.lf,tn=n.$_$.sf,nn=n.$_$.u3,en=n.$_$.hf,rn=n.$_$.pe,sn=e.$_$.v1,un=i.$_$.c,on=i.$_$.d,_n=i.$_$.f,hn=i.$_$.j1,an=i.$_$.e1,ln=i.$_$.f1,cn=n.$_$.qh,fn=n.$_$.i1,vn=n.$_$.rb,dn=n.$_$.o2,wn=e.$_$.d1,pn=e.$_$.k1,mn=e.$_$.l1,gn=e.$_$.t1,yn=n.$_$.v9,bn=n.$_$.k,$n=n.$_$.v,kn=i.$_$.k,xn=i.$_$.j,qn=e.$_$.x1,Sn=n.$_$.l,Cn=n.$_$.z7,En=n.$_$.i8,On=n.$_$.h7,jn=n.$_$.x5,Tn=(i.$_$.s,n.$_$.n4),An=n.$_$.t6,zn=e.$_$.h,In=i.$_$.g1,Dn=i.$_$.c1,Mn=e.$_$.s1,Nn=n.$_$.ph,Rn=n.$_$.oc,Pn=i.$_$.h1,Ln=i.$_$.t,Fn=i.$_$.u,Un=n.$_$.xh,Hn=n.$_$.k7,Vn=i.$_$.b,Bn=i.$_$.e,Wn=i.$_$.g,Yn=n.$_$.jh,Gn=i.$_$.b1,Kn=n.$_$.tc,Xn=n.$_$.ka,Jn=n.$_$.r2,Zn=n.$_$.we,Qn=i.$_$.n1,ti=n.$_$.ue,ni=n.$_$.fe,ii=n.$_$.a6,ei=i.$_$.h,ri=i.$_$.a,si=n.$_$.w9,ui=e.$_$.r2,oi=e.$_$.d,_i=n.$_$.la,hi=n.$_$.ia,ai=e.$_$.f,li=e.$_$.n,ci=e.$_$.j,fi=e.$_$.k,vi=e.$_$.c1,di=e.$_$.w,wi=n.$_$.y5,pi=n.$_$.u7,mi=n.$_$.zb,gi=n.$_$.u,yi=n.$_$.s,bi=n.$_$.ha,$i=n.$_$.r8,ki=n.$_$.u5,xi=n.$_$.ed,qi=n.$_$.yc,Si=n.$_$.wc,Ci=n.$_$.bd,Ei=n.$_$.hd,Oi=n.$_$.x9,ji=n.$_$.re,Ti=n.$_$.wd,Ai=i.$_$.d1,zi=n.$_$.cg,Ii=n.$_$.mg,Di=n.$_$.s7,Mi=n.$_$.sa,Ni=n.$_$.xf,Ri=n.$_$.b2,Pi=n.$_$.c,Li=n.$_$.f1,Fi=n.$_$.x,Ui=e.$_$.q1,Hi=e.$_$.o1,Vi=i.$_$.m1,Bi=n.$_$.w4,Wi=e.$_$.a1,Yi=n.$_$.z4,Gi=e.$_$.y,Ki=n.$_$.x4,Xi=e.$_$.z,Ji=n.$_$.y4,Zi=e.$_$.b1,Qi=n.$_$.t1,te=n.$_$.e8,ne=n.$_$.s8,ie=n.$_$.j7,ee=n.$_$.ye,re=n.$_$.od,se=n.$_$.qd,ue=i.$_$.v,oe=n.$_$.qg,_e=n.$_$.u8,he=n.$_$.da,ae=e.$_$.k2,le=e.$_$.t2,ce=i.$_$.w,fe=n.$_$.oe;function ve(t,n,i,e){return t=t===tt?this.q55():t,n=n===tt?this.n56():n,i=i===tt?this.i57():i,e===tt?this.p57(t,n,i):e.p57.call(this,t,n,i)}function de(t){t.x34("namespaces",pe().l4k_1.n34());var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();return t.x34("content",i),P}function we(){r=this,this.l4k_1=K(G()),this.m4k_1=X("compactFragment",[],de)}function pe(){return null==r&&new we,r}function me(t){var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();t.x34("text",i);var e=et();return t.x34("element",rt("element",e,[],ge)),P}function ge(t){return P}function ye(t){var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();return t.x34("type",i),t.x34("value",$e().p4k_1),P}function be(){s=this,this.o4k_1=ot(ut(st),ut(st));var t=et();this.p4k_1=rt("org.w3c.dom.Node",t,[],me);var n=_t();this.q4k_1=rt("node",n,[],ye)}function $e(){return null==s&&new be,s}function ke(t){var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();t.x34("namespace",i,tt,!0);var e=B(V(U().h7(),H([]),!1)),r=(F(e,Y)?e:W()).n34();return t.x34("localname",r),t.x34("attributes",qe().t4k_1.n34()),t.x34("content",K($e()).n34()),P}function xe(){u=this,this.t4k_1=ot(ut(st),ut(st)),this.u4k_1=X("element",[],ke)}function qe(){return null==u&&new xe,u}function Se(t){return function(t,n){var i=ht(vt("dummy")),e=i.documentElement;return null==e||i.removeChild(e),Ce.call(n,t,i),n}(t,dt(J(Ce)))}function Ce(t,n){this.r4k_1=t,this.s4k_1=n}function Ee(t,n){this.v4k_1=t,this.w4k_1=n}function Oe(t,n){this.x4k_1=t,this.y4k_1=n}function je(t,n){return new Oe(t,n)}function Te(){De.call(this,"Element",0),o=this}function Ae(){De.call(this,"Attribute",1),_=this}function ze(){De.call(this,"Text",2),h=this}function Ie(){if(a)return P;a=!0,o=new Te,_=new Ae,h=new ze}function De(t,n){bt.call(this,t,n)}function Me(){return Ie(),o}function Ne(){return Ie(),_}function Re(){Fe.call(this,"Attribute",1),c=this}function Pe(){Fe.call(this,"Text",2),f=this}function Le(){if(d)return P;d=!0,l=new Fe("Element",0),c=new Re,f=new Pe,v=new Fe("Mixed",3),new Fe("Inline",4)}function Fe(t,n){bt.call(this,t,n)}function Ue(){return Le(),l}function He(){return Le(),c}function Ve(){return Le(),f}function Be(){return Le(),v}function We(t,n){this.r4l_1=t,this.s4l_1=n}function Ye(t){return P}function Ge(t,n,i){t=t===tt?xt():t,n=n===tt?Ze:n;var e=new Hr;return n(e),function(t,n,i){return n=n===tt?xt():n,Qe.call(i,(e=t,function(t,n){var i,e,r,s,u,o,_,h,a=(t=t===tt?new Hr:t).y53_1,l=t.z53_1,c=t.a54_1,f=t.c54_1;if(null==f){var v=t.j54(),d=null!=v&&v,w=t.e54_1,p=t.b54_1;e=!1,r=d,s=w,u=null==p?Br().u53_1:p,i=function(t,n,i,e,r,s,u,o){return n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().u53_1:e,r=r===tt?null:r,s=s!==tt&&s,u=u!==tt&&u,ls.call(o,t,n,i,e,r,s,u,!1),o}(e,r,s,u,o,_,h,dt(J(ls)))}else i=f;return Wr.call(n,a,l,c,i,t.g54_1,t.h54_1),n.v4r_1=t.f54_1,n.w4r_1=t.i54_1,n}(e,dt(J(Wr)))),n),i;var e}(e,t,i),i}function Ke(t,n){return Ge(t,n,dt(J(Qe)))}function Xe(){p=this,this.h4m_1=[Os(),$e(),qe(),pe()],this.i4m_1=Ke(tt,Ye)}function Je(){}function Ze(t){return P}function Qe(t,n){null==p&&new Xe,n=n===tt?xt():n,this.u4l_1=t,this.v4l_1=St(n,(sr(),w))}function tr(t,n,i){var e;if(sr(),t.p4n_1===fs()){var r;if(t.o4n_1===fs()){var s=null==i?null:At(i.x4a(),n);r=null==s?vt(n):s}else{var u=null==i?null:At(i.x4a(),t.o4n_1);r=null==u?vt(t.o4n_1):u}e=r}else e=t.o4n_1===fs()?t.q4n_1===fs()?At(n,t.p4n_1):new Tt(n,t.p4n_1,t.q4n_1):t.q4n_1===fs()?At(t.p4n_1,t.o4n_1):new Tt(t.p4n_1,t.o4n_1,t.q4n_1);return e}function nr(t){return sr(),t.s4n_1===fs()?vt(t.r4n_1):t.t4n_1===fs()?At(t.s4n_1,t.r4n_1):new Tt(t.s4n_1,t.r4n_1,t.t4n_1)}function ir(t){sr();var n=0,i=t.o35();if(n":e)+" ("+n+")",r);return An()}function Lr(t,n,i,e,r){return An()}function Fr(t,n,i,e,r){if(!(t.x4a()!==i.s4m().p4e()||!!n.equals(Ne())&&"http://www.w3.org/2001/XMLSchema-instance"===(null==e?null:e.p4e())))throw new Yr(t.h4b(),"("+i.u4n().m35()+") "+i.s4m()+"/"+vn(null==e?"":e)+" ("+n+")",r);return An()}function Ur(t,n,i,e){var r=t.h4b(),s=null==i?null:i.toString();throw new Yr(r,null==s?"":s,e)}function Hr(t,n,i,e,r,s){t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,e=e===tt?null:e,r=r===tt?Br().u53_1:r,s=s===tt?null:s,this.y53_1=t,this.z53_1=n,this.a54_1=i,this.b54_1=r,this.c54_1=s,this.d54_1=e,this.e54_1=ns(),this.f54_1=!0,this.g54_1=null,this.h54_1=ri(),this.i54_1=!1}function Vr(){y=this,this.t53_1=["http://www.w3.org/2001/XMLSchema-instance","http://www.w3.org/XML/1998/namespace"];var t=Pr;this.u53_1=new Mr(t);var n=Lr;this.v53_1=new Nr(n);var i=Fr;this.w53_1=new Rr(i),this.x53_1=Ur}function Br(){return null==y&&new Vr,y}function Wr(t,n,i,e,r,s){Br(),t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,r=r===tt?null:r,s=s===tt?ri():s,this.p4r_1=t,this.q4r_1=n,this.r4r_1=i,this.s4r_1=e,this.t4r_1=r,this.u4r_1=s,this.v4r_1=!0,this.w4r_1=!1}function Yr(t,n,i){var e=function(t){return!0===t.v().w()?Hn(t,tt,"\n candidates: ",tt,tt,tt,Xr):""}(i=i===tt?An():i),r=null==t?null:" at position "+t;Gr.call(this,"Could not find a field for name "+n+e+(null==r?"":r)),si(this,Yr)}function Gr(t,n){oi(t,n=n===tt?null:n,this),si(this,Gr)}function Kr(t,n,i){i=i===tt?null:i,Gr.call(this,"Invalid XML value at position: "+t+": "+n,i),si(this,Kr)}function Xr(t){return t instanceof Tr?t.v4p_1+" ("+t.x4p_1.j4l()+")":vn(t)}function Jr(t){return function(t,n){return Zr.call(n,t,null,!1),n}(t,dt(J(Zr)))}function Zr(t,n,i){if(this.u54_1=t,this.v54_1=n,this.w54_1=i,this.w54_1&&null==this.v54_1)throw ct(vn("Default namespace requires there to be an annotated name"))}function Qr(t,n){this.x54_1=t,this.y54_1=n}function ts(t,n){bt.call(this,t,n)}function ns(){return function(){if($)return P;$=!0,new ts("ALWAYS",0),b=new ts("ANNOTATED",1),new ts("NEVER",2)}(),b}function is(){}function es(){return t=dt(J(us)),us.call(t,!1),t;var t}function rs(t){return function(t,n){return us.call(n,t.k54_1,t.l54_1,t.m54_1,t.n54_1,t.o54_1,t.p54_1,t.h4v(),t.n4u()),n}(t,dt(J(us)))}function ss(t){return function(t,n){return ls.call(n,t.b56_1,t.c56_1,t.d56_1,t.e56_1,t.f56_1,t.g56_1,t.h56_1,t.i56_1,t.j56_1),n}(t,dt(J(ls)))}function us(t,n,i,e,r,s,u,o,_){t=t!==tt&&t,n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().u53_1:e,r=r===tt?null:r,s=s!==tt&&s,u=u!==tt&&u,o=o!==tt&&o,_=_!==tt&&_,this.b56_1=t,this.c56_1=n,this.d56_1=i,this.e56_1=e,this.f56_1=r,this.g56_1=s,this.h56_1=u,this.i56_1=o,this.j56_1=_}function os(t,n,i){var e;if("*"===t)e=-2;else{var r=n.q2(t);if(null==r)throw new Gr("Could not find the attribute in "+i.m35()+" with the name: "+t+"\n Candidates were: "+Hn(n.d2()));e=r}return e}function _s(){return"Type name info should match"}function hs(t){return t instanceof qs}function as(t){return function(t){for(var n=ji(t.b57_1,Oi([Jn(59)])),i=Sn(wi(n,10)),e=n.v();e.w();){var r,s=e.y(),u=Ti(s,Jn(61));if(-1===u)r=new Ai("",s);else{var o=s.substring(0,u),_=u+1|0,h=s.substring(_);r=new Ai(o,h)}var a=r;i.s(a)}return i}(t)}function ls(t,n,i,e,r,s,u,o,_){n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().u53_1:e,r=r===tt?null:r,s=s!==tt&&s,u=u!==tt&&u,_=_!==tt&&_,this.k54_1=t,this.l54_1=n,this.m54_1=i,this.n54_1=e,this.o54_1=r,this.p54_1=s,this.q54_1=u,this.r54_1=o,this.s54_1=_}function cs(t,n,i){t=t===tt?"ZXCVBNBVCXZ":t,n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.o4n_1=t,this.p4n_1=n,this.q4n_1=i}function fs(){return k}function vs(){}function ds(t){t=t===tt||t,this.z56_1=t}function ws(){}function ps(t){t=t===tt||t,this.f4z_1=t}function ms(t,n,i){n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.r4n_1=t,this.s4n_1=n,this.t4n_1=i}function gs(){}function ys(t){this.a57_1=t}function bs(){}function $s(){}function ks(){}function xs(){}function qs(){}function Ss(t){this.c57_1=t}function Cs(t){return t.r34_1=Di(new cs("QName","http://www.w3.org/2001/XMLSchema","xsd")),P}function Es(){x=this;var t=zn();this.l53_1=rt("javax.xml.namespace.QName",t,[],Cs)}function Os(){return null==x&&new Es,x}function js(){return $u(),q}function Ts(t){var n=t.r4m_1;return Xn("element",1,Kn,(function(t){return Ts(t)}),null),n.j2()}function As(t,n,i,e,r){var s,u,o;Is.call(this,t.s4r_1,new Ps(i,e,!0,null)),this.r4m_1=Nn((s=t,u=n,o=this,function(){return S.d57(s,u,o.w4l_1,tt,!1)}))}function zs(){}function Is(t,n,i){var e,r,s;i=i===tt?n:i,this.w4l_1=i,this.x4l_1=n.i57(),this.y4l_1=n.q55(),this.z4l_1=n.o56(),this.a4m_1=t.y55(n),this.b4m_1=Nn((e=t,r=n,s=this,function(){return e.e55(r,s.w4l_1,s.j4l(),s.y4l_1)}))}function Ds(t){var n=t.g4n_1;return Xn("children",1,Kn,(function(t){return Ds(t)}),null),n.j2()}function Ms(t,n,i,e){var r;ou.call(this,t.s4r_1,i,e),this.c4n_1=t.s4r_1.m55(i,e,!1);t:{for(var s=e.l56().v();s.w();){var u=s.y();if(u instanceof vs){r=u;break t}}r=null}var o=r,_=t.s4r_1.h55(i,e);this.d4n_1=t.s4r_1.g55(i,e)?hu():null==_?lu():new cu(_);var h,a=$n(),l=this.d4n_1;kt(l,hu())?h=null:kt(l,lu())?h=S.d57(t,n,new vu(this,1),tt,!1).s4m():l instanceof cu?h=this.s4m():cn();var c=h;if(null!=o)for(var f=e.n34(),v=null==f?null:f.u4n(),d=null==v?null:v.m35(),w=null==d?"":d,p=e.n34(),m=null==p?null:p.s4m(),g=new Qr(w,null==m?At("",""):m),y=Hi(this.u4n()),b=null==y?U().x6():y,$=o.j57_1,k=0,x=$.length;k0&&(Q=Z,et=_t),Z=Z+1|0}while(Z=0){var l=a.h1(n);if(!kt(l.p56(),Pt())||!kt(l.s35(0).u4n(),pe().m4k_1)){var c;t:{for(var f=ie(a).v();f.w();){var v=f.y();if(v!==n&&a.h1(v).j4l().equals(Ue())){c=v;break t}}c=null}var d=c;if(null!=d)throw new Gr("Types with an @XmlValue member may not contain other child elements ("+s.u4n().s35(d))}}return a})),this.c4v_1=Nn(ru(this))}function uu(){}function ou(t,n,i){Is.call(this,t,n,i);var e;t:{for(var r=n.l56().v();r.w();){var s=r.y();if(s instanceof gs){e=s;break t}}e=null}var u,o=e;if(null==o){var _;t:{for(var h=i.l56().v();h.w();){var a=h.y();if(a instanceof gs){_=a;break t}}_=null}u=_}else u=o;var l,c=u;if(null==c){var f;t:{for(var v=n.m56().n35().v();v.w();){var d=v.y();if(d instanceof gs){f=d;break t}}f=null}l=f}else l=c;var w=l;this.s4p_1=!0===(null==w?null:w.r58_1);var p,m=yu(i.l56());this.t4p_1=null==m?(p=n.m56(),$u(),yu(p.n35())):m,this.u4p_1=E}function _u(){O=this,fu.call(this)}function hu(){return null==O&&new _u,O}function au(){j=this,fu.call(this)}function lu(){return null==j&&new au,j}function cu(t){fu.call(this),this.k53_1=t}function fu(){}function vu(t,n,i,e,r){i=i===tt?null:i,e=e===tt?null:e,r=r===tt?null:r,this.s58_1=t,this.t58_1=n,this.u58_1=r;var s;s=null==i?-1===this.t58_1?Jr(this.s58_1.u4n().m35()):function(t,n,i){$u();var e,r=t.u35(n);t:{for(var s=t.r35(n).v();s.w();){var u=s.y();if(u instanceof cs){e=u;break t}}e=null}var o=e;return new Zr(r,null==o?null:tr(o,r,i),(null==o?null:o.p4n_1)===fs())}(this.s58_1.u4n(),this.t58_1,Vi(this.s58_1.s4m())):i,this.v58_1=s;var u;u=null==e?-1===this.t58_1?null:function(t){$u();for(var n=null,i=t.v();i.w();){var e=i.y(),r=e instanceof ps?e:null;if(!0===(null==r?null:r.f4z_1))return Be();if(e instanceof ws||e instanceof bs)return He();if(e instanceof ds)return e.z56_1?Ue():He();if(e instanceof vs||e instanceof ms)return Ue();e instanceof gs&&(n=e)}return!0===(null==n?null:n.r58_1)?Ue():null}(this.s58_1.u4n().r35(this.t58_1)):e,this.w58_1=u}function du(t,n,i,e){$u();var r,s,u,o,_=ee(t.x54_1,Jn(46),""),h=t.y54_1,a=Ti(n,Jn(61));if(a<0){var l;if(s=n,r=ni(n,Jn(46)),u=h.r4e(),r<0)l=n;else{var c=r+1|0;l=n.substring(c)}o=l}else{var f=n.substring(0,a);s=vn(Ni(Mi(f)?f:W())),r=ni(n,Jn(46),a-1|0);var v=Ti(n,Jn(58),a+1|0);if(v<0){u=h.r4e();var d=a+1|0,w=n.substring(d);o=vn(Ni(Mi(w)?w:W()))}else{var p=a+1|0,m=n.substring(p,v);u=vn(Ni(Mi(m)?m:W()));var y=v+1|0,b=n.substring(y);o=vn(Ni(Mi(b)?b:W()))}}var $=0!==r||0===ft(_)?s:_+"."+s.substring(1),k=e.h38(i,$),x=null==k?null:k.n34();if(null==x)throw Ot("Missing descriptor for "+$+" in the serial context");var q,S=x;if(a<0){var C=g,E=h.p4e();q=C.o53(S,new Ai(u,E))}else{var O=h.p4e();q=new Tt(O,o,u)}return new We(q,S)}function wu(t,n){var i;if($u(),t.i35()&&se(t.m35(),Jn(63)))i=re(t.m35(),1);else{var e=Hi(t),r=null==e?null:Fu(e);i=null==r?t.m35():r}var s,u=i;t:{for(var o=t.n35().v();o.w();){var _=o.y();if(_ instanceof cs){s=_;break t}}s=null}var h,a=s;if(null==a){var l,c=Hi(t),f=null==c?null:ue(c);if(null==f)l=null;else{var v;t:{for(var d=f.v();d.w();){var w=d.y();if(w instanceof cs){v=w;break t}}v=null}l=v}h=l}else h=a;var p=h;return new Zr(u,null==p?null:tr(p,u,n),(null==p?null:p.p4n_1)===fs())}function pu(t,n,i){i=i===tt?n:i,Is.call(this,t.s4r_1,n,i);var e;e=!(i instanceof Ps&&i.m57_1)&&t.s4r_1.f55(n,i),this.e4o_1=e}function mu(t,n){$u();var i=0;if(in&&(n=e)}return n}function Iu(t,n,i){for(var e=t.u56_1,r=N(),s=e.v();s.w();){var u=s.y();n[u.s56_1]||r.s(u)}for(var o=r,_=o.v();_.w();){var h=_.y();i.s(h),n[h.s56_1]=!0}for(var a=o.v();a.w();)Iu(a.y(),n,i)}function Du(t,n){if(null==t[n.s56_1]){t[n.s56_1]=n;for(var i=n.u56_1.v();i.w();)Du(t,i.y())}}function Mu(t){return function(n){return!t[n.s56_1]}}function Nu(t){return function(n){return!t[n.s56_1]}}function Ru(t){return t.t56_1.d1()}function Pu(t){var n=t.f4m_1;return Xn("children",1,Kn,(function(t){return Pu(t)}),null),n.j2()}function Lu(t,n){var i,e;this.d4m_1=t,this.e4m_1=wu(this.d4m_1,n),this.f4m_1=Nn((i=this,e=n,function(){for(var t=0,n=i.d4m_1.o35(),r=bi(Array(n),null);t=0;){var o=u;0===o?r=n.z37(t.m4k_1,u,t.l4k_1):1===o&&(s=n.w37(t.m4k_1,u)),u=n.d38(t.m4k_1)}i=R(r,s)}return i}(pe(),i);return i.n37(n),e},J(be).n34=function(){return this.q4k_1},J(be).o34=function(t){return function(t,n){for(var i={_v:null},e=t.q4k_1,r=n.m37(e),s=null,u=r.d38($e().q4k_1);-1!==u;){var o=u;if(0===o)s=r.w37($e().q4k_1,0);else if(1===o)switch(s){case null:throw nt("Missing type");case"element":i._v=r.z37($e().q4k_1,1,qe());break;case"attr":var _=r.z37($e().q4k_1,1,$e().o4k_1);if(1!==_.n())throw nt("Only a single attribute pair expected");var h=n.s4k_1.createAttribute(it(_.d2()));h.value=it(_.e2()),i._v=h;break;case"text":i._v=n.s4k_1.createTextNode(r.w37($e().q4k_1,1));break;case"comment":i._v=n.s4k_1.createComment(r.w37($e().q4k_1,1));break;default:throw nt("unsupported type: "+s)}u=r.d38($e().q4k_1)}r.n37(e);var a=i._v;if(null==a)throw nt("Missing value");return a}(this,t instanceof Ce?t:Se(t))},J(xe).n34=function(){return this.u4k_1},J(xe).o34=function(t){return F(t,Je)?function(t,n){var i=ht(n.n4k().m3u()).createDocumentFragment(),e=new at(i);lt(e,null,n.n4k());var r=i.firstChild;for(;null!=r&&1!==r.nodeType;)r=r.nextSibling;var s=null==r||null!=r?r:W();if(null==s)throw nt("Expected element, but did not find it");return s}(0,t):function(t,n){for(var i=t.u4k_1,e=n.m37(i),r=K($e()),s=e.d38(qe().u4k_1),u=null,o=null,_=null,h=null;-1!==s;){var a=s;if(0===a)u=e.w37(qe().u4k_1,0);else if(1===a)o=e.w37(qe().u4k_1,1);else if(2===a)_=qe().t4k_1.o34(n);else{if(3!==a)throw-3===a?nt("Found unexpected child at index: "+s):ct("Received an unexpected decoder value: "+s);h=r.o34(n)}s=e.d38(qe().u4k_1)}if(null==o)throw nt("Missing localName");if(null==_)throw nt("Missing attributes");if(null==h)throw nt("Missing content");for(var l=n.s4k_1,c=null==u||0===ft(u)?l.createElement(o):l.createElementNS(u,o),f=_.f2().v();f.w();){var v=f.y(),d=v.i2(),w=v.j2();c.setAttribute(d,w)}for(var p=h.v();p.w();){var m=p.y();c.appendChild(l.adoptNode(m))}var g=c;return e.n37(i),g}(this,t instanceof Ce?t:Se(t))},J(Ce).a37=function(){return this.r4k_1.a37()},J(Ce).b37=function(){return this.r4k_1.b37()},J(Ce).h37=function(){return this.r4k_1.h37()},J(Ce).g37=function(){return this.r4k_1.g37()},J(Ce).f37=function(){return this.r4k_1.f37()},J(Ce).j37=function(t){return this.r4k_1.j37(t)},J(Ce).d37=function(){return this.r4k_1.d37()},J(Ce).e37=function(){return this.r4k_1.e37()},J(Ce).y36=function(){return this.r4k_1.y36()},J(Ce).z36=function(){return this.r4k_1.z36()},J(Ce).l37=function(t){return this.r4k_1.l37(t)},J(Ce).c37=function(){return this.r4k_1.c37()},J(Ce).i37=function(){return this.r4k_1.i37()},J(Ce).m37=function(t){return new Ee(this.r4k_1.m37(t),this.s4k_1)},J(Ee).b38=function(){return this.v4k_1.b38()},J(Ee).o37=function(t,n){return this.v4k_1.o37(t,n)},J(Ee).p37=function(t,n){return this.v4k_1.p37(t,n)},J(Ee).v37=function(t,n){return this.v4k_1.v37(t,n)},J(Ee).e38=function(t){return this.v4k_1.e38(t)},J(Ee).u37=function(t,n){return this.v4k_1.u37(t,n)},J(Ee).d38=function(t){return this.v4k_1.d38(t)},J(Ee).t37=function(t,n){return this.v4k_1.t37(t,n)},J(Ee).x37=function(t,n){return this.v4k_1.x37(t,n)},J(Ee).r37=function(t,n){return this.v4k_1.r37(t,n)},J(Ee).s37=function(t,n){return this.v4k_1.s37(t,n)},J(Ee).c38=function(){return this.v4k_1.c38()},J(Ee).q37=function(t,n){return this.v4k_1.q37(t,n)},J(Ee).w37=function(t,n){return this.v4k_1.w37(t,n)},J(Ee).n37=function(t){this.v4k_1.n37(t)},J(Ee).y37=function(t,n,i,e){return this.v4k_1.y37(t,n,je(i,this.w4k_1),e)},J(Ee).a38=function(t,n,i,e){return this.v4k_1.a38(t,n,je(i,this.w4k_1),e)},J(Oe).n34=function(){return this.x4k_1.n34()},J(Oe).o34=function(t){return this.x4k_1.o34(new Ce(t,this.y4k_1))},J(Te).b4l=function(t){return t.equals(Ue())},J(Ae).b4l=function(t){return t.equals(He())},J(ze).b4l=function(t){return t.equals(Ve())},J(De).e4l=function(t){return this.b4l(t.j4l())},J(Re).m4l=function(){return!0},J(Pe).m4l=function(){return!0},J(Fe).m4l=function(){return!1},J(We).t4l=function(){return this.s4l_1.m35()},J(We).toString=function(){return"PolyBaseInfo(tagName="+this.r4l_1+", descriptor="+this.s4l_1+")"},J(We).hashCode=function(){var t=this.r4l_1.hashCode();return M(t,31)+$t(this.s4l_1)|0},J(We).equals=function(t){if(this===t)return!0;if(!(t instanceof We))return!1;var n=t instanceof We?t:W();return!!this.r4l_1.equals(n.r4l_1)&&!!kt(this.s4l_1,n.s4l_1)},J(Xe).b38=function(){return this.i4m_1.v4l_1},J(Xe).u41=function(t,n){return this.i4m_1.u41(t,n)},J(Qe).b38=function(){return this.v4l_1},J(Qe).u41=function(t,n){return this.j4m(t,Ct().z4j(n))},J(Qe).k4m=function(t,n,i){Et(n);var e,r=new jr(this.v4l_1,this.u4l_1,n),s=function(t,n,i,e){if(null!=i)return new Zr(e.q4e(),i,!1);var r=e.q4e(),s=new As(t.u4l_1,t.v4l_1,n,Jr(r),!1).c4m().g4m(),u=null==s?e:s;return new Zr(u.q4e(),u,!1)}(this,t.n34(),i,n.m3u()),u=new As(this.u4l_1,this.v4l_1,t.n34(),s,!1),o=u.s35(0);if(o instanceof Ms){var _,h=n.m3u();t:{for(var a=null,l=!1,c=o.e4n_1.e2().v();c.w();){var f=c.y();if(jt(h,f.s4m())){if(l){_=null;break t}a=f,l=!0}}_=l?a:null}e=null==_?null:new Tr(h,0,_)}else{var v=u.s35(0).s4m();if(!jt(v,n.m3u()))throw Ot('Local name "'+n.m3u()+'" for root tag does not match expected name "'+v+'"');e=null}return new vr(r,o,e).l37(t)},J(Qe).j4m=function(t,n,i,e){return i=i===tt?null:i,e===tt?this.k4m(t,n,i):e.k4m.call(this,t,n,i)},J(ur).w4n=function(t){this.v4n_1=t},J(ur).x4n=function(){return this.v4n_1},J(fr).g29=function(){return this.h4r_1.j4r_1},J(fr).b38=function(){return this.h4r_1.i4r_1},J(fr).n4k=function(){return this.h4r_1.m4r_1},J(fr).z36=function(){return null},J(fr).a37=function(){return this.g29().s4r_1.x4r()?Ht().o34(this):Ut(this.o4r())},J(fr).b37=function(){var t;if(this.y4r_1.a4s()){var n=Bt(this.o4r());t=Wt(n)}else t=Vt(this.o4r());return t},J(fr).c37=function(){var t;if(this.y4r_1.a4s()){var n=Gt(this.o4r());t=Kt(n)}else t=Yt(this.o4r());return t},J(fr).d37=function(){var t;if(this.y4r_1.a4s()){var n=Jt(this.o4r());t=Zt(n)}else t=Xt(this.o4r());return t},J(fr).e37=function(){var t;if(this.y4r_1.a4s()){var n=tn(this.o4r());t=nn(n)}else t=Qt(this.o4r());return t},J(fr).f37=function(){var t=this.o4r();return en(t)},J(fr).g37=function(){return en(this.o4r())},J(fr).h37=function(){return rn(this.o4r())},J(fr).o4r=function(t,n){return t=t===tt||t,n===tt?this.b4s(t):n.b4s.call(this,t)},J(fr).i37=function(){return this.b4s(!1)},J(vr).c4s=function(){return null},J(vr).y36=function(){return!this.n4n_1.d4s()&&!this.n4k().g4b().equals(un())},J(vr).z36=function(){if(this.n4n_1.d4s()){this.n4k().g4g();var t=this.n4k(),n=on(),i=this.m35().p4e(),e=this.m35().q4e();return t.r4b(n,i,e),null}return J(fr).z36.call(this)},J(vr).j37=function(t){return this.m4n_1=!0,this},J(vr).b4s=function(t){var n,i=this.y4r_1,e=i instanceof ou?i:null,r=null==e?null:e.t4p_1,s=this.y4r_1.j4l();if(this.l4n_1>=0)n=this.n4k().p4b(this.l4n_1);else{var u;switch(s.y9_1){case 0:var o=this.n4k(),_=_n(),h=this.m35().p4e(),a=this.m35().q4e();o.r4b(_,h,a),u=hn(this.n4k());break;case 1:throw nt("Attribute parsing without a concrete index is unsupported");case 4:throw nt("Inline classes can not be decoded directly");case 3:u=an(this.n4k());break;case 2:u=this.y4r_1.e4s()?an(this.n4k()):ln(this.n4k());break;default:cn()}n=u}var l=n;return t&&0===ft(l)&&null!=r?r:l},J(vr).m37=function(t){throw fn("This should not happen as decodeSerializableValue should be called first")},J(vr).l37=function(t){var n=this.y4r_1.f4s(t),i=this.m4n_1&&this.y4r_1 instanceof Zs?this.y4r_1.s35(0):this.y4r_1,e=new wr(this.n4n_1,i,this.k4n_1,this.l4n_1,this.c4s()),r=n.o34(e),s=e.p4s_1,u=null==s?null:s.x4n();if(null!=u){if(null==r)throw ct(vn("Required value was null."));if(null!=this.n4n_1.n4r_1.g2(u,r))throw Ot("Duplicate use of id "+u)}return r},J(dr).m37=function(t){throw dn("Strings cannot be decoded to structures")},J(dr).y36=function(){return!0},J(dr).j37=function(t){return new dr(this.w4s_1,this.y4r_1.s35(0),this.v4s_1)},J(dr).b4s=function(t){var n,i=this.y4r_1,e=i instanceof ou?i:null,r=null==e?null:e.t4p_1;if(t&&null!=r){var s=this.v4s_1;n=0===ft(s)}else n=!1;return n?r:this.v4s_1},J(dr).l37=function(t){return this.y4r_1.f4s(t).o34(this)},J(wr).c4s=function(){return this.n4s_1},J(wr).x4s=function(t){this.q4s_1.s(t)},J(wr).b4s=function(t){var n=J(vr).b4s.call(this,t);if(this.l4n_1>=0&&this.y4r_1.y4s()){var i=this.p4s_1;null==i||i.w4n(n)}return n},J(wr).y36=function(){return this.o4s_1=!0,J(vr).y36.call(this)},J(wr).l37=function(t){return this.o4s_1?t.o34(this):J(vr).l37.call(this,t)},J(wr).j37=function(t){return this.p4s_1=new ur,J(vr).j37.call(this,t)},J(wr).m37=function(t){if(t.i35()){var n=new mr(this.r4s_1,this.y4r_1,this.c4s());return this.p4s_1=n,n}var i;if(this.y4r_1.q35()instanceof wn)throw fn("A primitive is not a composite");if(this.y4r_1 instanceof Ms){var e=new Or(this.r4s_1,this.y4r_1,this.k4n_1);this.p4s_1=e,i=e}else if(this.y4r_1 instanceof Hs){var r;if(this.y4r_1.j4l().equals(He())){var s=new $r(this.r4s_1,this.y4r_1,this.l4n_1);this.p4s_1=s,r=s}else if(this.y4r_1.j4l().equals(Ve()))r=new kr(this.r4s_1,this.y4r_1);else if(this.y4r_1.f4o()){var u=new xr(this.r4s_1,this.y4r_1,this.k4n_1,this.c4s());this.p4s_1=u,r=u}else{var o=new qr(this.r4s_1,this.y4r_1,this.c4s());this.p4s_1=o,r=o}i=r}else if(this.y4r_1 instanceof Gs){var _;if(this.y4r_1.f4o()){var h=new Cr(this.r4s_1,this.y4r_1,this.k4n_1,this.c4s());this.p4s_1=h,_=h}else{var a=new Er(this.r4s_1,this.y4r_1,this.k4n_1,this.c4s());this.p4s_1=a,_=a}i=_}else{var l=new mr(this.r4s_1,this.y4r_1,this.c4s());this.p4s_1=l,i=l}for(var c=i,f=this.q4s_1.v();f.w();){var v=f.y();c.x4s(v)}return c},J(pr).y36=function(){return!1},J(pr).y37=function(t,n,i,e){var r=this.y4r_1,s=r instanceof ou?r:null,u=null==s?null:s.h4t(this.g4t_1,i),o=null==u?e:u;return null==o||null!=o?o:W()},J(pr).a38=function(t,n,i,e){return null},J(pr).m37=function(t){return this},J(pr).n37=function(t){},J(pr).d38=function(t){var n=t.q35();if(n instanceof mn||n instanceof pn)return-1;throw fn("Null objects have no members")},J(pr).o37=function(t,n){throw fn("Null objects have no members")},J(pr).p37=function(t,n){throw fn("Null objects have no members")},J(pr).q37=function(t,n){throw fn("Null objects have no members")},J(pr).r37=function(t,n){throw fn("Null objects have no members")},J(pr).e38=function(t){return 0},J(pr).s37=function(t,n){throw fn("Null objects have no members")},J(pr).t37=function(t,n){throw fn("Null objects have no members")},J(pr).u37=function(t,n){throw fn("Null objects have no members")},J(pr).v37=function(t,n){throw fn("Null objects have no members")},J(pr).w37=function(t,n){throw fn("Null objects have no members")},J(pr).x37=function(t,n){throw fn("Null objects have no members")},J(mr).n37=function(t){if(!this.i4p_1&&-1!==this.d38(t))throw new Gr("Unexpected content in end structure");this.n4k().j4g(on(),this.a4u_1)},J(gr).w4n=function(t){this.v4o_1=t},J(gr).x4n=function(){return this.v4o_1},J(gr).n4k=function(){return this.j4p_1.m4r_1},J(gr).c4u=function(t,n,i){var e=this.k4p_1.s35(n),r=e.f4s(i);return this.d4p_1>=0?null:r.n34().q35()instanceof wn?new vr(this.j4p_1,e,this.f4p_1,this.e4p_1):new wr(this.j4p_1,e,this.f4p_1,this.e4p_1,null)},J(gr).y37=function(t,n,i,e){if(this.j4p_1,!this.h4p_1.d1()){var r=this.h4p_1.xd();if(r.k4u_1!==n)throw ct("Recovery state is inconsistent");var s=r.l4u_1,u=null==s||null!=s?s:W();return null==u||null!=u?u:W()}var o,_=this.k4p_1.s35(n),h=_.f4s(i);if(kt(F(h,yt)?h:W(),pe())&&ir(this.k4p_1)===n){if(this.d4p_1>=0){var a=kn("");return null!=a?a:W()}var l=L(this.n4k());this.n4k().v4f();var c=l instanceof Dt?l:null,f=null==c?xn(l):c;return null!=f?f:W()}if(this.e4p_1>=0&&_ instanceof Bs)o=new yr(this.j4p_1,_,this.e4p_1);else{var v=this.c4u(t,n,h);o=null==v?new pr(this.j4p_1,_):v}var d=o,w=h instanceof qn?h.t39(d,e):h.o34(d),p=d instanceof wr?d:null,m=null==p?null:p.p4s_1,g=null==m?null:m.x4n();if(null!=g){if(null==w)throw ct(vn("Required value was null."));if(null!=this.j4p_1.n4r_1.g2(g,w))throw Ot("Duplicate use of id "+g)}return this.c4p_1[n]=!0,w},J(gr).a38=function(t,n,i,e){if(this.j4p_1,!this.h4p_1.d1()){var r=this.h4p_1.xd();if(r.k4u_1!==n)throw ct("Recovery state is inconsistent");var s=r.l4u_1,u=null==s||null!=s?s:W();return null!=u?u:W()}if(this.j4p_1.d4s()){if(!this.n4k().g4g().equals(on()))throw nt("Elements with nil tags may not have content");return null}var o=this.c4u(t,n,i);if(null==o)return null;var _=o,h=this.k4p_1.s35(n).f4s(i),a=h instanceof qn?h.t39(_,e):h.o34(_),l=_ instanceof wr?_:null,c=null==l?null:l.p4s_1,f=null==c?null:c.x4n();if(null!=f){if(null==a)throw ct(vn("Required value was null."));if(null!=this.j4p_1.n4r_1.g2(f,a))throw Ot("Duplicate use of id "+f)}return this.c4p_1[n]=!0,a},J(gr).x37=function(t,n){if(this.j4p_1,!this.h4p_1.d1()){var i=this.h4p_1.xd();if(i.k4u_1!==n)throw ct("Recovery state is inconsistent");var e=i.l4u_1;return new Ss(null==e||null!=e?e:W())}var r=this.k4p_1.s35(n);return t.q35()instanceof wn?new vr(this.j4p_1,r,this.f4p_1,this.e4p_1):new wr(this.j4p_1,r,this.f4p_1,this.e4p_1,this.u4o_1)},J(gr).d4u=function(t,n){var i=n.equals(Ne());this.f4p_1=null;var e=this.y4o_1,r=this.x4o_1,s=this.i4u(t),u=r.q2(s),o=null==u?null:hr(u,n,this);if(null!=o)return this.f4u(o,n);var _=e.q2(s),h=null==_?null:ar(_,n);if(null!=h){var a=this.f4u(h.w4p_1,n);return this.f4p_1=h,a}var l,c=this.m35().p4e();if(i&&!this.g29().s4r_1.n4u()){var f=t.p4e();if(0===ft(f)){var v=er(s,c),d=r.q2(v),w=null==d?null:hr(d,n,this);if(null!=w)return this.e4u(w);var p=e.q2(v),m=null==p?null:ar(p,n);if(null!=m)return this.f4p_1=m,this.e4u(m.w4p_1)}var g=t.r4e();if(0===ft(g)){var y=this.n4k().t4a("");if(null!=y){var b=er(s,y),$=r.q2(b),k=null==$?null:hr($,n,this);if(null!=k)return this.e4u(k);var x=e.q2(b),q=null==x?null:ar(x,n);if(null!=q)return this.e4u(q.w4p_1)}}}if(!this.g29().s4r_1.n4u()&&ft(c)>0&&c===t.p4e()){var S=r.q2(vt(t.q4e())),C=null==S?null:hr(S,n,this);if(null!=C)return this.f4u(C,n)}if(n.equals(Ne())){var E=this.a4p_1,O=this.e4p_1;l=0<=O&&O=0?T:null))return j}else{var A=ir(this.k4p_1),z=A>=0?A:null;if(null==z);else{for(var I=this.k4p_1.s35(z);I instanceof Hs&&I.f4o()||I instanceof Zs;)I=I.s35(0);if(kt(I.u4n(),pe().m4k_1))return this.e4u(z)}}for(var D=this.g29().s4r_1,M=this.n4k(),N=Sn(r.n()),R=r.f2().v();R.w();){var P=R.y(),L=P.i2(),F=P.j2(),U=new Tr(L,F,this.k4p_1.s35(F));N.s(U)}var H=D.o4u(M,n,this.k4p_1,t,Cn(N,e.e2())),V=En(H);return!0===(null==V?null:V.m4u_1)?V.k4u_1:(this.h4p_1.z(H),-3)},J(gr).e4u=function(t){if(t>=0&&this.c4p_1[t]){var n=this.k4p_1.s35(t);(!(n instanceof pu)||!n.f4o())&&this.g29().s4r_1.p4u(this.k4p_1,t)}return t},J(gr).f4u=function(t,n){if(this.e4u(t),this.g29().s4r_1.h4v()&&n.equals(Me())&&this.k4p_1 instanceof su){var i=this.k4p_1.d4v();if(null!=i&&!i.d1()){for(var e=yn(this.c4p_1.length),r=yn(this.c4p_1.length),s=i.v();s.w();){var u=s.y(),o=u.ue(),_=u.ve();-2===o&&(r[_]=!0),-2===_&&(e[o]=!0)}for(var h=i.v();h.w();){var a=h.y(),l=a.ue(),c=a.ve();if(l===t)if(-2===c){var f;t:{for(var v=0,d=On(this.c4p_1).v();d.w();){var w=d.y();if(jn(v),this.c4p_1[w]&&this.k4p_1.s35(w).g4v().equals(Ue())&&!e[w]){f=v;break t}v=v+1|0}f=-1}var p=f;if(p>=0)throw new Gr("Found element "+this.k4p_1.s35(p).s4m()+" before "+this.k4p_1.s35(t).s4m()+" in conflict with ordering constraints")}else if(this.c4p_1[c])throw new Gr("Found element "+this.k4p_1.s35(c).s4m()+" before "+this.k4p_1.s35(t).s4m()+" in conflict with ordering constraints");if(!r[t]){var m;t:{for(var g=0,y=On(this.c4p_1).v();y.w();){var b=y.y();if(jn(g),this.c4p_1[b]&&r[b]){m=g;break t}g=g+1|0}m=-1}var $=m;if($>0)throw new Gr("Found element "+this.k4p_1.s35(t).s4m()+" after "+this.k4p_1.s35($)+" in conflict with ordering constraints")}}}}return t},J(gr).d38=function(t){if(!this.i4p_1&&this.n4k().b4b()=0){if(this.n4k().j4g(on(),this.k4p_1.s4m()),this.d4p_1>=this.c4p_1.length)return-1;var n=this.d4p_1;return _r(this),n}this.e4p_1=this.e4p_1+1|0;t:for(;;){var i,e=this.a4p_1,r=this.e4p_1;if(0<=r&&r"),An());this.h4p_1.z(q),x=this.d38(t)}else this.c4p_1[$]=!0,x=$;return x}break;case 10:this.j4p_1;var S,C=this.d4u(this.n4k().m3u(),Ne());return-3===C?S=this.d38(t):(this.c4p_1[C]=!0,S=C),S;case 1:var E=this.d4u(this.n4k().m3u(),Me());if(-3!==E)return this.c4p_1[E]=!0,E;if(!this.h4p_1.d1())return this.h4p_1.td().k4u_1;In(this.n4k());break;case 7:throw new Gr("End document in unexpected location")}return-1},J(gr).n37=function(t){if(!this.i4p_1&&-1!==this.d38(t))throw new Gr("Unexpected content in end structure");null==this.u4o_1?this.n4k().j4g(on(),this.m35()):this.n4k().j4g(on(),null)},J(gr).g4u=function(t){return _r(this),this.d4p_1=0){var u=this.h4u(this.e4p_1);return this.k4p_1.s35(n).y4s()&&this.w4n(u),u}if(this.d4p_1>=0){var o,_=s instanceof ou?s:null,h=null==_?null:_.t4p_1;if(null!=h)o=h;else{if(n!==ir(this.k4p_1))throw new Gr("Missing child "+t.u35(n)+":"+n);o=""}return o}switch(s.j4l().y9_1){case 4:throw new Gr("Inline elements can not be directly decoded");case 0:r=hn(this.n4k());break;case 3:case 2:var a=an(this.n4k()),l=this.n4k().e4g();if(!(l instanceof Dn))throw new Gr("Missing end tag after text only content (found: "+l+")");var c=this.m35().q4e();if(l.h4h_1!==c)throw new Gr("Expected end tag local name "+this.m35().q4e()+", found "+l.h4h_1);r=a;break;case 1:throw ct(vn("Attributes should already be read now"));default:cn()}return r},J(gr).r37=function(t,n){return Xt(this.w37(t,n))},J(gr).o37=function(t,n){var i=this.w37(t,n);return this.g29().s4r_1.x4r()?Ht().o34(new dr(this.j4p_1,this.k4p_1.s35(n),i)):Ut(i)},J(gr).p37=function(t,n){return Vt(this.w37(t,n))},J(gr).q37=function(t,n){return Yt(this.w37(t,n))},J(gr).s37=function(t,n){return Qt(this.w37(t,n))},J(gr).t37=function(t,n){var i=this.w37(t,n);return en(i)},J(gr).u37=function(t,n){return en(this.w37(t,n))},J(gr).v37=function(t,n){return rn(this.w37(t,n))},J(gr).x4s=function(t){this.w4o_1.s(t)},J(yr).c38=function(){return!0},J(yr).e38=function(t){return 1},J(yr).d38=function(t){var n;switch(this.c4w_1){case 0:case 1:var i=this.c4w_1;this.c4w_1=i+1|0,n=i;break;default:n=-1}return n},J(yr).y37=function(t,n,i,e){this.b4w_1<0&&(this.b4w_1=n);var r=(n-this.b4w_1|0)%2|0,s=this.k4p_1.s35(r).f4s(i);if(0===r&&kt(s,Os())){var u=this.n4k().k4g(this.a4w_1);return null!=u?u:W()}return s.o34(new dr(this.d4w_1,this.k4p_1.p4w(),Lt(this.n4k().p4b(this.a4w_1))))},J(yr).w37=function(t,n){var i;if(0==(n%2|0)){var e,r=this.n4k().k4g(this.a4w_1),s=r.r4e();if(0===ft(s))e=!0;else{var u=r.p4e();e=0===ft(u)}if(!e)throw new Gr("A QName in a namespace cannot be converted to a string");i=r.q4e()}else i=this.n4k().p4b(this.a4w_1);return i},J(yr).n37=function(t){},J(yr).m37=function(t){return this},J(yr).a37=function(){throw dn("Expect map structure")},J(yr).b37=function(){throw dn("Expect map structure")},J(yr).h37=function(){throw dn("Expect map structure")},J(yr).g37=function(){throw dn("Expect map structure")},J(yr).f37=function(){throw dn("Expect map structure")},J(yr).j37=function(t){return this},J(yr).d37=function(){throw dn("Expect map structure")},J(yr).e37=function(){throw dn("Expect map structure")},J(yr).y36=function(){throw dn("Expect map structure")},J(yr).z36=function(){throw dn("Expect map structure")},J(yr).c37=function(){throw dn("Expect map structure")},J(yr).i37=function(){throw dn("Expect map structure")},J(br).c38=function(){return!0},J(br).e38=function(t){return lr(this).n()},J(br).y37=function(t,n,i,e){var r=this.k4p_1.s35(n),s=lr(this),u=this.q4q_1;return this.q4q_1=u+1|0,new dr(this.s4q_1,r,s.h1(u)).l37(i)},J(br).w37=function(t,n){var i=lr(this),e=this.q4q_1;return this.q4q_1=e+1|0,i.h1(e)},J(br).n37=function(t){},J($r).t4q=function(){return this.n4k().p4b(this.l4x_1)},J(kr).t4q=function(){return this.n4k().e4b()},J(xr).d38=function(t){var n;return this.d4z_1?n=-1:(this.d4z_1=!0,n=0),n},J(xr).y37=function(t,n,i,e){var r=this.k4p_1.s35(0),s=r.f4s(i);if(kt(F(s,yt)?s:W(),pe())&&ir(cr(this))===this.c4z_1){var u=Pn(this.n4k()),o=u instanceof Dt?u:null,_=null==o?xn(u):o;return null!=_?_:W()}var h=new wr(this.e4z_1,r,this.b4z_1,Tn.MIN_VALUE,this.u4o_1),a=i.o34(h),l=h instanceof wr?h:null,c=null==l?null:l.p4s_1,f=null==c?null:c.x4n();if(null!=f){if(null==a)throw ct(vn("Required value was null."));if(null!=this.e4z_1.n4r_1.g2(f,a))throw Ot("Duplicate use of id "+f)}return a},J(xr).n37=function(t){},J(xr).e38=function(t){return 1},J(qr).d38=function(t){var n;if(this.i4p_1=!0,2===this.n4k().g4g().y9_1)n=-1;else{var i=this.y4z_1;this.y4z_1=i+1|0,n=i}return n},J(qr).y37=function(t,n,i,e){var r=this.k4p_1.s35(0),s=new wr(this.z4z_1,r,this.f4p_1,this.e4p_1,null),u=i instanceof qn?i.t39(s,e):i.o34(s),o=s instanceof wr?s:null,_=null==o?null:o.p4s_1,h=null==_?null:_.x4n();if(null!=h){if(null==u)throw ct(vn("Required value was null."));if(null!=this.z4z_1.n4r_1.g2(h,u))throw Ot("Duplicate use of id "+h)}return u},J(Sr).y37=function(t,n,i,e){this.t50_1=n;var r=this.k4p_1.s35(0);if(0==(n%2|0)){if(r.g4v().equals(He())){var s=this.n4k().i4g(r.s4m());if(null==s)throw new Gr("Missing key attribute ("+r.s4m()+") on "+this.n4k().m3u()+"@"+this.n4k().h4b());var u=s;return i.o34(new dr(this.u50_1,r,u))}if(Ln(!this.k4p_1.r4o()),!jt(this.n4k().m3u(),r.s4m())){var o=this.n4k().m3u()+" != "+this.k4p_1.e4r();throw ct(vn(o))}return J(gr).y37.call(this,t,n%2|0,i,e)}var _=this.k4p_1.s35(1),h=new wr(this.u50_1,_,this.s50_1,Tn.MIN_VALUE,this.u4o_1);this.k4p_1.r4o()&&h.x4s(r.s4m());var a=i.o34(h),l=h instanceof wr?h:null,c=null==l?null:l.p4s_1,f=null==c?null:c.x4n();if(null!=f){if(null==a)throw ct(vn("Required value was null."));if(null!=this.u50_1.n4r_1.g2(f,a))throw Ot("Duplicate use of id "+f)}return a},J(Cr).d38=function(t){var n,i;if(this.k4p_1.r4o())return this.t50_1>=0&&1==(this.t50_1%2|0)?n=-1:(this.t50_1=this.t50_1+1|0,n=this.t50_1),n;if(this.t50_1<0){if(!this.n4k().g4b().equals(_n()))throw ct(vn("Check failed."));if(!jt(this.k4p_1.e4r(),this.n4k().m3u()))throw new Gr("Map entry not found. Found "+this.n4k().m3u()+"@"+this.n4k().h4b()+" instead")}if(0==(this.t50_1%2|0)){var e=jt(this.k4p_1.e4r(),this.n4k().m3u());Fn(e,(i=this,function(){return i.k4p_1.e4r()+" != "+i.n4k().m3u()}))}var r=J(Sr).d38.call(this,t);return r<0?r:(this.t50_1=(this.t50_1-(this.t50_1%2|0)|0)+(r%2|0)|0,this.t50_1)},J(Cr).n37=function(t){if(!this.k4p_1.r4o()&&!this.n4k().g4b().equals(on()))throw ct(vn("Check failed."));if(!jt(this.n4k().m3u(),this.k4p_1.e4r()))throw ct(vn("Check failed."))},J(Cr).e38=function(t){return 2},J(Er).e4u=function(t){return t},J(Er).d38=function(t){if(this.k4p_1.r4o()){var n=this.t50_1%2|0;if(1==(n+(2&((2^n)&(0|n|-n))>>31)|0)&&J(Sr).d38.call(this,t)<0)return-1}else{var i,e=this.t50_1%2|0;if(1==(e+(2&((2^e)&(0|e|-e))>>31)|0)){var r=this.n4k().e4g();i=kt(null==r?null:r.g4b(),_n())}else i=!1;if(i&&this.n4k().g4g(),J(Sr).d38.call(this,t)<0)return-1}return this.t50_1=this.t50_1+1|0,this.t50_1},J(Er).y37=function(t,n,i,e){var r=J(Sr).y37.call(this,t,n,i,e);if(1==(n%2|0)&&!this.k4p_1.r4o()){if(!this.n4k().g4g().equals(on()))throw ct(vn("Check failed."));Ln(jt(this.k4p_1.e4r(),this.n4k().m3u()))}return r},J(Er).n37=function(t){Ln(jt(this.k4p_1.s4m(),this.n4k().m3u())),J(Sr).n37.call(this,t)},J(Er).e38=function(t){return-1},J(Or).d38=function(t){var n,i,e,r=this.k4p_1.d4n_1;if(kt(r,hu())){var s;switch(this.g53_1){case 0:case 1:var u=this.g53_1;this.g53_1=u+1|0,s=u;break;default:s=-1}return s}if(null!=this.h53_1)return 1===this.g53_1?1:-1;if(0===this.g53_1){var o=0,_=this.a4p_1;if(o<_)do{var h=o;o=o+1|0;var a,l=this.n4k().k4g(h);if("http://www.w3.org/2001/XMLSchema-instance"===l.p4e()&&"type"===l.q4e())a=!0;else{var c=r instanceof cu?r:null;a=l.equals(null==c?null:c.k53_1)}if(a){for(var f=new dr(this.j53_1,this.k4p_1.s35(0),this.n4k().p4b(h)),v=Os().o34(f),d=this.k4p_1.e4n_1,w=Sn(d.n()),p=d.f2().v();p.w();){var m=p.y(),g=m.i2(),y=m.j2(),b=Un(g,(n=this.g29().s4r_1,e=void 0,null==(e=(i=y).c4m().g4m())?n.i55(i.c4m().e4m_1,i.w4l_1.w55()):e));w.s(b)}var $,k=w;t:{for(var x=k.v();x.w();){var q=x.y();if(q.te_1.equals(v)){$=q;break t}}$=null}var S,C=null==$?null:$.se_1;if(null==C)throw new Gr("Could not find child for type with qName: "+v+". Candidates are: "+Hn(k));return S=C,this.h53_1=S,this.i53_1=l,this.g53_1=1,0}}while(o<_)}var E=J(gr).d38.call(this,t);return this.g53_1=E+1|0,E},J(Or).w37=function(t,n){var i,e=this.k4p_1.c4n_1.equals(Be());if(0===n){var r;if(null!=this.h53_1)r=Yn(this.h53_1);else if(this.k4p_1.j4u())if(e&&(this.n4k().g4b().equals(Wn())||this.n4k().g4b().equals(Bn())||this.n4k().g4b().equals(Vn())))r="kotlin.String";else{if(null==this.f53_1)throw ct(vn("PolyInfo is null for a transparent polymorphic decoder"));r=this.f53_1.t4l()}else{var s=this.k4p_1.s35(0).s4m(),u=this.n4k(),o=s.p4e(),_=s.q4e(),h=u.q4b(o,_),a=null==h?null:g.m53(h,this.k4p_1.f4n_1);if(null==a)throw new Kr(this.n4k().h4b(),"Missing type for polymorphic value");r=a}i=r}else{if(!this.k4p_1.j4u())throw new Gr("NonTransparent polymorphic values cannot have text content only");i=e?an(this.n4k()):J(gr).w37.call(this,t,n)}return i},J(Or).c4u=function(t,n,i){var e=this.f53_1,r=null==e?null:e.x4p_1,s=null==r?this.k4p_1.n53(i.n34().m35()):r;return new wr(this.j53_1,s,this.f4p_1,this.e4p_1,this.i53_1)},J(Or).y37=function(t,n,i,e){var r,s=this.h53_1;if(null!=s){var u=this.k4p_1.n53(s),o=new wr(this.j53_1,u,this.f4p_1,this.e4p_1,this.i53_1);this.g53_1=2;var _=i.o34(o),h=o instanceof wr?o:null,a=null==h?null:h.p4s_1,l=null==a?null:a.x4n();if(null!=l){if(null==_)throw ct(vn("Required value was null."));if(null!=this.j53_1.n4r_1.g2(l,_))throw Ot("Duplicate use of id "+l)}return _}if(!this.k4p_1.j4u())return this.n4k().r4b(_n(),null,"value"),J(gr).y37.call(this,t,n,i,e);if(this.k4p_1.c4n_1.equals(Be())&&i.n34().q35()instanceof wn){var c=this.k4p_1.n53(i.n34().m35());r=i.o34(new vr(this.j53_1,c))}else r=J(gr).y37.call(this,t,n,i,e);return r},J(Or).n37=function(t){if(this.k4p_1.j4u()){if(!this.k4p_1.c4n_1.equals(Be())||!this.k4p_1.j4u()){var n=this.f53_1,i=null==n?null:n.v4p_1;if(null!=i){var e=this.n4k(),r=on(),s=i.p4e(),u=i.q4e();e.r4b(r,s,u)}else J(gr).n37.call(this,t)}}else{var o=this.n4k(),_=on(),h=this.m35().p4e(),a=this.m35().q4e();o.r4b(_,h,a)}},J(jr).d4s=function(){if(this.m4r_1.g4b().equals(_n())){var t;t:{var n=Rn(0,this.m4r_1.f4b());if(F(n,zt)&&n.d1())t=!1;else{for(var i=n.v();i.w();){var e,r=i.y();if("http://www.w3.org/2001/XMLSchema-instance"===this.m4r_1.m4b(r)&&"nil"===this.m4r_1.o4b(r)&&"true"===this.m4r_1.p4b(r))e=!0;else{var s=this.m4r_1.k4g(r),u=this.j4r_1.t4r_1;e=!!s.equals(null==u?null:u.se_1)&&this.m4r_1.p4b(r)===this.j4r_1.t4r_1.te_1}if(e){t=!0;break t}}t=!1}}if(t)return!0}return!1},J(Tr).t4l=function(){return this.x4p_1.u4n().m35()},J(Tr).toString=function(){return"PolyInfo(tagName="+this.v4p_1+", index="+this.w4p_1+", descriptor="+this.x4p_1+")"},J(Tr).hashCode=function(){var t=this.v4p_1.hashCode();return t=M(t,31)+this.w4p_1|0,M(t,31)+this.x4p_1.hashCode()|0},J(Tr).equals=function(t){if(this===t)return!0;if(!(t instanceof Tr))return!1;var n=t instanceof Tr?t:W();return!!this.v4p_1.equals(n.v4p_1)&&this.w4p_1===n.w4p_1&&!!this.x4p_1.equals(n.x4p_1)},J(Ar).o53=function(t,n){var i;t:{for(var e=t.n35().v();e.w();){var r=e.y();if(r instanceof cs){i=r;break t}}i=null}return null!=i?tr(i,t.m35(),n):Qn(Zn(t.m35(),Jn(46)),n)},J(Ar).m53=function(t,n){if(null==n||!ti(t,Jn(46)))return t;var i=ni(n,Jn(46));return i<0?t.substring(1):n.substring(0,i)+t},J(zr).m35=function(){return this.y4r_1.s4m()},J(Ir).g29=function(){return this.l4p_1.j4r_1},J(Ir).b38=function(){return this.l4p_1.i4r_1},J(Ir).m35=function(){return this.k4p_1.s4m()},J(Ir).i4u=function(t){return function(t,n){var i;if(n=n===tt?t.r4e():n,sr(),n===t.r4e())i=t;else{var e=t.p4e(),r=t.q4e();i=new Tt(e,r,n)}return i}(t,"")},J(Mr).q53=function(t,n,i,e,r){return this.p53_1(t,n,i,e,r)},J(Nr).q53=function(t,n,i,e,r){return this.r53_1(t,n,i,e,r)},J(Rr).q53=function(t,n,i,e,r){return this.s53_1(t,n,i,e,r)},J(Hr).j54=function(){var t,n=this.d54_1;if(null==n){var i=this.c54_1,e=i instanceof ls?i:null;t=null==e?null:e.l54_1}else t=n;return t},J(Hr).t54=function(){var t=this.c54_1;return t instanceof ls?t.e39():es()},J(Zr).toString=function(){return"DeclaredNameInfo(serialName="+this.u54_1+", annotatedName="+this.v54_1+", isDefaultNamespace="+this.w54_1+")"},J(Zr).hashCode=function(){var t=_i(this.u54_1);return t=M(t,31)+(null==this.v54_1?0:this.v54_1.hashCode())|0,M(t,31)+hi(this.w54_1)|0},J(Zr).equals=function(t){if(this===t)return!0;if(!(t instanceof Zr))return!1;var n=t instanceof Zr?t:W();return this.u54_1===n.u54_1&&!!kt(this.v54_1,n.v54_1)&&this.w54_1===n.w54_1},J(Qr).toString=function(){return"ActualNameInfo(serialName="+this.x54_1+", annotatedName="+this.y54_1+")"},J(Qr).hashCode=function(){var t=_i(this.x54_1);return M(t,31)+this.y54_1.hashCode()|0},J(Qr).equals=function(t){if(this===t)return!0;if(!(t instanceof Qr))return!1;var n=t instanceof Qr?t:W();return this.x54_1===n.x54_1&&!!this.y54_1.equals(n.y54_1)},J(us).k56=function(){this.e56_1=Br().v53_1},J(us).y2=function(){return ss(this)},J(ls).h4v=function(){return this.q54_1},J(ls).n4u=function(){return this.r54_1},J(ls).x4r=function(){return this.s54_1},J(ls).h55=function(t,n){return this.o54_1},J(ls).f55=function(t,n){var i,e,r=n.l56();t:{for(var s=r.v();s.w();){var u=s.y();if(u instanceof ps){i=u;break t}}i=null}if(!0===(null==i?null:i.f4z_1))return!0;t:{for(var o=r.v();o.w();){var _=o.y();if(_ instanceof ms){e=_;break t}}e=null}return null==(null==e?null:nr(e))},J(ls).g55=function(t,n){var i;t:{for(var e=n.l56().v();e.w();){var r=e.y();if(r instanceof vs){i=r;break t}}i=null}var s=i;return!(!this.l54_1&&null==s)},J(ls).l55=function(t,n){return this.m55(t,n,!0)},J(ls).m55=function(t,n,i){var e,r=this.o55(t,n),s=null==r?null:r.n34(),u=null==s?t.m56():s,o=t.n56();switch(null==o?-1:o.y9_1){case-1:var _;t:{for(var h=n.l56().v();h.w();){var a=h.y();if(a instanceof ps){_=a;break t}}_=null}for(var l=!0===(null==_?null:_.f4z_1),c=n.m56();c.p35();)c=c.s35(0);var f,v=c.q35();if(kt(v,fi()))f=Ue();else if(l)f=Be();else if(!i&&kt(n.n56(),He()))f=this.n55(t,n,He());else if(i){var d=n.n56(),w=null==d?bu(u):d;f=null==w?this.b55(u.q35()):w}else f=Ue();e=f;break;case 3:var p;if(t.n34()instanceof Hs)p=kt(n.m56().q35(),fi())?Ue():Be();else{var m=n.n56(),g=null==m?bu(u):m,y=null==g?this.b55(u.q35()):g;p=1===y.y9_1?Ve():y}e=p;break;default:e=o}return e},J(ls).j55=function(t,n){var i;switch(t){case"kotlin.Boolean":i=new Tt("http://www.w3.org/2001/XMLSchema","boolean","xsd");break;case"kotlin.Byte":i=new Tt("http://www.w3.org/2001/XMLSchema","byte","xsd");break;case"kotlin.UByte":i=new Tt("http://www.w3.org/2001/XMLSchema","unsignedByte","xsd");break;case"kotlin.Short":i=new Tt("http://www.w3.org/2001/XMLSchema","short","xsd");break;case"kotlin.UShort":i=new Tt("http://www.w3.org/2001/XMLSchema","unsignedShort","xsd");break;case"kotlin.Int":i=new Tt("http://www.w3.org/2001/XMLSchema","int","xsd");break;case"kotlin.UInt":i=new Tt("http://www.w3.org/2001/XMLSchema","unsignedInt","xsd");break;case"kotlin.Long":i=new Tt("http://www.w3.org/2001/XMLSchema","long","xsd");break;case"kotlin.ULong":i=new Tt("http://www.w3.org/2001/XMLSchema","unsignedLong","xsd");break;case"kotlin.Float":case"kotlin.Double":i=new Tt("http://www.w3.org/2001/XMLSchema","double","xsd");break;case"kotlin.String":i=new Tt("http://www.w3.org/2001/XMLSchema","string","xsd");break;default:i=Qn(Zn(t,Jn(46)),n)}return i},J(ls).e55=function(t,n,i,e){var r=t.o56(),s=r.d4m_1.q35(),u=r.e4m_1,o=n.w55(),_=u.equals(r.e4m_1);Fn(_,_s);var h,a=n.n34(),l=null==a?null:a.p56();if(i.equals(He())){var c;if(e.w54_1){var f=e.v54_1,v=null==f?null:f.q4e();c=vt(null==v?e.u54_1:v)}else c=null!=e.v54_1?e.v54_1:vt(e.u54_1);h=c}else h=null!=e.v54_1?e.v54_1:s instanceof wn||kt(s,Rt())||kt(s,Pt())||kt(s,ai())||"kotlin.Unit"===u.u54_1||l instanceof vi?this.k55(e,o):null!=u.v54_1?u.v54_1:this.i55(u,o);return h},J(ls).o4u=function(t,n,i,e,r){return this.n54_1.q53(t,n,i,e,r)},J(ls).p55=function(t,n,i,e){throw dn("this function should not be called")},J(ls).p4u=function(t,n){if(this.p54_1)throw new Gr("Duplicate child ("+t.s35(n)+" found in "+t+" outside of eluded list context")},J(ls).o55=function(t,n){switch(t.m56().m35()){case"javax.xml.namespace.QName?":case"javax.xml.namespace.QName":return t.m56().i35()?di(Os()):Os();default:return null}},J(ls).r55=function(t){for(var n=Rn(0,t.o35()),i=mi(pi(wi(n,10)),16),e=gi(i),r=n.v();r.w();){var s=r.y(),u=t.u35(s);e.g2(u,s)}var o=e,_=yi(),h=$n(),a=0,l=t.o35();if(a("),this.s35(0).e57(t,n+4|0,i),t.s7(")")},J(As).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Is).equals.call(this,t)&&(t instanceof As||W(),Ts(this).equals(Ts(t)))},J(As).hashCode=function(){var t=J(Is).hashCode.call(this);return M(31,t)+Ts(this).hashCode()|0},J(zs).g57=function(t,n,i,e,r){var s,u,o,_=t.s4r_1.o55(i,e);null==_?(s=i.m56(),u=i,o=e):(s=_.n34(),u=i.h57(tt,tt,_),o=e.h57(tt,tt,_));var h=t.s4r_1.s55(i,e),a=s.q35();if(kt(a,ci())||a instanceof wn)return new Vs(t.s4r_1,u,o,r,h);if(kt(a,Pt()))return new Hs(t,n,u,o);if(kt(a,Rt())){var l=i.n56();return 1===(null==l?-1:l.y9_1)?new Bs(t,n,u,o):new Gs(t,n,u,o)}return a instanceof vi?new Ms(t,n,u,o):t.v4r_1&&s.p35()?new Zs(t,n,u,o,r):new su(t,n,u,o,h)},J(zs).d57=function(t,n,i,e,r,s){return e=e===tt?i:e,s===tt?this.g57(t,n,i,e,r):s.g57.call(this,t,n,i,e,r)},J(Is).g4v=function(){return 4===this.j4l().y9_1?this.s35(0).g4v():this.j4l()},J(Is).c4m=function(){return this.z4l_1},J(Is).a4s=function(){return!1},J(Is).s4m=function(){var t=this.b4m_1;return Xn("tagName",1,Kn,(function(t){return t.s4m()}),null),t.j2()},J(Is).f4s=function(t){var n=this.x4l_1,i=null==n?t:n;return F(i,yt)?i:W()},J(Is).u4n=function(){return this.c4m().d4m_1},J(Is).o35=function(){return this.c4m().d4m_1.o35()},J(Is).p56=function(){return this.c4m().d4m_1.q35()},J(Is).s35=function(t){throw Ri("There are no children")},J(Is).f57=function(t,n,i){return this instanceof Hs||this instanceof Vs?this.e57(t,n,i):i.r(this.u4n().m35())?t.s7(this.s4m().toString()).s7("<...> = ").s7(this.j4l().x9_1):(i.s(this.u4n().m35()),this.e57(t,n,i)),t},J(Is).toString=function(){var t=Li(),n=Fi();return this.f57(t,0,n).toString()},J(Is).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Is||W(),!!kt(this.x4l_1,t.x4l_1)&&!!this.y4l_1.equals(t.y4l_1)&&this.c4m().equals(t.c4m()))},J(Is).hashCode=function(){var t=this.y4l_1.hashCode();t=M(31,t)+this.c4m().hashCode()|0;var n=M(31,t),i=this.x4l_1,e=null==i?null:$t(i);return n+(null==e?0:e)|0},J(Ms).y4s=function(){return!1},J(Ms).e4s=function(){return!1},J(Ms).j4l=function(){return this.c4n_1},J(Ms).j4u=function(){return kt(this.d4n_1,hu())},J(Ms).s35=function(t){return Ds(this).h1(t)},J(Ms).n53=function(t){var n=this.e4n_1.q2(t);if(null==n)throw new Gr("Missing polymorphic information for "+t);return n},J(Ms).e57=function(t,n,i){if(t.s7(this.s4m().toString()),this.j4u()){t.s7(" <~(");for(var e=this.e4n_1.e2().v();e.w();){var r=e.y().f57(t,n+4|0,i),s=Jn(44);r.s5(s).s5(Jn(10))}}else{t.s7(" ("),t.s7(" [");for(var u=this.e4n_1.e2().v();u.w();){var o=u.y().f57(t,n+4|0,i),_=Jn(44);o.s5(_).s5(Jn(10))}t.s5(Jn(93))}},J(Ms).equals=function(t){return!!(this===t||null!=t&&Pi(this).equals(Pi(t))&&J(ou).equals.call(this,t)&&(t instanceof Ms||W(),this.c4n_1.equals(t.c4n_1)&&kt(this.d4n_1,t.d4n_1)&&kt(this.e4n_1,t.e4n_1)&&this.f4n_1==t.f4n_1))},J(Ms).hashCode=function(){var t=J(ou).hashCode.call(this);t=M(31,t)+this.c4n_1.hashCode()|0,t=M(31,t)+$t(this.d4n_1)|0,t=M(31,t)+$t(this.e4n_1)|0;var n=M(31,t),i=this.f4n_1,e=null==i?null:_i(i);return n+(null==e?0:e)|0},J(Ps).q55=function(){return this.l57_1},J(Ps).i57=function(){return this.n57_1},J(Ps).p57=function(t,n,i){return new Ps(this.k57_1,t,this.m57_1,n,i)},J(Ps).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Ps||W(),!!(kt(this.k57_1,t.k57_1)&&this.l57_1.equals(t.l57_1)&&this.m57_1===t.m57_1&&kt(this.n57_1,t.n57_1)&&kt(this.o57_1,t.o57_1)))},J(Ps).hashCode=function(){var t=$t(this.k57_1);t=M(31,t)+this.l57_1.hashCode()|0,t=M(31,t)+hi(this.m57_1)|0;var n=M(31,t),i=this.n57_1,e=null==i?null:$t(i),r=M(31,t=n+(null==e?0:e)|0),s=this.o57_1,u=null==s?null:s.hashCode();return r+(null==u?0:u)|0},J(Ps).n34=function(){return null},J(Ps).o56=function(){var t=this.n57_1,n=null==t?null:t.n34();return new Lu(null==n?this.k57_1:n,this.w55())},J(Ps).l56=function(){return An()},J(Ps).m56=function(){var t=this.n57_1,n=null==t?null:t.n34();return null==n?this.k57_1:n},J(Ps).n56=function(){return this.o57_1},J(Ps).w55=function(){var t=this.l57_1.v54_1,n=null==t?null:Vi(t);return null==n?js():n},J(Hs).j4l=function(){return this.b4r_1},J(Hs).y4s=function(){return!1},J(Hs).s35=function(t){return Us(this)},J(Hs).e57=function(t,n,i){t.s7(this.s4m().toString()),this.f4o()?(t.s7(": EludedList<"),Us(this).f57(t,n,i),t.s5(Jn(62))):(t.s7(": ExplicitList<"),Us(this).f57(t,n,i),t.s5(Jn(62)))},J(Hs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(pu).equals.call(this,t)&&(t instanceof Hs||W(),this.f4o()===t.f4o()&&!!this.b4r_1.equals(t.b4r_1)&&Us(this).equals(Us(t)))},J(Hs).hashCode=function(){var t=J(pu).hashCode.call(this);return t=M(31,t)+hi(this.f4o())|0,t=M(31,t)+this.b4r_1.hashCode()|0,M(31,t)+Us(this).hashCode()|0},J(Vs).e4s=function(){return this.a58_1},J(Vs).y4s=function(){return this.b58_1},J(Vs).j4l=function(){return this.c58_1},J(Vs).o35=function(){return 0},J(Vs).e57=function(t,n,i){t.s7(this.s4m().toString()).s5(Jn(58)).s7(this.q35().toString()).s7(" = ").s7(this.c58_1.toString())},J(Vs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(ou).equals.call(this,t)&&(t instanceof Vs||W(),this.c58_1.equals(t.c58_1))},J(Vs).hashCode=function(){var t=J(ou).hashCode.call(this);return M(31,t)+this.c58_1.hashCode()|0},J(Bs).y4s=function(){return!1},J(Bs).e4s=function(){return!0},J(Bs).j4l=function(){return He()},J(Bs).d58=function(){var t=this.n4w_1;return Xn("keyDescriptor",1,Kn,(function(t){return t.d58()}),null),t.j2()},J(Bs).p4w=function(){var t=this.o4w_1;return Xn("valueDescriptor",1,Kn,(function(t){return t.p4w()}),null),t.j2()},J(Bs).o35=function(){return 2},J(Bs).s35=function(t){return 0==(t%2|0)?this.d58():this.p4w()},J(Bs).e57=function(t,n,i){t.s7(this.s4m().toString()).s7(" (").s5(Jn(10)),mu(t,n),this.d58().f57(t,n+4|0,i).s7(",").s5(Jn(10)),mu(t,n),this.p4w().f57(t,n+4|0,i).s5(Jn(41))},J(Gs).j4l=function(){return Ue()},J(Gs).y4s=function(){return!1},J(Gs).r4o=function(){var t=this.n4o_1;return Xn("isValueCollapsed",1,Kn,(function(t){return t.r4o()}),null),t.j2()},J(Gs).e4r=function(){var t=this.o4o_1;return Xn("entryName",1,Kn,(function(t){return t.e4r()}),null),t.j2()},J(Gs).s35=function(t){return 0==(t%2|0)?Ws(this):Ys(this)},J(Gs).e57=function(t,n,i){t.s7(this.s4m().toString()).s7(this.f4o()?": TransparentMap<":": ExplicitMap<"),this.s35(0).e57(t,n+4|0,i),t.s7(", "),this.s35(1).e57(t,n+4|0,i),t.s5(Jn(62))},J(Zs).y4s=function(){return this.n58_1},J(Zs).e4s=function(){return Ks(this).e4s()},J(Zs).j4l=function(){return Ks(this).j4l()},J(Zs).s4m=function(){return Ks(this).s4m()},J(Zs).s35=function(t){if(0!==t)throw Qi("Inline classes only have one child");return Ks(this)},J(Zs).a4s=function(){var t=this.p58_1;return Xn("isUnsigned",1,Kn,(function(t){return t.a4s()}),null),t.j2()},J(Zs).e57=function(t,n,i){t.s7(this.s4m().toString()),t.s7(": Inline ("),Ks(this).f57(t,n+4|0,i),t.s5(Jn(41))},J(Zs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(ou).equals.call(this,t)&&(t instanceof Zs||W(),this.a4s()===t.a4s())},J(Zs).hashCode=function(){var t=J(ou).hashCode.call(this);return M(31,t)+hi(this.a4s())|0},J(su).e4s=function(){return this.z4u_1},J(su).y4s=function(){return!1},J(su).j4l=function(){return Ue()},J(su).s35=function(t){return Qs(this).h1(t)},J(su).d4v=function(){var t=iu(this);return null==t?null:t.se_1},J(su).e57=function(t,n,i){t.s7(this.s4m().toString()).s7(" (").s5(Jn(10));for(var e=!0,r=Qs(this).v();r.w();){var s=r.y();if(e)e=!1;else{var u=Jn(44);t.s5(u).s5(Jn(10))}mu(t,n),s.f57(t,n+4|0,i)}mu(t.s5(Jn(10)),n-4|0).s5(Jn(41))},J(su).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(ou).equals.call(this,t)&&(t instanceof su||W(),!!kt(this.a4v_1,t.a4v_1))},J(su).hashCode=function(){var t=J(ou).hashCode.call(this),n=M(31,t),i=this.a4v_1,e=null==i?null:$t(i);return n+(null==e?0:e)|0},J(ou).h4t=function(t,n){return function(t,n,i,e){var r,s=t.u4p_1;if(!kt(s,E))return null==s||null!=s?s:W();if(null==t.t4p_1)r=null;else{var u=new vr(new jr(n,i,kn(t.t4p_1).d4k()),t);r=e.o34(u)}var o=r;return t.u4p_1=o,null==o||null!=o?o:W()}(this,t.i4r_1,t.j4r_1,n)},J(ou).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Is).equals.call(this,t)&&(t instanceof ou||W(),this.s4p_1===t.s4p_1&&this.t4p_1==t.t4p_1&&kt(this.u4p_1,t.u4p_1))},J(ou).hashCode=function(){var t=J(Is).hashCode.call(this);t=M(31,t)+hi(this.s4p_1)|0;var n=M(31,t),i=this.t4p_1,e=null==i?null:_i(i),r=M(31,t=n+(null==e?0:e)|0),s=this.u4p_1,u=null==s?null:$t(s);return r+(null==u?0:u)|0},J(vu).n34=function(){return this.s58_1},J(vu).i57=function(){return this.u58_1},J(vu).p57=function(t,n,i){return new vu(this.s58_1,this.t58_1,t,n,i)},J(vu).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof vu||W(),!!this.s58_1.equals(t.s58_1)&&this.t58_1===t.t58_1&&!!kt(this.u58_1,t.u58_1)&&!!this.v58_1.equals(t.v58_1)&&kt(this.w58_1,t.w58_1))},J(vu).hashCode=function(){var t=this.s58_1.hashCode();t=M(31,t)+this.t58_1|0;var n=M(31,t),i=this.u58_1,e=null==i?null:$t(i);t=M(31,t=n+(null==e?0:e)|0)+this.v58_1.hashCode()|0;var r=M(31,t),s=this.w58_1,u=null==s?null:s.hashCode();return r+(null==u?0:u)|0},J(vu).w55=function(){return Vi(this.s58_1.s4m())},J(vu).o56=function(){return null!=this.u58_1?new Lu(this.u58_1.n34(),Vi(this.s58_1.s4m())):-1===this.t58_1||kt(this.m56().q35(),et())?this.s58_1.c4m():new Lu(this.m56(),this.s58_1.w4l_1.w55())},J(vu).q55=function(){return this.v58_1},J(vu).l56=function(){return-1===this.t58_1?An():this.s58_1.u4n().r35(this.t58_1)},J(vu).m56=function(){return null!=this.u58_1?this.u58_1.n34():kt(this.s58_1.p56(),et())||-1===this.t58_1?this.s58_1.u4n():this.s58_1.u4n().s35(this.t58_1)},J(vu).n56=function(){return this.w58_1},J(pu).f4o=function(){return this.e4o_1},J(pu).q57=function(){return!1},J(pu).e4s=function(){return!1},J(pu).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Is).equals.call(this,t)&&(t instanceof pu||W(),this.f4o()===t.f4o()&&this.q57()===t.q57()&&this.e4s()===t.e4s())},J(pu).hashCode=function(){var t=J(Is).hashCode.call(this);return t=M(31,t)+hi(this.f4o())|0,t=M(31,t)+hi(this.q57())|0,M(31,t)+hi(this.e4s())|0},J(gu).o56=function(){return this.y58_1},J(gu).q55=function(){return this.z58_1},J(gu).w55=function(){return this.a59_1},J(gu).n56=function(){return this.b59_1},J(gu).i57=function(){return this.c59_1},J(gu).n34=function(){return this.d59_1},J(gu).l56=function(){return An()},J(gu).m56=function(){return this.y58_1.d4m_1},J(gu).p57=function(t,n,i){return new gu(this.x58_1,this.y58_1,t,this.a59_1,n,i)},J(xu).ue=function(){return this.e4v_1},J(xu).ve=function(){return this.f4v_1},J(xu).toString=function(){return"XmlOrderConstraint(before="+this.e4v_1+", after="+this.f4v_1+")"},J(xu).hashCode=function(){var t=this.e4v_1;return M(t,31)+this.f4v_1|0},J(xu).equals=function(t){if(this===t)return!0;if(!(t instanceof xu))return!1;var n=t instanceof xu?t:W();return this.e4v_1===n.e4v_1&&this.f4v_1===n.f4v_1},J(Tu).w56=function(t){for(var n=0,i=t.length;n{"use strict";t.exports=i.p+"a1015df118c0009bbaae.json"},918:(t,n,i)=>{"use strict";t.exports=i.p+"4e1313da42287d18ad5a.png"},513:(t,n,i)=>{"use strict";t.exports=i.p+"5de21dc9a6671d378dbe.png"},79:(t,n,i)=>{"use strict";t.exports=i.p+"b52705ec61511efb27b9.png"},926:(t,n,i)=>{"use strict";t.exports=i.p+"21c6d0bc8e5465644f8b.png"},105:(t,n,i)=>{"use strict";t.exports=i.p+"33c2ca54c6adbcd6a2e3.png"},36:(t,n,i)=>{"use strict";t.exports=i.p+"dd554b8af1ab5e3bc726.png"},257:(t,n,i)=>{"use strict";t.exports=i.p+"791bfb510d74390a8d5a.png"},520:(t,n,i)=>{"use strict";t.exports=i.p+"fbab3596911513c77182.png"},709:(t,n,i)=>{"use strict";t.exports=i.p+"4f486d36fd4835ea883d.png"}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,n)=>{for(var i in n)__webpack_require__.o(n,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;__webpack_require__.g.importScripts&&(t=__webpack_require__.g.location+"");var n=__webpack_require__.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");if(i.length)for(var e=i.length-1;e>-1&&!t;)t=i[e--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=t})();var __webpack_exports__=__webpack_require__(960);return __webpack_exports__})())); +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["worldwind-tutorials"]=n():t["worldwind-tutorials"]=n()}(this,(()=>(()=>{var __webpack_modules__={135:(t,n,i)=>{"use strict";function e(t,n,i){function e(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,n&&n.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===i&&(i=Error),e.prototype=Object.create(i.prototype),e.prototype.name=t,e.prototype.constructor=e,e}i.r(n),i.d(n,{ArithmeticException:()=>o,ChronoField:()=>O,ChronoLocalDate:()=>W,ChronoLocalDateTime:()=>an,ChronoUnit:()=>S,ChronoZonedDateTime:()=>rn,Clock:()=>dn,DateTimeException:()=>r,DateTimeFormatter:()=>Yt,DateTimeFormatterBuilder:()=>Ut,DateTimeParseException:()=>s,DayOfWeek:()=>M,DecimalStyle:()=>mt,Duration:()=>x,IllegalArgumentException:()=>_,IllegalStateException:()=>h,Instant:()=>vn,IsoChronology:()=>nn,IsoFields:()=>rt,LocalDate:()=>hn,LocalDateTime:()=>ln,LocalTime:()=>cn,Month:()=>N,MonthDay:()=>Gt,NullPointerException:()=>a,OffsetDateTime:()=>un,OffsetTime:()=>en,Period:()=>P,ResolverStyle:()=>U,SignStyle:()=>gt,Temporal:()=>V,TemporalAccessor:()=>z,TemporalAdjuster:()=>H,TemporalAdjusters:()=>Jt,TemporalAmount:()=>$,TemporalField:()=>C,TemporalQueries:()=>j,TemporalQuery:()=>T,TemporalUnit:()=>k,TextStyle:()=>yt,UnsupportedTemporalTypeException:()=>u,ValueRange:()=>E,Year:()=>Xt,YearConstants:()=>q,YearMonth:()=>Kt,ZoneId:()=>G,ZoneOffset:()=>Q,ZoneOffsetTransition:()=>gn,ZoneRegion:()=>Mt,ZoneRules:()=>K,ZoneRulesProvider:()=>Dt,ZonedDateTime:()=>sn,_:()=>zn,convert:()=>Sn,nativeJs:()=>En,use:()=>An});var r=e("DateTimeException",(function(t,n){void 0===n&&(n=null);var i=t||this.name;null!==n&&n instanceof Error&&(i+="\n-------\nCaused by: "+n.stack+"\n-------\n"),this.message=i})),s=e("DateTimeParseException",(function(t,n,i,e){void 0===n&&(n=""),void 0===i&&(i=0),void 0===e&&(e=null);var r=t||this.name;r+=": "+n+", at index: "+i,null!==e&&e instanceof Error&&(r+="\n-------\nCaused by: "+e.stack+"\n-------\n"),this.message=r,this.parsedString=function(){return n},this.errorIndex=function(){return i}})),u=e("UnsupportedTemporalTypeException",null,r),o=e("ArithmeticException"),_=e("IllegalArgumentException"),h=e("IllegalStateException"),a=e("NullPointerException");function l(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,n,i){if(!t)throw i?new i(n):new Error(n)}function v(t,n){if(null==t)throw new a(n+" must not be null");return t}function d(t,n,i){if(!(t instanceof n))throw new _(i+" must be an instance of "+(n.name?n.name:n)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function w(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var p=Object.freeze({__proto__:null,assert:f,requireNonNull:v,requireInstance:d,abstractMethodFail:w}),m=9007199254740991,g=-9007199254740991,y=function(){function t(){}return t.intDiv=function(n,i){var e=n/i;return e=t.roundDown(e),t.safeZero(e)},t.intMod=function(n,i){var e=n-t.intDiv(n,i)*i;return e=t.roundDown(e),t.safeZero(e)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(n,i){var e=Math.floor(n/i);return t.safeZero(e)},t.floorMod=function(n,i){var e=n-t.floorDiv(n,i)*i;return t.safeZero(e)},t.safeAdd=function(n,i){if(t.verifyInt(n),t.verifyInt(i),0===n)return t.safeZero(i);if(0===i)return t.safeZero(n);var e=t.safeToInt(n+i);if(e===n||e===i)throw new o("Invalid addition beyond MAX_SAFE_INTEGER!");return e},t.safeSubtract=function(n,i){return t.verifyInt(n),t.verifyInt(i),0===n&&0===i?0:0===n?t.safeZero(-1*i):0===i?t.safeZero(n):t.safeToInt(n-i)},t.safeMultiply=function(n,i){if(t.verifyInt(n),t.verifyInt(i),1===n)return t.safeZero(i);if(1===i)return t.safeZero(n);if(0===n||0===i)return 0;var e=t.safeToInt(n*i);if(e/i!==n||n===g&&-1===i||i===g&&-1===n)throw new o("Multiplication overflows: "+n+" * "+i);return e},t.parseInt=function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n}((function(n){var i=parseInt(n);return t.safeToInt(i)})),t.safeToInt=function(n){return t.verifyInt(n),t.safeZero(n)},t.verifyInt=function(t){if(null==t)throw new o("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new o("Invalid int value, using NaN as argument");if(t%1!=0)throw new o("Invalid value: '"+t+"' is a float");if(t>m||tn?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(n){if(n!=n||n===1/0)return 0;for(var i=n;n>4294967295;)i^=n/=4294967295;return t.smi(i)},t.hashCode=function(){for(var n=17,i=arguments.length,e=new Array(i),r=0;r0&&e<0)e+=cn.NANOS_PER_SECOND;else if(i<0&&e>0)e-=cn.NANOS_PER_SECOND;else if(0===i&&0!==e){var s=n.with(O.NANO_OF_SECOND,r);i=t.until(s,S.SECONDS)}}catch(t){}return this.ofSeconds(i,e)},n.parse=function(t){v(t,"text");var i=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==i&&"T"===i[3]==0){var e="-"===i[1],r=i[2],u=i[4],o=i[5],_=i[6],h=i[7];if(null!=r||null!=u||null!=o||null!=_){var a=n._parseNumber(t,r,cn.SECONDS_PER_DAY,"days"),l=n._parseNumber(t,u,cn.SECONDS_PER_HOUR,"hours"),c=n._parseNumber(t,o,cn.SECONDS_PER_MINUTE,"minutes"),f=n._parseNumber(t,_,1,"seconds"),d=null!=_&&"-"===_.charAt(0),w=n._parseFraction(t,h,d?-1:1);try{return n._create(e,a,l,c,f,w)}catch(n){throw new s("Text cannot be parsed to a Duration: overflow",t,0,n)}}}throw new s("Text cannot be parsed to a Duration",t,0)},n._parseNumber=function(t,n,i,e){if(null==n)return 0;try{return"+"===n[0]&&(n=n.substring(1)),y.safeMultiply(parseFloat(n),i)}catch(n){throw new s("Text cannot be parsed to a Duration: "+e,t,0,n)}},n._parseFraction=function(t,n,i){return null==n||0===n.length?0:(n=(n+"000000000").substring(0,9),parseFloat(n)*i)},n._create=function(){return arguments.length<=2?n._createSecondsNanos(arguments[0],arguments[1]):n._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},n._createNegateDaysHoursMinutesSecondsNanos=function(t,i,e,r,s,u){var o=y.safeAdd(i,y.safeAdd(e,y.safeAdd(r,s)));return t?n.ofSeconds(o,u).negated():n.ofSeconds(o,u)},n._createSecondsNanos=function(t,i){return void 0===t&&(t=0),void 0===i&&(i=0),0===t&&0===i?n.ZERO:new n(t,i)};var i=n.prototype;return i.get=function(t){if(t===S.SECONDS)return this._seconds;if(t===S.NANOS)return this._nanos;throw new u("Unsupported unit: "+t)},i.units=function(){return[S.SECONDS,S.NANOS]},i.isZero=function(){return 0===this._seconds&&0===this._nanos},i.isNegative=function(){return this._seconds<0},i.seconds=function(){return this._seconds},i.nano=function(){return this._nanos},i.withSeconds=function(t){return n._create(t,this._nanos)},i.withNanos=function(t){return O.NANO_OF_SECOND.checkValidIntValue(t),n._create(this._seconds,t)},i.plusDuration=function(t){return v(t,"duration"),this.plus(t.seconds(),t.nano())},i.plus=function(t,n){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&n instanceof k?this.plusAmountUnit(t,n):this.plusSecondsNanos(t,n)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n===S.DAYS)return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_DAY),0);if(n.isDurationEstimated())throw new u("Unit must not have an estimated duration");if(0===t)return this;if(n instanceof S){switch(n){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this.plusSecondsNanos(1e3*y.intDiv(t,1e9),1e3*y.intMod(t,1e9));case S.MILLIS:return this.plusMillis(t);case S.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos(y.safeMultiply(n.duration().seconds(),t),0)}var i=n.duration().multipliedBy(t);return this.plusSecondsNanos(i.seconds(),i.nano())},i.plusDays=function(t){return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_DAY),0)},i.plusHours=function(t){return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_HOUR),0)},i.plusMinutes=function(t){return this.plusSecondsNanos(y.safeMultiply(t,cn.SECONDS_PER_MINUTE),0)},i.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},i.plusMillis=function(t){return this.plusSecondsNanos(y.intDiv(t,1e3),1e6*y.intMod(t,1e3))},i.plusNanos=function(t){return this.plusSecondsNanos(0,t)},i.plusSecondsNanos=function(t,i){if(v(t,"secondsToAdd"),v(i,"nanosToAdd"),0===t&&0===i)return this;var e=y.safeAdd(this._seconds,t);e=y.safeAdd(e,y.intDiv(i,cn.NANOS_PER_SECOND)),i=y.intMod(i,cn.NANOS_PER_SECOND);var r=y.safeAdd(this._nanos,i);return n.ofSeconds(e,r)},i.minus=function(t,n){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,n)},i.minusDuration=function(t){v(t,"duration");var n=t.seconds(),i=t.nano();return n===g?this.plus(m,-i):this.plus(-n,-i)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),t===g?this.plusAmountUnit(m,n):this.plusAmountUnit(-t,n)},i.minusDays=function(t){return t===g?this.plusDays(m):this.plusDays(-t)},i.minusHours=function(t){return t===g?this.plusHours(m):this.plusHours(-t)},i.minusMinutes=function(t){return t===g?this.plusMinutes(m):this.plusMinutes(-t)},i.minusSeconds=function(t){return t===g?this.plusSeconds(m):this.plusSeconds(-t)},i.minusMillis=function(t){return t===g?this.plusMillis(m):this.plusMillis(-t)},i.minusNanos=function(t){return t===g?this.plusNanos(m):this.plusNanos(-t)},i.multipliedBy=function(t){if(0===t)return n.ZERO;if(1===t)return this;var i=y.safeMultiply(this._seconds,t),e=y.safeMultiply(this._nanos,t);return i+=y.intDiv(e,cn.NANOS_PER_SECOND),e=y.intMod(e,cn.NANOS_PER_SECOND),n.ofSeconds(i,e)},i.dividedBy=function(t){if(0===t)throw new o("Cannot divide by zero");if(1===t)return this;var i=y.intDiv(this._seconds,t),e=y.roundDown((this._seconds/t-i)*cn.NANOS_PER_SECOND),r=y.intDiv(this._nanos,t);return r=e+r,n.ofSeconds(i,r)},i.negated=function(){return this.multipliedBy(-1)},i.abs=function(){return this.isNegative()?this.negated():this},i.addTo=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,S.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,S.NANOS)),t},i.subtractFrom=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,S.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,S.NANOS)),t},i.toDays=function(){return y.intDiv(this._seconds,cn.SECONDS_PER_DAY)},i.toHours=function(){return y.intDiv(this._seconds,cn.SECONDS_PER_HOUR)},i.toMinutes=function(){return y.intDiv(this._seconds,cn.SECONDS_PER_MINUTE)},i.toMillis=function(){var t=Math.round(y.safeMultiply(this._seconds,1e3));return y.safeAdd(t,y.intDiv(this._nanos,1e6))},i.toNanos=function(){var t=y.safeMultiply(this._seconds,cn.NANOS_PER_SECOND);return y.safeAdd(t,this._nanos)},i.compareTo=function(t){v(t,"otherDuration"),d(t,n,"otherDuration");var i=y.compareNumbers(this._seconds,t.seconds());return 0!==i?i:this._nanos-t.nano()},i.equals=function(t){return this===t||t instanceof n&&this.seconds()===t.seconds()&&this.nano()===t.nano()},i.toString=function(){if(this===n.ZERO)return"PT0S";var t,i=y.intDiv(this._seconds,cn.SECONDS_PER_HOUR),e=y.intDiv(y.intMod(this._seconds,cn.SECONDS_PER_HOUR),cn.SECONDS_PER_MINUTE),r=y.intMod(this._seconds,cn.SECONDS_PER_MINUTE),s="PT";if(0!==i&&(s+=i+"H"),0!==e&&(s+=e+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*cn.NANOS_PER_SECOND-this._nanos):""+(cn.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+"S"},i.toJSON=function(){return this.toString()},n}($),q=function(){},S=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return this.isDateBased()||this===n.FOREVER},i.isDateBased=function(){return this.compareTo(n.DAYS)>=0&&this!==n.FOREVER},i.isTimeBased=function(){return this.compareTo(n.DAYS)<0},i.isSupportedBy=function(t){if(this===n.FOREVER)return!1;try{return t.plus(1,this),!0}catch(n){try{return t.plus(-1,this),!0}catch(t){return!1}}},i.addTo=function(t,n){return t.plus(n,this)},i.between=function(t,n){return t.until(n,this)},i.toString=function(){return this._name},i.compareTo=function(t){return this.duration().compareTo(t.duration())},n}(k),C=function(){function t(){}var n=t.prototype;return n.isDateBased=function(){w("isDateBased")},n.isTimeBased=function(){w("isTimeBased")},n.baseUnit=function(){w("baseUnit")},n.rangeUnit=function(){w("rangeUnit")},n.range=function(){w("range")},n.rangeRefinedBy=function(t){w("rangeRefinedBy")},n.getFrom=function(t){w("getFrom")},n.adjustInto=function(t,n){w("adjustInto")},n.isSupportedBy=function(t){w("isSupportedBy")},n.displayName=function(){w("displayName")},n.equals=function(t){w("equals")},n.name=function(){w("name")},t}(),E=function(){function t(t,n,i,e){f(!(t>n),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+n+"'",_),f(!(i>e),"Smallest maximum value '"+i+"' must be less than largest maximum value '"+e+"'",_),f(!(n>e),"Minimum value '"+n+"' must be less than maximum value '"+e+"'",_),this._minSmallest=t,this._minLargest=n,this._maxLargest=e,this._maxSmallest=i}var n=t.prototype;return n.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},n.minimum=function(){return this._minSmallest},n.largestMinimum=function(){return this._minLargest},n.maximum=function(){return this._maxLargest},n.smallestMaximum=function(){return this._maxSmallest},n.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},n.checkValidValue=function(t,n){return this.isValidValue(t)?t:f(!1,null!=n?"Invalid value for "+n+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,r)},n.checkValidIntValue=function(t,n){if(!1===this.isValidIntValue(t))throw new r("Invalid int value for "+n+": "+t);return t},n.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},n.isIntValue=function(){return this.minimum()>=y.MIN_SAFE_INTEGER&&this.maximum()<=y.MAX_SAFE_INTEGER},n.equals=function(n){return n===this||n instanceof t&&this._minSmallest===n._minSmallest&&this._minLargest===n._minLargest&&this._maxSmallest===n._maxSmallest&&this._maxLargest===n._maxLargest},n.hashCode=function(){return y.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},n.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return(t+=" - ")+(this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():""))},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):f(!1,"Invalid number of arguments "+arguments.length,_)},t}(),O=function(t){function n(n,i,e,r){var s;return(s=t.call(this)||this)._name=n,s._baseUnit=i,s._rangeUnit=e,s._range=r,s}l(n,t),n.byName=function(t){for(var i in n)if(n[i]&&n[i]instanceof n&&n[i].name()===t)return n[i]};var i=n.prototype;return i.name=function(){return this._name},i.baseUnit=function(){return this._baseUnit},i.rangeUnit=function(){return this._rangeUnit},i.range=function(){return this._range},i.displayName=function(){return this.toString()},i.checkValidValue=function(t){return this.range().checkValidValue(t,this)},i.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},i.isDateBased=function(){return this===n.DAY_OF_WEEK||this===n.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===n.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===n.DAY_OF_MONTH||this===n.DAY_OF_YEAR||this===n.EPOCH_DAY||this===n.ALIGNED_WEEK_OF_MONTH||this===n.ALIGNED_WEEK_OF_YEAR||this===n.MONTH_OF_YEAR||this===n.YEAR_OF_ERA||this===n.YEAR||this===n.ERA},i.isTimeBased=function(){return this===n.NANO_OF_SECOND||this===n.NANO_OF_DAY||this===n.MICRO_OF_SECOND||this===n.MICRO_OF_DAY||this===n.MILLI_OF_SECOND||this===n.MILLI_OF_DAY||this===n.SECOND_OF_MINUTE||this===n.SECOND_OF_DAY||this===n.MINUTE_OF_HOUR||this===n.MINUTE_OF_DAY||this===n.HOUR_OF_AMPM||this===n.CLOCK_HOUR_OF_AMPM||this===n.HOUR_OF_DAY||this===n.CLOCK_HOUR_OF_DAY||this===n.AMPM_OF_DAY},i.rangeRefinedBy=function(t){return t.range(this)},i.getFrom=function(t){return t.getLong(this)},i.toString=function(){return this.name()},i.equals=function(t){return this===t},i.adjustInto=function(t,n){return t.with(this,n)},i.isSupportedBy=function(t){return t.isSupported(this)},n}(C),j=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),z=function(){function t(){}var n=t.prototype;return n.query=function(t){return t===j.zoneId()||t===j.chronology()||t===j.precision()?null:t.queryFrom(this)},n.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},n.range=function(t){if(t instanceof O){if(this.isSupported(t))return t.range();throw new u("Unsupported field: "+t)}return t.rangeRefinedBy(this)},t}(),T=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n.prototype.queryFrom=function(t){w("queryFrom")},n}(b);function A(t,n){var i=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n}(T);return i.prototype.queryFrom=n,new i(t)}var I,D,M=function(t){function n(n,i){var e;return(e=t.call(this)||this)._ordinal=n,e._name=i,e}l(n,t);var i=n.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},n.values=function(){return I.slice()},n.valueOf=function(t){for(var i=0;i7)throw new r("Invalid value for DayOfWeek: "+t);return I[t-1]},n.from=function(t){if(f(null!=t,"temporal",a),t instanceof n)return t;try{return n.of(t.get(O.DAY_OF_WEEK))}catch(n){throw n instanceof r?new r("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),n):n}},i.value=function(){return this._ordinal+1},i.displayName=function(t,n){throw new _("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof O?t===O.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===O.DAY_OF_WEEK)return t.range();if(t instanceof O)throw new u("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===O.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.DAY_OF_WEEK)return this.value();if(t instanceof O)throw new u("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=y.floorMod(t,7);return I[y.floorMod(this._ordinal+(n+7),7)]},i.minus=function(t){return this.plus(-1*y.floorMod(t,7))},i.query=function(t){return t===j.precision()?S.DAYS:t===j.localDate()||t===j.localTime()||t===j.chronology()||t===j.zone()||t===j.zoneId()||t===j.offset()?null:(f(null!=t,"query",a),t.queryFrom(this))},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},n}(z),N=function(t){function n(n,i){var e;return(e=t.call(this)||this)._value=y.safeToInt(n),e._name=i,e}l(n,t);var i=n.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,n){throw new _("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof O?t===O.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===O.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.MONTH_OF_YEAR)return this.value();if(t instanceof O)throw new u("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var i=y.intMod(t,12)+12,e=y.intMod(this.value()+i,12);return e=0===e?12:e,n.of(e)},i.minus=function(t){return this.plus(-1*y.intMod(t,12))},i.length=function(t){switch(this){case n.FEBRUARY:return t?29:28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case n.FEBRUARY:return 28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case n.FEBRUARY:return 29;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var i=t?1:0;switch(this){case n.JANUARY:return 1;case n.FEBRUARY:return 32;case n.MARCH:return 60+i;case n.APRIL:return 91+i;case n.MAY:return 121+i;case n.JUNE:return 152+i;case n.JULY:return 182+i;case n.AUGUST:return 213+i;case n.SEPTEMBER:return 244+i;case n.OCTOBER:return 274+i;case n.NOVEMBER:return 305+i;case n.DECEMBER:default:return 335+i}},i.firstMonthOfQuarter=function(){switch(this){case n.JANUARY:case n.FEBRUARY:case n.MARCH:return n.JANUARY;case n.APRIL:case n.MAY:case n.JUNE:return n.APRIL;case n.JULY:case n.AUGUST:case n.SEPTEMBER:return n.JULY;case n.OCTOBER:case n.NOVEMBER:case n.DECEMBER:default:return n.OCTOBER}},i.query=function(n){return f(null!=n,"query() parameter must not be null",r),n===j.chronology()?nn.INSTANCE:n===j.precision()?S.MONTHS:t.prototype.query.call(this,n)},i.toString=function(){switch(this){case n.JANUARY:return"JANUARY";case n.FEBRUARY:return"FEBRUARY";case n.MARCH:return"MARCH";case n.APRIL:return"APRIL";case n.MAY:return"MAY";case n.JUNE:return"JUNE";case n.JULY:return"JULY";case n.AUGUST:return"AUGUST";case n.SEPTEMBER:return"SEPTEMBER";case n.OCTOBER:return"OCTOBER";case n.NOVEMBER:return"NOVEMBER";case n.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(O.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._value-t._value},i.equals=function(t){return this===t},n.valueOf=function(t){for(var i=0;i12)&&f(!1,"Invalid value for MonthOfYear: "+t,r),D[t-1]},n.from=function(t){if(t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),n)}},n}(z),R=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,P=function(t){function n(i,e,r){var s;s=t.call(this)||this;var u=y.safeToInt(i),o=y.safeToInt(e),_=y.safeToInt(r);return 0===u&&0===o&&0===_?(n.ZERO||(s._years=u,s._months=o,s._days=_,n.ZERO=c(s)),n.ZERO||c(s)):(s._years=u,s._months=o,s._days=_,s)}l(n,t),n.ofYears=function(t){return n.create(t,0,0)},n.ofMonths=function(t){return n.create(0,t,0)},n.ofWeeks=function(t){return n.create(0,0,y.safeMultiply(t,7))},n.ofDays=function(t){return n.create(0,0,t)},n.of=function(t,i,e){return n.create(t,i,e)},n.from=function(t){if(t instanceof n)return t;v(t,"amount");for(var i=0,e=0,s=0,u=t.units(),o=0;on.MAX_SECONDS)throw new r("Zone offset not in valid range: -18:00 to +18:00")},n._validate=function(t,n,i){if(t<-18||t>18)throw new r("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(n<0||i<0)throw new r("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(n>0||i>0)throw new r("Zone offset minutes and seconds must be negative because hours is negative")}else if(n>0&&i<0||n<0&&i>0)throw new r("Zone offset minutes and seconds must have the same sign");if(Math.abs(n)>59)throw new r("Zone offset minutes not in valid range: abs(value) "+Math.abs(n)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new r("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(n)>0||Math.abs(i)>0))throw new r("Zone offset not in valid range: -18:00 to +18:00")},n.of=function(t){v(t,"offsetId");var i,e,s,u=Z[t];if(null!=u)return u;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=n._parseNumber(t,1,!1),e=0,s=0;break;case 5:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=0;break;case 6:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=0;break;case 7:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=n._parseNumber(t,5,!1);break;case 9:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=n._parseNumber(t,7,!0);break;default:throw new r("Invalid ID for ZoneOffset, invalid format: "+t)}var o=t[0];if("+"!==o&&"-"!==o)throw new r("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===o?n.ofHoursMinutesSeconds(-i,-e,-s):n.ofHoursMinutesSeconds(i,e,s)},n._parseNumber=function(t,n,i){if(i&&":"!==t[n-1])throw new r("Invalid ID for ZoneOffset, colon not found when expected: "+t);var e=t[n],s=t[n+1];if(e<"0"||e>"9"||s<"0"||s>"9")throw new r("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(e.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},n.ofHours=function(t){return n.ofHoursMinutesSeconds(t,0,0)},n.ofHoursMinutes=function(t,i){return n.ofHoursMinutesSeconds(t,i,0)},n.ofHoursMinutesSeconds=function(t,i,e){n._validate(t,i,e);var r=t*cn.SECONDS_PER_HOUR+i*cn.SECONDS_PER_MINUTE+e;return n.ofTotalSeconds(r)},n.ofTotalMinutes=function(t){var i=t*cn.SECONDS_PER_MINUTE;return n.ofTotalSeconds(i)},n.ofTotalSeconds=function(t){if(t%(15*cn.SECONDS_PER_MINUTE)==0){var i=t,e=J[i];return null==e&&(e=new n(t),J[i]=e,Z[e.id()]=e),e}return new n(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===O.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof O)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return v(t,"query"),t===j.offset()||t===j.zone()?this:t===j.localDate()||t===j.localTime()||t===j.precision()||t===j.chronology()||t===j.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(O.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return v(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof n&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},n}(G),tt=function(t){function n(){var n;return(n=t.call(this)||this).fieldValues=new F,n.chrono=null,n.zone=null,n.date=null,n.time=null,n.leapSecond=!1,n.excessDays=null,n}l(n,t),n.create=function(t,i){var e=new n;return e._addFieldValue(t,i),e};var i=n.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,n){v(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==n)throw new r("Conflict found: "+t+" "+i+" differs from "+t+" "+n+": "+this);return this._putFieldValue0(t,n)},i._putFieldValue0=function(t,n){return this.fieldValues.put(t,n),this},i.resolve=function(t,n){return null!=n&&this.fieldValues.retainAll(n),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=P.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(nn.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var n in this._addObject(t),this.fieldValues.keySet()){var i=O.byName(n);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var e=void 0;try{e=t.getLong(i)}catch(t){if(t instanceof r)continue;throw t}var s=this.fieldValues.get(i);if(e!==s)throw new r("Conflict found: Field "+i+" "+e+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_DAY)){var n=this.fieldValues.remove(O.CLOCK_HOUR_OF_DAY);t!==U.LENIENT&&(t===U.SMART&&0===n||O.CLOCK_HOUR_OF_DAY.checkValidValue(n)),this._addFieldValue(O.HOUR_OF_DAY,24===n?0:n)}if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_AMPM)){var i=this.fieldValues.remove(O.CLOCK_HOUR_OF_AMPM);t!==U.LENIENT&&(t===U.SMART&&0===i||O.CLOCK_HOUR_OF_AMPM.checkValidValue(i)),this._addFieldValue(O.HOUR_OF_AMPM,12===i?0:i)}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.AMPM_OF_DAY)&&O.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(O.AMPM_OF_DAY)),this.fieldValues.containsKey(O.HOUR_OF_AMPM)&&O.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(O.HOUR_OF_AMPM))),this.fieldValues.containsKey(O.AMPM_OF_DAY)&&this.fieldValues.containsKey(O.HOUR_OF_AMPM)){var e=this.fieldValues.remove(O.AMPM_OF_DAY),r=this.fieldValues.remove(O.HOUR_OF_AMPM);this._addFieldValue(O.HOUR_OF_DAY,12*e+r)}if(this.fieldValues.containsKey(O.NANO_OF_DAY)){var s=this.fieldValues.remove(O.NANO_OF_DAY);t!==U.LENIENT&&O.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(O.SECOND_OF_DAY,y.intDiv(s,1e9)),this._addFieldValue(O.NANO_OF_SECOND,y.intMod(s,1e9))}if(this.fieldValues.containsKey(O.MICRO_OF_DAY)){var u=this.fieldValues.remove(O.MICRO_OF_DAY);t!==U.LENIENT&&O.MICRO_OF_DAY.checkValidValue(u),this._addFieldValue(O.SECOND_OF_DAY,y.intDiv(u,1e6)),this._addFieldValue(O.MICRO_OF_SECOND,y.intMod(u,1e6))}if(this.fieldValues.containsKey(O.MILLI_OF_DAY)){var o=this.fieldValues.remove(O.MILLI_OF_DAY);t!==U.LENIENT&&O.MILLI_OF_DAY.checkValidValue(o),this._addFieldValue(O.SECOND_OF_DAY,y.intDiv(o,1e3)),this._addFieldValue(O.MILLI_OF_SECOND,y.intMod(o,1e3))}if(this.fieldValues.containsKey(O.SECOND_OF_DAY)){var _=this.fieldValues.remove(O.SECOND_OF_DAY);t!==U.LENIENT&&O.SECOND_OF_DAY.checkValidValue(_),this._addFieldValue(O.HOUR_OF_DAY,y.intDiv(_,3600)),this._addFieldValue(O.MINUTE_OF_HOUR,y.intMod(y.intDiv(_,60),60)),this._addFieldValue(O.SECOND_OF_MINUTE,y.intMod(_,60))}if(this.fieldValues.containsKey(O.MINUTE_OF_DAY)){var h=this.fieldValues.remove(O.MINUTE_OF_DAY);t!==U.LENIENT&&O.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(O.HOUR_OF_DAY,y.intDiv(h,60)),this._addFieldValue(O.MINUTE_OF_HOUR,y.intMod(h,60))}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&O.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(O.MILLI_OF_SECOND)),this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&O.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(O.MICRO_OF_SECOND))),this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var a=this.fieldValues.remove(O.MILLI_OF_SECOND),l=this.fieldValues.get(O.MICRO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,1e3*a+y.intMod(l,1e3))}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var c=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,y.intDiv(c,1e3)),this.fieldValues.remove(O.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var f=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MILLI_OF_SECOND,y.intDiv(f,1e6)),this.fieldValues.remove(O.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var v=this.fieldValues.remove(O.MICRO_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e3*v)}else if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)){var d=this.fieldValues.remove(O.MILLI_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e6*d)}},i._resolveTimeInferZeroes=function(t){var n=this.fieldValues.get(O.HOUR_OF_DAY),i=this.fieldValues.get(O.MINUTE_OF_HOUR),e=this.fieldValues.get(O.SECOND_OF_MINUTE),r=this.fieldValues.get(O.NANO_OF_SECOND);if(null!=n&&(null!=i||null==e&&null==r)&&(null==i||null!=e||null==r)){if(t!==U.LENIENT){if(null!=n){t!==U.SMART||24!==n||null!=i&&0!==i||null!=e&&0!==e||null!=r&&0!==r||(n=0,this.excessDays=P.ofDays(1));var s=O.HOUR_OF_DAY.checkValidIntValue(n);if(null!=i){var u=O.MINUTE_OF_HOUR.checkValidIntValue(i);if(null!=e){var o=O.SECOND_OF_MINUTE.checkValidIntValue(e);if(null!=r){var _=O.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(cn.of(s,u,o,_))}else this._addObject(cn.of(s,u,o))}else null==r&&this._addObject(cn.of(s,u))}else null==e&&null==r&&this._addObject(cn.of(s,0))}}else if(null!=n){var h=n;if(null!=i)if(null!=e){null==r&&(r=0);var a=y.safeMultiply(h,36e11);a=y.safeAdd(a,y.safeMultiply(i,6e10)),a=y.safeAdd(a,y.safeMultiply(e,1e9)),a=y.safeAdd(a,r);var l=y.floorDiv(a,864e11),c=y.floorMod(a,864e11);this._addObject(cn.ofNanoOfDay(c)),this.excessDays=P.ofDays(l)}else{var f=y.safeMultiply(h,3600);f=y.safeAdd(f,y.safeMultiply(i,60));var v=y.floorDiv(f,86400),d=y.floorMod(f,86400);this._addObject(cn.ofSecondOfDay(d)),this.excessDays=P.ofDays(v)}else{var w=y.safeToInt(y.floorDiv(h,24));h=y.floorMod(h,24),this._addObject(cn.of(h,0)),this.excessDays=P.ofDays(w)}}this.fieldValues.remove(O.HOUR_OF_DAY),this.fieldValues.remove(O.MINUTE_OF_HOUR),this.fieldValues.remove(O.SECOND_OF_MINUTE),this.fieldValues.remove(O.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof W?this.date=t:t instanceof cn&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(O.OFFSET_SECONDS);if(null!=t){var n=Q.ofTotalSeconds(t),i=this.date.atTime(this.time).atZone(n).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,i)}else if(null!=this.zone){var e=this.date.atTime(this.time).atZone(this.zone).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,e)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){v(t,"field");var n=this.getFieldValue0(t);if(null==n){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new r("Field not found: "+t)}return n},i.query=function(t){return t===j.zoneId()?this.zone:t===j.chronology()?this.chrono:t===j.localDate()?null!=this.date?hn.from(this.date):null:t===j.localTime()?this.time:t===j.zone()||t===j.offset()?t.queryFrom(this):t===j.precision()?null:t.queryFrom(this)},n}(z),nt=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new it(this)]}var n=t.prototype;return n._constructorParam=function(t,n,i){this._locale=t,this._symbols=n,this._overrideChronology=i},n._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},n._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new it(this)]},n.copy=function(){return new t(this)},n.symbols=function(){return this._symbols},n.isStrict=function(){return this._strict},n.setStrict=function(t){this._strict=t},n.locale=function(){return this._locale},n.setLocale=function(t){this._locale=t},n.startOptional=function(){this._parsed.push(this.currentParsed().copy())},n.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},n.isCaseSensitive=function(){return this._caseSensitive},n.setCaseSensitive=function(t){this._caseSensitive=t},n.subSequenceEquals=function(t,n,i,e,r){if(n+r>t.length||e+r>i.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),i=i.toLowerCase());for(var s=0;s0)return null;throw t}},n.temporal=function(){return this._temporal},n.locale=function(){return this._locale},n.setDateTime=function(t){this._temporal=t},n.setLocale=function(t){this._locale=t},t}(),rt={},st=[0,90,181,273,0,91,182,274],ut=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i._isIso=function(){return!0},n._getWeekRangeByLocalDate=function(t){var i=n._getWeekBasedYear(t);return E.of(1,n._getWeekRangeByYear(i))},n._getWeekRangeByYear=function(t){var n=hn.of(t,1,1);return n.dayOfWeek()===M.THURSDAY||n.dayOfWeek()===M.WEDNESDAY&&n.isLeapYear()?53:52},n._getWeek=function(t){var i=t.dayOfWeek().ordinal(),e=t.dayOfYear()-1,r=e+(3-i),s=r-7*y.intDiv(r,7)-3;if(s<-3&&(s+=7),e=363){var e=t.dayOfWeek().ordinal();(i=i-363-(t.isLeapYear()?1:0))-e>=0&&n++}return n},i.displayName=function(){return this.toString()},i.resolve=function(){return null},i.name=function(){return this.toString()},n}(C),ot=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"DayOfQuarter"},i.baseUnit=function(){return S.DAYS},i.rangeUnit=function(){return pt},i.range=function(){return E.of(1,90,92)},i.isSupportedBy=function(t){return t.isSupported(O.DAY_OF_YEAR)&&t.isSupported(O.MONTH_OF_YEAR)&&t.isSupported(O.YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: DayOfQuarter");var n=t.getLong(ft);if(1===n){var i=t.getLong(O.YEAR);return nn.isLeapYear(i)?E.of(1,91):E.of(1,90)}return 2===n?E.of(1,91):3===n||4===n?E.of(1,92):this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: DayOfQuarter");var n=t.get(O.DAY_OF_YEAR),i=t.get(O.MONTH_OF_YEAR),e=t.getLong(O.YEAR);return n-st[y.intDiv(i-1,3)+(nn.isLeapYear(e)?4:0)]},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.DAY_OF_YEAR,t.getLong(O.DAY_OF_YEAR)+(n-i))},i.resolve=function(t,n,i){var e=t.get(O.YEAR),r=t.get(ft);if(null==e||null==r)return null;var s,u=O.YEAR.checkValidIntValue(e),o=t.get(ct);if(i===U.LENIENT){var _=r;s=(s=(s=hn.of(u,1,1)).plusMonths(y.safeMultiply(y.safeSubtract(_,1),3))).plusDays(y.safeSubtract(o,1))}else{var h=ft.range().checkValidIntValue(r,ft);if(i===U.STRICT){var a=92;1===h?a=nn.isLeapYear(u)?91:90:2===h&&(a=91),E.of(1,a).checkValidValue(o,this)}else this.range().checkValidValue(o,this);s=hn.of(u,3*(h-1)+1,1).plusDays(o-1)}return t.remove(this),t.remove(O.YEAR),t.remove(ft),s},n}(ut),_t=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"QuarterOfYear"},i.baseUnit=function(){return pt},i.rangeUnit=function(){return S.YEARS},i.range=function(){return E.of(1,4)},i.isSupportedBy=function(t){return t.isSupported(O.MONTH_OF_YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){return this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: QuarterOfYear");var n=t.getLong(O.MONTH_OF_YEAR);return y.intDiv(n+2,3)},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.MONTH_OF_YEAR,t.getLong(O.MONTH_OF_YEAR)+3*(n-i))},n}(ut),ht=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekOfWeekBasedYear"},i.baseUnit=function(){return S.WEEKS},i.rangeUnit=function(){return wt},i.range=function(){return E.of(1,52,53)},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: WeekOfWeekBasedYear");return ut._getWeekRangeByLocalDate(hn.from(t))},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: WeekOfWeekBasedYear");return ut._getWeek(hn.from(t))},i.adjustInto=function(t,n){return this.range().checkValidValue(n,this),t.plus(y.safeSubtract(n,this.getFrom(t)),S.WEEKS)},i.resolve=function(t,n,i){var e=t.get(dt),r=t.get(O.DAY_OF_WEEK);if(null==e||null==r)return null;var s,u=dt.range().checkValidIntValue(e,dt),o=t.get(vt);if(i===U.LENIENT){var _=r,h=0;_>7?(h=y.intDiv(_-1,7),_=y.intMod(_-1,7)+1):_<1&&(h=y.intDiv(_,7)-1,_=y.intMod(_,7)+7),s=hn.of(u,1,4).plusWeeks(o-1).plusWeeks(h).with(O.DAY_OF_WEEK,_)}else{var a=O.DAY_OF_WEEK.checkValidIntValue(r);if(i===U.STRICT){var l=hn.of(u,1,4);ut._getWeekRangeByLocalDate(l).checkValidValue(o,this)}else this.range().checkValidValue(o,this);s=hn.of(u,1,4).plusWeeks(o-1).with(O.DAY_OF_WEEK,a)}return t.remove(this),t.remove(dt),t.remove(O.DAY_OF_WEEK),s},i.displayName=function(){return"Week"},n}(ut),at=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekBasedYear"},i.baseUnit=function(){return wt},i.rangeUnit=function(){return S.FOREVER},i.range=function(){return O.YEAR.range()},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){return O.YEAR.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new u("Unsupported field: WeekBasedYear");return ut._getWeekBasedYear(hn.from(t))},i.adjustInto=function(t,n){if(!1===this.isSupportedBy(t))throw new u("Unsupported field: WeekBasedYear");var i=this.range().checkValidIntValue(n,dt),e=hn.from(t),r=e.get(O.DAY_OF_WEEK),s=ut._getWeek(e);53===s&&52===ut._getWeekRangeByYear(i)&&(s=52);var o=hn.of(i,1,4),_=r-o.get(O.DAY_OF_WEEK)+7*(s-1);return o=o.plusDays(_),t.with(o)},n}(ut),lt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return!0},i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)},i.addTo=function(t,n){switch(this){case wt:var i=y.safeAdd(t.get(dt),n);return t.with(dt,i);case pt:return t.plus(y.intDiv(n,256),S.YEARS).plus(3*y.intMod(n,256),S.MONTHS);default:throw new h("Unreachable")}},i.between=function(t,n){switch(this){case wt:return y.safeSubtract(n.getLong(dt),t.getLong(dt));case pt:return y.intDiv(t.until(n,S.MONTHS),3);default:throw new h("Unreachable")}},i.toString=function(){return name},n}(k),ct=null,ft=null,vt=null,dt=null,wt=null,pt=null,mt=function(){function t(t,n,i,e){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=n,this._negativeSign=i,this._decimalSeparator=e}var n=t.prototype;return n.positiveSign=function(){return this._positiveSign},n.withPositiveSign=function(n){return n===this._positiveSign?this:new t(this._zeroDigit,n,this._negativeSign,this._decimalSeparator)},n.negativeSign=function(){return this._negativeSign},n.withNegativeSign=function(n){return n===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,n,this._decimalSeparator)},n.zeroDigit=function(){return this._zeroDigit},n.withZeroDigit=function(n){return n===this._zeroDigit?this:new t(n,this._positiveSign,this._negativeSign,this._decimalSeparator)},n.decimalSeparator=function(){return this._decimalSeparator},n.withDecimalSeparator=function(n){return n===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,n)},n.convertToDigit=function(t){var n=t.charCodeAt(0)-this._zeroDigitCharCode;return n>=0&&n<=9?n:-1},n.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var n=this._zeroDigitCharCode-"0".charCodeAt(0),i="",e=0;e1)throw new _('invalid literal, too long: "'+t+'"');this._literal=t}var n=t.prototype;return n.print=function(t,n){return n.append(this._literal),!0},n.parse=function(t,n,i){if(i===n.length)return~i;var e=n.charAt(i);return!1===t.charEquals(this._literal,e)?~i:i+this._literal.length},n.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),$t=function(){function t(t,n){this._printerParsers=t,this._optional=n}var n=t.prototype;return n.withOptional=function(n){return n===this._optional?this:new t(this._printerParsers,n)},n.print=function(t,n){var i=n.length();this._optional&&t.startOptional();try{for(var e=0;e9)throw new _("Minimum width must be from 0 to 9 inclusive but was "+n);if(i<1||i>9)throw new _("Maximum width must be from 1 to 9 inclusive but was "+i);if(i0){this.decimalPoint&&n.append(e.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var o=s;o=e.convertNumberToI18N(o),this.decimalPoint&&n.append(e.decimalSeparator()),n.append(o)}return!0},n.parse=function(t,n,i){var e=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=n.length;if(i===s)return e>0?~i:i;if(this.decimalPoint){if(n[i]!==t.symbols().decimalSeparator())return e>0?~i:i;i++}var u=i+e;if(u>s)return~i;for(var o=Math.min(i+r,s),_=0,h=i;h0&&this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE},n.print=function(t,n){var i=t.getValue(this._field);if(null==i)return!1;var e=this._getValue(t,i),s=t.symbols(),u=""+Math.abs(e);if(u.length>this._maxWidth)throw new r("Field "+this._field+" cannot be printed as the value "+e+" exceeds the maximum print width of "+this._maxWidth);if(u=s.convertNumberToI18N(u),e>=0)switch(this._signStyle){case gt.EXCEEDS_PAD:this._minWidth<15&&e>=xt[this._minWidth]&&n.append(s.positiveSign());break;case gt.ALWAYS:n.append(s.positiveSign())}else switch(this._signStyle){case gt.NORMAL:case gt.EXCEEDS_PAD:case gt.ALWAYS:n.append(s.negativeSign());break;case gt.NOT_NEGATIVE:throw new r("Field "+this._field+" cannot be printed as the value "+e+" cannot be negative according to the SignStyle")}for(var o=0;o=0&&ie)return~i;for(var a=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),l=0,c=i,v=0;v<2;v++){for(var d=Math.min(c+a,e);c15)throw new o("number text exceeds length");l=10*l+p}if(!(this._subsequentWidth>0&&0===v))break;var m=c-i;a=Math.max(_,m-this._subsequentWidth),c=i,l=0}if(s){if(0===l&&t.isStrict())return~(i-1);0!==l&&(l=-l)}else if(this._signStyle===gt.EXCEEDS_PAD&&t.isStrict()){var g=c-i;if(u){if(g<=this._minWidth)return~(i-1)}else if(g>this._minWidth)return~i}return this._setValue(t,l,i,c)},n._getValue=function(t,n){return n},n._setValue=function(t,n,i,e){return t.setParsedField(this._field,n,i,e)},n.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===gt.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),St=function(t){function n(n,i,e,s,u){var o;if(o=t.call(this,n,i,e,gt.NOT_NEGATIVE)||this,i<1||i>10)throw new _("The width must be from 1 to 10 inclusive but was "+i);if(e<1||e>10)throw new _("The maxWidth must be from 1 to 10 inclusive but was "+e);if(ey.MAX_SAFE_INTEGER)throw new r("Unable to add printer-parser as the range exceeds the capacity of an int")}return o._baseValue=s,o._baseDate=u,o}l(n,t);var i=n.prototype;return i._getValue=function(t,n){var i=Math.abs(n),e=this._baseValue;return null!==this._baseDate&&(t.temporal(),e=nn.INSTANCE.date(this._baseDate).get(this._field)),n>=e&&n=0){var s=xt[this._minWidth],u=r-r%s;(n=r>0?u+n:u-n)=3||this.type>=1&&s>0)&&(n.append(this.type%2==0?":":"").appendChar(y.intDiv(s,10)+"0").appendChar(s%10+"0"),_+=s,(this.type>=7||this.type>=5&&u>0)&&(n.append(this.type%2==0?":":"").appendChar(y.intDiv(u,10)+"0").appendChar(u%10+"0"),_+=u)),0===_&&(n.setLength(o),n.append(this.noOffsetText))}return!0},n.parse=function(t,n,i){var e=n.length,r=this.noOffsetText.length;if(0===r){if(i===e)return t.setParsedField(O.OFFSET_SECONDS,0,i,i)}else{if(i===e)return~i;if(t.subSequenceEquals(n,i,this.noOffsetText,0,r))return t.setParsedField(O.OFFSET_SECONDS,0,i,i+r)}var s=n[i];if("+"===s||"-"===s){var u="-"===s?-1:1,o=[0,0,0,0];if(o[0]=i+1,!1===(this._parseNumber(o,1,n,!0)||this._parseNumber(o,2,n,this.type>=3)||this._parseNumber(o,3,n,!1))){var _=y.safeZero(u*(3600*o[1]+60*o[2]+o[3]));return t.setParsedField(O.OFFSET_SECONDS,_,i,o[0])}}return 0===r?t.setParsedField(O.OFFSET_SECONDS,0,i,i+r):~i},n._parseNumber=function(t,n,i,e){if((this.type+3)/21){if(r+1>i.length||":"!==i[r])return e;r++}if(r+2>i.length)return e;var s=i[r++],u=i[r++];if(s<"0"||s>"9"||u<"0"||u>"9")return e;var o=10*(s.charCodeAt(0)-48)+(u.charCodeAt(0)-48);return o<0||o>59?e:(t[n]=o,t[0]=r,!1)},n.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+Ct[this.type]+",'"+t+"')"},t}();Et.INSTANCE_ID=new Et("Z","+HH:MM:ss"),Et.PATTERNS=Ct;var Ot=function(){function t(t,n,i){this._printerParser=t,this._padWidth=n,this._padChar=i}var n=t.prototype;return n.print=function(t,n){var i=n.length();if(!1===this._printerParser.print(t,n))return!1;var e=n.length()-i;if(e>this._padWidth)throw new r("Cannot print as output of "+e+" characters exceeds pad width of "+this._padWidth);for(var s=0;sn.length)),f(i>=0),i===n.length)return~i;var s=i+this._padWidth;if(s>n.length){if(e)return~i;s=n.length}for(var u=i;un.length||i<0)),!1===t.subSequenceEquals(n,i,this._literal,0,this._literal.length)?~i:i+this._literal.length},n.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),Dt=function(){function t(){}return t.getRules=function(t){throw new r("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),Mt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._id=n,e._rules=i,e}l(n,t),n.ofId=function(t){return new n(t,Dt.getRules(t))};var i=n.prototype;return i.id=function(){return this._id},i.rules=function(){return this._rules},n}(G),Nt=function(){function t(t,n){this.query=t,this.description=n}var n=t.prototype;return n.print=function(t,n){var i=t.getValueQuery(this.query);return null!=i&&(n.append(i.id()),!0)},n.parse=function(t,n,i){var e=n.length;if(i>e)return~i;if(i===e)return~i;var r=n.charAt(i);if("+"===r||"-"===r){var s=t.copy(),u=Et.INSTANCE_ID.parse(s,n,i);if(u<0)return u;var o=s.getParsed(O.OFFSET_SECONDS),_=Q.ofTotalSeconds(o);return t.setParsedZone(_),u}if(e>=i+2){var h=n.charAt(i+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return e>=i+3&&t.charEquals(n.charAt(i+2),"C")?this._parsePrefixedOffset(t,n,i,i+3):this._parsePrefixedOffset(t,n,i,i+2);if(t.charEquals(r,"G")&&e>=i+3&&t.charEquals(h,"M")&&t.charEquals(n.charAt(i+2),"T"))return this._parsePrefixedOffset(t,n,i,i+3)}if("SYSTEM"===n.substr(i,6))return t.setParsedZone(G.systemDefault()),i+6;if(t.charEquals(r,"Z"))return t.setParsedZone(Q.UTC),i+1;var a=Dt.getAvailableZoneIds();Lt.size!==a.length&&(Lt=Rt.createTreeMap(a));for(var l=e-i,c=Lt.treeMap,f=null,v=0;null!=c;){var d=n.substr(i,Math.min(c.length,l));null!=(c=c.get(d))&&c.isLeaf&&(f=d,v=c.length)}return null!=f?(t.setParsedZone(Mt.ofId(f)),i+v):~i},n._parsePrefixedOffset=function(t,n,i,e){var r=n.substring(i,e).toUpperCase(),s=t.copy();if(ethis.length){var e=n.substr(0,this.length),r=this._treeMap[e];null==r&&(r=new t(i,!1),this._treeMap[e]=r),r.add(n)}},n.get=function(t){return this._treeMap[t]},t}(),Lt=new Rt([]),Ft=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(n,i){v(n,"parent"),v(i,"optional");var e=new t;return e._parent=n,e._optional=i,e};var n=t.prototype;return n.parseCaseSensitive=function(){return this._appendInternalPrinterParser(jt.SENSITIVE),this},n.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(jt.INSENSITIVE),this},n.parseStrict=function(){return this._appendInternalPrinterParser(jt.STRICT),this},n.parseLenient=function(){return this._appendInternalPrinterParser(jt.LENIENT),this},n.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},n._appendValue1=function(t){return v(t),this._appendValuePrinterParser(new qt(t,1,Ft,gt.NORMAL)),this},n._appendValue2=function(t,n){if(v(t),n<1||n>Ft)throw new _("The width must be from 1 to 15 inclusive but was "+n);var i=new qt(t,n,n,gt.NOT_NEGATIVE);return this._appendValuePrinterParser(i),this},n._appendValue4=function(t,n,i,e){if(v(t),v(e),n===i&&e===gt.NOT_NEGATIVE)return this._appendValue2(t,i);if(n<1||n>Ft)throw new _("The minimum width must be from 1 to 15 inclusive but was "+n);if(i<1||i>Ft)throw new _("The minimum width must be from 1 to 15 inclusive but was "+i);if(i=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof qt){var n=this._active._valueParserIndex,i=this._active._printerParsers[n];t.minWidth()===t.maxWidth()&&t.signStyle()===gt.NOT_NEGATIVE?(i=i.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=n):(i=i.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[n]=i}else this._active._valueParserIndex=this._appendInternal(t);return this},n.appendFraction=function(t,n,i,e){return this._appendInternal(new kt(t,n,i,e)),this},n.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new _("Invalid fractional digits: "+t);return this._appendInternal(new Bt(t)),this},n.appendOffsetId=function(){return this._appendInternal(Et.INSTANCE_ID),this},n.appendOffset=function(t,n){return this._appendInternalPrinterParser(new Et(n,t)),this},n.appendZoneId=function(){return this._appendInternal(new Nt(j.zoneId(),"ZoneId()")),this},n.appendPattern=function(t){return v(t,"pattern"),this._parsePattern(t),this},n.appendZoneText=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendText=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendLocalizedOffset=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendWeekField=function(){throw new _("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n._parsePattern=function(t){for(var n={G:O.ERA,y:O.YEAR_OF_ERA,u:O.YEAR,Q:rt.QUARTER_OF_YEAR,q:rt.QUARTER_OF_YEAR,M:O.MONTH_OF_YEAR,L:O.MONTH_OF_YEAR,D:O.DAY_OF_YEAR,d:O.DAY_OF_MONTH,F:O.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:O.DAY_OF_WEEK,c:O.DAY_OF_WEEK,e:O.DAY_OF_WEEK,a:O.AMPM_OF_DAY,H:O.HOUR_OF_DAY,k:O.CLOCK_HOUR_OF_DAY,K:O.HOUR_OF_AMPM,h:O.CLOCK_HOUR_OF_AMPM,m:O.MINUTE_OF_HOUR,s:O.SECOND_OF_MINUTE,S:O.NANO_OF_SECOND,A:O.MILLI_OF_DAY,n:O.NANO_OF_SECOND,N:O.NANO_OF_DAY},i=0;i="A"&&e<="Z"||e>="a"&&e<="z"){for(var r=i++;i="A"&&e<="Z"||e>="a"&&e<="z")){for(u=s,r=i++;i4)throw new _("Too many pattern letters: "+e);4===s?this.appendZoneText(yt.FULL):this.appendZoneText(yt.SHORT)}else if("V"===e){if(2!==s)throw new _("Pattern letter count must be 2: "+e);this.appendZoneId()}else if("Z"===e)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset(yt.FULL);else{if(5!==s)throw new _("Too many pattern letters: "+e);this.appendOffset("+HH:MM:ss","Z")}else if("O"===e)if(1===s)this.appendLocalizedOffset(yt.SHORT);else{if(4!==s)throw new _("Pattern letter count must be 1 or 4: "+e);this.appendLocalizedOffset(yt.FULL)}else if("X"===e){if(s>5)throw new _("Too many pattern letters: "+e);this.appendOffset(Et.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===e){if(s>5)throw new _("Too many pattern letters: "+e);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(Et.PATTERNS[s+(1===s?0:1)],h)}else if("W"===e){if(s>1)throw new _("Too many pattern letters: "+e);this.appendWeekField("W",s)}else if("w"===e){if(s>2)throw new _("Too many pattern letters: "+e);this.appendWeekField("w",s)}else{if("Y"!==e)throw new _("Unknown pattern letter: "+e);this.appendWeekField("Y",s)}i--}else if("'"===e){for(var a=i++;i=t.length)throw new _("Pattern ends with an incomplete string literal: "+t);var l=t.substring(a+1,i);0===l.length?this.appendLiteral("'"):this.appendLiteral(l.replace("''","'"))}else if("["===e)this.optionalStart();else if("]"===e){if(null===this._active._parent)throw new _("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===e||"}"===e||"#"===e)throw new _("Pattern includes reserved character: '"+e+"'");this.appendLiteral(e)}}},n._parseField=function(t,n,i){switch(t){case"u":case"y":2===n?this.appendValueReduced(i,2,2,St.BASE_DATE):n<4?this.appendValue(i,n,Ft,gt.NORMAL):this.appendValue(i,n,Ft,gt.EXCEEDS_PAD);break;case"M":case"Q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,yt.SHORT);break;case 4:this.appendText(i,yt.FULL);break;case 5:this.appendText(i,yt.NARROW);break;default:throw new _("Too many pattern letters: "+t)}break;case"L":case"q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,yt.SHORT_STANDALONE);break;case 4:this.appendText(i,yt.FULL_STANDALONE);break;case 5:this.appendText(i,yt.NARROW_STANDALONE);break;default:throw new _("Too many pattern letters: "+t)}break;case"e":switch(n){case 1:case 2:this.appendWeekField("e",n);break;case 3:this.appendText(i,yt.SHORT);break;case 4:this.appendText(i,yt.FULL);break;case 5:this.appendText(i,yt.NARROW);break;default:throw new _("Too many pattern letters: "+t)}break;case"c":switch(n){case 1:this.appendWeekField("c",n);break;case 2:throw new _("Invalid number of pattern letters: "+t);case 3:this.appendText(i,yt.SHORT_STANDALONE);break;case 4:this.appendText(i,yt.FULL_STANDALONE);break;case 5:this.appendText(i,yt.NARROW_STANDALONE);break;default:throw new _("Too many pattern letters: "+t)}break;case"a":if(1!==n)throw new _("Too many pattern letters: "+t);this.appendText(i,yt.SHORT);break;case"E":case"G":switch(n){case 1:case 2:case 3:this.appendText(i,yt.SHORT);break;case 4:this.appendText(i,yt.FULL);break;case 5:this.appendText(i,yt.NARROW);break;default:throw new _("Too many pattern letters: "+t)}break;case"S":this.appendFraction(O.NANO_OF_SECOND,n,n,!1);break;case"F":if(1!==n)throw new _("Too many pattern letters: "+t);this.appendValue(i);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===n)this.appendValue(i);else{if(2!==n)throw new _("Too many pattern letters: "+t);this.appendValue(i,n)}break;case"D":if(1===n)this.appendValue(i);else{if(!(n<=3))throw new _("Too many pattern letters: "+t);this.appendValue(i,n)}break;default:1===n?this.appendValue(i):this.appendValue(i,n)}},n.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},n._padNext1=function(t){return this._padNext2(t," ")},n._padNext2=function(t,n){if(t<1)throw new _("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=n,this._active._valueParserIndex=-1,this},n.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},n.optionalEnd=function(){if(null==this._active._parent)throw new h("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new $t(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},n._appendInternal=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.appendLiteral=function(t){return f(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new bt(t.charAt(0))):this._appendInternalPrinterParser(new It(t))),this},n._appendInternalPrinterParser=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.append=function(t){return v(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},n.toFormatter=function(t){for(void 0===t&&(t=U.SMART);null!=this._active._parent;)this.optionalEnd();var n=new $t(this._printerParsers,!1);return new Yt(n,null,mt.STANDARD,t,null,null,null)},t}(),Ht=31556952e4,Vt=62167219200,Bt=function(){function t(t){this.fractionalDigits=t}var n=t.prototype;return n.print=function(t,n){var i=t.getValue(O.INSTANT_SECONDS),e=0;if(t.temporal().isSupported(O.NANO_OF_SECOND)&&(e=t.temporal().getLong(O.NANO_OF_SECOND)),null==i)return!1;var r=i,s=O.NANO_OF_SECOND.checkValidIntValue(e);if(r>=-62167219200){var u=r-Ht+Vt,o=y.floorDiv(u,Ht)+1,_=y.floorMod(u,Ht),h=ln.ofEpochSecond(_-Vt,0,Q.UTC);o>0&&n.append("+").append(o),n.append(h),0===h.second()&&n.append(":00")}else{var a=r+Vt,l=y.intDiv(a,Ht),c=y.intMod(a,Ht),f=ln.ofEpochSecond(c-Vt,0,Q.UTC),v=n.length();n.append(f),0===f.second()&&n.append(":00"),l<0&&(-1e4===f.year()?n.replace(v,v+2,""+(l-1)):0===c?n.insert(v,l):n.insert(v+1,Math.abs(l)))}if(-2===this.fractionalDigits)0!==s&&(n.append("."),0===y.intMod(s,1e6)?n.append((""+(y.intDiv(s,1e6)+1e3)).substring(1)):0===y.intMod(s,1e3)?n.append((""+(y.intDiv(s,1e3)+1e6)).substring(1)):n.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){n.append(".");for(var d=1e8,w=0;-1===this.fractionalDigits&&s>0||w64?t.substring(0,64)+"...":t,new s("Text '"+i+"' could not be parsed: "+n.message,t,0,n)},n._parseToBuilder=function(t,n){var i=null!=n?n:new L(0),e=this._parseUnresolved0(t,i);if(null==e||i.getErrorIndex()>=0||null==n&&i.getIndex()64?t.substr(0,64).toString()+"...":t,i.getErrorIndex()>=0?new s("Text '"+r+"' could not be parsed at index "+i.getErrorIndex(),t,i.getErrorIndex()):new s("Text '"+r+"' could not be parsed, unparsed text found at index "+i.getIndex(),t,i.getIndex())}return e.toBuilder()},n.parseUnresolved=function(t,n){return this._parseUnresolved0(t,n)},n._parseUnresolved0=function(t,n){f(null!=t,"text",a),f(null!=n,"position",a);var i=new nt(this),e=n.getIndex();return(e=this._printerParser.parse(i,t,e))<0?(n.setErrorIndex(~e),null):(n.setIndex(e),i.toParsed())},n._toPrinterParser=function(t){return this._printerParser.withOptional(t)},n.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}(),Gt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._month=y.safeToInt(n),e._day=y.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return this.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),this.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock");var i=hn.now(t);return n.of(i.month(),i.dayOfMonth())},n.of=function(t,i){return 2===arguments.length&&t instanceof N?n.ofMonthNumber(t,i):n.ofNumberNumber(t,i)},n.ofMonthNumber=function(t,i){if(v(t,"month"),O.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new r("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new n(t.value(),i)},n.ofNumberNumber=function(t,i){return v(t,"month"),v(i,"dayOfMonth"),n.of(N.of(t),i)},n.from=function(t){if(v(t,"temporal"),d(t,z,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR),t.get(O.DAY_OF_MONTH))}catch(n){throw new r("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,zt)},n.parseStringFormatter=function(t,i){return v(t,"text"),v(i,"formatter"),d(i,Yt,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof O?t===O.MONTH_OF_YEAR||t===O.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.MONTH_OF_YEAR?n.range():n===O.DAY_OF_MONTH?E.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.DAY_OF_MONTH:return this._day;case O.MONTH_OF_YEAR:return this._month}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return 0==(29===this._day&&2===this._month&&!1===Xt.isLeap(t))},i.withMonth=function(t){return this.with(N.of(t))},i.with=function(t){if(v(t,"month"),t.value()===this._month)return this;var i=Math.min(this._day,t.maxLength());return new n(t.value(),i)},i.withDayOfMonth=function(t){return t===this._day?this:n.of(this._month,t)},i.query=function(n){return v(n,"query"),d(n,T,"query"),n===j.chronology()?nn.INSTANCE:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),(t=t.with(O.MONTH_OF_YEAR,this._month)).with(O.DAY_OF_MONTH,Math.min(t.range(O.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return hn.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._month-t.monthValue();return 0===i&&(i=this._day-t.dayOfMonth()),i},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)>0},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.monthValue()===i.monthValue()&&this.dayOfMonth()===i.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),d(t,Yt,"formatter"),t.format(this)},n}(z),Kt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._year=y.safeToInt(n),e._month=y.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return n.nowClock(dn.system(t))},n.nowClock=function(t){var i=hn.now(t);return n.of(i.year(),i.month())},n.of=function(t,i){return 2===arguments.length&&i instanceof N?n.ofNumberMonth(t,i):n.ofNumberNumber(t,i)},n.ofNumberMonth=function(t,i){return v(i,"month"),d(i,N,"month"),n.ofNumberNumber(t,i.value())},n.ofNumberNumber=function(t,i){return v(t,"year"),v(i,"month"),O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(i),new n(t,i)},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR),t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,Tt)},n.parseStringFormatter=function(t,i){return v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.MONTH_OF_YEAR||t===O.PROLEPTIC_MONTH||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof S?t===S.MONTHS||t===S.YEARS||t===S.DECADES||t===S.CENTURIES||t===S.MILLENNIA||t===S.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.YEAR_OF_ERA?this.year()<=0?E.of(1,Xt.MAX_VALUE+1):E.of(1,Xt.MAX_VALUE):t.prototype.range.call(this,n)},i.get=function(t){return v(t,"field"),d(t,C,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t){case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._getProlepticMonth();case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return y.safeAdd(y.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,n){return 1===arguments.length?this.withAdjuster(t):this.withFieldValue(t,n)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,n){if(v(t,"field"),d(t,C,"field"),t instanceof O){var i=t;switch(i.checkValidValue(n),i){case O.MONTH_OF_YEAR:return this.withMonth(n);case O.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year<1?1-n:n);case O.YEAR:return this.withYear(n);case O.ERA:return this.getLong(O.ERA)===n?this:this.withYear(1-this._year)}throw new u("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return O.YEAR.checkValidValue(t),new n(t,this._month)},i.withMonth=function(t){return O.MONTH_OF_YEAR.checkValidValue(t),new n(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),d(t,$,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),d(n,k,"unit"),n instanceof S){switch(n){case S.MONTHS:return this.plusMonths(t);case S.YEARS:return this.plusYears(t);case S.DECADES:return this.plusYears(y.safeMultiply(t,10));case S.CENTURIES:return this.plusYears(y.safeMultiply(t,100));case S.MILLENNIA:return this.plusYears(y.safeMultiply(t,1e3));case S.ERAS:return this.with(O.ERA,y.safeAdd(this.getLong(O.ERA),t))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=O.YEAR.checkValidIntValue(this._year+t);return this.withYear(n)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t;return new n(O.YEAR.checkValidIntValue(y.floorDiv(i,12)),y.floorMod(i,12)+1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return t===y.MIN_SAFE_INTEGER?this.plusAmountUnit(y.MAX_SAFE_INTEGER,n).plusAmountUnit(1,n):this.plusAmountUnit(-t,n)},i.minusYears=function(t){return t===y.MIN_SAFE_INTEGER?this.plusYears(y.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===y.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(n){return v(n,"query"),d(n,T,"query"),n===j.chronology()?nn.INSTANCE:n===j.precision()?S.MONTHS:n===j.localDate()||n===j.localTime()||n===j.zone()||n===j.zoneId()||n===j.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),d(t,V,"temporal"),t.with(O.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit"),d(t,V,"endExclusive"),d(i,k,"unit");var e=n.from(t);if(i instanceof S){var r=e._getProlepticMonth()-this._getProlepticMonth();switch(i){case S.MONTHS:return r;case S.YEARS:return r/12;case S.DECADES:return r/120;case S.CENTURIES:return r/1200;case S.MILLENNIA:return r/12e3;case S.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i.atDay=function(t){return hn.of(this._year,this._month,t)},i.atEndOfMonth=function(){return hn.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._year-t.year();return 0===i&&(i=this._month-t.monthValue()),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.year()===i.year()&&this.monthValue()===i.monthValue()}return!1},i.toString=function(){return Tt.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V),Xt=function(t){function n(n){var i;return(i=t.call(this)||this)._year=y.safeToInt(n),i}l(n,t);var i=n.prototype;return i.value=function(){return this._year},n.now=function(t){return void 0===t&&(t=void 0),void 0===t?n.now0():t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),d(t,G,"zone"),n.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock"),d(t,dn,"clock");var i=hn.now(t);return n.of(i.year())},n.of=function(t){return v(t,"isoYear"),O.YEAR.checkValidValue(t),new n(t)},n.from=function(t){if(v(t,"temporal"),d(t,z,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR))}catch(n){throw new r("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return arguments.length<=1?n.parseText(t):n.parseTextFormatter(t,i)},n.parseText=function(t){return v(t,"text"),n.parse(t,At)},n.parseTextFormatter=function(t,i){return void 0===i&&(i=At),v(t,"text"),v(i,"formatter"),d(i,Yt,"formatter"),i.parse(t,n.FROM)},n.isLeap=function(t){return 0===y.intMod(t,4)&&(0!==y.intMod(t,100)||0===y.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof S?t===S.YEARS||t===S.DECADES||t===S.CENTURIES||t===S.MILLENNIA||t===S.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){if(this.isSupported(n))return n.range();if(n instanceof O)throw new u("Unsupported field: "+n);return t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return n.isLeap(this._year)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.YEAR_OF_ERA:return n.of(this._year<1?1-i:i);case O.YEAR:return n.of(i);case O.ERA:return this.getLong(O.ERA)===i?this:n.of(1-this._year)}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.plusAmount=function(t){return v(t,"amount"),d(t,$,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k,"unit"),n instanceof S){switch(n){case S.YEARS:return this.plusYears(t);case S.DECADES:return this.plusYears(y.safeMultiply(t,10));case S.CENTURIES:return this.plusYears(y.safeMultiply(t,100));case S.MILLENNIA:return this.plusYears(y.safeMultiply(t,1e3));case S.ERAS:return this.with(O.ERA,y.safeAdd(this.getLong(O.ERA),t))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){return 0===t?this:n.of(O.YEAR.checkValidIntValue(y.safeAdd(this._year,t)))},i.minusAmount=function(t){return v(t,"amount"),d(t,$,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),d(n,k,"unit"),t===y.MIN_SAFE_INTEGER?this.plus(y.MAX_SAFE_INTEGER,n).plus(1,n):this.plus(-t,n)},i.minusYears=function(t){return t===y.MIN_SAFE_INTEGER?this.plusYears(y.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return hn.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof N?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return v(t,"month"),d(t,N,"month"),Kt.of(this._year,t)},i.atMonthNumber=function(t){return v(t,"month"),Kt.of(this._year,t)},i.atMonthDay=function(t){return v(t,"monthDay"),d(t,Gt,"monthDay"),t.atYear(this._year)},i.query=function(n){return v(n,"query()"),d(n,T,"query()"),n===j.chronology()?nn.INSTANCE:n===j.precision()?S.YEARS:n===j.localDate()||n===j.localTime()||n===j.zone()||n===j.zoneId()||n===j.offset()?null:t.prototype.query.call(this,n)},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._year-t._year},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this._year>t._year},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this._year=0){var n=t.with(O.DAY_OF_MONTH,1),i=n.get(O.DAY_OF_WEEK),e=y.intMod(this._dowValue-i+7,7);return e+=7*(this._ordinal-1),n.plus(e,S.DAYS)}var r=t.with(O.DAY_OF_MONTH,t.range(O.DAY_OF_MONTH).maximum()),s=r.get(O.DAY_OF_WEEK),u=this._dowValue-s;return u=0===u?0:u>0?u-7:u,u-=7*(-this._ordinal-1),r.plus(u,S.DAYS)},n}(H),tn=function(t){function n(n,i){var e;return e=t.call(this)||this,v(i,"dayOfWeek"),e._relative=n,e._dowValue=i.value(),e}return l(n,t),n.prototype.adjustInto=function(t){var n=t.get(O.DAY_OF_WEEK);if(this._relative<2&&n===this._dowValue)return t;if(0==(1&this._relative)){var i=n-this._dowValue;return t.plus(i>=0?7-i:-i,S.DAYS)}var e=this._dowValue-n;return t.minus(e>=0?7-e:-e,S.DAYS)},n}(H),nn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t),n.isLeapYear=function(t){return 0==(3&t)&&(t%100!=0||t%400==0)};var i=n.prototype;return i._updateResolveMap=function(t,n,i){v(t,"fieldValues"),v(n,"field");var e=t.get(n);if(null!=e&&e!==i)throw new r("Invalid state, field: "+n+" "+e+" conflicts with "+n+" "+i);t.put(n,i)},i.resolveDate=function(t,n){if(t.containsKey(O.EPOCH_DAY))return hn.ofEpochDay(t.remove(O.EPOCH_DAY));var i=t.remove(O.PROLEPTIC_MONTH);null!=i&&(n!==U.LENIENT&&O.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,O.MONTH_OF_YEAR,y.floorMod(i,12)+1),this._updateResolveMap(t,O.YEAR,y.floorDiv(i,12)));var e=t.remove(O.YEAR_OF_ERA);if(null!=e){n!==U.LENIENT&&O.YEAR_OF_ERA.checkValidValue(e);var s=t.remove(O.ERA);if(null==s){var u=t.get(O.YEAR);n===U.STRICT?null!=u?this._updateResolveMap(t,O.YEAR,u>0?e:y.safeSubtract(1,e)):t.put(O.YEAR_OF_ERA,e):this._updateResolveMap(t,O.YEAR,null==u||u>0?e:y.safeSubtract(1,e))}else if(1===s)this._updateResolveMap(t,O.YEAR,e);else{if(0!==s)throw new r("Invalid value for era: "+s);this._updateResolveMap(t,O.YEAR,y.safeSubtract(1,e))}}else t.containsKey(O.ERA)&&O.ERA.checkValidValue(t.get(O.ERA));if(t.containsKey(O.YEAR)){if(t.containsKey(O.MONTH_OF_YEAR)&&t.containsKey(O.DAY_OF_MONTH)){var o=O.YEAR.checkValidIntValue(t.remove(O.YEAR)),_=t.remove(O.MONTH_OF_YEAR),h=t.remove(O.DAY_OF_MONTH);if(n===U.LENIENT){var a=_-1,l=h-1;return hn.of(o,1,1).plusMonths(a).plusDays(l)}return n===U.SMART?(O.DAY_OF_MONTH.checkValidValue(h),4===_||6===_||9===_||11===_?h=Math.min(h,30):2===_&&(h=Math.min(h,N.FEBRUARY.length(Xt.isLeap(o)))),hn.of(o,_,h)):hn.of(o,_,h)}if(t.containsKey(O.DAY_OF_YEAR)){var c=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var f=y.safeSubtract(t.remove(O.DAY_OF_YEAR),1);return hn.ofYearDay(c,1).plusDays(f)}var v=O.DAY_OF_YEAR.checkValidIntValue(t.remove(O.DAY_OF_YEAR));return hn.ofYearDay(c,v)}if(t.containsKey(O.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var d=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var w=y.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),p=y.safeSubtract(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return hn.of(d,1,1).plusWeeks(w).plusDays(p)}var m=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),g=O.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)),b=hn.of(d,1,1).plusDays(7*(m-1)+(g-1));if(n===U.STRICT&&b.get(O.YEAR)!==d)throw new r("Strict mode rejected date parsed to a different year");return b}if(t.containsKey(O.DAY_OF_WEEK)){var $=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var k=y.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),x=y.safeSubtract(t.remove(O.DAY_OF_WEEK),1);return hn.of($,1,1).plusWeeks(k).plusDays(x)}var q=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),S=O.DAY_OF_WEEK.checkValidIntValue(t.remove(O.DAY_OF_WEEK)),C=hn.of($,1,1).plusWeeks(q-1).with(Jt.nextOrSame(M.of(S)));if(n===U.STRICT&&C.get(O.YEAR)!==$)throw new r("Strict mode rejected date parsed to a different month");return C}}}return null},i.date=function(t){return hn.from(t)},n}(b),en=function(t){function n(n,i){var e;return e=t.call(this)||this,v(n,"time"),d(n,cn,"time"),v(i,"offset"),d(i,Q,"offset"),e._time=n,e._offset=i,e}l(n,t),n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof un)return t.toOffsetTime();try{return new n(cn.from(t),Q.from(t))}catch(n){throw new r("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.now=function(t){return 0===arguments.length?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){v(t,"clock");var i=t.instant();return n.ofInstant(i,t.zone().rules().offset(i))},n.of=function(){return arguments.length<=2?n.ofTimeAndOffset.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s){return new n(cn.of(t,i,e,r),s)},n.ofTimeAndOffset=function(t,i){return new n(t,i)},n.ofInstant=function(t,i){v(t,"instant"),d(t,vn,"instant"),v(i,"zone"),d(i,G,"zone");var e=i.rules().offset(t),r=t.epochSecond()%cn.SECONDS_PER_DAY;return(r=(r+e.totalSeconds())%cn.SECONDS_PER_DAY)<0&&(r+=cn.SECONDS_PER_DAY),new n(cn.ofSecondOfDay(r,t.nano()),e)},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_OFFSET_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.adjustInto=function(t){return t.with(O.NANO_OF_DAY,this._time.toNanoOfDay()).with(O.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return un.of(t,this._time,this._offset)},i.format=function(t){return v(t,"formatter"),t.format(this,n.FROM)},i.get=function(n){return t.prototype.get.call(this,n)},i.getLong=function(t){return t instanceof O?t===O.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return v(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return v(t,"other"),this._toEpochNano()i?1:0),e},i.isAfter=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return n>i||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ni||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ns.firstDayOfYear(e)+s.length(e)-1&&(s=s.plus(1));var u=i-s.firstDayOfYear(e)+1;return new n(t,s.value(),u)},n.ofEpochDay=function(t){var i,e,r,s,u;void 0===t&&(t=0),u=t+_n,i=0,(u-=60)<0&&(i=400*(e=y.intDiv(u+1,on)-1),u+=-e*on),(r=u-(365*(s=y.intDiv(400*u+591,on))+y.intDiv(s,4)-y.intDiv(s,100)+y.intDiv(s,400)))<0&&(r=u-(365*--s+y.intDiv(s,4)-y.intDiv(s,100)+y.intDiv(s,400))),s+=i;var o=r,_=y.intDiv(5*o+2,153),h=(_+2)%12+1,a=o-y.intDiv(306*_+5,10)+1;return new n(s+=y.intDiv(_,10),h,a)},n.from=function(t){v(t,"temporal");var n=t.query(j.localDate());if(null==n)throw new r("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_LOCAL_DATE),f(null!=i,"formatter",a),i.parse(t,n.FROM)},n._resolvePreviousValid=function(t,i,e){switch(i){case 2:e=Math.min(e,nn.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:e=Math.min(e,30)}return n.of(t,i,e)},n._validate=function(t,n,i){var e;if(O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(n),O.DAY_OF_MONTH.checkValidValue(i),i>28){switch(e=31,n){case 2:e=nn.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:e=30}i>e&&f(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+n+"' '"+i+"'",r)}};var i=n.prototype;return i.isSupported=function(n){return t.prototype.isSupported.call(this,n)},i.range=function(t){if(t instanceof O){if(t.isDateBased()){switch(t){case O.DAY_OF_MONTH:return E.of(1,this.lengthOfMonth());case O.DAY_OF_YEAR:return E.of(1,this.lengthOfYear());case O.ALIGNED_WEEK_OF_MONTH:return E.of(1,this.month()===N.FEBRUARY&&!1===this.isLeapYear()?4:5);case O.YEAR_OF_ERA:return this._year<=0?E.of(1,Xt.MAX_VALUE+1):E.of(1,Xt.MAX_VALUE)}return t.range()}throw new u("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return f(null!=t,"",a),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.DAY_OF_WEEK:return this.dayOfWeek().value();case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return y.intMod(this._day-1,7)+1;case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return y.intMod(this.dayOfYear()-1,7)+1;case O.DAY_OF_MONTH:return this._day;case O.DAY_OF_YEAR:return this.dayOfYear();case O.EPOCH_DAY:return this.toEpochDay();case O.ALIGNED_WEEK_OF_MONTH:return y.intDiv(this._day-1,7)+1;case O.ALIGNED_WEEK_OF_YEAR:return y.intDiv(this.dayOfYear()-1,7)+1;case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._prolepticMonth();case O.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case O.YEAR:return this._year;case O.ERA:return this._year>=1?1:0}throw new u("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return nn.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=y.floorMod(this.toEpochDay()+3,7);return M.of(t+1)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",_),t.adjustInto(this))},i.withFieldValue=function(t,i){if(f(null!=t,"field",a),t instanceof O){var e=t;switch(e.checkValidValue(i),e){case O.DAY_OF_WEEK:return this.plusDays(i-this.dayOfWeek().value());case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_MONTH));case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_YEAR));case O.DAY_OF_MONTH:return this.withDayOfMonth(i);case O.DAY_OF_YEAR:return this.withDayOfYear(i);case O.EPOCH_DAY:return n.ofEpochDay(i);case O.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_MONTH));case O.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_YEAR));case O.MONTH_OF_YEAR:return this.withMonth(i);case O.PROLEPTIC_MONTH:return this.plusMonths(i-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year>=1?i:1-i);case O.YEAR:return this.withYear(i);case O.ERA:return this.getLong(O.ERA)===i?this:this.withYear(1-this._year)}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withYear=function(t){return this._year===t?this:(O.YEAR.checkValidValue(t),n._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var i=t instanceof N?t.value():t;return this._month===i?this:(O.MONTH_OF_YEAR.checkValidValue(i),n._resolvePreviousValid(this._year,i,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:n.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:n.ofYearDay(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n instanceof S){switch(n){case S.DAYS:return this.plusDays(t);case S.WEEKS:return this.plusWeeks(t);case S.MONTHS:return this.plusMonths(t);case S.YEARS:return this.plusYears(t);case S.DECADES:return this.plusYears(y.safeMultiply(t,10));case S.CENTURIES:return this.plusYears(y.safeMultiply(t,100));case S.MILLENNIA:return this.plusYears(y.safeMultiply(t,1e3));case S.ERAS:return this.with(O.ERA,y.safeAdd(this.getLong(O.ERA),t))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var i=O.YEAR.checkValidIntValue(this._year+t);return n._resolvePreviousValid(i,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t,e=O.YEAR.checkValidIntValue(y.floorDiv(i,12)),r=y.floorMod(i,12)+1;return n._resolvePreviousValid(e,r,this._day)},i.plusWeeks=function(t){return this.plusDays(y.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var i=y.safeAdd(this.toEpochDay(),t);return n.ofEpochDay(i)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(n){return v(n,"query"),n===j.localDate()?this:t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,n){return arguments.length<2?this.until1(t):this.until2(t,n)},i.until2=function(t,i){var e=n.from(t);if(i instanceof S){switch(i){case S.DAYS:return this.daysUntil(e);case S.WEEKS:return y.intDiv(this.daysUntil(e),7);case S.MONTHS:return this._monthsUntil(e);case S.YEARS:return y.intDiv(this._monthsUntil(e),12);case S.DECADES:return y.intDiv(this._monthsUntil(e),120);case S.CENTURIES:return y.intDiv(this._monthsUntil(e),1200);case S.MILLENNIA:return y.intDiv(this._monthsUntil(e),12e3);case S.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var n=32*this._prolepticMonth()+this.dayOfMonth(),i=32*t._prolepticMonth()+t.dayOfMonth();return y.intDiv(i-n,32)},i.until1=function(t){var i=n.from(t),e=i._prolepticMonth()-this._prolepticMonth(),r=i._day-this._day;if(e>0&&r<0){e--;var s=this.plusMonths(e);r=i.toEpochDay()-s.toEpochDay()}else e<0&&r>0&&(e++,r-=i.lengthOfMonth());var u=y.intDiv(e,12),o=y.intMod(e,12);return P.of(u,o,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(v(t,"time"),t instanceof cn)return ln.of(this,t);if(t instanceof en)return this._atTimeOffsetTime(t);throw new _("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,n,i,e){return void 0===i&&(i=0),void 0===e&&(e=0),this.atTime1(cn.of(t,n,i,e))},i._atTimeOffsetTime=function(t){return un.of(ln.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this.atStartOfDayWithZone(t):ln.of(this,cn.MIDNIGHT)},i.atStartOfDayWithZone=function(t){v(t,"zone");var n=this.atTime(cn.MIDNIGHT);if(t instanceof Q==0){var i=t.rules().transition(n);null!=i&&i.isGap()&&(n=i.dateTimeAfter())}return sn.of(n,t)},i.toEpochDay=function(){var t=this._year,n=this._month,i=0;return i+=365*t,t>=0?i+=y.intDiv(t+3,4)-y.intDiv(t+99,100)+y.intDiv(t+399,400):i-=y.intDiv(t,-4)-y.intDiv(t,-100)+y.intDiv(t,-400),i+=y.intDiv(367*n-362,12),i+=this.dayOfMonth()-1,n>2&&(i--,nn.isLeapYear(t)||i--),i-_n},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._year-t._year;return 0===n&&0==(n=this._month-t._month)&&(n=this._day-t._day),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,n=this._month,i=this._day;return y.hash(4294965248&t^(t<<11)+(n<<6)+i)},i.toString=function(){var t=this._year,n=this._month,i=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(n<10?"-0"+n:"-"+n)+(i<10?"-0"+i:"-"+i)},i.toJSON=function(){return this.toString()},i.format=function(n){return v(n,"formatter"),d(n,Yt,"formatter"),t.prototype.format.call(this,n)},n}(W),an=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.chronology=function(){return this.toLocalDate().chronology()},i.query=function(n){return n===j.chronology()?this.chronology():n===j.precision()?S.NANOS:n===j.localDate()?hn.ofEpochDay(this.toLocalDate().toEpochDay()):n===j.localTime()?this.toLocalTime():n===j.zone()||n===j.zoneId()||n===j.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return t.with(O.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(O.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},i.toInstant=function(t){return d(t,Q,"zoneId"),vn.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},i.toEpochSecond=function(t){v(t,"offset");var n=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return n-=t.totalSeconds(),y.safeToInt(n)},n}(B),ln=function(t){function n(n,i){var e;return e=t.call(this)||this,d(n,hn,"date"),d(i,cn,"time"),e._date=n,e._time=i,e}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n._ofEpochMillis=function(t,i){var e=y.floorDiv(t,1e3)+i.totalSeconds(),r=y.floorDiv(e,cn.SECONDS_PER_DAY),s=y.floorMod(e,cn.SECONDS_PER_DAY),u=1e6*y.floorMod(t,1e3);return new n(hn.ofEpochDay(r),cn.ofSecondOfDay(s,u))},n.of=function(){return arguments.length<=2?n.ofDateAndTime.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s,u,o){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===u&&(u=0),void 0===o&&(o=0),new n(hn.of(t,i,e),cn.of(r,s,u,o))},n.ofDateAndTime=function(t,i){return v(t,"date"),v(i,"time"),new n(t,i)},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault()),v(t,"instant"),d(t,vn,"instant"),v(i,"zone");var e=i.rules().offset(t);return n.ofEpochSecond(t.epochSecond(),t.nano(),e)},n.ofEpochSecond=function(t,i,e){void 0===t&&(t=0),void 0===i&&(i=0),2===arguments.length&&i instanceof Q&&(e=i,i=0),v(e,"offset");var r=t+e.totalSeconds(),s=y.floorDiv(r,cn.SECONDS_PER_DAY),u=y.floorMod(r,cn.SECONDS_PER_DAY);return new n(hn.ofEpochDay(s),cn.ofSecondOfDay(u,i))},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof sn)return t.toLocalDateTime();try{return new n(hn.from(t),cn.from(t))}catch(n){throw new r("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_LOCAL_DATE_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i._withDateTime=function(t,i){return this._date.equals(t)&&this._time.equals(i)?this:new n(t,i)},i.isSupported=function(t){return t instanceof O||t instanceof S?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof O?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(n){return n instanceof O?n.isTimeBased()?this._time.get(n):this._date.get(n):t.prototype.get.call(this,n)},i.getLong=function(t){return v(t,"field"),t instanceof O?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof hn?this._withDateTime(t,this._time):t instanceof cn?this._withDateTime(this._date,t):t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",_),t.adjustInto(this))},i.withFieldValue=function(t,n){return v(t,"field"),t instanceof O?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,n)):this._withDateTime(this._date.with(t,n),this._time):t.adjustInto(this,n)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var n=this._time.withHour(t);return this._withDateTime(this._date,n)},i.withMinute=function(t){var n=this._time.withMinute(t);return this._withDateTime(this._date,n)},i.withSecond=function(t){var n=this._time.withSecond(t);return this._withDateTime(this._date,n)},i.withNano=function(t){var n=this._time.withNano(t);return this._withDateTime(this._date,n)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),n instanceof S){switch(n){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this.plusDays(y.intDiv(t,cn.MICROS_PER_DAY)).plusNanos(1e3*y.intMod(t,cn.MICROS_PER_DAY));case S.MILLIS:return this.plusDays(y.intDiv(t,cn.MILLIS_PER_DAY)).plusNanos(1e6*y.intMod(t,cn.MILLIS_PER_DAY));case S.SECONDS:return this.plusSeconds(t);case S.MINUTES:return this.plusMinutes(t);case S.HOURS:return this.plusHours(t);case S.HALF_DAYS:return this.plusDays(y.intDiv(t,256)).plusHours(12*y.intMod(t,256))}return this._withDateTime(this._date.plus(t,n),this._time)}return n.addTo(this,t)},i.plusYears=function(t){var n=this._date.plusYears(t);return this._withDateTime(n,this._time)},i.plusMonths=function(t){var n=this._date.plusMonths(t);return this._withDateTime(n,this._time)},i.plusWeeks=function(t){var n=this._date.plusWeeks(t);return this._withDateTime(n,this._time)},i.plusDays=function(t){var n=this._date.plusDays(t);return this._withDateTime(n,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,n,i,e,r,s){if(0===n&&0===i&&0===e&&0===r)return this._withDateTime(t,this._time);var u=y.intDiv(r,cn.NANOS_PER_DAY)+y.intDiv(e,cn.SECONDS_PER_DAY)+y.intDiv(i,cn.MINUTES_PER_DAY)+y.intDiv(n,cn.HOURS_PER_DAY);u*=s;var o=y.intMod(r,cn.NANOS_PER_DAY)+y.intMod(e,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+y.intMod(i,cn.MINUTES_PER_DAY)*cn.NANOS_PER_MINUTE+y.intMod(n,cn.HOURS_PER_DAY)*cn.NANOS_PER_HOUR,_=this._time.toNanoOfDay();o=o*s+_,u+=y.floorDiv(o,cn.NANOS_PER_DAY);var h=y.floorMod(o,cn.NANOS_PER_DAY),a=h===_?this._time:cn.ofNanoOfDay(h);return this._withDateTime(t.plusDays(u),a)},i.query=function(n){return v(n,"query"),n===j.localDate()?this.toLocalDate():t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof S){if(i.isTimeBased()){var r=this._date.daysUntil(e._date),s=e._time.toNanoOfDay()-this._time.toNanoOfDay();r>0&&s<0?(r--,s+=cn.NANOS_PER_DAY):r<0&&s>0&&(r++,s-=cn.NANOS_PER_DAY);var o=r;switch(i){case S.NANOS:return o=y.safeMultiply(o,cn.NANOS_PER_DAY),y.safeAdd(o,s);case S.MICROS:return o=y.safeMultiply(o,cn.MICROS_PER_DAY),y.safeAdd(o,y.intDiv(s,1e3));case S.MILLIS:return o=y.safeMultiply(o,cn.MILLIS_PER_DAY),y.safeAdd(o,y.intDiv(s,1e6));case S.SECONDS:return o=y.safeMultiply(o,cn.SECONDS_PER_DAY),y.safeAdd(o,y.intDiv(s,cn.NANOS_PER_SECOND));case S.MINUTES:return o=y.safeMultiply(o,cn.MINUTES_PER_DAY),y.safeAdd(o,y.intDiv(s,cn.NANOS_PER_MINUTE));case S.HOURS:return o=y.safeMultiply(o,cn.HOURS_PER_DAY),y.safeAdd(o,y.intDiv(s,cn.NANOS_PER_HOUR));case S.HALF_DAYS:return o=y.safeMultiply(o,2),y.safeAdd(o,y.intDiv(s,12*cn.NANOS_PER_HOUR))}throw new u("Unsupported unit: "+i)}var _=e._date,h=e._time;return _.isAfter(this._date)&&h.isBefore(this._time)?_=_.minusDays(1):_.isBefore(this._date)&&h.isAfter(this._time)&&(_=_.plusDays(1)),this._date.until(_,i)}return i.between(this,e)},i.atOffset=function(t){return un.of(this,t)},i.atZone=function(t){return sn.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._date.compareTo(t.toLocalDate());return 0===n&&(n=this._time.compareTo(t.toLocalTime())),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&this._date.equals(t._date)&&this._time.equals(t._time)},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(an),cn=function(t){function n(i,e,r,s){var u;void 0===i&&(i=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===s&&(s=0),u=t.call(this)||this;var o=y.safeToInt(i),_=y.safeToInt(e),h=y.safeToInt(r),a=y.safeToInt(s);return n._validate(o,_,h,a),0===_&&0===h&&0===a?(n.HOURS[o]||(u._hour=o,u._minute=_,u._second=h,u._nano=a,n.HOURS[o]=c(u)),n.HOURS[o]||c(u)):(u._hour=o,u._minute=_,u._second=h,u._nano=a,u)}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return void 0===t&&(t=dn.systemDefaultZone()),v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault());var e=i.rules().offset(t),r=y.intMod(t.epochSecond(),n.SECONDS_PER_DAY);return(r=y.intMod(r+e.totalSeconds(),n.SECONDS_PER_DAY))<0&&(r+=n.SECONDS_PER_DAY),n.ofSecondOfDay(r,t.nano())},n.of=function(t,i,e,r){return new n(t,i,e,r)},n.ofSecondOfDay=function(t,i){void 0===t&&(t=0),void 0===i&&(i=0),O.SECOND_OF_DAY.checkValidValue(t),O.NANO_OF_SECOND.checkValidValue(i);var e=y.intDiv(t,n.SECONDS_PER_HOUR);t-=e*n.SECONDS_PER_HOUR;var r=y.intDiv(t,n.SECONDS_PER_MINUTE);return new n(e,r,t-=r*n.SECONDS_PER_MINUTE,i)},n.ofNanoOfDay=function(t){void 0===t&&(t=0),O.NANO_OF_DAY.checkValidValue(t);var i=y.intDiv(t,n.NANOS_PER_HOUR);t-=i*n.NANOS_PER_HOUR;var e=y.intDiv(t,n.NANOS_PER_MINUTE);t-=e*n.NANOS_PER_MINUTE;var r=y.intDiv(t,n.NANOS_PER_SECOND);return new n(i,e,r,t-=r*n.NANOS_PER_SECOND)},n.from=function(t){v(t,"temporal");var n=t.query(j.localTime());if(null==n)throw new r("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Yt.ISO_LOCAL_TIME),v(i,"formatter"),i.parse(t,n.FROM)},n._validate=function(t,n,i,e){O.HOUR_OF_DAY.checkValidValue(t),O.MINUTE_OF_HOUR.checkValidValue(n),O.SECOND_OF_MINUTE.checkValidValue(i),O.NANO_OF_SECOND.checkValidValue(e)};var i=n.prototype;return i.isSupported=function(t){return t instanceof O||t instanceof S?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(n){return v(n),t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return v(t,"field"),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.NANO_OF_SECOND:return this._nano;case O.NANO_OF_DAY:return this.toNanoOfDay();case O.MICRO_OF_SECOND:return y.intDiv(this._nano,1e3);case O.MICRO_OF_DAY:return y.intDiv(this.toNanoOfDay(),1e3);case O.MILLI_OF_SECOND:return y.intDiv(this._nano,1e6);case O.MILLI_OF_DAY:return y.intDiv(this.toNanoOfDay(),1e6);case O.SECOND_OF_MINUTE:return this._second;case O.SECOND_OF_DAY:return this.toSecondOfDay();case O.MINUTE_OF_HOUR:return this._minute;case O.MINUTE_OF_DAY:return 60*this._hour+this._minute;case O.HOUR_OF_AMPM:return y.intMod(this._hour,12);case O.CLOCK_HOUR_OF_AMPM:var n=y.intMod(this._hour,12);return n%12==0?12:n;case O.HOUR_OF_DAY:return this._hour;case O.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case O.AMPM_OF_DAY:return y.intDiv(this._hour,12)}throw new u("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",_),t.adjustInto(this))},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.NANO_OF_SECOND:return this.withNano(i);case O.NANO_OF_DAY:return n.ofNanoOfDay(i);case O.MICRO_OF_SECOND:return this.withNano(1e3*i);case O.MICRO_OF_DAY:return n.ofNanoOfDay(1e3*i);case O.MILLI_OF_SECOND:return this.withNano(1e6*i);case O.MILLI_OF_DAY:return n.ofNanoOfDay(1e6*i);case O.SECOND_OF_MINUTE:return this.withSecond(i);case O.SECOND_OF_DAY:return this.plusSeconds(i-this.toSecondOfDay());case O.MINUTE_OF_HOUR:return this.withMinute(i);case O.MINUTE_OF_DAY:return this.plusMinutes(i-(60*this._hour+this._minute));case O.HOUR_OF_AMPM:return this.plusHours(i-y.intMod(this._hour,12));case O.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===i?0:i)-y.intMod(this._hour,12));case O.HOUR_OF_DAY:return this.withHour(i);case O.CLOCK_HOUR_OF_DAY:return this.withHour(24===i?0:i);case O.AMPM_OF_DAY:return this.plusHours(12*(i-y.intDiv(this._hour,12)))}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new n(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new n(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new n(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new n(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(v(t,"unit"),t===S.NANOS)return this;var i=t.duration();if(i.seconds()>n.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var e=i.toNanos();if(0!==y.intMod(n.NANOS_PER_DAY,e))throw new r("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return n.ofNanoOfDay(y.intDiv(s,e)*e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,i){if(v(i,"unit"),i instanceof S){switch(i){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this.plusNanos(1e3*y.intMod(t,n.MICROS_PER_DAY));case S.MILLIS:return this.plusNanos(1e6*y.intMod(t,n.MILLIS_PER_DAY));case S.SECONDS:return this.plusSeconds(t);case S.MINUTES:return this.plusMinutes(t);case S.HOURS:return this.plusHours(t);case S.HALF_DAYS:return this.plusHours(12*y.intMod(t,2))}throw new u("Unsupported unit: "+i)}return i.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new n(y.intMod(y.intMod(t,n.HOURS_PER_DAY)+this._hour+n.HOURS_PER_DAY,n.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var i=this._hour*n.MINUTES_PER_HOUR+this._minute,e=y.intMod(y.intMod(t,n.MINUTES_PER_DAY)+i+n.MINUTES_PER_DAY,n.MINUTES_PER_DAY);return i===e?this:new n(y.intDiv(e,n.MINUTES_PER_HOUR),y.intMod(e,n.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var i=this._hour*n.SECONDS_PER_HOUR+this._minute*n.SECONDS_PER_MINUTE+this._second,e=y.intMod(y.intMod(t,n.SECONDS_PER_DAY)+i+n.SECONDS_PER_DAY,n.SECONDS_PER_DAY);return i===e?this:new n(y.intDiv(e,n.SECONDS_PER_HOUR),y.intMod(y.intDiv(e,n.SECONDS_PER_MINUTE),n.MINUTES_PER_HOUR),y.intMod(e,n.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var i=this.toNanoOfDay(),e=y.intMod(y.intMod(t,n.NANOS_PER_DAY)+i+n.NANOS_PER_DAY,n.NANOS_PER_DAY);return i===e?this:new n(y.intDiv(e,n.NANOS_PER_HOUR),y.intMod(y.intDiv(e,n.NANOS_PER_MINUTE),n.MINUTES_PER_HOUR),y.intMod(y.intDiv(e,n.NANOS_PER_SECOND),n.SECONDS_PER_MINUTE),y.intMod(e,n.NANOS_PER_SECOND))},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusHours=function(t){return this.plusHours(-1*y.intMod(t,n.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*y.intMod(t,n.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*y.intMod(t,n.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*y.intMod(t,n.NANOS_PER_DAY))},i.query=function(t){return v(t,"query"),t===j.precision()?S.NANOS:t===j.localTime()?this:t===j.chronology()||t===j.zoneId()||t===j.zone()||t===j.offset()||t===j.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(n.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof S){var r=e.toNanoOfDay()-this.toNanoOfDay();switch(i){case S.NANOS:return r;case S.MICROS:return y.intDiv(r,1e3);case S.MILLIS:return y.intDiv(r,1e6);case S.SECONDS:return y.intDiv(r,n.NANOS_PER_SECOND);case S.MINUTES:return y.intDiv(r,n.NANOS_PER_MINUTE);case S.HOURS:return y.intDiv(r,n.NANOS_PER_HOUR);case S.HALF_DAYS:return y.intDiv(r,12*n.NANOS_PER_HOUR)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i.atDate=function(t){return ln.of(t,this)},i.toSecondOfDay=function(){var t=this._hour*n.SECONDS_PER_HOUR;return(t+=this._minute*n.SECONDS_PER_MINUTE)+this._second},i.toNanoOfDay=function(){var t=this._hour*n.NANOS_PER_HOUR;return t+=this._minute*n.NANOS_PER_MINUTE,(t+=this._second*n.NANOS_PER_SECOND)+this._nano},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=y.compareNumbers(this._hour,t._hour);return 0===i&&0===(i=y.compareNumbers(this._minute,t._minute))&&0===(i=y.compareNumbers(this._second,t._second))&&(i=y.compareNumbers(this._nano,t._nano)),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano},i.hashCode=function(){var t=this.toNanoOfDay();return y.hash(t)},i.toString=function(){var t="",n=this._hour,i=this._minute,e=this._second,r=this._nano;return t+=n<10?"0":"",t+=n,t+=i<10?":0":":",t+=i,(e>0||r>0)&&(t+=e<10?":0":":",t+=e,r>0&&(t+=".",0===y.intMod(r,1e6)?t+=(""+(y.intDiv(r,1e6)+1e3)).substring(1):0===y.intMod(r,1e3)?t+=(""+(y.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V);cn.HOURS_PER_DAY=24,cn.MINUTES_PER_HOUR=60,cn.MINUTES_PER_DAY=cn.MINUTES_PER_HOUR*cn.HOURS_PER_DAY,cn.SECONDS_PER_MINUTE=60,cn.SECONDS_PER_HOUR=cn.SECONDS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.SECONDS_PER_DAY=cn.SECONDS_PER_HOUR*cn.HOURS_PER_DAY,cn.MILLIS_PER_DAY=1e3*cn.SECONDS_PER_DAY,cn.MICROS_PER_DAY=1e6*cn.SECONDS_PER_DAY,cn.NANOS_PER_SECOND=1e9,cn.NANOS_PER_MINUTE=cn.NANOS_PER_SECOND*cn.SECONDS_PER_MINUTE,cn.NANOS_PER_HOUR=cn.NANOS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.NANOS_PER_DAY=cn.NANOS_PER_HOUR*cn.HOURS_PER_DAY;var fn=1e6,vn=function(t){function n(i,e){var r;return r=t.call(this)||this,n._validate(i,e),r._seconds=y.safeToInt(i),r._nanos=y.safeToInt(e),r}l(n,t),n.now=function(t){return void 0===t&&(t=dn.systemUTC()),t.instant()},n.ofEpochSecond=function(t,i){void 0===i&&(i=0);var e=t+y.floorDiv(i,cn.NANOS_PER_SECOND),r=y.floorMod(i,cn.NANOS_PER_SECOND);return n._create(e,r)},n.ofEpochMilli=function(t){var i=y.floorDiv(t,1e3),e=y.floorMod(t,1e3);return n._create(i,1e6*e)},n.from=function(t){try{var i=t.getLong(O.INSTANT_SECONDS),e=t.get(O.NANO_OF_SECOND);return n.ofEpochSecond(i,e)}catch(n){throw new r("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,n)}},n.parse=function(t){return Yt.ISO_INSTANT.parse(t,n.FROM)},n._create=function(t,i){return 0===t&&0===i?n.EPOCH:new n(t,i)},n._validate=function(t,i){if(tn.MAX_SECONDS)throw new r("Instant exceeds minimum or maximum instant");if(i<0||i>cn.NANOS_PER_SECOND)throw new r("Instant exceeds minimum or maximum instant")};var i=n.prototype;return i.isSupported=function(t){return t instanceof O?t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND||t===O.MICRO_OF_SECOND||t===O.MILLI_OF_SECOND:t instanceof S?t.isTimeBased()||t===S.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof O){switch(t){case O.NANO_OF_SECOND:return this._nanos;case O.MICRO_OF_SECOND:return y.intDiv(this._nanos,1e3);case O.MILLI_OF_SECOND:return y.intDiv(this._nanos,fn);case O.INSTANT_SECONDS:return this._seconds}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.MILLI_OF_SECOND:var e=i*fn;return e!==this._nanos?n._create(this._seconds,e):this;case O.MICRO_OF_SECOND:var r=1e3*i;return r!==this._nanos?n._create(this._seconds,r):this;case O.NANO_OF_SECOND:return i!==this._nanos?n._create(this._seconds,i):this;case O.INSTANT_SECONDS:return i!==this._seconds?n._create(i,this._nanos):this}throw new u("Unsupported field: "+t)}return t.adjustInto(this,i)},i.truncatedTo=function(t){if(v(t,"unit"),t===S.NANOS)return this;var n=t.duration();if(n.seconds()>cn.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var i=n.toNanos();if(0!==y.intMod(cn.NANOS_PER_DAY,i))throw new r("Unit must divide into a standard day without remainder");var e=y.intMod(this._seconds,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+this._nanos,s=y.intDiv(e,i)*i;return this.plusNanos(s-e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k),n instanceof S){switch(n){case S.NANOS:return this.plusNanos(t);case S.MICROS:return this._plus(y.intDiv(t,1e6),1e3*y.intMod(t,1e6));case S.MILLIS:return this.plusMillis(t);case S.SECONDS:return this.plusSeconds(t);case S.MINUTES:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_MINUTE));case S.HOURS:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_HOUR));case S.HALF_DAYS:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_DAY/2));case S.DAYS:return this.plusSeconds(y.safeMultiply(t,cn.SECONDS_PER_DAY))}throw new u("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus(y.intDiv(t,1e3),y.intMod(t,1e3)*fn)},i.plusNanos=function(t){return this._plus(0,t)},i._plus=function(t,i){if(0===t&&0===i)return this;var e=this._seconds+t;e+=y.intDiv(i,cn.NANOS_PER_SECOND);var r=this._nanos+i%cn.NANOS_PER_SECOND;return n.ofEpochSecond(e,r)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return this.plusAmountUnit(-1*t,n)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.query=function(t){return v(t,"query"),t===j.precision()?S.NANOS:t===j.localDate()||t===j.localTime()||t===j.chronology()||t===j.zoneId()||t===j.zone()||t===j.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.INSTANT_SECONDS,this._seconds).with(O.NANO_OF_SECOND,this._nanos)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof S){switch(i){case S.NANOS:return this._nanosUntil(e);case S.MICROS:return y.intDiv(this._nanosUntil(e),1e3);case S.MILLIS:return y.safeSubtract(e.toEpochMilli(),this.toEpochMilli());case S.SECONDS:return this._secondsUntil(e);case S.MINUTES:return y.intDiv(this._secondsUntil(e),cn.SECONDS_PER_MINUTE);case S.HOURS:return y.intDiv(this._secondsUntil(e),cn.SECONDS_PER_HOUR);case S.HALF_DAYS:return y.intDiv(this._secondsUntil(e),12*cn.SECONDS_PER_HOUR);case S.DAYS:return y.intDiv(this._secondsUntil(e),cn.SECONDS_PER_DAY)}throw new u("Unsupported unit: "+i)}return i.between(this,e)},i._nanosUntil=function(t){var n=y.safeSubtract(t.epochSecond(),this.epochSecond()),i=y.safeMultiply(n,cn.NANOS_PER_SECOND);return y.safeAdd(i,t.nano()-this.nano())},i._secondsUntil=function(t){var n=y.safeSubtract(t.epochSecond(),this.epochSecond()),i=t.nano()-this.nano();return n>0&&i<0?n--:n<0&&i>0&&n++,n},i.atOffset=function(t){return un.ofInstant(this,t)},i.atZone=function(t){return sn.ofInstant(this,t)},i.toEpochMilli=function(){return y.safeMultiply(this._seconds,1e3)+y.intDiv(this._nanos,fn)},i.compareTo=function(t){v(t,"otherInstant"),d(t,n,"otherInstant");var i=y.compareNumbers(this._seconds,t._seconds);return 0!==i?i:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this.epochSecond()===t.epochSecond()&&this.nano()===t.nano()},i.hashCode=function(){return y.hashCode(this._seconds,this._nanos)},i.toString=function(){return Yt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},n}(V),dn=function(){function t(){}t.systemUTC=function(){return new wn(Q.UTC)},t.systemDefaultZone=function(){return new wn(G.systemDefault())},t.system=function(t){return new wn(t)},t.fixed=function(t,n){return new pn(t,n)},t.offset=function(t,n){return new mn(t,n)};var n=t.prototype;return n.millis=function(){w("Clock.millis")},n.instant=function(){w("Clock.instant")},n.zone=function(){w("Clock.zone")},n.withZone=function(){w("Clock.withZone")},t}(),wn=function(t){function n(n){var i;return v(n,"zone"),(i=t.call(this)||this)._zone=n,i}l(n,t);var i=n.prototype;return i.zone=function(){return this._zone},i.millis=function(){return(new Date).getTime()},i.instant=function(){return vn.ofEpochMilli(this.millis())},i.equals=function(t){return t instanceof n&&this._zone.equals(t._zone)},i.withZone=function(t){return t.equals(this._zone)?this:new n(t)},i.toString=function(){return"SystemClock["+this._zone.toString()+"]"},n}(dn),pn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._instant=n,e._zoneId=i,e}l(n,t);var i=n.prototype;return i.instant=function(){return this._instant},i.millis=function(){return this._instant.toEpochMilli()},i.zone=function(){return this._zoneId},i.toString=function(){return"FixedClock[]"},i.equals=function(t){return t instanceof n&&this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId)},i.withZone=function(t){return t.equals(this._zoneId)?this:new n(this._instant,t)},n}(dn),mn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._baseClock=n,e._offset=i,e}l(n,t);var i=n.prototype;return i.zone=function(){return this._baseClock.zone()},i.withZone=function(t){return t.equals(this._baseClock.zone())?this:new n(this._baseClock.withZone(t),this._offset)},i.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},i.instant=function(){return this._baseClock.instant().plus(this._offset)},i.equals=function(t){return t instanceof n&&this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset)},i.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},n}(dn),gn=function(){function t(t,n,i){if(v(t,"transition"),v(n,"offsetBefore"),v(i,"offsetAfter"),n.equals(i))throw new _("Offsets must not be equal");if(0!==t.nano())throw new _("Nano-of-second must be zero");this._transition=t instanceof ln?t:ln.ofEpochSecond(t,0,n),this._offsetBefore=n,this._offsetAfter=i}t.of=function(n,i,e){return new t(n,i,e)};var n=t.prototype;return n.instant=function(){return this._transition.toInstant(this._offsetBefore)},n.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},n.dateTimeBefore=function(){return this._transition},n.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},n.offsetBefore=function(){return this._offsetBefore},n.offsetAfter=function(){return this._offsetAfter},n.duration=function(){return x.ofSeconds(this.durationSeconds())},n.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},n.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},n.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},n.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}(),yn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var n=new Date(t.toEpochMilli()).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfEpochMilli=function(t){var n=new Date(t).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfLocalDateTime=function(t){var n=1e3*t.toEpochSecond(Q.UTC),i=new Date(n).getTimezoneOffset(),e=new Date(n+6e4*i).getTimezoneOffset();return Q.ofTotalMinutes(-1*e)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,n){return this.offsetOfLocalDateTime(t).equals(n)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new r("not supported operation")},i.equals=function(t){return this===t||t instanceof n},i.toString=function(){return"SYSTEM"},n}(K),bn=function(t){function n(){var n;return(n=t.call(this)||this)._rules=new yn,n}l(n,t);var i=n.prototype;return i.rules=function(){return this._rules},i.equals=function(t){return this===t},i.id=function(){return"SYSTEM"},n}(G),$n=function(){function t(){}return t.systemDefault=function(){return kn},t.getAvailableZoneIds=function(){return Dt.getAvailableZoneIds()},t.of=function(t){if(v(t,"zoneId"),"Z"===t)return Q.UTC;if(1===t.length)throw new r("Invalid zone: "+t);if(Y.startsWith(t,"+")||Y.startsWith(t,"-"))return Q.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new Mt(t,Q.UTC.rules());if(Y.startsWith(t,"UTC+")||Y.startsWith(t,"GMT+")||Y.startsWith(t,"UTC-")||Y.startsWith(t,"GMT-")){var n=Q.of(t.substring(3));return 0===n.totalSeconds()?new Mt(t.substring(0,3),n.rules()):new Mt(t.substring(0,3)+n.id(),n.rules())}if(Y.startsWith(t,"UT+")||Y.startsWith(t,"UT-")){var i=Q.of(t.substring(2));return 0===i.totalSeconds()?new Mt("UT",i.rules()):new Mt("UT"+i.id(),i.rules())}return"SYSTEM"===t?G.systemDefault():Mt.ofId(t)},t.ofOffset=function(t,n){if(v(t,"prefix"),v(n,"offset"),0===t.length)return n;if("GMT"===t||"UTC"===t||"UT"===t)return 0===n.totalSeconds()?new Mt(t,n.rules()):new Mt(t+n.id(),n.rules());throw new _("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){v(t,"temporal");var n=t.query(j.zone());if(null==n)throw new r("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},t}(),kn=null,xn=!1;xn||(xn=!0,q.MIN_VALUE=-999999,q.MAX_VALUE=999999,x.ZERO=new x(0,0),S.NANOS=new S("Nanos",x.ofNanos(1)),S.MICROS=new S("Micros",x.ofNanos(1e3)),S.MILLIS=new S("Millis",x.ofNanos(1e6)),S.SECONDS=new S("Seconds",x.ofSeconds(1)),S.MINUTES=new S("Minutes",x.ofSeconds(60)),S.HOURS=new S("Hours",x.ofSeconds(3600)),S.HALF_DAYS=new S("HalfDays",x.ofSeconds(43200)),S.DAYS=new S("Days",x.ofSeconds(86400)),S.WEEKS=new S("Weeks",x.ofSeconds(604800)),S.MONTHS=new S("Months",x.ofSeconds(2629746)),S.YEARS=new S("Years",x.ofSeconds(31556952)),S.DECADES=new S("Decades",x.ofSeconds(315569520)),S.CENTURIES=new S("Centuries",x.ofSeconds(3155695200)),S.MILLENNIA=new S("Millennia",x.ofSeconds(31556952e3)),S.ERAS=new S("Eras",x.ofSeconds(31556952*(q.MAX_VALUE+1))),S.FOREVER=new S("Forever",x.ofSeconds(y.MAX_SAFE_INTEGER,999999999)),O.NANO_OF_SECOND=new O("NanoOfSecond",S.NANOS,S.SECONDS,E.of(0,999999999)),O.NANO_OF_DAY=new O("NanoOfDay",S.NANOS,S.DAYS,E.of(0,86399999999999)),O.MICRO_OF_SECOND=new O("MicroOfSecond",S.MICROS,S.SECONDS,E.of(0,999999)),O.MICRO_OF_DAY=new O("MicroOfDay",S.MICROS,S.DAYS,E.of(0,86399999999)),O.MILLI_OF_SECOND=new O("MilliOfSecond",S.MILLIS,S.SECONDS,E.of(0,999)),O.MILLI_OF_DAY=new O("MilliOfDay",S.MILLIS,S.DAYS,E.of(0,86399999)),O.SECOND_OF_MINUTE=new O("SecondOfMinute",S.SECONDS,S.MINUTES,E.of(0,59)),O.SECOND_OF_DAY=new O("SecondOfDay",S.SECONDS,S.DAYS,E.of(0,86399)),O.MINUTE_OF_HOUR=new O("MinuteOfHour",S.MINUTES,S.HOURS,E.of(0,59)),O.MINUTE_OF_DAY=new O("MinuteOfDay",S.MINUTES,S.DAYS,E.of(0,1439)),O.HOUR_OF_AMPM=new O("HourOfAmPm",S.HOURS,S.HALF_DAYS,E.of(0,11)),O.CLOCK_HOUR_OF_AMPM=new O("ClockHourOfAmPm",S.HOURS,S.HALF_DAYS,E.of(1,12)),O.HOUR_OF_DAY=new O("HourOfDay",S.HOURS,S.DAYS,E.of(0,23)),O.CLOCK_HOUR_OF_DAY=new O("ClockHourOfDay",S.HOURS,S.DAYS,E.of(1,24)),O.AMPM_OF_DAY=new O("AmPmOfDay",S.HALF_DAYS,S.DAYS,E.of(0,1)),O.DAY_OF_WEEK=new O("DayOfWeek",S.DAYS,S.WEEKS,E.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_MONTH=new O("AlignedDayOfWeekInMonth",S.DAYS,S.WEEKS,E.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_YEAR=new O("AlignedDayOfWeekInYear",S.DAYS,S.WEEKS,E.of(1,7)),O.DAY_OF_MONTH=new O("DayOfMonth",S.DAYS,S.MONTHS,E.of(1,28,31),"day"),O.DAY_OF_YEAR=new O("DayOfYear",S.DAYS,S.YEARS,E.of(1,365,366)),O.EPOCH_DAY=new O("EpochDay",S.DAYS,S.FOREVER,E.of(Math.floor(365.25*q.MIN_VALUE),Math.floor(365.25*q.MAX_VALUE))),O.ALIGNED_WEEK_OF_MONTH=new O("AlignedWeekOfMonth",S.WEEKS,S.MONTHS,E.of(1,4,5)),O.ALIGNED_WEEK_OF_YEAR=new O("AlignedWeekOfYear",S.WEEKS,S.YEARS,E.of(1,53)),O.MONTH_OF_YEAR=new O("MonthOfYear",S.MONTHS,S.YEARS,E.of(1,12),"month"),O.PROLEPTIC_MONTH=new O("ProlepticMonth",S.MONTHS,S.FOREVER,E.of(12*q.MIN_VALUE,12*q.MAX_VALUE+11)),O.YEAR_OF_ERA=new O("YearOfEra",S.YEARS,S.FOREVER,E.of(1,q.MAX_VALUE,q.MAX_VALUE+1)),O.YEAR=new O("Year",S.YEARS,S.FOREVER,E.of(q.MIN_VALUE,q.MAX_VALUE),"year"),O.ERA=new O("Era",S.ERAS,S.FOREVER,E.of(0,1)),O.INSTANT_SECONDS=new O("InstantSeconds",S.SECONDS,S.FOREVER,E.of(g,m)),O.OFFSET_SECONDS=new O("OffsetSeconds",S.SECONDS,S.FOREVER,E.of(-64800,64800)),function(){cn.HOURS=[];for(var t=0;t<24;t++)cn.of(t,0,0,0);cn.MIN=cn.HOURS[0],cn.MAX=new cn(23,59,59,999999999),cn.MIDNIGHT=cn.HOURS[0],cn.NOON=cn.HOURS[12],cn.FROM=A("LocalTime.FROM",(function(t){return cn.from(t)}))}(),ct=new ot,ft=new _t,vt=new ht,dt=new at,wt=new lt("WeekBasedYears",x.ofSeconds(31556952)),pt=new lt("QuarterYears",x.ofSeconds(7889238)),rt.DAY_OF_QUARTER=ct,rt.QUARTER_OF_YEAR=ft,rt.WEEK_OF_WEEK_BASED_YEAR=vt,rt.WEEK_BASED_YEAR=dt,rt.WEEK_BASED_YEARS=wt,rt.QUARTER_YEARS=pt,hn.prototype.isoWeekOfWeekyear=function(){return this.get(rt.WEEK_OF_WEEK_BASED_YEAR)},hn.prototype.isoWeekyear=function(){return this.get(rt.WEEK_BASED_YEAR)},j.ZONE_ID=A("ZONE_ID",(function(t){return t.query(j.ZONE_ID)})),j.CHRONO=A("CHRONO",(function(t){return t.query(j.CHRONO)})),j.PRECISION=A("PRECISION",(function(t){return t.query(j.PRECISION)})),j.OFFSET=A("OFFSET",(function(t){return t.isSupported(O.OFFSET_SECONDS)?Q.ofTotalSeconds(t.get(O.OFFSET_SECONDS)):null})),j.ZONE=A("ZONE",(function(t){var n=t.query(j.ZONE_ID);return null!=n?n:t.query(j.OFFSET)})),j.LOCAL_DATE=A("LOCAL_DATE",(function(t){return t.isSupported(O.EPOCH_DAY)?hn.ofEpochDay(t.getLong(O.EPOCH_DAY)):null})),j.LOCAL_TIME=A("LOCAL_TIME",(function(t){return t.isSupported(O.NANO_OF_DAY)?cn.ofNanoOfDay(t.getLong(O.NANO_OF_DAY)):null})),M.MONDAY=new M(0,"MONDAY"),M.TUESDAY=new M(1,"TUESDAY"),M.WEDNESDAY=new M(2,"WEDNESDAY"),M.THURSDAY=new M(3,"THURSDAY"),M.FRIDAY=new M(4,"FRIDAY"),M.SATURDAY=new M(5,"SATURDAY"),M.SUNDAY=new M(6,"SUNDAY"),M.FROM=A("DayOfWeek.FROM",(function(t){return M.from(t)})),I=[M.MONDAY,M.TUESDAY,M.WEDNESDAY,M.THURSDAY,M.FRIDAY,M.SATURDAY,M.SUNDAY],vn.MIN_SECONDS=-31619119219200,vn.MAX_SECONDS=31494816403199,vn.EPOCH=new vn(0,0),vn.MIN=vn.ofEpochSecond(vn.MIN_SECONDS,0),vn.MAX=vn.ofEpochSecond(vn.MAX_SECONDS,999999999),vn.FROM=A("Instant.FROM",(function(t){return vn.from(t)})),hn.MIN=hn.of(q.MIN_VALUE,1,1),hn.MAX=hn.of(q.MAX_VALUE,12,31),hn.EPOCH_0=hn.ofEpochDay(0),hn.FROM=A("LocalDate.FROM",(function(t){return hn.from(t)})),ln.MIN=ln.of(hn.MIN,cn.MIN),ln.MAX=ln.of(hn.MAX,cn.MAX),ln.FROM=A("LocalDateTime.FROM",(function(t){return ln.from(t)})),Xt.MIN_VALUE=q.MIN_VALUE,Xt.MAX_VALUE=q.MAX_VALUE,At=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).toFormatter(),Xt.FROM=A("Year.FROM",(function(t){return Xt.from(t)})),N.JANUARY=new N(1,"JANUARY"),N.FEBRUARY=new N(2,"FEBRUARY"),N.MARCH=new N(3,"MARCH"),N.APRIL=new N(4,"APRIL"),N.MAY=new N(5,"MAY"),N.JUNE=new N(6,"JUNE"),N.JULY=new N(7,"JULY"),N.AUGUST=new N(8,"AUGUST"),N.SEPTEMBER=new N(9,"SEPTEMBER"),N.OCTOBER=new N(10,"OCTOBER"),N.NOVEMBER=new N(11,"NOVEMBER"),N.DECEMBER=new N(12,"DECEMBER"),D=[N.JANUARY,N.FEBRUARY,N.MARCH,N.APRIL,N.MAY,N.JUNE,N.JULY,N.AUGUST,N.SEPTEMBER,N.OCTOBER,N.NOVEMBER,N.DECEMBER],Tt=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).toFormatter(),Kt.FROM=A("YearMonth.FROM",(function(t){return Kt.from(t)})),zt=(new Ut).appendLiteral("--").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(),Gt.FROM=A("MonthDay.FROM",(function(t){return Gt.from(t)})),P.ofDays(0),Q.MAX_SECONDS=18*cn.SECONDS_PER_HOUR,Q.UTC=Q.ofTotalSeconds(0),Q.MIN=Q.ofTotalSeconds(-Q.MAX_SECONDS),Q.MAX=Q.ofTotalSeconds(Q.MAX_SECONDS),sn.FROM=A("ZonedDateTime.FROM",(function(t){return sn.from(t)})),kn=new bn,G.systemDefault=$n.systemDefault,G.getAvailableZoneIds=$n.getAvailableZoneIds,G.of=$n.of,G.ofOffset=$n.ofOffset,G.from=$n.from,Q.from=$n.from,G.SYSTEM=kn,G.UTC=Q.ofTotalSeconds(0),nn.INSTANCE=new nn("IsoChronology"),Yt.ISO_LOCAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_LOCAL_TIME=(new Ut).appendValue(O.HOUR_OF_DAY,2).appendLiteral(":").appendValue(O.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(O.SECOND_OF_MINUTE,2).optionalStart().appendFraction(O.NANO_OF_SECOND,0,9,!0).toFormatter(U.STRICT),Yt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_DATE).appendLiteral("T").append(Yt.ISO_LOCAL_TIME).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(U.STRICT),Yt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_ZONED_DATE_TIME=(new Ut).append(Yt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.BASIC_ISO_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendValue(O.MONTH_OF_YEAR,2).appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(Yt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Yt.ISO_ORDINAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.DAY_OF_YEAR).toFormatter(U.STRICT),Yt.ISO_WEEK_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-W").appendValue(O.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(O.DAY_OF_WEEK).toFormatter(U.STRICT),Yt.PARSED_EXCESS_DAYS=A("PARSED_EXCESS_DAYS",(function(t){return t instanceof tt?t.excessDays:P.ZERO})),Yt.PARSED_LEAP_SECOND=A("PARSED_LEAP_SECOND",(function(t){return t instanceof tt&&t.leapSecond})),St.BASE_DATE=hn.of(2e3,1,1),Ut.CompositePrinterParser=$t,Ut.PadPrinterParserDecorator=Ot,Ut.SettingsParser=jt,Ut.CharLiteralPrinterParser=It,Ut.StringLiteralPrinterParser=It,Ut.CharLiteralPrinterParser=bt,Ut.NumberPrinterParser=qt,Ut.ReducedPrinterParser=St,Ut.FractionPrinterParser=kt,Ut.OffsetIdPrinterParser=Et,Ut.ZoneIdPrinterParser=Nt,un.MIN=ln.MIN.atOffset(Q.MAX),un.MAX=ln.MAX.atOffset(Q.MIN),un.FROM=A("OffsetDateTime.FROM",(function(t){return un.from(t)})),en.MIN=en.ofNumbers(0,0,0,0,Q.MAX),en.MAX=en.ofNumbers(23,59,59,999999999,Q.MIN),en.FROM=A("OffsetTime.FROM",(function(t){return en.from(t)})));var qn=function(){function t(t,n){var i;if(t instanceof hn)n=null==n?G.systemDefault():n,i=t.atStartOfDay(n);else if(t instanceof ln)n=null==n?G.systemDefault():n,i=t.atZone(n);else{if(!(t instanceof sn))throw new _("unsupported instance for convert operation:"+t);i=null==n?t:t.withZoneSameInstant(n)}this.instant=i.toInstant()}var n=t.prototype;return n.toDate=function(){return new Date(this.instant.toEpochMilli())},n.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function Sn(t,n){return new qn(t,n)}var Cn=function(t){function n(n,i){var e;return void 0===i&&(i=G.systemDefault()),(e=t.call(this)||this)._zone=i,n instanceof Date?(e._epochMilli=n.getTime(),c(e)):"function"==typeof n.toDate&&n.toDate()instanceof Date?(e._epochMilli=n.toDate().getTime(),c(e)):(f(!1,"date must be either a javascript date or a moment"),e)}l(n,t);var i=n.prototype;return i.query=function(n){return v(n,"query"),n===j.localDate()?hn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===j.localTime()?cn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===j.zone()?this._zone:t.prototype.query.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.NANO_OF_SECOND:return 1e6*y.floorMod(this._epochMilli,1e3);case O.INSTANT_SECONDS:return y.floorDiv(this._epochMilli,1e3)}throw new u("Unsupported field: "+t)}return t.getFrom(this)},i.isSupported=function(t){return t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND},n}(z);function En(t,n){return new Cn(t,n)}var On,jn,zn={assert:p,DateTimeBuilder:tt,DateTimeParseContext:nt,DateTimePrintContext:et,MathUtil:y,StringUtil:Y,StringBuilder:Wt},Tn={_:zn,convert:Sn,nativeJs:En,ArithmeticException:o,DateTimeException:r,DateTimeParseException:s,IllegalArgumentException:_,IllegalStateException:h,UnsupportedTemporalTypeException:u,NullPointerException:a,Clock:dn,DayOfWeek:M,Duration:x,Instant:vn,LocalDate:hn,LocalTime:cn,LocalDateTime:ln,OffsetTime:en,OffsetDateTime:un,Month:N,MonthDay:Gt,Period:P,Year:Xt,YearConstants:q,YearMonth:Kt,ZonedDateTime:sn,ZoneOffset:Q,ZoneId:G,ZoneRegion:Mt,ZoneOffsetTransition:gn,ZoneRules:K,ZoneRulesProvider:Dt,ChronoLocalDate:W,ChronoLocalDateTime:an,ChronoZonedDateTime:rn,IsoChronology:nn,ChronoField:O,ChronoUnit:S,IsoFields:rt,Temporal:V,TemporalAccessor:z,TemporalAdjuster:H,TemporalAdjusters:Jt,TemporalAmount:$,TemporalField:C,TemporalQueries:j,TemporalQuery:T,TemporalUnit:k,ValueRange:E,DateTimeFormatter:Yt,DateTimeFormatterBuilder:Ut,DecimalStyle:mt,ResolverStyle:U,SignStyle:gt,TextStyle:yt},An=(On=Tn,jn=[],function(t){return~jn.indexOf(t)||(t(On),jn.push(t)),On});Tn.use=An},453:function(t,n,i){var e,r,s;r=[n,i(135),i(675),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt,ct,ft,vt,dt,wt,pt,mt,gt,yt,bt,$t,kt,xt,qt,St,Ct,Et,Ot,jt,zt,Tt,At,It,Dt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht=Math.imul,Vt=n.Instant,Bt=n.Clock,Wt=n.Duration,Yt=n.LocalDate,Gt=n.LocalDateTime,Kt=n.LocalTime,Xt=n.ZoneOffset,Jt=n.ZoneId,Zt=n.ChronoField,Qt=n.DateTimeFormatterBuilder,tn=n.ResolverStyle,nn=i.$_$.mb,en=i.$_$.lb,rn=i.$_$.nb,sn=i.$_$.rb,un=i.$_$.t1,on=i.$_$.r1,_n=i.$_$.kb,hn=i.$_$.w9,an=i.$_$.s1,ln=i.$_$.p1,cn=i.$_$.u1,fn=i.$_$.jg,vn=i.$_$.ca,dn=i.$_$.f,wn=i.$_$.h2,pn=i.$_$.g2,mn=i.$_$.sg,gn=i.$_$.mg,yn=i.$_$.la,bn=i.$_$.r2,$n=i.$_$.a5,kn=i.$_$.jh,xn=i.$_$.pb,qn=i.$_$.bg,Sn=i.$_$.tg,Cn=i.$_$.rc,En=i.$_$.ka,On=i.$_$.qc,jn=i.$_$.gg,zn=i.$_$.na,Tn=i.$_$.z2,An=i.$_$.x1,In=i.$_$.wa,Dn=i.$_$.oa,Mn=i.$_$.l,Nn=i.$_$.ma,Rn=i.$_$.t7,Pn=i.$_$.j7,Ln=i.$_$.aa,Fn=i.$_$.k7,Un=i.$_$.fa,Hn=i.$_$.ia,Vn=i.$_$.sc,Bn=i.$_$.ph,Wn=i.$_$.ie,Yn=i.$_$.m,Gn=i.$_$.f7,Kn=i.$_$.s7,Xn=i.$_$.t6,Jn=i.$_$.z9,Zn=i.$_$.yd,Qn=i.$_$.ee,ti=i.$_$.w8,ni=i.$_$.y5,ii=i.$_$.q6,ei=i.$_$.xh,ri=i.$_$.j8,si=i.$_$.d5,ui=i.$_$.db,oi=i.$_$.if,_i=i.$_$.w7,hi=i.$_$.c8,ai=i.$_$.l8,li=i.$_$.a9,ci=i.$_$.ig,fi=i.$_$.n1,vi=i.$_$.e1,di=i.$_$.m7,wi=i.$_$.z7,pi=i.$_$.u8,mi=i.$_$.q5,gi=i.$_$.z6,yi=i.$_$.s6,bi=i.$_$.n4,$i=i.$_$.me,ki=i.$_$.n8,xi=i.$_$.ba,qi=i.$_$.v5,Si=i.$_$.ve,Ci=i.$_$.w5,Ei=i.$_$.da,Oi=i.$_$.f1,ji=i.$_$.je,zi=i.$_$.o2,Ti=i.$_$.dg,Ai=e.$_$.h,Ii=e.$_$.e1,Di=e.$_$.p2,Mi=e.$_$.c,Ni=i.$_$.s9,Ri=i.$_$.ib,Pi=i.$_$.hb,Li=i.$_$.s4,Fi=i.$_$.h,Ui=i.$_$.zf,Hi=i.$_$.g,Vi=i.$_$.q2,Bi=i.$_$.q1,Wi=i.$_$.u4,Yi=i.$_$.g1;function Gi(t,n){for(var i=Mn(t.length),e=0,r=t.length;e0))throw un(sn("A month name can not be empty"));var r=0;if(r0))throw un(sn("A day-of-week name can not be empty"));var r=0;if(r=0)){var s="The minimum number of digits ("+this.k3q_1+") is negative";throw un(sn(s))}if(!(null==this.l3q_1||null==this.k3q_1||this.l3q_1>=this.k3q_1)){var u="The maximum number of digits ("+this.l3q_1+") is less than the minimum number of digits ("+this.k3q_1+")";throw un(sn(u))}}function nu(t,n,i){if(this.v3q_1=t,this.w3q_1=n,this.x3q_1=i,this.y3q_1=this.v3q_1.t3u_1,!(this.w3q_1>=0)){var e="The minimum number of digits ("+this.w3q_1+") is negative";throw un(sn(e))}if(!(this.y3q_1>=this.w3q_1)){var r="The maximum number of digits ("+this.y3q_1+") is less than the minimum number of digits ("+this.w3q_1+")";throw un(sn(r))}if(null!=this.x3q_1&&!(this.x3q_1>this.w3q_1)){var s="The space padding ("+this.x3q_1+") should be more than the minimum number of digits ("+this.w3q_1+")";throw un(sn(s))}}function iu(t){this.u3u_1=t}function eu(t){var n=function(n){return e=n,r=(i=t).d3r_1.n3u_1.k3u(e),null==(s=Gn(i.e3r_1,r-i.d3r_1.o3u_1|0))?"The value "+r+" of "+i.d3r_1.q3u_1+" does not have a corresponding string representation":s;var i,e,r,s};return n.callableName="getStringValue",n}function ru(t,n,i){if(this.d3r_1=t,this.e3r_1=n,this.f3r_1=i,this.e3r_1.n()!==(1+(this.d3r_1.p3u_1-this.d3r_1.o3u_1|0)|0)){var e="The number of values ("+this.e3r_1.n()+") in "+this.e3r_1+" does not match the range of the field ("+(1+(this.d3r_1.p3u_1-this.d3r_1.o3u_1|0)|0)+")";throw un(sn(e))}}function su(t,n,i,e){this.g3t_1=t,this.h3t_1=n,this.i3t_1=i,this.j3t_1=e}function uu(t,n,i,e){n=n===dn?t.m3u():n,i=i===dn?null:i,e=e===dn?null:e,au.call(this),this.x3u_1=t,this.y3u_1=n,this.z3u_1=i,this.a3v_1=e}function ou(t){this.d3v_1=t}function _u(t,n,i,e,r,s){e=e===dn?t.m3u():e,r=r===dn?null:r,s=s===dn?null:s,au.call(this),this.n3u_1=t,this.o3u_1=n,this.p3u_1=i,this.q3u_1=e,this.r3u_1=r,this.s3u_1=s;var u;if(this.p3u_1<10)u=1;else if(this.p3u_1<100)u=2;else{if(!(this.p3u_1<1e3))throw un("Max value "+this.p3u_1+" is too large");u=3}this.t3u_1=u}function hu(){}function au(){}function lu(t){bu.call(this,t),this.n3p_1=nn(bu).p3q.call(this),this.o3p_1=nn(bu).p3p.call(this)}function cu(t){this.g3v_1=t}function fu(t){this.h3v_1=t}function vu(t,n){this.i3v_1=t,this.j3v_1=n;for(var i=ku(this.i3v_1),e=Yn(),r=i.v();r.w();){var s=r.y().o3q().c3v();null==s||e.s(s)}if(this.k3v_1=ti(e),this.k3v_1.d1())throw un(sn("Signed format must contain at least one field with a sign"))}function du(){}function wu(t,n){this.m3v_1=t,this.n3v_1=n}function pu(t){var n=function(n){return t.f3v(n)};return n.callableName="getter",n}function mu(t){var n=function(n){return t.s3v(n)};return n.callableName="test",n}function gu(t,n){this.o3v_1=t,this.p3v_1=n;for(var i=ku(this.p3v_1),e=Mn(ni(i,10)),r=i.v();r.w();){var s=r.y().o3q();e.s(s)}for(var u=ii(e),o=Mn(ni(u,10)),_=u.v();_.w();){var h=_.y(),a=Y.l3v(h);o.s(a)}this.q3v_1=o}function yu(t,n){this.t3v_1=t,this.u3v_1=n}function bu(t){this.q3p_1=t}function $u(){}function ku(t){var n=Yn();return xu(n,t),n.y2()}function xu(t,n){if(n instanceof cu)t.s(n.g3v_1);else if(n instanceof bu)for(var i=n.q3p_1.v();i.w();)xu(t,i.y());else if(!(n instanceof fu))if(n instanceof vu)xu(t,n.i3v_1);else if(n instanceof yu){xu(t,n.t3v_1);for(var e=n.u3v_1.v();e.w();)xu(t,e.y())}else n instanceof gu&&xu(t,n.p3v_1)}function qu(t,n){this.v3v_1=t,this.w3v_1=n}function Su(){}function Cu(t){this.x3v_1=t}function Eu(t,n){this.y3v_1=t,this.z3v_1=n}function Ou(t,n,i){this.a3w_1=t,this.b3w_1=n,this.c3w_1=i}function ju(t){this.d3w_1=t}function zu(t){this.e3w_1=t}function Tu(t,n,i){if(this.f3w_1=t,this.g3w_1=n,this.h3w_1=i,!(this.g3w_1>=0)){var e="The minimum number of digits ("+this.g3w_1+") is negative";throw un(sn(e))}if(!(this.g3w_1<=9)){var r="The minimum number of digits ("+this.g3w_1+") exceeds the length of an Int";throw un(sn(r))}}function Au(t,n){if(this.i3w_1=t,this.j3w_1=n,!(this.j3w_1>=0)){var i="The minimum number of digits ("+this.j3w_1+") is negative";throw un(sn(i))}if(!(this.j3w_1<=9)){var e="The minimum number of digits ("+this.j3w_1+") exceeds the length of an Int";throw un(sn(e))}}function Iu(t){this.k3w_1=t}function Du(t,n,i,e){this.l3w_1=t,this.m3w_1=n,this.n3w_1=i,this.o3w_1=e;var r=this.m3w_1;if(!(1<=r&&r<=9)){var s="The minimum number of digits ("+this.m3w_1+") is not in range 1..9";throw un(sn(s))}var u=this.m3w_1,o=this.n3w_1;if(!(u<=o&&o<=9)){var _="The maximum number of digits ("+this.n3w_1+") is not in range "+this.m3w_1+"..9";throw un(sn(_))}}function Mu(t){this.p3w_1=t}function Nu(t,n,i,e){if(Pu.call(this,t==n?t:null,e),this.s3w_1=t,this.t3w_1=n,this.u3w_1=i,null!=this.s3w_1&&!ui(1,9).ih(this.s3w_1)){var r="Invalid length for field "+this.w3w_1+": "+this.a();throw un(sn(r))}}function Ru(t){Pu.call(this,t.length,"the predefined string "+t),this.a3x_1=t}function Pu(t,n){this.v3w_1=t,this.w3w_1=n}function Lu(){}function Fu(t){this.c3x_1=t}function Uu(t){this.d3x_1=t}function Hu(t){this.e3x_1=t}function Vu(t){this.f3x_1=t}function Bu(t,n,i){var e=t.w3u(n,i);return null==e?null:new Vu(e)}function Wu(t,n,i,e,r){if(r=r!==dn&&r,Pu.call(this,t==n?t:null,e),this.i3x_1=t,this.j3x_1=n,this.k3x_1=i,this.l3x_1=r,null!=this.a()&&!ui(1,9).ih(this.a())){var s="Invalid length for field "+this.w3w_1+": "+this.a();throw un(sn(s))}}function Yu(t,n){this.m3x_1=t,this.n3x_1=n}function Gu(){}function Ku(t,n,i,e,r){return e=e===dn?0:e,r===dn?function(t,n,i,e){var r=Yn(),s=_i([new Xu(i,t,e)]);t:for(;;){var u=hi(s);if(null==u)break t;var o=u,_=o.q3x_1.m3m(),h=o.s3x_1,a=o.r3x_1;n:{new to(t).t3x_1;var l=0,c=a.u3x_1.n()-1|0;if(l<=c)do{var f=l;l=l+1|0;var v=a.u3x_1.h1(f).w3x(_,n,h);if("number"!=typeof v){if(v instanceof Yu){var d=v;r.s(d);break n}var w="Unexpected parse result: "+sn(v);throw An(sn(w))}h=v}while(l<=c);if(a.v3x_1.d1()){if(h===Ln(n))return _;var p=new Yu(h,Zu);r.s(p)}else{var m=a.v3x_1.n()-1|0;if(0<=m)do{var g=m;m=m+-1|0,s.s(new Xu(_,a.v3x_1.h1(g),h))}while(0<=m)}}}if(r.n()>1){var y=new Ju(Qu);ai(r,y)}throw new io(r)}(t,n,i,e):(null==r?null:new to(r)).x3x.call(new to(t),n,i,e)}function Xu(t,n,i){this.q3x_1=t,this.r3x_1=n,this.s3x_1=i}function Ju(t){this.y3x_1=t}function Zu(){return"There is more input to consume"}function Qu(t,n){var i=n.m3x_1,e=t.m3x_1;return li(i,e)}function to(t){this.t3x_1=t}function no(t,n){this.u3x_1=t,this.v3x_1=n}function io(t){fi(function(t){if(1===t.n())return"Position "+t.h1(0).m3x_1+": "+t.h1(0).n3x_1();var n=vi(Ht(33,t.n()));return di(t,n,", ","Errors: ",dn,dn,dn,uo).toString()}(t),this),hn(this,io)}function eo(t){var n=new no(Xn(),Xn());if(!t.d1())for(var i=t.u1(t.n());i.p1();)n=ro(i.q1(),n);return so(n,Xn())}function ro(t,n){var i;if(t.v3x_1.d1())i=new no(wi(t.u3x_1,n.u3x_1),n.v3x_1);else{for(var e=t.v3x_1,r=Mn(ni(e,10)),s=e.v();s.w();){var u=ro(s.y(),n);r.s(u)}i=new no(t.u3x_1,r)}return i}function so(t,n){for(var i=Yn(),e=null,r=pi(n),s=t.u3x_1.v();s.w();){var u=s.y();u instanceof po?null!=e?e.z(u.z3x_1):e=pi(u.z3x_1):u instanceof bo?r.s(u):(null!=e&&(i.s(new po(e)),e=null),i.s(u))}for(var o=t.v3x_1,_=Yn(),h=o.v();h.w();){var a,l=so(h.y(),r);if(l.u3x_1.d1()){var c=l.v3x_1;a=c.d1()?Kn(l):c}else a=Kn(l);mi(_,a)}var f,v=_.d1()?Kn(new no(r,Xn())):_;if(null==e)f=new no(i,v);else{var d;t:if(In(v,si)&&v.d1())d=!0;else{for(var w=v.v();w.w();){var p=w.y(),m=gi(p.u3x_1);if(!0===(null==m?null:m instanceof po)){d=!1;break t}}d=!0}if(d)i.s(new po(e)),f=new no(i,v);else{for(var g=Mn(ni(v,10)),y=v.v();y.w();){var b=y.y(),$=gi(b.u3x_1),k=new no($ instanceof po?wi(Kn(new po(wi(e,$.z3x_1))),yi(b.u3x_1,1)):null==$?Kn(new po(e)):wi(Kn(new po(e)),b.u3x_1),b.v3x_1);g.s(k)}f=new no(i,g)}}return f}function uo(t){return"position "+t.m3x_1+": '"+t.n3x_1()+"'"}function oo(t,n,i,e,r,s){var u=(null==t?1:t)+((s=s!==dn&&s)?1:0)|0,o=null==n?null:s?n+1|0:n,_=null==o?bi.MAX_VALUE:o,h=null==i?0:i,a=Math.min(_,h);if(u>=a)return $o(s,e,r,u,_);var l,c=$o(s,e,r,u,u),f=u;if(f_){var d=new go($i(" ",h-_|0));l=eo(Rn([new no(Kn(d),Xn()),c]))}else l=h===_?c:new no(Xn(),Rn([$o(s,e,r,h+1|0,_),c]));return l}function _o(t,n){t=t===dn?Yn():t,n=n!==dn&&n,this.c3y_1=t,this.d3y_1=n}function ho(t){this.e3y_1=t}function ao(t){for(var n=t.c3y_1.v();n.w();)ao(n.y().ve());for(var i=Yn(),e=t.c3y_1.v();e.w();){var r=e.y(),s=r.ue(),u=r.ve();if(u.d3y_1||1!==u.c3y_1.n())i.s(ei(s,u));else{var o=ri(u.c3y_1),_=o.ue(),h=o.ve();i.s(ei(s+_,h))}}t.c3y_1.b1();var a=new ho(co),l=ki(i,a);t.c3y_1.z(l)}function lo(t){return function(n){var i=n.se_1;return li(i,t)}}function co(t,n){var i=t.se_1,e=n.se_1;return li(i,e)}function fo(t,n,i){this.f3y_1=n,this.g3y_1=i,this.h3y_1=new _o;for(var e=t.v();e.w();){var r=e.y();if(!(Ln(r)>0)){var s="Found an empty string in "+this.g3y_1;throw un(sn(s))}for(var u=this.h3y_1,o=0,_=r.length;o<_;){var h=Jn(r,o);o=o+1|0;var a,l=u.c3y_1,c=Tn(h),f=l.n(),v=qi(l,0,f,lo(c));if(v<0){var d=new _o;u.c3y_1.r1((0|-v)-1|0,ei(Tn(h),d)),a=d}else a=u.c3y_1.h1(v).te_1;u=a}if(u.d3y_1)throw un(sn("The string '"+r+"' was passed several times"));u.d3y_1=!0}ao(this.h3y_1)}function vo(t){for(var n=t.z3x_1,i=Mn(ni(n,10)),e=n.v();e.w();){var r=e.y(),s=r.a(),u=(null==s?"at least one digit":s+" digits")+" for "+r.w3w_1;i.s(u)}var o=i;return t.b3y_1?"a number with at least "+t.a3y_1+" digits: "+o:"a number with exactly "+t.a3y_1+" digits: "+o}function wo(t,n,i,e){return function(){return"Can not interpret the string '"+t+"' as "+n.z3x_1.h1(i).w3w_1+": "+e.b3x()}}function po(t){this.z3x_1=t;for(var n=0,i=this.z3x_1.v();i.w();){var e=n,r=i.y().a();n=e+(null==r?1:r)|0}this.a3y_1=n;var s,u,o;t:{var _=this.z3x_1;if(In(_,si)&&_.d1())s=!1;else{for(var h=_.v();h.w();)if(null==h.y().a()){s=!0;break t}s=!1}}this.b3y_1=s;t:{var a=this.z3x_1;if(In(a,si)&&a.d1())u=!0;else{for(var l=a.v();l.w();){var c=l.y().a();if(!((null==c?bi.MAX_VALUE:c)>0)){u=!1;break t}}u=!0}}if(!u)throw un(sn("Failed requirement."));var f=this.z3x_1;if(In(f,si)&&f.d1())o=0;else{for(var v=0,d=f.v();d.w();)null==d.y().a()&&Ci(v=v+1|0);o=v}if(!(o<=1)){for(var w=this.z3x_1,p=Yn(),m=w.v();m.w();){var g=m.y();null==g.a()&&p.s(g)}for(var y=Mn(ni(p,10)),b=p.v();b.w();){var $=b.y().w3w_1;y.s($)}throw un(sn("At most one variable-length numeric field in a row is allowed, but got several: "+y+". Parsing is undefined: for example, with variable-length month number and variable-length day of month, '111' can be parsed as Jan 11th or Nov 1st."))}}function mo(t,n,i,e){return function(){var r=sn(xi(n,i,1+(i+e|0)|0));return"Expected "+t.i3y_1+" but got "+r}}function go(t){this.i3y_1=t;var n=this.i3y_1;if(!(Ln(n)>0))throw un(sn("Empty string is not allowed"));if(Zn(Jn(this.i3y_1,0))){var i="String '"+this.i3y_1+"' starts with a digit";throw un(sn(i))}if(Zn(Jn(this.i3y_1,this.i3y_1.length-1|0))){var e="String '"+this.i3y_1+"' ends with a digit";throw un(sn(e))}}function yo(t,n,i){this.j3y_1=t,this.k3y_1=n,this.l3y_1=i}function bo(t){this.m3y_1=t}function $o(t,n,i,e,r){if(!(r>=(1+(t?1:0)|0)))throw An(sn("Check failed."));var s=Yn();return t&&s.s(new go("-")),s.s(new po(Kn(new Wu(e-(t?1:0)|0,r-(t?1:0)|0,n,i,t)))),new no(s.y2(),Xn())}function ko(){return Z||(Z=!0,J=new Int32Array([1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9])),J}function xo(t,n){if(this.w3r_1=t,this.x3r_1=n,!(this.x3r_1>=0)){var i="Digits must be non-negative, but was "+this.x3r_1;throw un(sn(i))}}function qo(){Q=this,this.o3y_1=Ii("kotlinx.datetime.Instant",Ai())}function So(){tt=this,this.q3y_1=Ii("kotlinx.datetime.LocalDate",Ai())}function Co(){nt=this,this.u3y_1=Ii("kotlinx.datetime.LocalDateTime",Ai())}function Eo(){it=this,this.y3y_1=Ii("kotlinx.datetime.LocalTime",Ai())}function Oo(){et=this,this.c3z_1=Ii("kotlinx.datetime.UtcOffset",Ai())}function jo(){rt=this,this.f3z_1=Ii("kotlinx.datetime.TimeZone",Ai())}function zo(){st=this,this.i3z_1=Ii("kotlinx.datetime.FixedOffsetTimeZone",Ai())}function To(){if(ft)return $n;ft=!0,ut=new Ao("MONDAY",0),ot=new Ao("TUESDAY",1),_t=new Ao("WEDNESDAY",2),ht=new Ao("THURSDAY",3),at=new Ao("FRIDAY",4),lt=new Ao("SATURDAY",5),ct=new Ao("SUNDAY",6)}function Ao(t,n){jn.call(this,t,n)}function Io(t){return ke(t.value())}function Do(){return To(),ut}function Mo(){return To(),ot}function No(){return To(),_t}function Ro(){return To(),ht}function Po(){return To(),at}function Lo(){return To(),lt}function Fo(){return To(),ct}function Uo(){dt=this;var t=Vt.ofEpochSecond(s.f6(),999999999);this.i3k_1=new Vo(t);var n=Vt.ofEpochSecond(u.f6(),0);this.j3k_1=new Vo(n),this.k3k_1=new Vo(Vt.MIN),this.l3k_1=new Vo(Vt.MAX)}function Ho(){return null==dt&&new Uo,dt}function Vo(t){Ho(),this.e3o_1=t}function Bo(t){return W_(t,"DateTimeParseException")}function Wo(t){return W_(t,"DateTimeException")}function Yo(){wt=this,this.r3y_1=new Zo(Yt.MIN),this.s3y_1=new Zo(Yt.MAX)}function Go(){return null==wt&&new Yo,wt}function Ko(){pt=this,this.m3k_1=vr()}function Xo(){return null==pt&&new Ko,pt}function Jo(t,n,i){return function(t,n,i,e){var r;try{r=Yt.of(t,n,i)}catch(t){if(t instanceof Error){var s=t;if(Wo(s))throw Bi(s);throw s}throw t}return Zo.call(e,r),e}(t,n,i,_n(nn(Zo)))}function Zo(t){Go(),this.o3k_1=t}function Qo(t,n){return function(t,n,i){var e=Gt.of(t.o3k_1,n.a3o_1);return r_.call(i,e),i}(t,n,_n(nn(r_)))}function t_(){mt=this,this.v3y_1=new r_(Gt.MIN),this.w3y_1=new r_(Gt.MAX)}function n_(){return null==mt&&new t_,mt}function i_(){gt=this,this.s3k_1=Pr()}function e_(){return null==gt&&new i_,gt}function r_(t){n_(),this.t3z_1=t}function s_(t,n,i,e){return function(t,n,i,e,r){var s;i=i===dn?0:i,e=e===dn?0:e;try{s=Kt.of(t,n,i,e)}catch(t){if(t instanceof Error){var u=t;if(Wo(u))throw Bi(u);throw u}throw t}return h_.call(r,s),r}(t,n,i,e,_n(nn(h_)))}function u_(){yt=this,this.z3y_1=new h_(Kt.MIN),this.a3z_1=new h_(Kt.MAX)}function o_(){return null==yt&&new u_,yt}function __(){}function h_(t){o_(),this.a3o_1=t}function a_(){if(It)return $n;It=!0,$t=new l_("JANUARY",0),kt=new l_("FEBRUARY",1),xt=new l_("MARCH",2),qt=new l_("APRIL",3),St=new l_("MAY",4),Ct=new l_("JUNE",5),Et=new l_("JULY",6),Ot=new l_("AUGUST",7),jt=new l_("SEPTEMBER",8),zt=new l_("OCTOBER",9),Tt=new l_("NOVEMBER",10),At=new l_("DECEMBER",11)}function l_(t,n){jn.call(this,t,n)}function c_(){return a_(),$t}function f_(){return a_(),kt}function v_(){return a_(),xt}function d_(){return a_(),qt}function w_(){return a_(),St}function p_(){return a_(),Ct}function m_(){return a_(),Et}function g_(){return a_(),Ot}function y_(){return a_(),jt}function b_(){return a_(),zt}function $_(){return a_(),Tt}function k_(){return a_(),At}function x_(t,n){var i;if(n instanceof Xt)i=E_(new R_(n));else if(n.rules().isFixedOffset()){var e=n.normalized();i=new j_(new R_(e instanceof Xt?e:Sn()),n)}else i=new C_(n);return i}function q_(){Mt=this,this.g3z_1=E_(new R_(Xt.UTC))}function S_(){return null==Mt&&new q_,Mt}function C_(t){S_(),this.a40_1=t}function E_(t){return function(t,n){return j_.call(n,t,t.c3o_1),n}(t,_n(nn(j_)))}function O_(){}function j_(t,n){C_.call(this,n),this.c40_1=t}function z_(t,n){var i;try{i=new R_(t.a40_1.rules().offsetOfInstant(n.e3o_1))}catch(t){if(t instanceof Error){var e=t;if(function(t){return W_(t,"ArithmeticException")}(e))throw Ee(e);throw e}throw t}return i}function T_(){V_();var t=Nt;return En("isoFormat",0,Vn,(function(){return T_()}),null),t.j2()}function A_(){V_();var t=Rt;return En("isoBasicFormat",0,Vn,(function(){return A_()}),null),t.j2()}function I_(){V_();var t=Pt;return En("fourDigitsFormat",0,Vn,(function(){return I_()}),null),t.j2()}function D_(){Lt=this,this.d3z_1=new R_(Xt.UTC)}function M_(){return null==Lt&&new D_,Lt}function N_(){}function R_(t){M_(),this.c3o_1=t}function P_(t,n,i){var e;t=t===dn?null:t,n=n===dn?null:n,i=i===dn?null:i,V_();try{var r;if(null!=t){var s=null==n?0:n;r=new R_(Xt.ofHoursMinutesSeconds(t,s,null==i?0:i))}else if(null!=n){var u=n/60|0,o=n%60|0;r=new R_(Xt.ofHoursMinutesSeconds(u,o,null==i?0:i))}else r=new R_(Xt.ofTotalSeconds(null==i?0:i));e=r}catch(t){if(t instanceof Error){var _=t;throw Wo(_)?Bi(_):_}throw t}return e}function L_(t,n){var i;V_();try{i=n.parse(sn(t)).get(Zt.OFFSET_SECONDS)}catch(t){if(t instanceof Error){var e=t;if(Bo(e))throw qe(e);if(Wo(e))throw qe(e);throw e}throw t}return P_(dn,dn,i)}function F_(){return V_(),(new Qt).parseCaseInsensitive().appendOffsetId().toFormatter(tn.STRICT)}function U_(){return V_(),(new Qt).parseCaseInsensitive().appendOffset("+HHmmss","Z").toFormatter(tn.STRICT)}function H_(){return V_(),(new Qt).parseCaseInsensitive().appendOffset("+HHMM","+0000").toFormatter(tn.STRICT)}function V_(){Ut||(Ut=!0,Nt=Bn(F_),Rt=Bn(U_),Pt=Bn(H_))}function B_(t,n){var i=t.gb(n);if(t.sb(i).ca(new gn(0,0))<0&&t.sb(n).ca(new gn(0,0))>=0)throw Yi("Addition overflows a long: "+t.toString()+" + "+n.toString());return i}function W_(t,n){return t.name==n}return rn(be,"System",en),rn(Ce,"DateTimeFormatException",vn,fn,dn,(function t(){var n,i=(n=_n(nn(Ce)),on(n),Ce.call(n),n);return hn(i,t),i})),rn(Oe,"DateTimeArithmeticException",vn,mn,dn,(function t(){var n,i=(n=_n(nn(Oe)),wn(n),Oe.call(n),n);return hn(i,t),i})),rn(ze,"IllegalTimeZoneException",vn,fn,dn,(function t(){var n,i=(n=_n(nn(ze)),on(n),ze.call(n),n);return hn(i,t),i})),rn(Jr,"TimeFieldContainer",zn),rn($s,"UtcOffsetFieldContainer",zn),rn(Ie,"DateTimeComponentsContents",vn,dn,[Jr,$s]),rn(Ke,"Companion",en),rn(Xe,"Formats",en),rn(Je,"DateTimeComponents",vn),rn(cr,"AbstractDateTimeFormatBuilder",zn),rn(ur,"WithDate",zn),rn(Sr,"AbstractWithDateBuilder",zn,dn,[ur]),rn(or,"WithTime",zn),rn(es,"AbstractWithTimeBuilder",zn,dn,[or]),rn(Vr,"AbstractWithDateTimeBuilder",zn,dn,[Sr,es,or,ur]),rn(_r,"WithUtcOffset",zn),rn(zs,"AbstractWithOffsetBuilder",zn,dn,[_r]),rn(Ze,"Builder",vn,dn,[cr,Vr,zs,or,ur,_r]),rn(nr,"AbstractDateTimeFormat",vn),rn(Qe,"DateTimeComponentsFormat",vn,nr),rn(tr,"TwoDigitNumber",vn),rn(er,"Padding",vn,jn),rn(dr,"IncompleteLocalDate",vn,dn,dn,dr),rn(wr,"Companion",en),rn(mr,"MonthNames",vn),rn(gr,"Companion",en),rn(br,"DayOfWeekNames",vn),rn($r,"Companion",en),rn(kr,"Builder",vn,dn,[cr,Sr]),rn(xr,"LocalDateFormat",vn,nr),rn(tu,"SignedIntFieldFormatDirective",vn),rn(Cr,"YearDirective",vn,tu),rn(nu,"UnsignedIntFieldFormatDirective",vn),rn(Er,"MonthDirective",vn,nu),rn(ru,"NamedUnsignedIntFieldFormatDirective",vn),rn(Or,"MonthNameDirective",vn,ru),rn(jr,"DayDirective",vn,nu),rn(zr,"DayOfWeekDirective",vn,ru),rn(Tr,"DateFields",en),rn(Lr,"Companion",en),rn(Fr,"Builder",vn,dn,[cr,Vr]),rn(Ur,"LocalDateTimeFormat",vn,nr),rn(Hr,"IncompleteLocalDateTime",vn,dn,[Jr],Hr),rn(Zr,"IncompleteLocalTime",vn,dn,[Jr],Zr),rn(Qr,"AmPmMarker",vn,jn),rn(ts,"Companion",en),rn(ns,"Builder",vn,dn,[cr,es]),rn(is,"LocalTimeFormat",vn,nr),rn(rs,"HourDirective",vn,nu),rn(ss,"MinuteDirective",vn,nu),rn(us,"SecondDirective",vn,nu),rn(os,"Companion",en),rn(su,"DecimalFractionFieldFormatDirective",vn),rn(hs,"FractionalSecondDirective",vn,su),rn(as,"TimeFields",en),rn(ks,"IncompleteUtcOffset",vn,dn,[$s],ks),rn(xs,"UtcOffsetWholeHoursDirective",vn,nu),rn(qs,"Companion",en),rn(Ss,"Builder",vn,dn,[cr,zs]),rn(Cs,"UtcOffsetFormat",vn,nr),rn(Es,dn,vn),rn(Os,"OffsetFields",en),rn(Ts,"UtcOffsetMinuteOfHourDirective",vn,nu),rn(As,"UtcOffsetSecondOfMinuteDirective",vn,nu),rn(Qs,"AppendableFormatStructure",vn,dn,dn,Qs),rn(iu,"AssignableString",vn),rn(au,"AbstractFieldSpec",vn),rn(uu,"GenericFieldSpec",vn,au),rn(hu,"Accessor",zn),rn(ou,"PropertyAccessor",vn,dn,[hu]),rn(_u,"UnsignedFieldSpec",vn,au),rn(bu,"ConcatenatedFormatStructure",vn),rn(lu,"CachedFormatStructure",vn,bu),rn($u,"NonConcatenatedFormatStructure",zn),rn(cu,"BasicFormatStructure",vn,dn,[$u]),rn(fu,"ConstantFormatStructure",vn,dn,[$u]),rn(vu,"SignedFormatStructure",vn,dn,[$u]),rn(du,"Companion",en),rn(wu,"PropertyWithDefault",vn),rn(gu,"OptionalFormatStructure",vn,dn,[$u]),rn(yu,"AlternativesParsingFormatStructure",vn,dn,[$u]),rn(qu,"ComparisonPredicate",vn),rn(Su,"Truth",en),rn(Cu,"ConjunctionPredicate",vn),rn(Eu,"SpacePaddedFormatter",vn),rn(Ou,"SignedFormatter",vn),rn(ju,"ConditionalFormatter",vn),rn(zu,"ConcatenatedFormatter",vn),rn(Tu,"SignedIntFormatterStructure",vn),rn(Au,"UnsignedIntFormatterStructure",vn),rn(Iu,"StringFormatterStructure",vn),rn(Du,"DecimalFractionFormatterStructure",vn),rn(Mu,"ConstantStringFormatterStructure",vn),rn(Pu,"NumberConsumer",vn),rn(Nu,"FractionPartConsumer",vn,Pu),rn(Ru,"ConstantNumberConsumer",vn,Pu),rn(Lu,"ExpectedInt",en),rn(Fu,"TooManyDigits",vn),rn(Uu,"TooFewDigits",vn),rn(Hu,"WrongConstant",vn),rn(Vu,"Conflicting",vn),rn(Wu,"UnsignedIntConsumer",vn,Pu),rn(Yu,"ParseError",vn),rn(Gu,"Companion",en),rn(Xu,"ParserState",vn),rn(Ju,"sam$kotlin_Comparator$0",vn),rn(to,"Parser",vn),rn(no,"ParserStructure",vn),rn(io,"ParseException",vn,ci),rn(_o,"TrieNode",vn,dn,dn,_o),rn(ho,"sam$kotlin_Comparator$0",vn),rn(fo,"StringSetParserOperation",vn),rn(po,"NumberSpanParserOperation",vn),rn(go,"PlainStringParserOperation",vn),rn(yo,"SignParser",vn),rn(bo,"UnconditionalModification",vn),rn(xo,"DecimalFraction",vn,dn,[Ti]),rn(qo,"InstantIso8601Serializer",en,dn,[Di]),rn(So,"LocalDateIso8601Serializer",en,dn,[Di]),rn(Co,"LocalDateTimeIso8601Serializer",en,dn,[Di]),rn(Eo,"LocalTimeIso8601Serializer",en,dn,[Di]),rn(Oo,"UtcOffsetSerializer",en,dn,[Di]),rn(jo,"TimeZoneSerializer",en,dn,[Di]),rn(zo,"FixedOffsetTimeZoneSerializer",en,dn,[Di]),rn(Ao,"DayOfWeek",vn,jn),rn(Uo,"Companion",en),rn(Vo,"Instant",vn,dn,[Ti],dn,dn,{0:function(){return null==Q&&new qo,Q}}),rn(Yo,"Companion",en),rn(Ko,"Formats",en),rn(Zo,"LocalDate",vn,dn,[Ti],dn,dn,{0:function(){return null==tt&&new So,tt}}),rn(t_,"Companion",en),rn(i_,"Formats",en),rn(r_,"LocalDateTime",vn,dn,[Ti],dn,dn,{0:function(){return null==nt&&new Co,nt}}),rn(u_,"Companion",en),rn(__,"Formats",en),rn(h_,"LocalTime",vn,dn,[Ti],dn,dn,{0:function(){return null==it&&new Eo,it}}),rn(l_,"Month",vn,jn),rn(q_,"Companion",en),rn(C_,"TimeZone",vn,dn,dn,dn,dn,{0:function(){return null==rt&&new jo,rt}}),rn(O_,"Companion",en),rn(j_,"FixedOffsetTimeZone",vn,C_,dn,dn,dn,{0:function(){return null==st&&new zo,st}}),rn(D_,"Companion",en),rn(N_,"Formats",en),rn(R_,"UtcOffset",vn,dn,dn,dn,dn,{0:function(){return null==et&&new Oo,et}}),nn(be).h3k=function(){return Ho().h3k()},nn(Ie).x3k=function(t){this.t3k_1.a3l_1=t},nn(Ie).r3k=function(){return this.t3k_1.a3l_1},nn(Ie).c3l=function(t){this.t3k_1.b3l_1=t},nn(Ie).d3l=function(){return this.t3k_1.b3l_1},nn(Ie).e3l=function(t){this.t3k_1.z3k_1=t},nn(Ie).q3k=function(){return this.t3k_1.z3k_1},nn(Ie).f3l=function(t){this.t3k_1.y3k_1=t},nn(Ie).p3k=function(){return this.t3k_1.y3k_1},nn(Ie).g3l=function(t){this.u3k_1.j3l_1=t},nn(Ie).n3l=function(){return this.u3k_1.j3l_1},nn(Ie).o3l=function(t){this.u3k_1.o3l(t)},nn(Ie).p3l=function(){return this.u3k_1.p3l()},nn(Ie).q3l=function(t){this.u3k_1.h3l_1=t},nn(Ie).r3l=function(){return this.u3k_1.h3l_1},nn(Ie).s3l=function(t){this.u3k_1.i3l_1=t},nn(Ie).t3l=function(){return this.u3k_1.i3l_1},nn(Ie).u3l=function(t){this.u3k_1.k3l_1=t},nn(Ie).v3l=function(){return this.u3k_1.k3l_1},nn(Ie).w3l=function(t){this.u3k_1.m3l_1=t},nn(Ie).x3l=function(){return this.u3k_1.m3l_1},nn(Ie).y3l=function(t){this.u3k_1.l3l_1=t},nn(Ie).z3l=function(){return this.u3k_1.l3l_1},nn(Ie).a3m=function(t){this.v3k_1.b3m_1=t},nn(Ie).f3m=function(){return this.v3k_1.b3m_1},nn(Ie).g3m=function(t){this.v3k_1.d3m_1=t},nn(Ie).h3m=function(){return this.v3k_1.d3m_1},nn(Ie).i3m=function(t){this.v3k_1.e3m_1=t},nn(Ie).j3m=function(){return this.v3k_1.e3m_1},nn(Ie).k3m=function(t){this.v3k_1.c3m_1=t},nn(Ie).l3m=function(){return this.v3k_1.c3m_1},nn(Ie).m3m=function(){return new Ie(this.t3k_1.m3m(),this.u3k_1.m3m(),this.v3k_1.m3m(),this.w3k_1)},nn(Ie).equals=function(t){return!!(t instanceof Ie&&t.t3k_1.equals(this.t3k_1)&&t.u3k_1.equals(this.u3k_1)&&t.v3k_1.equals(this.v3k_1))&&t.w3k_1==this.w3k_1},nn(Ie).hashCode=function(){var t=this.t3k_1.hashCode()^this.u3k_1.hashCode()^this.v3k_1.hashCode(),n=this.w3k_1,i=null==n?null:yn(n);return t^(null==i?0:i)},nn(Ke).e3n=function(t){var n=new Ze(new Qs);return t(n),new Qe(n.y2())},nn(Je).f3l=function(t){var n=this.i3n_1;return En("year",1,Cn,(function(t){return t.p3k()}),(function(t,n){return t.f3l(n)})),n.set(t),$n},nn(Je).p3k=function(){var t=this.i3n_1;return En("year",1,Cn,(function(t){return t.p3k()}),(function(t,n){return t.f3l(n)})),t.get()},nn(Je).x3l=function(){return this.h3n_1.u3k_1.m3l_1},nn(Je).v3n=function(){return this.h3n_1.v3k_1.v3n()},nn(Je).w3n=function(){return this.h3n_1.u3k_1.w3n()},nn(Je).x3n=function(){var t,n=this.v3n(),i=this.w3n(),e=this.h3n_1.t3k_1.m3m();e.y3k_1=qr(e.y3k_1,"year")%1e4|0;try{var r=function(t,n){if(n.equals(new gn(-1,-1))){if(Wi(),t.equals(new gn(0,-2147483648)))throw Yi("Multiplication overflows a long: "+t.toString()+" * "+n.toString());return t.lb()}if(n.equals(new gn(0,0)))return new gn(0,0);if(n.equals(new gn(1,0)))return t;var i=t.ba(n);if(!i.aa(n).equals(t))throw Yi("Multiplication overflows a long: "+t.toString()+" * "+n.toString());return i}(xn(kn(this.p3k())/1e4|0),H),s=xn(e.y3n().z3n()),u=V,o=s.ba(xn(u)),_=i.b3o(),h=o.gb(xn(_)),a=n.d3o();t=B_(r,h.hb(xn(a)))}catch(t){if(t instanceof qn)throw Se("The parsed date is outside the range representable by Instant",t);throw t}var l=t;if(l.ca(Ho().k3k_1.f3o())<0||l.ca(Ho().l3k_1.f3o())>0)throw xe("The parsed date is outside the range representable by Instant");var c=Ho(),f=this.x3l();return c.g3o(l,null==f?0:f)},nn(Ze).i3o=function(){return this.h3o_1},nn(Ze).j3o=function(t){this.h3o_1.l3o(t)},nn(Ze).m3o=function(t){this.h3o_1.l3o(t)},nn(Ze).n3o=function(){return new Ze(new Qs)},nn(Qe).g3p=function(){return this.f3p_1},nn(Qe).h3p=function(t){return new Je(t)},nn(Qe).i3p=function(t){return this.h3p(t instanceof Ie?t:Sn())},nn(Qe).j3p=function(){return Ae()},nn(nr).k3p=function(t){var n;try{n=Ku(this.g3p().p3p(),t,this.j3p())}catch(n){if(n instanceof io)throw Se("Failed to parse value from '"+t+"'",n);throw n}var i=n;try{return this.i3p(i)}catch(n){if(n instanceof fn){var e=n,r=e.message;throw Se(null==r?"The value parsed from '"+t+"' is invalid":r+" (when parsing '"+t+"')",e)}throw n}},nn(dr).f3l=function(t){this.y3k_1=t},nn(dr).p3k=function(){return this.y3k_1},nn(dr).e3l=function(t){this.z3k_1=t},nn(dr).q3k=function(){return this.z3k_1},nn(dr).x3k=function(t){this.a3l_1=t},nn(dr).r3k=function(){return this.a3l_1},nn(dr).c3l=function(t){this.b3l_1=t},nn(dr).d3l=function(){return this.b3l_1},nn(dr).y3n=function(){var t=Jo(qr(this.y3k_1,"year"),qr(this.z3k_1,"monthNumber"),qr(this.a3l_1,"dayOfMonth")),n=this.b3l_1;if(null==n);else if(n!==$e(t.r3p()))throw xe("Can not create a LocalDate from the given input: the day of week is "+ke(n)+" but the date is "+t+", which is a "+t.r3p());return t},nn(dr).m3m=function(){return new dr(this.y3k_1,this.z3k_1,this.a3l_1,this.b3l_1)},nn(dr).equals=function(t){return!!(t instanceof dr&&this.y3k_1==t.y3k_1&&this.z3k_1==t.z3k_1&&this.a3l_1==t.a3l_1)&&this.b3l_1==t.b3l_1},nn(dr).hashCode=function(){var t=this.y3k_1,n=null==t?null:Nn(t),i=Ht(null==n?0:n,31),e=this.z3k_1,r=null==e?null:Nn(e),s=i+Ht(null==r?0:r,31)|0,u=this.a3l_1,o=null==u?null:Nn(u),_=s+Ht(null==o?0:o,31)|0,h=this.b3l_1,a=null==h?null:Nn(h);return _+Ht(null==a?0:a,31)|0},nn(dr).toString=function(){var t=this.y3k_1,n=sn(null==t?"??":t),i=this.z3k_1,e=sn(null==i?"??":i),r=this.a3l_1,s=sn(null==r?"??":r),u=this.b3l_1;return n+"-"+e+"-"+s+" (day of week is "+sn(null==u?"??":u)+")"},nn(mr).toString=function(){return Fn(this.s3p_1,", ","MonthNames(",")",dn,dn,((t=function(t){return sn(t)}).callableName="toString",t));var t},nn(mr).equals=function(t){return t instanceof mr&&Un(this.s3p_1,t.s3p_1)},nn(mr).hashCode=function(){return Nn(this.s3p_1)},nn(br).toString=function(){return Fn(this.t3p_1,", ","DayOfWeekNames(",")",dn,dn,((t=function(t){return sn(t)}).callableName="toString",t));var t},nn(br).equals=function(t){return t instanceof br&&Un(this.t3p_1,t.t3p_1)},nn(br).hashCode=function(){return Nn(this.t3p_1)},nn($r).u3p=function(t){var n=new kr(new Qs);return t(n),new xr(n.y2())},nn(kr).i3o=function(){return this.v3p_1},nn(kr).q3o=function(t){return this.v3p_1.l3o(t)},nn(kr).n3o=function(){return new kr(new Qs)},nn(xr).g3p=function(){return this.w3p_1},nn(xr).x3p=function(t){return t.y3n()},nn(xr).i3p=function(t){return this.x3p(t instanceof dr?t:Sn())},nn(xr).j3p=function(){return Rr(),p},nn(Cr).equals=function(t){return!!(t instanceof Cr&&this.h3q_1.equals(t.h3q_1))&&this.i3q_1===t.i3q_1},nn(Cr).hashCode=function(){return Ht(this.h3q_1.hashCode(),31)+Hn(this.i3q_1)|0},nn(Er).equals=function(t){return t instanceof Er&&this.u3q_1.equals(t.u3q_1)},nn(Er).hashCode=function(){return this.u3q_1.hashCode()},nn(Or).equals=function(t){return t instanceof Or&&Un(this.c3r_1.s3p_1,t.c3r_1.s3p_1)},nn(Or).hashCode=function(){return Nn(this.c3r_1.s3p_1)},nn(jr).equals=function(t){return t instanceof jr&&this.k3r_1.equals(t.k3r_1)},nn(jr).hashCode=function(){return this.k3r_1.hashCode()},nn(zr).equals=function(t){return t instanceof zr&&Un(this.o3r_1.t3p_1,t.o3r_1.t3p_1)},nn(zr).hashCode=function(){return Nn(this.o3r_1.t3p_1)},nn(Lr).p3r=function(t){var n=new Fr(new Qs);return t(n),new Ur(n.y2())},nn(Fr).i3o=function(){return this.q3r_1},nn(Fr).j3o=function(t){this.q3r_1.l3o(t)},nn(Fr).n3o=function(){return new Fr(new Qs)},nn(Ur).g3p=function(){return this.r3r_1},nn(Ur).s3r=function(t){return t.v3r()},nn(Ur).i3p=function(t){return this.s3r(t instanceof Hr?t:Sn())},nn(Ur).j3p=function(){return Kr(),x},nn(Hr).x3k=function(t){this.t3r_1.a3l_1=t},nn(Hr).r3k=function(){return this.t3r_1.a3l_1},nn(Hr).c3l=function(t){this.t3r_1.b3l_1=t},nn(Hr).d3l=function(){return this.t3r_1.b3l_1},nn(Hr).e3l=function(t){this.t3r_1.z3k_1=t},nn(Hr).q3k=function(){return this.t3r_1.z3k_1},nn(Hr).f3l=function(t){this.t3r_1.y3k_1=t},nn(Hr).p3k=function(){return this.t3r_1.y3k_1},nn(Hr).g3l=function(t){this.u3r_1.j3l_1=t},nn(Hr).n3l=function(){return this.u3r_1.j3l_1},nn(Hr).o3l=function(t){this.u3r_1.o3l(t)},nn(Hr).p3l=function(){return this.u3r_1.p3l()},nn(Hr).q3l=function(t){this.u3r_1.h3l_1=t},nn(Hr).r3l=function(){return this.u3r_1.h3l_1},nn(Hr).s3l=function(t){this.u3r_1.i3l_1=t},nn(Hr).t3l=function(){return this.u3r_1.i3l_1},nn(Hr).u3l=function(t){this.u3r_1.k3l_1=t},nn(Hr).v3l=function(){return this.u3r_1.k3l_1},nn(Hr).w3l=function(t){this.u3r_1.m3l_1=t},nn(Hr).x3l=function(){return this.u3r_1.m3l_1},nn(Hr).y3l=function(t){this.u3r_1.l3l_1=t},nn(Hr).z3l=function(){return this.u3r_1.l3l_1},nn(Hr).v3r=function(){return Qo(this.t3r_1.y3n(),this.u3r_1.w3n())},nn(Hr).m3m=function(){return new Hr(this.t3r_1.m3m(),this.u3r_1.m3m())},nn(Zr).q3l=function(t){this.h3l_1=t},nn(Zr).r3l=function(){return this.h3l_1},nn(Zr).s3l=function(t){this.i3l_1=t},nn(Zr).t3l=function(){return this.i3l_1},nn(Zr).g3l=function(t){this.j3l_1=t},nn(Zr).n3l=function(){return this.j3l_1},nn(Zr).u3l=function(t){this.k3l_1=t},nn(Zr).v3l=function(){return this.k3l_1},nn(Zr).y3l=function(t){this.l3l_1=t},nn(Zr).z3l=function(){return this.l3l_1},nn(Zr).w3l=function(t){this.m3l_1=t},nn(Zr).x3l=function(){return this.m3l_1},nn(Zr).w3n=function(){var t,n=this.h3l_1;if(null==n)t=null;else{var i=this.i3l_1;if(null==i);else if((1+((n+11|0)%12|0)|0)!==i)throw un(sn("Inconsistent hour and hour-of-am-pm: hour is "+n+", but hour-of-am-pm is "+i));var e=this.j3l_1;if(null==e);else if(e.equals(ps())!==n>=12)throw un(sn("Inconsistent hour and the AM/PM marker: hour is "+n+", but the AM/PM marker is "+e));t=n}var r,s=t;if(null==s){var u,o=this.i3l_1;if(null==o)u=null;else{var _=this.j3l_1;u=null==_?null:(12===o?0:o)+(_.equals(ps())?12:0)|0}r=u}else r=s;var h=r;if(null==h)throw xe("Incomplete time: missing hour");var a=h,l=qr(this.k3l_1,"minute"),c=this.l3l_1,f=null==c?0:c,v=this.m3l_1;return s_(a,l,f,null==v?0:v)},nn(Zr).m3m=function(){return new Zr(this.h3l_1,this.i3l_1,this.j3l_1,this.k3l_1,this.l3l_1,this.m3l_1)},nn(Zr).equals=function(t){return!!(t instanceof Zr&&this.h3l_1==t.h3l_1&&this.i3l_1==t.i3l_1&&Un(this.j3l_1,t.j3l_1)&&this.k3l_1==t.k3l_1&&this.l3l_1==t.l3l_1)&&this.m3l_1==t.m3l_1},nn(Zr).hashCode=function(){var t=this.h3l_1,n=Ht(null==t?0:t,31),i=this.i3l_1,e=n+Ht(null==i?0:i,31)|0,r=this.j3l_1,s=null==r?null:r.hashCode(),u=e+Ht(null==s?0:s,31)|0,o=this.k3l_1,_=u+Ht(null==o?0:o,31)|0,h=this.l3l_1,a=_+Ht(null==h?0:h,31)|0,l=this.m3l_1;return a+(null==l?0:l)|0},nn(Zr).toString=function(){var t,n=this.h3l_1,i=sn(null==n?"??":n),e=this.k3l_1,r=sn(null==e?"??":e),s=this.l3l_1,u=sn(null==s?"??":s),o=this.m3l_1;if(null==o)t=null;else{var _=o.toString();t=Wn(_,9-_.length|0,bn(48))}return i+":"+r+":"+u+"."+(null==t?"???":t)},nn(ts).z3r=function(t){var n=new ns(new Qs);return t(n),new is(n.y2())},nn(ns).i3o=function(){return this.a3s_1},nn(ns).r3o=function(t){this.a3s_1.l3o(t)},nn(ns).n3o=function(){return new ns(new Qs)},nn(is).g3p=function(){return this.b3s_1},nn(is).c3s=function(t){return t.w3n()},nn(is).i3p=function(t){return this.c3s(t instanceof Zr?t:Sn())},nn(is).j3p=function(){return ms(),E},nn(rs).equals=function(t){return t instanceof rs&&this.n3s_1.equals(t.n3s_1)},nn(rs).hashCode=function(){return this.n3s_1.hashCode()},nn(ss).equals=function(t){return t instanceof ss&&this.s3s_1.equals(t.s3s_1)},nn(ss).hashCode=function(){return this.s3s_1.hashCode()},nn(us).equals=function(t){return t instanceof us&&this.x3s_1.equals(t.x3s_1)},nn(us).hashCode=function(){return this.x3s_1.hashCode()},nn(hs).equals=function(t){return!!(t instanceof hs&&this.e3t_1===t.e3t_1)&&this.f3t_1===t.f3t_1},nn(hs).hashCode=function(){return Ht(31,this.e3t_1)+this.f3t_1|0},nn(ks).a3m=function(t){this.b3m_1=t},nn(ks).f3m=function(){return this.b3m_1},nn(ks).k3m=function(t){this.c3m_1=t},nn(ks).l3m=function(){return this.c3m_1},nn(ks).g3m=function(t){this.d3m_1=t},nn(ks).h3m=function(){return this.d3m_1},nn(ks).i3m=function(t){this.e3m_1=t},nn(ks).j3m=function(){return this.e3m_1},nn(ks).v3n=function(){var t=!0===this.b3m_1?-1:1,n=this.c3m_1,i=null==n?null:Ht(n,t),e=this.d3m_1,r=null==e?null:Ht(e,t),s=this.e3m_1;return P_(i,r,null==s?null:Ht(s,t))},nn(ks).equals=function(t){return!!(t instanceof ks&&this.b3m_1==t.b3m_1&&this.c3m_1==t.c3m_1&&this.d3m_1==t.d3m_1)&&this.e3m_1==t.e3m_1},nn(ks).hashCode=function(){var t=this.b3m_1,n=null==t?null:Nn(t),i=null==n?0:n,e=this.c3m_1,r=null==e?null:Nn(e),s=i+(null==r?0:r)|0,u=this.d3m_1,o=null==u?null:Nn(u),_=s+(null==o?0:o)|0,h=this.e3m_1,a=null==h?null:Nn(h);return _+(null==a?0:a)|0},nn(ks).m3m=function(){return new ks(this.b3m_1,this.c3m_1,this.d3m_1,this.e3m_1)},nn(ks).toString=function(){var t,n=this.b3m_1,i=null==(t=null==n?null:n?"-":"+")?" ":t,e=this.c3m_1,r=sn(null==e?"??":e),s=this.d3m_1,u=sn(null==s?"??":s),o=this.e3m_1;return i+r+":"+u+":"+sn(null==o?"??":o)},nn(xs).equals=function(t){return t instanceof xs&&this.s3t_1.equals(t.s3t_1)},nn(xs).hashCode=function(){return this.s3t_1.hashCode()},nn(qs).t3t=function(t){var n=new Ss(new Qs);return t(n),new Cs(n.y2())},nn(Ss).i3o=function(){return this.u3t_1},nn(Ss).m3o=function(t){this.u3t_1.l3o(t)},nn(Ss).n3o=function(){return new Ss(new Qs)},nn(Cs).g3p=function(){return this.v3t_1},nn(Cs).w3t=function(t){return t.v3n()},nn(Cs).i3p=function(t){return this.w3t(t instanceof ks?t:Sn())},nn(Cs).j3p=function(){return Ks(),R},nn(Es).f3m=function(){return this.x3t_1},nn(Es).y3t=function(t){var n,i,e=t.l3m();if(0===(null==e?0:e)){var r=t.h3m();i=0===(null==r?0:r)}else i=!1;if(i){var s=t.j3m();n=0===(null==s?0:s)}else n=!1;return n},nn(Es).z3t=function(t){return this.y3t(null!=t&&In(t,$s)?t:Sn())},nn(Ts).equals=function(t){return t instanceof Ts&&this.e3u_1.equals(t.e3u_1)},nn(Ts).hashCode=function(){return this.e3u_1.hashCode()},nn(As).equals=function(t){return t instanceof As&&this.j3u_1.equals(t.j3u_1)},nn(As).hashCode=function(){return this.j3u_1.hashCode()},nn(Qs).y2=function(){return new bu(this.k3o_1)},nn(Qs).l3o=function(t){if(In(t,$u))this.k3o_1.s(t);else if(t instanceof bu)for(var n=t.q3p_1.v();n.w();){var i=n.y();this.k3o_1.s(i)}},nn(tu).o3q=function(){return this.j3q_1},nn(tu).p3q=function(){var t,n,i=(t=this.j3q_1.l3u(),(n=function(n){return t.k3u(n)}).callableName="getterNotNull",n),e=this.k3q_1,r=new Tu(i,null==e?0:e,this.n3q_1);return null!=this.m3q_1?new Eu(r,this.m3q_1):r},nn(tu).p3p=function(){return function(t,n,i,e,r,s){var u=_i([oo(t,n,i,e,r,!0)]);return null!=s?(u.s(oo(t,s,i,e,r)),u.s(new no(Rn([new go("+"),new po(Kn(new Wu(s+1|0,n,e,r,!1)))]),Xn()))):u.s(oo(t,n,i,e,r)),new no(Xn(),u)}(this.k3q_1,this.l3q_1,this.m3q_1,this.j3q_1.l3u(),this.j3q_1.m3u(),this.n3q_1)},nn(nu).o3q=function(){return this.v3q_1},nn(nu).p3q=function(){var t,n,i=new Au((t=this.v3q_1.n3u_1,(n=function(n){return t.k3u(n)}).callableName="getterNotNull",n),this.w3q_1);return null!=this.x3q_1?new Eu(i,this.x3q_1):i},nn(nu).p3p=function(){return oo(this.w3q_1,this.y3q_1,this.x3q_1,this.v3q_1.n3u_1,this.v3q_1.q3u_1)},nn(iu).v3u=function(t,n){var i=this.u3u_1.d3r_1.n3u_1.w3u(t,this.u3u_1.e3r_1.t1(n)+this.u3u_1.d3r_1.o3u_1|0);return null==i?null:this.u3u_1.e3r_1.h1(i-this.u3u_1.d3r_1.o3u_1|0)},nn(iu).w3u=function(t,n){var i=null==t||null!=t?t:Sn();return this.v3u(i,null!=n&&"string"==typeof n?n:Sn())},nn(iu).m3u=function(){return this.u3u_1.f3r_1},nn(ru).o3q=function(){return this.d3r_1},nn(ru).p3q=function(){return new Iu(eu(this))},nn(ru).p3p=function(){return new no(Kn(new fo(this.e3r_1,new iu(this),"one of "+this.e3r_1+" for "+this.f3r_1)),Xn())},nn(su).o3q=function(){return this.g3t_1},nn(su).p3q=function(){return new Du((t=this.g3t_1.l3u(),(n=function(n){return t.k3u(n)}).callableName="getterNotNull",n),this.h3t_1,this.i3t_1,this.j3t_1);var t,n},nn(su).p3p=function(){return new no(Kn(new po(Kn(new Nu(this.h3t_1,this.i3t_1,this.g3t_1.l3u(),this.g3t_1.m3u())))),Xn())},nn(uu).l3u=function(){return this.x3u_1},nn(uu).m3u=function(){return this.y3u_1},nn(uu).b3v=function(){return this.z3u_1},nn(uu).c3v=function(){return this.a3v_1},nn(ou).m3u=function(){return this.d3v_1.callableName},nn(ou).e3v=function(t,n){var i,e=this.d3v_1.get(t);return null===e?(this.d3v_1.set(t,n),i=null):i=Un(e,n)?null:e,i},nn(ou).w3u=function(t,n){var i=null==t||null!=t?t:Sn();return this.e3v(i,null==n||null!=n?n:Sn())},nn(ou).f3v=function(t){return this.d3v_1.get(t)},nn(_u).l3u=function(){return this.n3u_1},nn(_u).m3u=function(){return this.q3u_1},nn(_u).b3v=function(){return this.r3u_1},nn(_u).c3v=function(){return this.s3u_1},nn(au).toString=function(){return"The field "+this.m3u()+" (default value is "+this.b3v()+")"},nn(lu).p3q=function(){return this.n3p_1},nn(lu).p3p=function(){return this.o3p_1},nn(cu).toString=function(){return"BasicFormatStructure("+this.g3v_1+")"},nn(cu).equals=function(t){return t instanceof cu&&Un(this.g3v_1,t.g3v_1)},nn(cu).hashCode=function(){return Nn(this.g3v_1)},nn(cu).p3p=function(){return this.g3v_1.p3p()},nn(cu).p3q=function(){return this.g3v_1.p3q()},nn(fu).toString=function(){return"ConstantFormatStructure("+this.h3v_1+")"},nn(fu).equals=function(t){return t instanceof fu&&this.h3v_1===t.h3v_1},nn(fu).hashCode=function(){return yn(this.h3v_1)},nn(fu).p3p=function(){var t,n=this.h3v_1;if(0===Ln(n))t=Xn();else{var i,e=Yn();if(Zn(Jn(this.h3v_1,0))){var r,s;t:{var u=this.h3v_1,o=0,_=u.length;if(o<_)do{var h=o;o=o+1|0;var a=Jn(u,h);if(!Zn(a)){r=u.substring(0,h);break t}}while(o<_);r=u}e.s(new po(Kn(new Ru(r))));t:{var l=this.h3v_1,c=0,f=Ln(l)-1|0;if(c<=f)do{var v=c;c=c+1|0;var d=Jn(l,v);if(!Zn(d)){s=l.substring(v);break t}}while(c<=f);s=""}i=s}else i=this.h3v_1;var w=i;if(Ln(w)>0)if(Zn(Jn(w,w.length-1|0))){var p,m;t:{var g=Qn(w);if(0<=g)do{var y=g;g=g+-1|0;var b=Jn(w,y);if(!Zn(b)){var $=y+1|0;p=w.substring(0,$);break t}}while(0<=g);p=""}e.s(new go(p));t:{var k=Qn(w);if(0<=k)do{var x=k;k=k+-1|0;var q=Jn(w,x);if(!Zn(q)){var S=x+1|0;m=w.substring(S);break t}}while(0<=k);m=w}e.s(new po(Kn(new Ru(m))))}else e.s(new go(w));t=e.y2()}return new no(t,Xn())},nn(fu).p3q=function(){return new Mu(this.h3v_1)},nn(vu).toString=function(){return"SignedFormatStructure("+this.i3v_1+")"},nn(vu).equals=function(t){return!!(t instanceof vu&&Un(this.i3v_1,t.i3v_1))&&this.j3v_1===t.j3v_1},nn(vu).hashCode=function(){return Ht(31,Nn(this.i3v_1))+Hn(this.j3v_1)|0},nn(vu).p3p=function(){return eo(Rn([new no(Kn(new yo((t=this,function(n,i){for(var e=t.k3v_1.v();e.w();){var r=e.y(),s=!0===r.f3m().f3v(n);r.f3m().w3u(n,!(i===s))}return $n}),this.j3v_1,"sign for "+this.k3v_1)),Xn()),this.i3v_1.p3p()]));var t},nn(vu).p3q=function(){return new Ou(this.i3v_1.p3q(),(t=this,n=function(n){return function(t,n){var i=!1,e=t.k3v_1.v();t:for(;e.w();){var r=e.y();if(!0!==r.f3m().f3v(n)){if(r.z3t(n))continue t;return!1}i=!0}return i}(t,n)},n.callableName="checkIfAllNegative",n),this.j3v_1);var t,n},nn(du).l3v=function(t){var n=t.b3v();if(null==n){var i="The field '"+t.m3u()+"' does not define a default value";throw un(sn(i))}return new wu(t.l3u(),n)},nn(gu).toString=function(){return"Optional("+this.o3v_1+", "+this.p3v_1+")"},nn(gu).equals=function(t){return!!(t instanceof gu&&this.o3v_1===t.o3v_1)&&Un(this.p3v_1,t.p3v_1)},nn(gu).hashCode=function(){return Ht(31,yn(this.o3v_1))+Nn(this.p3v_1)|0},nn(gu).p3p=function(){var t,n,i=Xn(),e=this.p3v_1.p3p(),r=new fu(this.o3v_1).p3p();return t=this.q3v_1.d1()?Xn():Kn(new bo((n=this,function(t){for(var i=n.q3v_1.v();i.w();){var e=i.y();e.m3v_1.w3u(t,e.n3v_1)}return $n}))),new no(i,Rn([e,eo(Rn([r,new no(t,Xn())]))]))},nn(gu).p3q=function(){for(var t=this.p3v_1.p3q(),n=this.q3v_1,i=Mn(ni(n,10)),e=n.v();e.w();){var r=e.y(),s=new qu(r.n3v_1,pu(r.m3v_1));i.s(s)}var u,o,_,h,a=(o=i).d1()?G:1===o.n()?ri(o):new Cu(o);if(a instanceof Su)u=new Mu(this.o3v_1);else{var l=ei((_=a,(h=function(t){return _.r3v(t)}).callableName="test",h),new Mu(this.o3v_1));u=new ju(Rn([l,ei(mu(G),t)]))}return u},nn(yu).toString=function(){return"AlternativesParsing("+this.u3v_1+")"},nn(yu).equals=function(t){return!!(t instanceof yu&&Un(this.t3v_1,t.t3v_1))&&Un(this.u3v_1,t.u3v_1)},nn(yu).hashCode=function(){return Ht(31,Nn(this.t3v_1))+Nn(this.u3v_1)|0},nn(yu).p3p=function(){var t=Xn(),n=Yn();n.s(this.t3v_1.p3p());for(var i=this.u3v_1.v();i.w();){var e=i.y();n.s(e.p3p())}return new no(t,n.y2())},nn(yu).p3q=function(){return this.t3v_1.p3q()},nn(bu).toString=function(){return"ConcatenatedFormatStructure("+Fn(this.q3p_1,", ")+")"},nn(bu).equals=function(t){return t instanceof bu&&Un(this.q3p_1,t.q3p_1)},nn(bu).hashCode=function(){return Nn(this.q3p_1)},nn(bu).p3p=function(){for(var t=this.q3p_1,n=Mn(ni(t,10)),i=t.v();i.w();){var e=i.y().p3p();n.s(e)}return eo(n)},nn(bu).p3q=function(){for(var t=this.q3p_1,n=Mn(ni(t,10)),i=t.v();i.w();){var e=i.y().p3q();n.s(e)}var r=n;return 1===r.n()?ri(r):new zu(r)},nn(qu).r3v=function(t){return Un(this.w3v_1(t),this.v3v_1)},nn(Su).s3v=function(t){return!0},nn(Su).r3v=function(t){return this.s3v(null==t||null!=t?t:Sn())},nn(Cu).r3v=function(t){var n;t:{var i=this.x3v_1;if(In(i,si)&&i.d1())n=!0;else{for(var e=i.v();e.w();)if(!e.y().r3v(t)){n=!1;break t}n=!0}}return n},nn(Nu).x3w=function(t,n){var i;if(null!=this.s3w_1&&n.lengththis.t3w_1)i=new Fu(this.t3w_1);else{var e=oi(n);i=null==e?new Fu(9):Bu(this.u3w_1,t,new xo(e,n.length))}return i},nn(Ru).x3w=function(t,n){return n===this.a3x_1?null:new Hu(this.a3x_1)},nn(Pu).a=function(){return this.v3w_1},nn(Lu).b3x=function(){return"expected an Int value"},nn(Fu).b3x=function(){return"expected at most "+this.c3x_1+" digits"},nn(Uu).b3x=function(){return"expected at least "+this.d3x_1+" digits"},nn(Hu).b3x=function(){return"expected '"+this.e3x_1+"'"},nn(Vu).b3x=function(){return"attempted to overwrite the existing value '"+sn(this.f3x_1)+"'"},nn(Wu).x3w=function(t,n){var i;if(null!=this.j3x_1&&n.length>this.j3x_1)i=new Fu(this.j3x_1);else if(null!=this.i3x_1&&n.lengthLn(n))return X.p3x(i,(e=this,function(){return"Unexpected end of input: yet to parse "+vo(e)}));for(var e,r={_v:0};(i+r._v|0)Ln(n))return X.p3x(i,(e=this,function(){return"Unexpected end of input: yet to parse '"+e.i3y_1+"'"}));var e,r=0,s=Ln(this.i3y_1)-1|0;if(r<=s)do{var u=r;if(r=r+1|0,Jn(n,i+u|0)!==Jn(this.i3y_1,u))return X.p3x(i,mo(this,n,i,u))}while(r<=s);return X.o3x(i+this.i3y_1.length|0)},nn(go).toString=function(){return"'"+this.i3y_1+"'"},nn(yo).w3x=function(t,n,i){if(i>=Ln(n))return X.o3x(i);var e,r,s=Jn(n,i);return s===bn(45)?(this.j3y_1(t,!0),X.o3x(i+1|0)):s===bn(43)&&this.k3y_1?(this.j3y_1(t,!1),X.o3x(i+1|0)):X.p3x(i,(e=this,r=s,function(){return"Expected "+e.l3y_1+" but got "+Tn(r)}))},nn(yo).toString=function(){return this.l3y_1},nn(bo).w3x=function(t,n,i){return this.m3y_1(t),X.o3x(i)},nn(xo).y3r=function(t){return t===this.x3r_1?this.w3r_1:t>this.x3r_1?Ht(this.w3r_1,ko()[t-this.x3r_1|0]):this.w3r_1/ko()[this.x3r_1-t|0]|0},nn(xo).n3y=function(t){var n=this.x3r_1,i=t.x3r_1,e=Math.max(n,i);return Ei(this.y3r(e),t.y3r(e))},nn(xo).d=function(t){return this.n3y(t instanceof xo?t:Sn())},nn(xo).equals=function(t){return t instanceof xo&&0===this.n3y(t)},nn(xo).toString=function(){var t=Oi(),n=ko()[this.x3r_1];return t.v7(this.w3r_1/n|0),t.s5(bn(46)),t.r5(ji((n+(this.w3r_1%n|0)|0).toString(),"1")),t.toString()},nn(xo).hashCode=function(){throw zi("DecimalFraction is not supposed to be used as a hash key")},nn(qo).n34=function(){return this.o3y_1},nn(qo).o34=function(t){return Ho().p3y(t.i37())},nn(So).n34=function(){return this.q3y_1},nn(So).o34=function(t){return Go().t3y(t.i37())},nn(Co).n34=function(){return this.u3y_1},nn(Co).o34=function(t){return n_().x3y(t.i37())},nn(Eo).n34=function(){return this.y3y_1},nn(Eo).o34=function(t){return o_().b3z(t.i37())},nn(Oo).n34=function(){return this.c3z_1},nn(Oo).o34=function(t){return M_().e3z(t.i37())},nn(jo).n34=function(){return this.f3z_1},nn(jo).o34=function(t){return S_().h3z(t.i37())},nn(zo).n34=function(){return this.i3z_1},nn(zo).o34=function(t){var n=S_().h3z(t.i37());if(n instanceof j_)return n;throw Mi("Timezone identifier '"+n+"' does not correspond to a fixed-offset timezone")},nn(Uo).h3k=function(){return new Vo(Bt.systemUTC().instant())},nn(Uo).j3z=function(t){var n;try{var i=Js(),e=t.aa(xn(i)),r=Js(),s=t.ib(xn(r)),u=Xs(),o=s.ba(xn(u));n=this.k3z(e,o)}catch(i){if(!(i instanceof Error))throw i;var _=i;if(!Wo(_))throw _;n=t.ca(new gn(0,0))>0?this.l3k_1:this.k3k_1}return n},nn(Uo).l3z=function(t,n){var i;try{i=n.k3p(t).x3n()}catch(n){if(n instanceof fn)throw Se("Failed to parse an instant from '"+t+"'",n);throw n}return i},nn(Uo).p3y=function(t,n,i){return n=n===dn?(null==h&&new Xe,h).f3n_1:n,i===dn?this.l3z(t,n):i.l3z.call(this,t,n)},nn(Uo).k3z=function(t,n){var i;try{var e=xn(Zs()),r=n.aa(e);n.sb(e).ca(new gn(0,0))<0&&!r.ba(e).equals(n)&&(r=r.kb());var s=B_(t,r),u=xn(Zs()),o=n.ib(u),_=o.gb(u.qb(o.sb(u).qb(o.rb(o.lb())).ob(63))).la();i=new Vo(Vt.ofEpochSecond(s.f6(),_))}catch(n){if(!(n instanceof Error))throw n;var h=n;if(!(Wo(h)||h instanceof qn))throw h;i=t.ca(new gn(0,0))>0?this.l3k_1:this.k3k_1}return i},nn(Uo).g3o=function(t,n){var i;try{i=new Vo(Vt.ofEpochSecond(t.f6(),n))}catch(n){if(!(n instanceof Error))throw n;var e=n;if(!Wo(e))throw e;i=t.ca(new gn(0,0))>0?this.l3k_1:this.k3k_1}return i},nn(Vo).f3o=function(){return Ri(this.e3o_1.epochSecond())},nn(Vo).m3z=function(){return Pi(this.e3o_1.nano())},nn(Vo).n3z=function(){var t=this.f3o(),n=Js(),i=t.ba(xn(n)),e=this.m3z()/Xs()|0;return i.gb(xn(e))},nn(Vo).o3z=function(t){var n=Wt.between(t.e3o_1,this.e3o_1);Li();var i=n.seconds(),e=Ui(i,Fi());Li();var r=n.nano(),s=Ui(r,Hi());return Vi(e,s)},nn(Vo).p3z=function(t){return this.e3o_1.compareTo(t.e3o_1)},nn(Vo).d=function(t){return this.p3z(t instanceof Vo?t:Sn())},nn(Vo).equals=function(t){return this===t||t instanceof Vo&&(this.e3o_1===t.e3o_1||this.e3o_1.equals(t.e3o_1))},nn(Vo).hashCode=function(){return this.e3o_1.hashCode()},nn(Vo).toString=function(){return this.e3o_1.toString()},nn(Yo).q3z=function(t,n){var i;if(n===Xo().n3k()){var e;try{e=new Zo(Yt.parse(sn(t)))}catch(t){if(t instanceof Error){var r=t;if(Bo(r))throw qe(r);throw r}throw t}i=e}else i=n.k3p(t);return i},nn(Yo).t3y=function(t,n,i){return n=n===dn?Xo().n3k():n,i===dn?this.q3z(t,n):i.q3z.call(this,t,n)},nn(Ko).n3k=function(){return fr()},nn(Zo).p3k=function(){return this.o3k_1.year()},nn(Zo).q3k=function(){return this.o3k_1.monthValue()},nn(Zo).r3k=function(){return this.o3k_1.dayOfMonth()},nn(Zo).r3p=function(){return Io(this.o3k_1.dayOfWeek())},nn(Zo).equals=function(t){return this===t||t instanceof Zo&&(this.o3k_1===t.o3k_1||this.o3k_1.equals(t.o3k_1))},nn(Zo).hashCode=function(){return this.o3k_1.hashCode()},nn(Zo).toString=function(){return this.o3k_1.toString()},nn(Zo).r3z=function(t){return this.o3k_1.compareTo(t.o3k_1)},nn(Zo).d=function(t){return this.r3z(t instanceof Zo?t:Sn())},nn(Zo).z3n=function(){return Pi(this.o3k_1.toEpochDay())},nn(t_).s3z=function(t,n){var i;if(n===e_().s3k_1){var e;try{e=new r_(Gt.parse(sn(t)))}catch(t){if(t instanceof Error){var r=t;if(Bo(r))throw qe(r);throw r}throw t}i=e}else i=n.k3p(t);return i},nn(t_).x3y=function(t,n,i){return n=n===dn?e_().s3k_1:n,i===dn?this.s3z(t,n):i.s3z.call(this,t,n)},nn(r_).p3k=function(){return this.t3z_1.year()},nn(r_).q3k=function(){return this.t3z_1.monthValue()},nn(r_).u3z=function(){return Te(this.t3z_1.month().value())},nn(r_).r3k=function(){return this.t3z_1.dayOfMonth()},nn(r_).r3p=function(){return Io(this.t3z_1.dayOfWeek())},nn(r_).v3z=function(){return this.t3z_1.dayOfYear()},nn(r_).r3l=function(){return this.t3z_1.hour()},nn(r_).v3l=function(){return this.t3z_1.minute()},nn(r_).z3l=function(){return this.t3z_1.second()},nn(r_).x3l=function(){return Pi(this.t3z_1.nano())},nn(r_).equals=function(t){return this===t||t instanceof r_&&(this.t3z_1===t.t3z_1||this.t3z_1.equals(t.t3z_1))},nn(r_).hashCode=function(){return this.t3z_1.hashCode()},nn(r_).toString=function(){return this.t3z_1.toString()},nn(r_).w3z=function(t){return this.t3z_1.compareTo(t.t3z_1)},nn(r_).d=function(t){return this.w3z(t instanceof r_?t:Sn())},nn(u_).x3z=function(t,n){var i;if(n===bt.n3k()){var e;try{e=new h_(Kt.parse(sn(t)))}catch(t){if(t instanceof Error){var r=t;if(Bo(r))throw qe(r);throw r}throw t}i=e}else i=n.k3p(t);return i},nn(u_).b3z=function(t,n,i){return n=n===dn?bt.n3k():n,i===dn?this.x3z(t,n):i.x3z.call(this,t,n)},nn(__).n3k=function(){return Xr()},nn(h_).b3o=function(){return this.a3o_1.toSecondOfDay()},nn(h_).equals=function(t){return this===t||t instanceof h_&&(this.a3o_1===t.a3o_1||this.a3o_1.equals(t.a3o_1))},nn(h_).hashCode=function(){return this.a3o_1.hashCode()},nn(h_).toString=function(){return this.a3o_1.toString()},nn(h_).y3z=function(t){return this.a3o_1.compareTo(t.a3o_1)},nn(h_).d=function(t){return this.y3z(t instanceof h_?t:Sn())},nn(q_).z3z=function(){return x_(0,Jt.systemDefault())},nn(q_).h3z=function(t){var n;try{n=x_(0,Jt.of(t))}catch(t){if(t instanceof Error){var i=t;if(Wo(i))throw je(i);throw i}throw t}return n},nn(C_).equals=function(t){return this===t||t instanceof C_&&(this.a40_1===t.a40_1||this.a40_1.equals(t.a40_1))},nn(C_).hashCode=function(){return this.a40_1.hashCode()},nn(C_).toString=function(){return this.a40_1.toString()},nn(D_).d40=function(t,n){return n===Ft.n3k()?L_(t,T_()):n===Ft.e40()?L_(t,A_()):n===Ft.d3n()?L_(t,I_()):n.k3p(t)},nn(D_).e3z=function(t,n,i){return n=n===dn?Ft.n3k():n,i===dn?this.d40(t,n):i.d40.call(this,t,n)},nn(N_).n3k=function(){return gs()},nn(N_).e40=function(){return ys()},nn(N_).d3n=function(){return bs()},nn(R_).d3o=function(){return this.c3o_1.totalSeconds()},nn(R_).hashCode=function(){return this.c3o_1.hashCode()},nn(R_).equals=function(t){return t instanceof R_&&(this.c3o_1===t.c3o_1||this.c3o_1.equals(t.c3o_1))},nn(R_).toString=function(){return this.c3o_1.toString()},nn(Ze).o3o=Gi,nn(Ze).p3o=Ki,nn(Ze).z3m=Xi,nn(Ze).y2=Ji,nn(Ze).q3o=fe,nn(Ze).r3o=ve,nn(Ze).s3o=ne,nn(Ze).y3m=Zi,nn(Ze).t3o=ie,nn(Ze).u3o=Qi,nn(Ze).x3m=function(t){return this.q3o(new cu(new Or(t)))},nn(Ze).u3m=ee,nn(Ze).v3o=te,nn(Ze).c3n=function(t){return this.q3o(new cu(new zr(t)))},nn(Ze).n3m=re,nn(Ze).w3o=_e,nn(Ze).o3m=se,nn(Ze).x3o=he,nn(Ze).p3m=ue,nn(Ze).y3o=ae,nn(Ze).q3m=oe,nn(Ze).r3m=le,nn(Ze).z3o=ce,nn(Ze).a3p=me,nn(Ze).s3m=de,nn(Ze).b3p=ge,nn(Ze).c3p=we,nn(Ze).d3p=ye,nn(Ze).e3p=pe,nn(Ze).t3m=function(t){var n;return t instanceof Cs&&(this.m3o(t.v3t_1),n=$n),n},nn(kr).o3o=Gi,nn(kr).p3o=Ki,nn(kr).z3m=Xi,nn(kr).y2=Ji,nn(kr).s3o=ne,nn(kr).y3m=Zi,nn(kr).t3o=ie,nn(kr).u3o=Qi,nn(kr).u3m=ee,nn(kr).v3o=te,nn(Fr).o3o=Gi,nn(Fr).p3o=Ki,nn(Fr).z3m=Xi,nn(Fr).y2=Ji,nn(Fr).q3o=fe,nn(Fr).r3o=ve,nn(Fr).s3o=ne,nn(Fr).y3m=Zi,nn(Fr).t3o=ie,nn(Fr).u3o=Qi,nn(Fr).u3m=ee,nn(Fr).v3o=te,nn(Fr).n3m=re,nn(Fr).w3o=_e,nn(Fr).o3m=se,nn(Fr).x3o=he,nn(Fr).p3m=ue,nn(Fr).y3o=ae,nn(Fr).q3m=oe,nn(Fr).r3m=le,nn(Fr).z3o=ce,nn(Zr).o3l=function(t){this.w3l(null==t?null:t.y3r(9))},nn(Zr).p3l=function(){var t=this.x3l();return null==t?null:new xo(t,9)},nn(ns).o3o=Gi,nn(ns).p3o=Ki,nn(ns).z3m=Xi,nn(ns).y2=Ji,nn(ns).w3o=_e,nn(ns).o3m=se,nn(ns).x3o=he,nn(ns).p3m=ue,nn(ns).y3o=ae,nn(ns).q3m=oe,nn(ns).r3m=le,nn(Ss).o3o=Gi,nn(Ss).p3o=Ki,nn(Ss).z3m=Xi,nn(Ss).y2=Ji,nn(Ss).a3p=me,nn(Ss).s3m=de,nn(Ss).b3p=ge,nn(Ss).c3p=we,nn(Ss).d3p=ye,nn(Ss).e3p=pe,nn(ou).k3u=function(t){var n=this.f3v(t);if(null==n)throw An("Field "+this.m3u()+" is not set");return n},r=new be,s=new gn(-931914497,-750),u=new gn(1151527680,720),_=new Ke,y=new $r,q=new Lr,z=new ts,P=new qs,U=1e6,H=new gn(2036907392,73),V=86400,B=1e3,W=1e9,Y=new du,G=new Su,K=new Lu,X=new Gu,bt=new __,new O_,Ft=new N_,t.$_$=t.$_$||{},t.$_$.a=r,t.$_$.b=Ho,t.$_$.c=S_,t.$_$.d=Vo,t.$_$.e=r_,t.$_$.f=Zo,t.$_$.g=function(t,n,i,e,r){return e=e===dn?0:e,r=r===dn?0:r,function(t,n,i,e,r,s,u){return function(t,n,i,e,r,s,u,o){var _;s=s===dn?0:s,u=u===dn?0:u;try{_=Gt.of(t,n,i,e,r,s,u)}catch(t){if(t instanceof Error){var h=t;if(Wo(h))throw Bi(h);throw h}throw t}return r_.call(o,_),o}(t,n,i,e,r,s,u,_n(nn(r_)))}(t.p3k(),t.q3k(),t.r3k(),n,i,e,r)},t.$_$.h=$e,t.$_$.i=function(t){return t.y9_1+1|0},t.$_$.j=z_,t.$_$.k=function(t,n){return z_(n,t)},t.$_$.l=function(t,n){return new Vo(t.t3z_1.atZone(n.a40_1).toInstant())},t.$_$.m=function(t,n){var i;try{i=new r_(Gt.ofInstant(t.e3o_1,n.a40_1))}catch(t){if(t instanceof Error){var e=t;if(Wo(e))throw Ee(e);throw e}throw t}return i},t})?e.apply(n,r):e)||(t.exports=s)},960:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(585),i(485)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,u){"use strict";var o,_=n.$_$.c,h=e.$_$.tg,a=n.$_$.d,l=e.$_$.mb,c=e.$_$.lb,f=e.$_$.nb,v=e.$_$.ca,d=r.$_$.a,w=s.$_$.s,p=s.$_$.o,m=e.$_$.a5,g=s.$_$.p1,y=s.$_$.n1,b=s.$_$.g1,$=s.$_$.r,k=s.$_$.a,x=s.$_$.u,q=s.$_$.x,S=s.$_$.h1,C=s.$_$.w,E=s.$_$.p,O=s.$_$.y,j=s.$_$.o1,z=s.$_$.i1,T=s.$_$.l1,A=s.$_$.j1,I=s.$_$.q,D=e.$_$.t7,M=s.$_$.b1,N=s.$_$.v1,R=s.$_$.c1,P=s.$_$.w1,L=s.$_$.u1,F=s.$_$.d1,U=s.$_$.m1,H=s.$_$.v,V=s.$_$.a1,B=s.$_$.b,W=s.$_$.q1,Y=s.$_$.e1,G=s.$_$.k1,K=e.$_$.q9,X=u.$_$.x,J=e.$_$.wa,Z=s.$_$.s1,Q=e.$_$.s7,tt=e.$_$.f,nt=e.$_$.c9,it=s.$_$.y1,et=u.$_$.j1,rt=s.$_$.x1,st=u.$_$.l1,ut=s.$_$.t1,ot=s.$_$.f1,_t=e.$_$.xh,ht=e.$_$.v7,at=s.$_$.n,lt=s.$_$.m,ct=s.$_$.t,ft=s.$_$.r1,vt=s.$_$.l,dt=e.$_$.b7,wt=e.$_$.jh,pt=s.$_$.z,mt=s.$_$.d,gt=s.$_$.c,yt=s.$_$.j,bt=s.$_$.i,$t=s.$_$.h,kt=s.$_$.e,xt=s.$_$.f,qt=s.$_$.g,St=s.$_$.k;function Ct(){o=this,this.ka5_1=new _;var t=i(79),n=null!=t&&"string"==typeof t?t:h();this.la5_1=a("airport_terminal.png",n);var e=i(918),r=null!=e&&"string"==typeof e?e:h();this.ma5_1=a("aircraft_fighter.png",r);var s=i(513),u=null!=s&&"string"==typeof s?s:h();this.na5_1=a("aircraft_fixwing.png",u);var l=i(36),c=null!=l&&"string"==typeof l?l:h();this.oa5_1=a("pattern_sample_houndstooth.png",c);var f=i(520),v=null!=f&&"string"==typeof f?f:h();this.pa5_1=a("worldwind_logo.png",v);var d=i(105),w=null!=d&&"string"==typeof d?d:h();this.qa5_1=a("ehipcc.png",w)}function Et(){return null==o&&new Ct,o}function Ot(){this.ra5_1=null}function jt(t){Ot.call(this),this.xa5_1=t,this.ya5_1=null,this.za5_1=null}function zt(t){Ot.call(this),this.ba6_1=t}function Tt(t){Ot.call(this),this.da6_1=t,this.ea6_1=new $}function At(t){Ot.call(this),this.ga6_1=t;var n=new x("Ellipses"),i=new q(g.e6d(45,-120,0),5e5,3e5);i.y78(S()),i.z78(!0),n.n6z(i);var e=new q(g.e6d(45,-100,0),5e5,3e5),r=e.h2a();r.l8z(new C(1,1,1,.5)),r.q7b_1=3,e.y78(S()),e.z78(!0),n.n6z(e);var s=new q(g.e6d(35,-120,0),5e5,3e5);s.y78(S()),s.z78(!0);var u=y().p5r(45);s.n8q(u),n.n6z(s);var o=new q(g.e6d(35,-100,0),4e5,4e5);o.y78(S()),o.z78(!0),n.n6z(o),n.n6z(new q(g.e6d(25,-120,2e5),5e5,3e5));var _=new q(g.e6d(25,-100,2e5),5e5,3e5),h=_.h2a();h.l8z(new C(1,1,1,.5)),h.m7b_1=!0,_.v8n(!0),n.n6z(_),this.ha6_1=n}function It(t){Ot.call(this),this.ja6_1=t,this.ka6_1=new E}function Dt(t){Ot.call(this),this.ma6_1=t;var n=new x("Labels"),i=new O(g.e6d(38.8977,-77.0365,0),"The White House");i.y78(S()),n.n6z(i);var e=new O(g.e6d(38.881389,-77.036944,0),"Thomas Jefferson Memorial");e.y78(S());var r=e.h79_1;r.g7b(new C(0,0,0,1)),r.h7b(new C(1,1,1,1)),r.y7a_1=5,n.n6z(e);var s=new O(g.e6d(38.8893,-77.050111,0),"Lincoln Memorial");s.y78(S()),s.h79_1.v7h(j.w6c()),n.n6z(s);var u=new O(g.e6d(38.889803,-77.009114,0),"United States Capitol");u.y78(S()),u.h79_1.v7h(j.u6c()),n.n6z(u);var o=new O(g.e6d(38.907192,-77.036871,0),"Washington");o.y78(S()),o.h79_1.i7b(T("arial",z(),28)),n.n6z(o);var _=new O(g.e6d(38.89,-77.023611,0),"National Mall");_.y78(S()),_.l79_1=A(),n.n6z(_),this.na6_1=n}function Mt(t){Ot.call(this),this.pa6_1=t}function Nt(t){Ot.call(this),this.ra6_1=t,this.sa6_1=new I}function Rt(t){Ot.call(this),this.ua6_1=t;var n=new x("Paths");n.n6z(new M(D([g.e6d(50,-180,1e5),g.e6d(30,-100,1e6),g.e6d(50,-40,1e5)])));var i=new M(D([g.e6d(40,-180,0),g.e6d(20,-100,0),g.e6d(40,-40,0)]));i.y78(S()),i.z78(!0),n.n6z(i);var e=new M(D([g.e6d(30,-180,1e5),g.e6d(10,-100,1e6),g.e6d(30,-40,1e5)]));e.v8n(!0),n.n6z(e);var r=new M(D([g.e6d(20,-180,1e5),g.e6d(0,-100,1e6),g.e6d(20,-40,1e5)])),s=r.h2a();s.m7b_1=!0,s.l8z(new C(1,1,1,.5)),s.q7b_1=3,r.v8n(!0),n.n6z(r),this.va6_1=n}function Pt(t){Ot.call(this),this.xa6_1=t;var n=new x("Placemarks"),i=N().h8u(g.e6d(34.281,-119.293,0),new C(0,1,1,1),20);i.y78(S()),n.n6z(i);var e=new R(g.e6d(34.26,-119.2,5e3)),r=e,s=P.b8w(L().p6z(Et().na5_1));s.j8u_1=1.5,r.y8u_1=s,n.n6z(e);var u=new R(g.e6d(34.2,-119.208,0));u.y78(S());var o=u,_=P.a8w(L().p6z(Et().la5_1));_.c8w(j.v6c()),_.j8u_1=2,o.y8u_1=_,u.n8i("Oxnard Airport"),n.n6z(u);var h=new R(g.e6d(34.3,-119.25,0));h.y78(S());var a=h,l=P.a8w(L().p6z(Et().qa5_1));l.c8w(j.v6c()),a.y8u_1=l,n.n6z(h),this.ya6_1=n}function Lt(t){Ot.call(this),this.aa7_1=t;var n=new x("Polygons");n.n6z(new F(D([g.e6d(40,-135,5e5),g.e6d(45,-140,7e5),g.e6d(50,-130,9e5),g.e6d(45,-120,7e5),g.e6d(40,-125,5e5)])));var i=new F(D([g.e6d(40,-105,0),g.e6d(45,-110,0),g.e6d(50,-100,0),g.e6d(45,-90,0),g.e6d(40,-95,0)]));i.y78(S()),i.z78(!0),n.n6z(i);var e=new F(D([g.e6d(20,-135,5e5),g.e6d(25,-140,7e5),g.e6d(30,-130,9e5),g.e6d(25,-120,7e5),g.e6d(20,-125,5e5)]));e.v8n(!0),n.n6z(e);var r=new F(D([g.e6d(20,-105,5e5),g.e6d(25,-110,7e5),g.e6d(30,-100,9e5),g.e6d(25,-90,7e5),g.e6d(20,-95,5e5)])),s=r.h2a();s.m7b_1=!0,s.l8z(new C(1,1,1,.5)),s.q7b_1=3,r.v8n(!0),n.n6z(r);var u=new F;u.z8y(D([g.e6d(0,-135,5e5),g.e6d(5,-140,7e5),g.e6d(10,-130,9e5),g.e6d(5,-120,7e5),g.e6d(0,-125,5e5)])),u.z8y(D([g.e6d(2.5,-130,6e5),g.e6d(5,-135,7e5),g.e6d(7.5,-130,8e5),g.e6d(5,-125,7e5)])),n.n6z(u);var o=new F,_=o.h2a();_.m7b_1=!0,_.l8z(new C(1,1,1,.5)),_.q7b_1=3,o.z8y(D([g.e6d(0,-105,5e5),g.e6d(5,-110,7e5),g.e6d(10,-100,9e5),g.e6d(5,-90,7e5),g.e6d(0,-95,5e5)])),o.z8y(D([g.e6d(2.5,-100,6e5),g.e6d(5,-105,7e5),g.e6d(7.5,-100,8e5),g.e6d(5,-95,7e5)])),o.v8n(!0),n.n6z(o),this.ba7_1=n}function Ft(t){Ot.call(this),this.da7_1=t;var n=new x("Dash and fill"),i=U();i.q7b_1=4;var e=i,r=new M(D([g.e6d(60,-100,1e5),g.e6d(30,-120,1e5),g.e6d(0,-100,1e5)]));r.h2a().m8z(e).s7b_1=L().z7b(2,-3856),n.n6z(r);var s=new M(D([g.e6d(60,-90,5e4),g.e6d(30,-110,5e4),g.e6d(0,-90,5e4)]));s.h2a().m8z(e).s7b_1=L().z7b(4,-3856),n.n6z(s);var u=new M(D([g.e6d(60,-80,0),g.e6d(30,-100,0),g.e6d(0,-80,0)]));u.h2a().m8z(e).s7b_1=L().z7b(8,-8202),u.y78(S()),u.z78(!0),n.n6z(u);var o=new q(g.e6d(40,-70,1e5),15e5,8e5);o.h2a().m8z(e).r7b_1=L().p6z(Et().oa5_1),n.n6z(o);var _=new F(D([g.e6d(25,-85,0),g.e6d(10,-80,0),g.e6d(10,-60,0),g.e6d(25,-55,0)])),h=_.h2a().m8z(e);h.r7b_1=L().p6z(Et().oa5_1),h.s7b_1=L().z7b(8,-8202),_.y78(S()),_.z78(!0),n.n6z(_),this.ea7_1=n}function Ut(t){Ot.call(this),this.ga7_1=t,this.ha7_1=new H}function Ht(t){Ot.call(this),this.ja7_1=t;var n=new x("Sightline"),i=g.e6d(46.23,-122.19,2500),e=new V(i,1e4);e.h2a().l8z(new C(0,1,0,.5)),e.w8r_1.l8z(new C(.1,.1,.1,.8)),n.n6z(e);var r=new R(i),s=r.y8u_1;s.i8u_1=L().p6z(Et().na5_1),s.c8w(j.v6c()),s.j8u_1=2,s.m8u_1=!0,n.n6z(r),this.ka7_1=n}function Vt(t){Ot.call(this),this.ma7_1=t;var n=new x("Surface image");n.n6z(new Y(W.i6d(37.46,15.5,.5,.6),L().p6z(Et().pa5_1))),n.n6z(new Y(W.i6d(37.46543388598137,14.60128369746704,.45360804083528,.75704283995502),L().b7v("https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg"))),this.na7_1=n}function Bt(t){Ot.call(this),this.pa7_1=t,this.qa7_1=G("https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer","DEP3Elevation","geotiff",W.i6d(25,-125,25,60),y().l69(.3333333333333333))}function Wt(t,n){this.za7_1=t,K.call(this,n)}function Yt(t,n){Ot.call(this),this.ca8_1=t,this.da8_1=n,this.ea8_1=null,this.fa8_1=null}function Gt(t,n){this.oa8_1=t,K.call(this,n)}function Kt(t,n){Ot.call(this),this.ra8_1=t,this.sa8_1=n,this.ta8_1=null,this.ua8_1=null}function Xt(){window.onload=Jt}function Jt(t){var n,i,e,r,s=document.getElementById("WorldWindow"),u=new ot(s instanceof HTMLCanvasElement?s:h()),o=document.getElementById("Tutorials"),_=o instanceof HTMLSelectElement?o:h(),a=document.getElementById("Projections"),l=a instanceof HTMLSelectElement?a:h(),c=document.getElementById("Actions"),f=c instanceof HTMLDivElement?c:h(),v=ht([_t("Basic globe",new jt(u.h9e())),_t("Set camera view",new zt(u.h9e())),_t('Set "look at" view',new Mt(u.h9e())),_t("Placemarks",new Pt(u.h9e())),_t("Paths",new Rt(u.h9e())),_t("Polygons",new Lt(u.h9e())),_t("Ellipses",new At(u.h9e())),_t("Dash and fill",new Ft(u.h9e())),_t("Labels",new Dt(u.h9e())),_t("Sight line",new Ht(u.h9e())),_t("Surface image",new Vt(u.h9e())),_t("Show tessellation",new Ut(u.h9e())),_t("MGRS Graticule",new Nt(u.h9e())),_t("Gauss-Kruger Graticule",new It(u.h9e())),_t("WMS Layer",new Yt(u.h9e(),u.g9i())),_t("WMTS Layer",new Kt(u.h9e(),u.g9i())),_t("WCS Elevation",new Bt(u.h9e())),_t("Elevation Heatmap",new Tt(u.h9e()))]),d=ht([_t("WGS84 Projection",new at),_t("Mercator Projection",new lt)]),g={_v:null},y=u.h9e().n5h_1;y.q70(new ct),y.q70(ft().l7v("https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}","image/jpeg",tt,"Google Satellite")),y.q70(new w),y.q70(new p),u.h9e().j5h_1.m5j_1.v6p(new vt),u.h9i().x9u_1=new nn;for(var b=v.d2().v();b.w();){var $=b.y(),k=document.createElement("option"),x=k instanceof HTMLOptionElement?k:h();x.value=$,x.innerHTML=$,_.append(x)}for(var q=d.d2().v();q.w();){var S=q.y(),C=document.createElement("option"),E=C instanceof HTMLOptionElement?C:h();E.value=S,E.innerHTML=S,l.append(E)}return _.onchange=(n=g,i=v,e=f,r=u,function(t){var s=t.target;return Qt(n,i,e,r,(s instanceof HTMLSelectElement?s:h()).value),m}),l.onchange=function(t,n){return function(i){var e=i.target;return tn(t,n,(e instanceof HTMLSelectElement?e:h()).value),m}}(u,d),Qt(g,v,f,u,dt(v.d2())),tn(u,d,dt(d.d2())),m}function Zt(t,n,i,e){var r,s,u,o=document.createElement("button"),_=o instanceof HTMLButtonElement?o:h();_.innerHTML=e,t.append(_),_.onclick=(r=e,s=n,u=i,function(t){return function(t,n,i){var e=t._v;if(null==e);else{var r=n.q2(e);null!=r&&r.ta5(i)}}(s,u,r),m})}function Qt(t,n,i,e,r){var s=t._v;if(null==s);else{var u=n.q2(s);null!=u&&u.va5()}t._v=r;var o=n.q2(r);if(null==o);else{o.ua5(),i.innerHTML="";var _=o.sa5();if(null==_);else for(var h=_.v();h.w();)Zt(i,t,n,h.y());var a=o.sa5();i.hidden=!(!1===(null==a?null:a.d1()))}e.h5h()}function tn(t,n,i){t.h9e().j5h_1.l5j_1=wt(n.q2(i)),t.h5h()}function nn(){}return f(Ct,"images",c),f(Ot,"AbstractTutorial",v),f(jt,"BasicTutorial",v,Ot),f(zt,"CameraViewTutorial",v,Ot),f(Tt,"ElevationHeatmapTutorial",v,Ot),f(At,"EllipsesTutorial",v,Ot),f(It,"GKGraticuleTutorial",v,Ot),f(Dt,"LabelsTutorial",v,Ot),f(Mt,"LookAtViewTutorial",v,Ot),f(Nt,"MGRSGraticuleTutorial",v,Ot),f(Rt,"PathsTutorial",v,Ot),f(Pt,"PlacemarksTutorial",v,Ot),f(Lt,"PolygonsTutorial",v,Ot),f(Ft,"ShapesDashAndFillTutorial",v,Ot),f(Ut,"ShowTessellationTutorial",v,Ot),f(Ht,"SightlineTutorial",v,Ot),f(Vt,"SurfaceImageTutorial",v,Ot),f(Bt,"WcsElevationTutorial",v,Ot),f(Wt,"WmsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Yt,"WmsLayerTutorial",v,Ot),f(Gt,"WmtsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Kt,"WmtsLayerTutorial",v,Ot),f(nn,tt,v,tt,[St]),l(Ot).sa5=function(){return this.ra5_1},l(Ot).ta5=function(t){},l(Ot).ua5=function(){},l(Ot).va5=function(){},l(jt).ua5=function(){l(Ot).ua5.call(this);var t=this.xa5_1.n5h_1,n=d.h3k(),i=t.o70(t.p70("StarField")),e=i instanceof w?i:h();e.j7w_1=n,this.ya5_1=e;var r=t.o70(t.p70("Atmosphere")),s=r instanceof p?r:h();s.m73_1=n,this.za5_1=s},l(jt).va5=function(){l(Ot).va5.call(this);var t=this.ya5_1;null!=t&&(t.j7w_1=null);var n=this.za5_1;null!=n&&(n.m73_1=null)},l(zt).ua5=function(){var t,n,i,e,r,s,u,o,_;l(Ot).ua5.call(this),t=this,n=g.e6d(34.2,-119.2,3e3),i=g.e6d(34.1192744,-119.119585,4),e=n.q6b(i),r=n.r6b(i)*t.ba6_1.j5h_1.h6p(n.m5i_1,n.n5i_1),s=y(),u=r/n.q5i_1,o=Math.atan(u),_=s.u5n(o),t.ba6_1.o5h_1.t6a(n.m5i_1,n.n5i_1,n.q5i_1,b(),e,_,y().v5m_1)},l(Tt).ua5=function(){l(Ot).ua5.call(this),this.da6_1.n5h_1.q70(this.ea6_1);var t=g.e6d(50.4501,30.5234,0),n=b(),i=y().v5m_1,e=y().p5r(0);this.da6_1.m5m(new k(t,n,1e4,i,e,y().v5m_1))},l(Tt).va5=function(){l(Ot).va5.call(this),this.da6_1.n5h_1.r70(this.ea6_1)},l(At).ua5=function(){l(Ot).ua5.call(this),this.ga6_1.n5h_1.q70(this.ha6_1);var t=this.ga6_1.o5h_1,n=y().p5r(30),i=y().p5r(-110);t.t6a(n,i,1.1*this.ga6_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(At).va5=function(){l(Ot).va5.call(this),this.ga6_1.n5h_1.r70(this.ha6_1)},l(It).ua5=function(){l(Ot).ua5.call(this),this.ja6_1.n5h_1.q70(this.ka6_1)},l(It).va5=function(){l(Ot).va5.call(this),this.ja6_1.n5h_1.r70(this.ka6_1)},l(Dt).ua5=function(){l(Ot).ua5.call(this),this.ma6_1.n5h_1.q70(this.na6_1);var t=this.ma6_1.o5h_1,n=y().p5r(38.89),i=y().p5r(-77.023611);t.t6a(n,i,1e4,b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Dt).va5=function(){l(Ot).va5.call(this),this.ma6_1.n5h_1.r70(this.na6_1)},l(Mt).ua5=function(){var t,n,i,e,r,s,u,o,_,h,a,c;l(Ot).ua5.call(this),t=this,n=g.e6d(34.0158333,-118.4513056,2500),i=g.e6d(33.9424368,-118.4081222,38.7),e=n.q6b(i),r=n.r6b(i)*t.pa6_1.j5h_1.h6p(n.m5i_1,n.n5i_1),s=n.q5i_1-i.q5i_1,u=s*s+r*r,o=Math.sqrt(u),_=y(),h=r/n.q5i_1,a=Math.atan(h),c=_.u5n(a),t.pa6_1.m5m(new k(i,b(),o,e,c,y().v5m_1))},l(Nt).ua5=function(){l(Ot).ua5.call(this),this.ra6_1.n5h_1.q70(this.sa6_1)},l(Nt).va5=function(){l(Ot).va5.call(this),this.ra6_1.n5h_1.r70(this.sa6_1)},l(Rt).ua5=function(){l(Ot).ua5.call(this),this.ua6_1.n5h_1.q70(this.va6_1);var t=this.ua6_1.o5h_1,n=y().p5r(30),i=y().p5r(-100);t.t6a(n,i,1.1*this.ua6_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Rt).va5=function(){l(Ot).va5.call(this),this.ua6_1.n5h_1.r70(this.va6_1)},l(Pt).ua5=function(){l(Ot).ua5.call(this),this.xa6_1.n5h_1.q70(this.ya6_1);var t=g.e6d(34.2,-119.208,0),n=b(),i=y().v5m_1,e=y().p5r(80);this.xa6_1.m5m(new k(t,n,1e4,i,e,y().v5m_1))},l(Pt).va5=function(){l(Ot).va5.call(this),this.xa6_1.n5h_1.r70(this.ya6_1)},l(Lt).ua5=function(){l(Ot).ua5.call(this),this.aa7_1.n5h_1.q70(this.ba7_1);var t=this.aa7_1.o5h_1,n=y().p5r(30),i=y().p5r(-115);t.t6a(n,i,1.1*this.aa7_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Lt).va5=function(){l(Ot).va5.call(this),this.aa7_1.n5h_1.r70(this.ba7_1)},l(Ft).ua5=function(){l(Ot).ua5.call(this),this.da7_1.n5h_1.q70(this.ea7_1);var t=this.da7_1.o5h_1,n=y().p5r(30),i=y().p5r(-85);t.t6a(n,i,1.1*this.da7_1.f5i(),b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Ft).va5=function(){l(Ot).va5.call(this),this.da7_1.n5h_1.r70(this.ea7_1)},l(Ut).ua5=function(){l(Ot).ua5.call(this),this.ga7_1.n5h_1.q70(this.ha7_1)},l(Ut).va5=function(){l(Ot).va5.call(this),this.ga7_1.n5h_1.r70(this.ha7_1)},l(Ht).ua5=function(){l(Ot).ua5.call(this),this.ja7_1.n5h_1.q70(this.ka7_1);var t=y().p5r(46.23),n=y().p5r(-122.19),i=new B(t,n,500),e=b(),r=y().p5r(45),s=y().p5r(70),u=y().p5r(0);this.ja7_1.m5m(new k(i,e,15e3,r,s,u))},l(Ht).va5=function(){l(Ot).va5.call(this),this.ja7_1.n5h_1.r70(this.ka7_1)},l(Vt).ua5=function(){l(Ot).ua5.call(this),this.ma7_1.n5h_1.q70(this.na7_1);var t=this.ma7_1.o5h_1,n=y().p5r(37.46543388598137),i=y().p5r(14.97980511744455);t.t6a(n,i,4e5,b(),y().v5m_1,y().v5m_1,y().v5m_1)},l(Vt).va5=function(){l(Ot).va5.call(this),this.ma7_1.n5h_1.r70(this.na7_1)},l(Bt).ua5=function(){l(Ot).ua5.call(this);for(var t=this.pa7_1.j5h_1.m5j_1,n=t.v();n.w();)n.y().f6q(!1);t.v6p(this.qa7_1),function(t){var n=g.e6d(46.852886,-121.760374,4392),i=g.e6d(46.912,-121.527,2e3),e=i.q6b(n),r=n.r6b(i)*t.pa7_1.j5h_1.h6p(n.m5i_1,n.n5i_1),s=y(),u=r/i.q5i_1,o=Math.atan(u),_=s.u5n(o);t.pa7_1.o5h_1.t6a(i.m5i_1,i.n5i_1,i.q5i_1,b(),e,_,y().v5m_1)}(this)},l(Bt).va5=function(){l(Ot).va5.call(this);var t=this.pa7_1.j5h_1.m5j_1;t.w6p(this.qa7_1);for(var n=t.v();n.w();)n.y().f6q(!0)},l(Wt).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=m,i.fc_1=null,i.pc()},l(Wt).cd=function(t,n){return this.a1h(null!=t&&J(t,X)?t:h(),n)},l(Wt).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.dc_1=2,this.cc_1=1,(t=Z().h84("https://neo.gsfc.nasa.gov/wms/wms",Q("MOD_LSTD_CLIM_M"),tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.aa8_1)&&(this.za7_1.ea8_1=n,this.za7_1.ca8_1.n5h_1.q70(n),it().h5h()),rt.t64(rt.v5i_1,"WMS layer creation succeeded"),this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var i=this.fc_1;rt.ga5(rt.t5i_1,"WMS layer creation failed",i),this.cc_1=4;continue t}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,m}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},l(Wt).b1h=function(t,n){var i=new Wt(this.za7_1,n);return i.aa8_1=t,i},l(Yt).ua5=function(){var t,n;l(Ot).ua5.call(this),this.fa8_1=st(this.da8_1,tt,tt,(t=new Wt(this,null),(n=function(n,i){return t.a1h(n,i)}).$arity=1,n));var i=this.ca8_1.o5h_1;i.g5i_1.q5i_1=1.1*this.ca8_1.f5i(),i.i5i_1=y().v5m_1,i.j5i_1=y().v5m_1,i.k5i_1=y().v5m_1},l(Yt).va5=function(){l(Ot).va5.call(this);var t=this.fa8_1;null==t||t.on();var n=this.ea8_1;null==n||this.ca8_1.n5h_1.r70(n),this.ea8_1=null},l(Gt).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=m,i.fc_1=null,i.pc()},l(Gt).cd=function(t,n){return this.a1h(null!=t&&J(t,X)?t:h(),n)},l(Gt).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.dc_1=2,this.cc_1=1,(t=ut().o8a("https://tiles.geoservice.dlr.de/service/wmts","hillshade",tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.pa8_1)&&(this.oa8_1.ta8_1=n,this.oa8_1.ra8_1.n5h_1.q70(n),it().h5h()),rt.t64(rt.v5i_1,"WMTS layer creation succeeded"),this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var i=this.fc_1;rt.ga5(rt.t5i_1,"WMTS layer creation failed",i),this.cc_1=4;continue t}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,m}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},l(Gt).b1h=function(t,n){var i=new Gt(this.oa8_1,n);return i.pa8_1=t,i},l(Kt).ua5=function(){var t,n;l(Ot).ua5.call(this),this.ua8_1=st(this.sa8_1,tt,tt,(t=new Gt(this,null),(n=function(n,i){return t.a1h(n,i)}).$arity=1,n));var i=this.ra8_1.o5h_1;i.g5i_1.q5i_1=1.1*this.ra8_1.f5i(),i.i5i_1=y().v5m_1,i.j5i_1=y().v5m_1,i.k5i_1=y().v5m_1},l(Kt).va5=function(){l(Ot).va5.call(this);var t=this.ua8_1;null==t||t.on();var n=this.ta8_1;null==n||this.ra8_1.n5h_1.r70(n),this.ta8_1=null},l(nn).w6o=function(t){return J(t,pt)},l(nn).z6o=function(t){return J(t,pt)},l(nn).s6o=mt,l(nn).t6o=gt,l(nn).u6o=yt,l(nn).v6o=bt,l(nn).x6o=$t,l(nn).y6o=kt,l(nn).a6p=xt,l(nn).b6p=qt,function(t){var n=t.earth||(t.earth={}),i=n.worldwind||(n.worldwind={});(i.tutorials||(i.tutorials={})).main=Xt}(t),Xt(),t})?e.apply(n,r):e)||(t.exports=s)},585:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(485),i(755),i(800),i(639),i(787),i(997),i(229),i(931),i(852)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,u,o,_,h,a,l,c,f){"use strict";var v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt,ct,ft,vt,dt,wt,pt,mt,gt,yt,bt,$t,kt,xt,qt,St,Ct,Et,Ot,jt,zt,Tt,At,It,Dt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht,Vt,Bt,Wt,Yt,Gt,Kt,Xt,Jt,Zt,Qt,tn,nn,en,rn,sn,un,on,_n,hn,an,ln,cn,fn,vn,dn,wn,pn,mn,gn,yn,bn,$n,kn,xn,qn,Sn,Cn,En,On,jn,zn,Tn,An,In,Dn,Mn,Nn,Rn,Pn,Ln,Fn,Un,Hn,Vn,Bn,Wn,Yn,Gn,Kn,Xn,Jn,Zn,Qn,ti,ni,ii,ei,ri,si,ui,oi,_i,hi,ai,li,ci,fi,vi,di,wi,pi,mi,gi,yi,bi,$i,ki,xi,qi,Si,Ci,Ei,Oi,ji,zi,Ti,Ai,Ii,Di,Mi,Ni,Ri,Pi,Li,Fi,Ui,Hi,Vi,Bi,Wi,Yi,Gi,Ki,Xi,Ji,Zi,Qi,te,ne,ie,ee,re,se,ue,oe,_e,he,ae,le,ce,fe,ve,de,we,pe,me,ge,ye,be,$e,ke,xe,qe,Se,Ce,Ee,Oe,je,ze,Te,Ae,Ie,De,Me,Ne,Re,Pe,Le,Fe,Ue,He,Ve,Be,We,Ye,Ge,Ke,Xe,Je,Ze,Qe,tr,nr,ir,er,rr,sr,ur,or,_r,hr,ar,lr,cr,fr,vr,dr,wr,pr,mr,gr,yr,br,$r,kr,xr,qr,Sr,Cr,Er,Or,jr,zr,Tr=Math.imul,Ar=Math.sign,Ir=Math.log10,Dr=Math.sinh,Mr=n.$_$.c,Nr=e.$_$.tg,Rr=n.$_$.d,Pr=e.$_$.mb,Lr=e.$_$.lb,Fr=e.$_$.nb,Ur=n.$_$.a,Hr=e.$_$.mg,Vr=r.$_$.b,Br=e.$_$.ca,Wr=e.$_$.f,Yr=e.$_$.ub,Gr=e.$_$.rb,Kr=e.$_$.v,Xr=e.$_$.a5,Jr=e.$_$.k7,Zr=s.$_$.o,Qr=s.$_$.p,ts=e.$_$.na,ns=r.$_$.c,is=e.$_$.t1,es=e.$_$.jg,rs=e.$_$.d5,ss=e.$_$.wa,us=e.$_$.jh,os=e.$_$.fc,_s=e.$_$.sb,hs=e.$_$.ha,as=e.$_$.m,ls=e.$_$.x6,cs=e.$_$.y6,fs=e.$_$.x1,vs=e.$_$.x,ds=e.$_$.gg,ws=e.$_$.da,ps=e.$_$.r5,ms=e.$_$.m8,gs=e.$_$.p6,ys=e.$_$.d,bs=(e.$_$.l4,e.$_$.ig),$s=e.$_$.nh,ks=e.$_$.hb,xs=e.$_$.gb,qs=e.$_$.fa,Ss=e.$_$.ja,Cs=e.$_$.dg,Es=e.$_$.oc,Os=e.$_$.nc,js=e.$_$.w6,zs=e.$_$.t9,Ts=e.$_$.kb,As=e.$_$.xh,Is=e.$_$.v7,Ds=r.$_$.a,Ms=r.$_$.k,Ns=e.$_$.c6,Rs=e.$_$.e6,Ps=e.$_$.pb,Ls=e.$_$.t6,Fs=e.$_$.tb,Us=e.$_$.ib,Hs=e.$_$.z9,Vs=e.$_$.z2,Bs=e.$_$.id,Ws=e.$_$.la,Ys=e.$_$.qh,Gs=e.$_$.vh,Ks=e.$_$.q9,Xs=s.$_$.x,Js=e.$_$.c9,Zs=e.$_$.s4,Qs=e.$_$.h,tu=e.$_$.ag,nu=s.$_$.b1,iu=s.$_$.e1,eu=e.$_$.gc,ru=s.$_$.l1,su=e.$_$.ic,uu=e.$_$.r8,ou=(e.$_$.m4,e.$_$.c2),_u=e.$_$.rh,hu=e.$_$.a9,au=e.$_$.l8,lu=e.$_$.e,cu=e.$_$.qb,fu=e.$_$.ph,vu=e.$_$.tc,du=e.$_$.ka,wu=e.$_$.p,pu=e.$_$.m5,mu=e.$_$.t7,gu=e.$_$.ec,yu=e.$_$.yb,bu=e.$_$.y5,$u=e.$_$.l,ku=e.$_$.te,xu=e.$_$.aa,qu=e.$_$.w7,Su=e.$_$.af,Cu=e.$_$.qg,Eu=e.$_$.k5,Ou=e.$_$.kd,ju=e.$_$.n,zu=e.$_$.bc,Tu=e.$_$.rd,Au=e.$_$.f1,Iu=e.$_$.ff,Du=e.$_$.r2,Mu=e.$_$.q4,Nu=e.$_$.le,Ru=e.$_$.se,Pu=u.$_$.g2,Lu=u.$_$.t,Fu=u.$_$.s,Uu=u.$_$.e,Hu=u.$_$.b2,Vu=u.$_$.c2,Bu=u.$_$.j2,Wu=u.$_$.z1,Yu=u.$_$.r,Gu=e.$_$.ma,Ku=o.$_$.a,Xu=e.$_$.gh,Ju=e.$_$.a,Zu=u.$_$.v2,Qu=u.$_$.p2,to=e.$_$.cc,no=e.$_$.f6,io=e.$_$.ac,eo=_.$_$.a,ro=s.$_$.j,so=s.$_$.c,uo=h.$_$.d,oo=h.$_$.e,_o=h.$_$.c,ho=a.$_$.f,ao=h.$_$.f,lo=h.$_$.a,co=l.$_$.u,fo=c.$_$.a,vo=e.$_$.w8,wo=e.$_$.v8,po=e.$_$.ne,mo=e.$_$.d1,go=e.$_$.hf,yo=e.$_$.pg,bo=c.$_$.d,$o=c.$_$.e,ko=u.$_$.w,xo=u.$_$.q,qo=e.$_$.q5,So=e.$_$.z5,Co=c.$_$.f,Eo=u.$_$.p,Oo=e.$_$.ia,jo=c.$_$.b,zo=e.$_$.s7,To=e.$_$.z7,Ao=u.$_$.e2,Io=e.$_$.v6,Do=c.$_$.c,Mo=e.$_$.ua,No=e.$_$.n4,Ro=e.$_$.o4,Po=e.$_$.jb,Lo=e.$_$.x8,Fo=e.$_$.zb,Uo=e.$_$.v9,Ho=e.$_$.p2,Vo=e.$_$.c7,Bo=e.$_$.n8,Wo=r.$_$.m,Yo=e.$_$.vb,Go=e.$_$.w2,Ko=e.$_$.qe,Xo=e.$_$.wd,Jo=e.$_$.ld,Zo=e.$_$.x9,Qo=e.$_$.re,t_=r.$_$.l,n_=r.$_$.j,i_=r.$_$.i,e_=e.$_$.pf,r_=e.$_$.jf,s_=e.$_$.bf,u_=r.$_$.h,o_=r.$_$.g,__=r.$_$.f,h_=r.$_$.e,a_=r.$_$.d,l_=e.$_$.i2,c_=e.$_$.sh,f_=h.$_$.g,v_=h.$_$.b,d_=f.$_$.a,w_=e.$_$.uh,p_=e.$_$.eb,m_=e.$_$.db,g_=e.$_$.wb,y_=e.$_$.jc,b_=e.$_$.og,$_=e.$_$.e7,k_=e.$_$.fb,x_=e.$_$.cg,q_=s.$_$.a,S_=e.$_$.p4,C_=e.$_$.sd,E_=e.$_$.dh,O_=e.$_$.ya,j_=e.$_$.of,z_=n.$_$.b,T_=e.$_$.th;function A_(){v=this,this.n5f_1=new Mr;var t=i(257),n=null!=t&&"string"==typeof t?t:Nr();this.o5f_1=Rr("sun_texture.png",n);var e=i(926),r=null!=e&&"string"==typeof e?e:Nr();this.p5f_1=Rr("dnb_land_ocean_ice_2012.png",r);var s=i(709),u=null!=s&&"string"==typeof s?s:Nr();this.q5f_1=Rr("worldwind_worldtopobathy2004053.png",u)}function I_(){return null==v&&new A_,v}function D_(){d=this,this.r5f_1=new Mr;var t=i(735);this.s5f_1=new Ur(null!=t&&"string"==typeof t?t:Nr())}function M_(t){this.t5f_1=t,this.u5f_1=new Hr(20,0),this.v5f_1=3e3,this.w5f_1=ba(),this.x5f_1=null,this.y5f_1=null,this.z5f_1=null,this.a5g_1=null,this.b5g_1=Vr().i3k_1,this.c5g_1=0,this.d5g_1=Vr().i3k_1,this.e5g_1=0,this.f5g_1=0}function N_(){}function R_(t,n,i,e){i=i===Wr?null:i,e=e===Wr?null:e,this.p5g_1=t,this.q5g_1=n,this.r5g_1=i,this.s5g_1=e,this.t5g_1=!1}function P_(t){return t.toString()}function L_(){this.w5g_1=Kr()}function F_(){}function U_(){}function H_(){m=this,this.e5h_1=10,this.f5h_1=Zr(Wr,1),this.g5h_1=Qr(this.f5h_1)}function V_(){return null==m&&new H_,m}function B_(){}function W_(t,n,i,e,r,s){V_(),i=i===Wr?new Zl:i,e=e===Wr?new dc:e,r=r===Wr?new zh:r,s=s===Wr?null:s,this.i5h_1=n,this.j5h_1=i,this.k5h_1=e,this.l5h_1=r,this.m5h_1=s,this.n5h_1=new $c,this.o5h_1=new ha,this.p5h_1=new M_(this),this.q5h_1=il(),this.r5h_1=!0,this.s5h_1=1,this.t5h_1=1,this.u5h_1=16e4,this.v5h_1=new by,this.w5h_1=new K_(t),this.x5h_1=0,this.y5h_1=Oa(),this.z5h_1=Oa(),this.a5i_1=tl(),this.b5i_1=da();var u=ga().e5i(ns().z3z()),o=1.1*this.f5i();this.o5h_1.g5i_1.r5i(u.m5i_1,u.n5i_1,o)}function Y_(){}function G_(){this.s5r_1=Jl(),this.t5r_1=Ba(),this.u5r_1=tl(),this.v5r_1=Ha(),this.w5r_1=Ha(),this.x5r_1=null,this.y5r_1=null,this.z5r_1=null,this.a5s_1=null,this.b5s_1=null}function K_(t){this.x5j_1=t,this.y5j_1=tl(),this.z5j_1=il(),this.a5k_1=Oa(),this.b5k_1=Oa(),this.c5k_1=Oa(),this.d5k_1=Oa(),this.e5k_1=null,this.f5k_1=null,this.g5k_1=null,this.h5k_1=null,this.i5k_1=null,this.j5k_1=!1,this.k5k_1=aS().d5t_1,this.l5k_1=Zq().e5t_1,this.m5k_1=rx();for(var n=0,i=hs(Array(32),null);n<32;)i[n]=oS().f5t_1,n=n+1|0;this.n5k_1=i,this.o5k_1=rS().g5t_1,this.p5k_1=rS().g5t_1,this.q5k_1=null,this.r5k_1=null,this.s5k_1=null,this.t5k_1=new Int8Array(4),this.u5k_1=new Int8Array(4),this.v5k_1=new Ey(Vk(),je),this.w5k_1=as()}function X_(){this.l5v_1=4}function J_(){this.m5v_1=0,this.n5v_1=0,this.o5v_1=0,this.p5v_1=0,this.q5v_1=_y(),this.r5v_1=1,this.s5v_1=0,this.t5v_1=null,this.u5v_1=qa(),this.v5v_1=new Z_}function Z_(){this.w5v_1=0,this.x5v_1=0}function Q_(){this.y5v_1=null,this.z5v_1=null,this.a5w_1=null,this.b5w_1=tl(),this.c5w_1=0,this.d5w_1=!0,this.e5w_1=!0,this.f5w_1=!0,this.g5w_1=0,this.h5w_1=!1,this.i5w_1=_y(),this.j5w_1=1,this.k5w_1=1,this.l5w_1=null,this.m5w_1=qa(),this.n5w_1=new Z_,this.o5w_1=0;for(var t=0,n=hs(Array(4),null);t<4;)n[t]=new J_,t=t+1|0;this.p5w_1=n}function th(){if(k)return Xr;k=!0,y=new nh("BACKGROUND",0),b=new nh("SURFACE",1),$=new nh("SHAPE",2),new nh("SCREEN",3)}function nh(t,n){ds.call(this,t,n)}function ih(){return th(),y}function eh(){return th(),b}function rh(){}function sh(){this.b5x_1=new Float32Array(2);for(var t=0,n=hs(Array(5),null);t<5;)n[t]=_y(),t=t+1|0;this.c5x_1=n,this.d5x_1=1,this.e5x_1=Jl(),this.f5x_1=null,this.g5x_1=null}function uh(){}function oh(){this.h5y_1=new Float32Array(40),this.i5y_1=Oa(),this.j5y_1=_y(),this.k5y_1=1,this.l5y_1=1,this.m5y_1=!0,this.n5y_1=null,this.o5y_1=null}function _h(){this.d60_1=12}function hh(){this.e60_1=null,this.f60_1=ih(),this.g60_1=0,this.h60_1=0}function ah(t){this.j60_1=t}function lh(t,n){var i=us(t).f60_1.z9(us(n).f60_1);return 0===i&&(i=ws(t.g60_1,n.g60_1)),0===i&&(i=ws(t.h60_1,n.h60_1)),i}function ch(){this.i5t_1=0,this.j5t_1=0;var t=this.i5t_1;this.k5t_1=hs(Array(t),null);var n=lh;this.l5t_1=new ah(n)}function fh(){}function vh(){this.p60_1=Oa(),this.q60_1=_y(),this.r60_1=1,this.s60_1=!0,this.t60_1=null,this.u60_1=null,this.v60_1=null,this.w60_1=Oa()}function dh(){}function wh(){this.y61_1=new Q_,this.z61_1=null,this.a62_1=Oa()}function ph(){}function mh(){this.i62_1=Oa(),this.j62_1=0,this.k62_1=new cy(0,0,0,0),this.l62_1=new cy(0,0,0,0),this.m62_1=null,this.n62_1=null,this.o62_1=Oa(),this.p62_1=Oa(),this.q62_1=Oa(),this.r62_1=[Oa().s62(0,0,1,Fh().x5m_1).l5r(1,0,0,Fh().w5m_1),Oa().s62(0,0,1,Fh().w5m_1).l5r(1,0,0,Fh().w5m_1),Oa().s62(1,0,0,Fh().w5m_1),Oa().s62(0,0,1,Fh().y5m_1).l5r(1,0,0,Fh().w5m_1),Oa()]}function gh(){this.o63_1=0}function yh(){this.q63_1=Oa(),this.r63_1=0,this.s63_1=0,this.t63_1=0,this.u63_1=0,this.v63_1=!1,this.w63_1=0,this.x63_1=null,this.y63_1=null,this.z63_1=null,this.a64_1=null,this.b64_1=null}function bh(){}function $h(){this.v64_1=_y(),this.w64_1=1,this.x64_1=null,this.y64_1=null,this.z64_1=Oa()}function kh(){}function xh(){this.b65_1=Jl(),this.c65_1=Ba(),this.d65_1=new Q_,this.e65_1=null,this.f65_1=Oa(),this.g65_1=Oa(),this.h65_1=qa(),this.i65_1=_y(),this.j65_1=1}function qh(){}function Sh(t,n){var i=t.b66_1;return!0===(null==i?null:i.v61(n))}function Ch(){this.v65_1=Jl(),this.w65_1=Ba(),this.x65_1=Ba(),this.y65_1=_y(),this.z65_1=1,this.a66_1=qa(),this.b66_1=null,this.c66_1=null,this.d66_1=null}function Eh(){}function Oh(){}function jh(){this.f67_1=_y(),this.g67_1=1,this.h67_1=null,this.i67_1=null,this.j67_1=Oa(),this.k67_1=Oa()}function zh(){this.m67_1=Kr(),this.n67_1=_y(),this.o67_1=tl(),this.p67_1=Pa(),this.q67_1=new oa,this.r67_1=Ba().u67(),this.s67_1=tl(),this.t67_1=da()}function Th(){}function Ah(){this.j5o_1=il(),this.k5o_1=Oa(),this.l5o_1=Oa(),this.m5o_1=new ch,this.n5o_1=new ch,this.o5o_1=null,this.p5o_1=null,this.q5o_1=null,this.r5o_1=null,this.s5o_1=null,this.t5o_1=!1,this.u5o_1=null}function Ih(){if(M)return Xr;M=!0,I=new Dh("ABSOLUTE",0),D=new Dh("CLAMP_TO_GROUND",1),new Dh("RELATIVE_TO_GROUND",2)}function Dh(t,n){ds.call(this,t,n)}function Mh(){return Ih(),I}function Nh(){return Ih(),D}function Rh(t){if($s(t)){var n=kr.y5i(kr.t5i_1,"Angle","init","NaN is not supported!");throw is(Gr(n))}return t}function Ph(t){return Fh().j69(t)}function Lh(){N=this,this.v5m_1=this.p5r(0),this.w5m_1=this.p5r(90),this.x5m_1=this.p5r(-90),this.y5m_1=this.p5r(180),this.z5m_1=this.p5r(-180),this.a5n_1=this.p5r(360),this.b5n_1=this.p5r(-360);this.c5n_1=this.p5r(.016666666666666666);this.d5n_1=this.p5r(.0002777777777777778),this.e5n_1=.017453292519943295,this.f5n_1=57.29577951308232,this.g5n_1=60,this.h5n_1=.016666666666666666,this.i5n_1=3600,this.j5n_1=.0002777777777777778,this.k5n_1=.017453292519943295,this.l5n_1=57.29577951308232,this.m5n_1=17.77777777777778,this.n5n_1=.05625,this.o5n_1=16.666666666666668,this.p5n_1=.06,this.q5n_1=17.5,this.r5n_1=.06,this.s5n_1=60,this.t5n_1=.016666666666666666}function Fh(){return null==N&&new Lh,N}function Uh(t,n){return Fh().p5r(t+n)}function Hh(t,n){return Fh().p5r(t+n)}function Vh(t,n){return Fh().u5n(Ph(t)+n)}function Bh(t,n){return Fh().p5r(t-n)}function Wh(t,n){return Fh().p5r(t-n)}function Yh(t,n){if(qs(n,0)){var i=kr.y5i(kr.t5i_1,"Angle","div","divideByZero");throw is(Gr(i))}return Fh().p5r(t/xs(n))}function Gh(t){return Rh(-t)}function Kh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Fh(),e=Fh().m69(t);n=i.p5r(e)}return n}function Xh(t){var n;if(-90<=t&&t<=90)n=t;else{var i=Fh(),e=Fh().o69(t);n=i.p5r(e)}return n}function Jh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Fh(),e=Fh().p69(t);n=i.p5r(e)}return n}function Zh(t){var n=Fh(),i=os(t,-90,90);return n.p5r(i)}function Qh(t){var n=Fh(),i=os(t,-180,180);return n.p5r(i)}function ta(t,n){return ws(t,n)}function na(t){return Ss(t)}function ia(t){Fh(),this.v69_1=t}function ea(t,n,i,e,r,s,u,o){var _=o.u5m(n);i[0]>_&&(i[0]=_),i[1]<_&&(i[1]=_);var h=o.u5m(e);r[0]>h&&(r[0]=h),r[1]a&&(u[0]=a),u[1]=72&&e<84.5)t.k6g_1=23;else if(e>-80.5&&e<72){var r=(n+1.3962634015954636)/.13962634015954636+1e-12;t.k6g_1=ks(gl().x6i_1[ks(r)][0])}else i|=1;return i}(t,i);if(a[0]=t.k6g_1,0===f){for(1e7===(o=h)&&(o-=1);o>=2e6;)o-=2e6;(o+=t.j6g_1)>=2e6&&(o-=2e6),a[2]=ks(o/1e5),a[2]>7&&(a[2]=a[2]+1|0),a[2]>13&&(a[2]=a[2]+1|0),u=_,21===a[0]&&31===n&&5e5===u&&(u-=1),a[1]=t.h6g_1+(ks(u/1e5)-1|0)|0,9===t.h6g_1&&a[1]>13&&(a[1]=a[1]+1|0),$l(t,n,a,_,h,s)}return f}function bl(t,n){var i=Math.floor(n),e=n-i,r=Us(i);return(e>.5||.5===e&&r.ib(Ps(2)).equals(new Hr(1,0)))&&(r=r.jb()),r.f6()}function $l(t,n,i,e,r,s){var u=e,o=r;t.g6g_1=0!==n?N$("%02d",[n]):" ";var _=0;if(_<=2)do{var h=_;if(_=_+1|0,i[h]<0||i[h]>26)return Xr;t.g6g_1=t.g6g_1+Vs(Hs("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i[h]))}while(_<=2);var a=5-s|0,l=Math.pow(10,a);(u%=1e5)>=99999.5&&(u=99999);var c=ks(u/l),f=new Bs(c.toString());if(f.a()>s)f=new Bs(f.b8(0,s-1|0));else{var v=0,d=s-f.a()|0;if(v=99999.5&&(o=99999);var w=ks(o/l),p=new Bs(w.toString());if(p.a()>s)p=new Bs(p.b8(0,s-1|0));else{var m=0,g=s-p.a()|0;if(mo&&u<=20;)u=u+1|0,Fc(0,_,e)h&&_<=20))break t;_=_+1|0;var v=a.m5i_1-e,d=Ar(v),w=c.m5i_1-e;d!==Ar(w)?l=c:a=c,c=Lc(0,a,l)}r=c}return null!=r&&(r=new ya(e,r.n5i_1)),r}function Lc(t,n,i){var e=n.q6b(i),r=n.r6b(i);return n.s6b(e,r/2,pa())}function Fc(t,n,i){var e=n.n5i_1-i,r=Math.abs(e);return r<180?r:360-r}function Uc(){St=this,this.r77_1=Fh().p5r(-70),this.s77_1=Fh().p5r(70)}function Hc(){return null==St&&new Uc,St}function Vc(t){Hc(),gc.call(this,t),this.b77_1=!1,this.c77_1=new Zc,this.d77_1=tl(),this.e77_1=tl(),this.f77_1=0,this.g77_1=0,this.h77_1=0,this.i77_1=0,this.j77_1=null,this.k77_1=null,this.t77()}function Bc(t,n){Lb.call(this,n),this.b7a_1=t,this.c7a_1=as(),this.d7a_1=!0,this.e7a_1=tl()}function Wc(){this.l7a_1="DrawGraticule",this.m7a_1="GraticuleLineColor",this.n7a_1="GraticuleLineWidth",this.o7a_1="GraticuleLineStyle",this.p7a_1="DrawLabels",this.q7a_1="LabelColor",this.r7a_1="LabelFont"}function Yc(){this.s7a_1=wu()}function Gc(t,n){if(null==n.d1p("DrawGraticule")){n.g2("DrawGraticule",!0)}if(null==n.d1p("GraticuleLineColor")){var i=hy(255,255,255);n.g2("GraticuleLineColor",i)}if(null==n.d1p("GraticuleLineWidth")){n.g2("GraticuleLineWidth",.5)}if(null==n.d1p("GraticuleLineStyle")){var e=(function(){if(Et)return Xr;Et=!0,Ct=new uf("SOLID",0,0,0),new uf("DASHED",1,1,-32),new uf("DOTTED",2,2,-13108),new uf("DASH_DOTTED",3,2,-52)}(),Ct);n.g2("GraticuleLineStyle",e)}if(null==n.d1p("DrawLabels")){n.g2("DrawLabels",!0)}if(null==n.d1p("LabelColor")){var r=hy(255,255,255);n.g2("LabelColor",r)}if(null==n.d1p("LabelFont")){var s=Oq("arial",wy(),12);n.g2("LabelFont",s)}}function Kc(t,n,i,e){if(null!=n){var r=n.d1p("LabelColor");if(r instanceof cy){var s=Jc(0,r,e),u=new Float32Array(3);s.x7a(u);var o=u[2]<.5?1:0;i.h79_1.g7b(s),i.h79_1.h7b(new cy(o,o,o,s.n5g_1))}(r=n.d1p("LabelFont"))instanceof jq&&i.h79_1.i7b(r)}}function Xc(t,n,i,e,r){null!=i&&e.j7b(function(t,n,i,e){var r,s=t.n77_1.q2(n);if(null==s){var u=function(t,n,i){var e=Cb();e.k7b_1=!1,e.l7b_1=!0;var r=n.d1p("GraticuleLineColor");r instanceof cy&&e.h7b(Jc(0,r,i));var s=n.d1p("GraticuleLineWidth");null!=s&&"number"==typeof s&&(e.q7b_1=s);var u=n.d1p("GraticuleLineStyle");return u instanceof uf&&u.x7b_1>0&&(e.s7b_1=Pq().z7b(u.x7b_1,u.y7b_1)),e}(0,i,e);t.n77_1.g2(n,u),r=u}else r=s;return r}(t,n,i,r))}function Jc(t,n,i){return i>=1?n:new cy(n.k5g_1,n.l5g_1,n.m5g_1,n.n5g_1*i)}function Zc(){this.l77_1=Kr(),this.m77_1=Kr(),this.n77_1=Kr(),this.o77_1=null}function Qc(t,n,i){return function(t,n,i,e){return nf.call(e,t,n,i,Fh().v5m_1),e}(t,n,i,Ts(Pr(nf)))}function tf(){this.a7c_1="GridElement_Line",this.b7c_1="GridElement_LineNorth",this.c7c_1="GridElement_LineSouth",this.d7c_1="GridElement_LineWest",this.e7c_1="GridElement_LineEast",this.f7c_1="GridElement_LineNorthing",this.g7c_1="GridElement_LineEasting",this.h7c_1="GridElement_GridZoneLabel",this.i7c_1="GridElement_LongitudeLabel",this.j7c_1="GridElement_LatitudeLabel"}function nf(t,n,i,e){this.k7c_1=t,this.l7c_1=n,this.m7c_1=i,this.n7c_1=e}function ef(){}function rf(t,n){var i=as(),e=t.t7c_1.s7c(n.p68().e5s()),r=function(t,n){var i=t.t7c_1.q7c(n.o65_1),e=t.t7c_1.q7c(n.p65_1);return new el(i,t.t7c_1.r7c(n.m65_1),e,t.t7c_1.r7c(n.n65_1))}(t,e),s=r.s5j_1,u=r.u5j_1;if(s<=u)do{var o=s;s=s+1|0;var _=r.r5j_1,h=r.t5j_1;if(_<=h)do{var a=_;_=_+1|0;var l,c=t.w7c_1[o][a];if(null==c){var f=t.t7c_1.o7c(t.t7c_1.p7c(o,a));t.w7c_1[o][a]=f,l=f}else l=c;var v=l;v.g7a(n)?i.s(v):v.j7a()}while(a!==h)}while(o!==u);return i}function sf(t,n,i){this.t7c_1=t,this.u7c_1=n,this.v7c_1=i;for(var e=0,r=this.u7c_1,s=hs(Array(r),null);e=3||9===t.g7g_1&&t.h7g_1>=4}(t)&&function(t){var n=t.e7g_1.o65_1,i=t.e7g_1.m65_1,e=as(),r=t.e7g_1.q65()/3,s=0;if(s<=3)do{var u=s;s=s+1|0,e.s(t.f7a().l7f(new Ua(i,Hh(n,u*r),0)))}while(s<=3);var o=t.f7a().b78(e,wb());t.c7a_1.s(new nf(t.u6u_1,o,"GridElement_LineNorth",i))}(t)}function vf(t,n,i,e,r,s){e=e===Wr?"":e,r=r===Wr?0:r,s=s===Wr?0:s,Bc.call(this,t,t.k7f(n)),this.e7g_1=n,this.f7g_1=i,this.g7g_1=r,this.h7g_1=s,this.i7g_1=jt.l7h(this.e7g_1.j6a(),this.e7g_1.k6a(),this.f7g_1,e),this.j7g_1=null,this.k7g_1=null,this.l7g_1=!0}function df(t,n,i){if(n>=88)return _f().q7e_1[45];if(n<-88)return _f().q7e_1[0];var e=t.n7h(i);return _f().q7e_1[t.o7h(n)]+"-"+Gr(e<9?"0"+(e+1|0):e+1|0)}function wf(){this.c7h_1=88,this.d7h_1=180,this.e7h_1=4,this.f7h_1=6,this.g7h_1=.6666666666666667,this.h7h_1=.33333333333333337,this.i7h_1=.16666666666666669,this.j7h_1=.08333333333333334,this.k7h_1=.04166666666666667}function pf(t,n,i,e,r){var s=function(t,n){var i=n*t.y7g_1/1e3,e=Math.abs(i);return Su("0"+ks(e),2)}(t,"Y"===r?i:e),u=t.f7a().a79(n,s,t.y7g_1);u.h79_1.v7h(U.t6c()),u.b7i("label.name",r),u.b7i("label.scale.type",ks(t.y7g_1)),u.b7i("label.x",e*t.y7g_1),u.b7i("label.y",i*t.y7g_1),t.c7a_1.s(Qc(t.u6u_1,u,"metric.label"))}function mf(t,n,i){null!=n&&null!=i&&yf(t,kf(t,n),kf(t,i))}function gf(t,n,i){null!=n&&yf(t,i,kf(t,n))}function yf(t,n,i){var e=t.f7a().b78(qu([n,i]),wb());t.c7a_1.s(new nf(t.u6u_1,e,function(t){var n;return 1e3===t.y7g_1?(_f(),n="GK.Metric.Grid.1000x1000"):(_f(),n="GK.Metric.Grid.2000x2000"),n}(t),t.u6u_1.p65_1))}function bf(t,n,i,e,r,s,u){return jt.p7h(n.j6f_1,n.k6f_1,i.j6f_1,i.k6f_1,e,r,s,u)}function $f(t,n,i){var e=G.f6f(n,i);return t.f7a().l7f(new Ua(e.h6f_1,e.i6f_1,0))}function kf(t,n){return t.f7a().l7f(new Ua(n.h6f_1,n.i6f_1,0))}function xf(t,n,i,e){this.r7h_1=t,this.s7h_1=n,this.t7h_1=i,this.u7h_1=e}function qf(){this.c7i_1=1e3,this.d7i_1="metric.label"}function Sf(t,n,i,e){Bc.call(this,t,n),this.y7g_1=e,this.z7g_1=jt.m7h(i.k6a()),this.a7h_1=new xf(G.y6e(i.m65_1,i.o65_1,this.z7g_1),G.y6e(i.m65_1,60!==this.z7g_1?i.p65_1:Wh(i.p65_1,1e-12),this.z7g_1),G.y6e(i.n65_1,60!==this.z7g_1?i.p65_1:Wh(i.p65_1,1e-12),this.z7g_1),G.y6e(i.n65_1,i.o65_1,this.z7g_1))}function Cf(t,n){if("X"===n)for(var i=t.h7f_1.v();i.w();){var e=i.y();t.f7f_1.k2(e)}if("Y"===n)for(var r=t.h7f_1.v();r.w();){var s=r.y();t.g7f_1.k2(s)}t.h7f_1.b1()}function Ef(t,n,i,e,r){var s=i.e7i("label.scale.type");if(null==s)return Xr;var u=s;if("Y"===n){var o=i.e7i("label.y");if(null==o)return Xr;var _=o,h=G.f6f(e,_);if(function(t,n,i){return!(ks(i/1e6)===jt.m7h(n.i6f_1))}(0,h,_))return Xr;i.f7i(t.e7f_1.n7f(new Ua(h.h6f_1,h.i6f_1,0),i.i79_1))}else if("X"===n){var a=i.e7i("label.x");if(null==a)return Xr;var l=a,c=G.f6f(l,r);i.f7i(t.e7f_1.n7f(new Ua(c.h6f_1,c.i6f_1,0),i.i79_1))}t.e7f_1.v77(i,function(t,n){return 1e3===n?"label.1000":"label.2000"}(0,u))}function Of(t,n,i,e){return!!function(t,n,i){var e;if(0===i)e=!0;else{var r=n.e7i("label.scale.type");e=i>(null==r?0:r)}return e}(0,i,e)||function(t,n,i,e){return n.m5p_1.z5q(n.w67().f5m(i.m5i_1,i.n5i_1,0,tl()))>function(t,n){return 1e3===n?t.e7f_1.r7d_1:t.e7f_1.s7d_1}(t,e)}(t,n,i.i79_1,e)}function jf(){this.g7i_1="label.name",this.h7i_1="X",this.i7i_1="Y",this.j7i_1="label.x",this.k7i_1="label.y",this.l7i_1="label.scale.type",this.m7i_1="label.1000",this.n7i_1="label.2000"}function zf(t){this.e7f_1=t,this.f7f_1=Kr(),this.g7f_1=Kr(),this.h7f_1=as()}function Tf(t){Bc.call(this,t,Ba().u67())}function Af(){this.o7i_1=-80,this.p7i_1=84,this.q7i_1="Graticule.UTM.100000m",this.r7i_1="Graticule.UTM.10000m",this.s7i_1="Graticule.UTM.1000m",this.t7i_1="Graticule.UTM.100m",this.u7i_1="Graticule.UTM.10m",this.v7i_1="Graticule.UTM.1m",this.w7i_1=1e5}function If(t,n,i){Vc.call(this,t);var e=new Jf(this);e.y7i_1=n,e.c7j(i),this.u7j_1=e,this.v7j_1=mu(["Graticule.UTM.100000m","Graticule.UTM.10000m","Graticule.UTM.1000m","Graticule.UTM.100m","Graticule.UTM.10m","Graticule.UTM.1m"])}function Df(t,n){for(var i=function(t,n){var i=as(),e=n.p68().e5s(),r=function(t,n){var i=null;if(n.m65_1<84&&n.n65_1>-80){var e=yu(n.m65_1,-80),r=zu(n.n65_1,84),s=W.i6d(e,n.o65_1,r-e,n.q65()),u=Mf(0,s.o65_1),o=Mf(0,s.p65_1),_=Nf(0,s.m65_1),h=Nf(0,s.n65_1);_<=17&&h>=17&&30===o&&(o=31),_<=19&&h>=19&&(31===u&&(u=30),31===o&&(o=32),33===u&&(u=32),33===o&&(o=34),35===u&&(u=34),35===o&&(o=36)),i=new el(u,_,o,h)}return i}(0,e);if(null!=r){var s=r.s5j_1,u=r.u5j_1;if(s<=u)do{var o=s;s=s+1|0;var _=r.r5j_1,h=r.t5j_1;if(_<=h)do{var a=_;if(_=_+1|0,19!==o||31!==a&&33!==a&&35!==a){var l,c=t.r7n_1[o][a];if(null==c){var f=new Hf(t,Rf(0,o,a));t.r7n_1[o][a]=f,l=f}else l=c;var v=l;v.g7a(n)?i.s(v):v.j7a()}}while(a!==h)}while(o!==u)}return e.n65_1>84&&(null==t.s7n_1[2]&&(t.s7n_1[2]=new Hf(t,W.i6d(84,-180,6,180))),null==t.s7n_1[3]&&(t.s7n_1[3]=new Hf(t,W.i6d(84,0,6,180))),i.s(us(t.s7n_1[2])),i.s(us(t.s7n_1[3]))),e.m65_1<-80&&(null==t.s7n_1[0]&&(t.s7n_1[0]=new Hf(t,W.i6d(-90,-180,10,180))),null==t.s7n_1[1]&&(t.s7n_1[1]=new Hf(t,W.i6d(-90,0,10,180))),i.s(us(t.s7n_1[0])),i.s(us(t.s7n_1[1]))),i}(t,n).v();i.w();)i.y().w77(n)}function Mf(t,n){var i=(n+180)/6,e=Math.floor(i);return gu(ks(e),59)}function Nf(t,n){var i=(n+80)/8,e=Math.floor(i);return gu(ks(e),19)}function Rf(t,n,i){var e=-80+Tr(n,8)|0,r=e+(72!==e?8:12)|0,s=-180+Tr(i,6)|0,u=s+6|0;return 17===n&&30===i?u=u-3|0:17===n&&31===i?s=s-3|0:19===n&&30===i?u=u+3|0:19===n&&31===i?(s=s+3|0,u=u-3|0):19===n&&32===i?(s=s-3|0,u=u+3|0):19===n&&33===i?(s=s+3|0,u=u-3|0):19===n&&34===i?(s=s-3|0,u=u+3|0):19===n&&35===i?(s=s+3|0,u=u-3|0):19===n&&36===i&&(s=s-3|0),W.i6d(e,s,r-e|0,u-s|0)}function Pf(){this.v7n_1=1e6,this.w7n_1=5e5,this.x7n_1="Graticule.MGRS.Overview",this.y7n_1="Graticule.MGRS.GridZone",this.z7n_1=5e6}function Lf(){If.call(this,"MGRS Graticule",1e5,1e5);for(var t=0,n=hs(Array(20),null);t<20;)n[t]=hs(Array(60),null),t=t+1|0;this.r7n_1=n,this.s7n_1=hs(Array(4),null),this.t7n_1=new Wf(this);var i=qu(["Graticule.MGRS.Overview","Graticule.MGRS.GridZone"]);i.z(Pr(If).w7j.call(this)),this.u7n_1=i}function Ff(t,n){var i=Fh().k69(1567855942887398e-21),e=null;n.m7o(new Ua(n.z7k_1.m5i_1,n.z7k_1.n5i_1,0))?e=tt.x6e(n.z7k_1.m5i_1,n.z7k_1.n5i_1):n.m7o(n.u7k_1)?e=tt.x6e(Zh(Hh(n.u7k_1.m5i_1,i)),Qh(Hh(n.u7k_1.n5i_1,i))):n.m7o(n.v7k_1)?e=tt.x6e(Zh(Hh(n.v7k_1.m5i_1,i)),Qh(Wh(n.v7k_1.n5i_1,i))):n.m7o(n.w7k_1)?e=tt.x6e(Zh(Wh(n.w7k_1.m5i_1,i)),Qh(Hh(n.w7k_1.n5i_1,i))):n.m7o(n.x7k_1)&&(e=tt.x6e(Zh(Wh(n.x7k_1.m5i_1,i)),Qh(Wh(n.x7k_1.n5i_1,i)))),null!=e&&(n.d7m_1=e.toString().substring(3,5))}function Uf(){this.n7o_1=1e5,this.o7o_1=2e6,this.p7o_1=1e6}function Hf(t,n){Bc.call(this,t,n);var i;i=n.n65_1>84||n.m65_1<-80,this.t7m_1=i,this.x7m_1=null;var e=tt.x6e(n.j6a(),n.k6a());if(this.t7m_1)this.u7m_1=e.toString().substring(2,3),this.v7m_1=n.m65_1>0?vl():dl(),this.w7m_1=0;else{this.u7m_1=e.toString().substring(0,3);var r=rt.x6e(n.j6a(),n.k6a());this.v7m_1=r.b6j_1,this.w7m_1=r.a6j_1}}function Vf(){zt=this;var t=new Int32Array([3,56,64]),n=new Int32Array([6,64,72]),i=new Int32Array([9,72,84]),e=new Int32Array([21,72,84]);this.q7o_1=[t,n,i,e,new Int32Array([33,72,84])],this.r7o_1="CDEFGHJKLMNPQRSTUVWX"}function Bf(){return null==zt&&new Vf,zt}function Wf(t){Bf(),Bc.call(this,t,Ba())}function Yf(){this.s7o_1=1e6,this.t7o_1=0,this.u7o_1=1e7,this.v7o_1=0,this.w7o_1=vl(),this.x7o_1=dl()}function Gf(t){var n=t.b7j_1;if(null!=n)return n;Gs("extremes")}function Kf(t,n,i){var e=t.x7i_1.q77(n);return n.m5p_1.z5q(i)<5*e}function Xf(){this.y7o_1=-.5,this.z7o_1=-.5,this.a7p_1=5}function Jf(t){this.x7i_1=t,this.y7i_1=1e7,this.z7i_1=1e5,this.a7j_1=0}function Zf(t,n,i,e,r,s,u){iv.call(this,t,n,i,e,r,s,u),this.c7q_1=null}function Qf(t){return!!(t.m7o(t.w7k_1)&&t.m7o(t.x7k_1)&&t.m7o(t.u7k_1))&&t.m7o(t.v7k_1)}function tv(t){var n=mu([t.u7k_1,t.v7k_1,t.w7k_1,t.x7k_1]);if(!function(t,n){for(var i=null,e=n.v();e.w();){var r=e.y();if(null!=i){var s=i.n5i_1,u=Ar(s),o=r.n5i_1;if(u!==Ar(o)){var _=i.n5i_1-r.n5i_1,h=Math.abs(_);if(h>180&&h<360)return!0}}i=r}return!1}(0,n))return n;for(var i,e=0,r=n.v();r.w();){var s=r.y(),u=s.n5i_1;if(180!==Math.abs(u)){var o=s.n5i_1;e=Ar(o)}}if(0===e)return n;var _,h=t.u7k_1.n5i_1;if(180===Math.abs(h)){var a=t.u7k_1.n5i_1;i=!(Ar(a)===e)}else i=!1;i&&(t.u7k_1=new Ua(t.u7k_1.m5i_1,Gh(t.u7k_1.n5i_1),t.u7k_1.q5i_1));var l,c=t.v7k_1.n5i_1;if(180===Math.abs(c)){var f=t.v7k_1.n5i_1;_=!(Ar(f)===e)}else _=!1;_&&(t.v7k_1=new Ua(t.v7k_1.m5i_1,Gh(t.v7k_1.n5i_1),t.v7k_1.q5i_1));var v,d=t.w7k_1.n5i_1;if(180===Math.abs(d)){var w=t.w7k_1.n5i_1;l=!(Ar(w)===e)}else l=!1;l&&(t.w7k_1=new Ua(t.w7k_1.m5i_1,Gh(t.w7k_1.n5i_1),t.w7k_1.q5i_1));var p=t.x7k_1.n5i_1;if(180===Math.abs(p)){var m=t.x7k_1.n5i_1;v=!(Ar(m)===e)}else v=!1;return v&&(t.x7k_1=new Ua(t.x7k_1.m5i_1,Gh(t.x7k_1.n5i_1),t.x7k_1.q5i_1)),mu([t.u7k_1,t.v7k_1,t.w7k_1,t.x7k_1])}function nv(){this.f7q_1=100}function iv(t,n,i,e,r,s,u){Bc.call(this,t,Ba()),this.n7k_1=n,this.o7k_1=i,this.p7k_1=e,this.q7k_1=r,this.r7k_1=s,this.s7k_1=u,this.t7k_1=t.z7j(this.n7k_1,this.o7k_1,this.q7k_1+this.s7k_1/2,this.r7k_1+this.s7k_1/2),this.u7k_1=t.z7j(this.n7k_1,this.o7k_1,this.q7k_1,this.r7k_1),this.v7k_1=t.z7j(this.n7k_1,this.o7k_1,this.q7k_1+this.s7k_1,this.r7k_1),this.w7k_1=t.z7j(this.n7k_1,this.o7k_1,this.q7k_1,this.r7k_1+this.s7k_1),this.x7k_1=t.z7j(this.n7k_1,this.o7k_1,this.q7k_1+this.s7k_1,this.r7k_1+this.s7k_1);var o=function(t,n){for(var i=Fh().w5m_1,e=Fh().y5m_1,r=Fh().x5m_1,s=Fh().z5m_1,u=n.v();u.w();){var o=u.y(),_=o.m5i_1;_r&&(r=_);var h=o.n5i_1;hs&&(s=h)}return new Ga(i,r,e,s)}(0,tv(this));Qf(this)||o.l6d(this.p7k_1),this.u6u_1.f66(o),this.y7k_1=o,this.z7k_1=this.y7k_1.k6d(pa()),this.a7l_1=!Qf(this),this.b7l_1=!(this.m7o(this.w7k_1)||this.m7o(this.x7k_1)||this.m7o(this.u7k_1)||this.m7o(this.v7k_1))}function ev(t,n){var i=t.e7m_1;return!0===(null==i?null:i.g7a(n))}function rv(t,n){var i=t.f7m_1;return!0===(null==i?null:i.g7a(n))}function sv(t,n,i,e,r,s,u){iv.call(this,t,n,i,e,r,s,u),this.d7m_1=null,this.e7m_1=null,this.f7m_1=null,this.g7m_1=null}function uv(){gc.call(this,"Elevation Heatmap"),this.n7q_1=!1,this.o7q_1=.5,this.p7q_1=[new cy(0,0,1),new cy(0,1,1),new cy(0,1,0),new cy(1,1,0),new cy(1,0,0)],this.q7q_1=!0,this.r7q_1=3,this.s7q_1=new Float32Array(2)}function ov(){Hy.call(this),this.o5x_1=["uniform mat4 mvpMatrix;\nuniform float scale;\nuniform float offset;\n\nattribute vec4 vertexPoint;\nattribute float vertexHeight;\n\nvarying float height;\n\nvoid main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform vec3 color0;\nuniform vec3 color1;\nuniform vec3 color2;\nuniform vec3 color3;\nuniform vec3 color4;\nuniform float opacity;\n\nvarying float height;\n\nvoid main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n}"],this.p5x_1=["vertexPoint","vertexTexCoord"],this.q5x_1=Oa(),this.r5x_1=nS().f72_1,this.s5x_1=nS().f72_1,this.t5x_1=nS().f72_1,this.u5x_1=nS().f72_1,this.v5x_1=nS().f72_1,this.w5x_1=nS().f72_1,this.x5x_1=nS().f72_1,this.y5x_1=nS().f72_1,this.z5x_1=nS().f72_1,this.a5y_1=new Float32Array(16)}function _v(){}function hv(t,n,i,e){Bq.call(this,t,n,i,e)}function av(t,n){return(n+180)/360}function lv(t,n){var i=Ph(n),e=Math.tan(i),r=Ph(n),s=e+1/Math.cos(r);return(1+Math.log(s)/_s())/2}function cv(t,n){return t.q65()/n}function fv(t,n){return t.r65()/n}function vv(){}function dv(t,n,i,e){t=t===Wr?-1:t,n=n===Wr?1:n,i=i===Wr?Fh().z5m_1:i,e=e===Wr?Fh().y5m_1:e,Ga.call(this,At.i7s(t),At.i7s(n),i,e),this.z7q_1=t,this.a7r_1=n}function wv(){}function pv(){}function mv(t,n){t=t===Wr?null:t,n=n===Wr?null:n,bq.call(this,t,n)}function gv(t,n){Ib.call(this,t,n)}function yv(){this.i7u_1="XYZ"}function bv(t,n,i,e,r){n=n===Wr?"image/png":n,i=i!==Wr&&i,e=e===Wr?null:e,r=r===Wr?null:r,mv.call(this,e,r),this.t7u_1=t,this.u7u_1=n,this.v7u_1=i,this.w7u_1="XYZ"}function $v(t,n,i){this.y7u_1=t,this.z7u_1=n,this.a7v_1=i,this.x7u_1="Web Mercator"}function kv(){Dt=this,this.c7v_1=Du(123),this.d7v_1=Du(125),this.e7v_1="{i}",this.f7v_1="{x}",this.g7v_1="{y}",this.h7v_1="{z}",this.i7v_1="{lang}",this.j7v_1="{rand="}function xv(){Mt=this;var t=new Pu("earth.worldwind.layer.starfield.StarFieldLayer.StarMetadata",this,6);t.x3c("name",!1),t.x3c("description",!1),t.x3c("datatype",!1),t.x3c("arraysize",!1),t.x3c("unit",!1),t.x3c("ucd",!1),this.m7v_1=t}function qv(){return null==Mt&&new xv,Mt}function Sv(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 63!=(63&t)&&Bu(t,63,qv().m7v_1),_.n7v_1=n,_.o7v_1=i,_.p7v_1=e,_.q7v_1=r,_.r7v_1=s,_.s7v_1=u,_}(t,n,i,e,r,s,u,0,Ts(Pr(Tv)))}function Cv(){Nt=this,this.t7v_1=[new Wu(qv()),new Wu(new Wu(Yu()))]}function Ev(){return null==Nt&&new Cv,Nt}function Ov(){Rt=this;var t=new Pu("earth.worldwind.layer.starfield.StarFieldLayer.StarData",this,2);t.x3c("metadata",!1),t.x3c("data",!1),this.u7v_1=t}function jv(){return null==Rt&&new Ov,Rt}function zv(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,jv().u7v_1),r.v7v_1=n,r.w7v_1=i,r}(t,n,i,0,Ts(Pr(Av)))}function Tv(){}function Av(t,n){Ev(),this.v7v_1=t,this.w7v_1=n}function Iv(t){t=t===Wr?(null==d&&new D_,d).s5f_1:t,gc.call(this,"StarField"),this.e7w_1=!1,this.f7w_1=t,this.g7w_1=Pq().p6z(I_().o5f_1),this.h7w_1=128,this.i7w_1=!0,this.j7w_1=null,this.k7w_1=this.u7w(),this.l7w_1=0,this.m7w_1=null,this.n7w_1=34028235e31,this.o7w_1=14e-46,this.p7w_1=0,this.q7w_1=!1,this.r7w_1=1e7,this.s7w_1=this.u7w(),this.t7w_1=new Float32Array(4)}function Dv(){Hy.call(this),this.h64_1=["//.x = declination\n//.y = right ascension\n//.z = point size\n//.w = magnitude\nattribute vec4 vertexPoint;\n\nuniform mat4 mvpMatrix;\n/* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\nuniform float numDays;\nuniform vec2 magnitudeRange;\n\nvarying float magnitudeWeight;\n\n/* normalizes an angle between 0.0 and 359.0 */\nfloat normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n}\n\n/* transforms declination and right ascension in cartesian coordinates */\nvec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n}\n\n/* normalizes a value between 0.0 and 1.0 */\nfloat normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n}\n\nvoid main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n}","precision mediump float;\n\nuniform sampler2D textureSampler;\nuniform int textureEnabled;\n\nvarying float magnitudeWeight;\n\nconst vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\nconst vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\nvoid main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n/* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n}"],this.i64_1=["vertexPoint"],this.j64_1=nS().f72_1,this.k64_1=nS().f72_1,this.l64_1=nS().f72_1,this.m64_1=nS().f72_1,this.n64_1=nS().f72_1,this.o64_1=new Float32Array(16)}function Mv(){this.f7x_1="WCS 1.0.0"}function Nv(t,n,i,e,r){yq.call(this,e,r),this.u7x_1=t,this.v7x_1=n,this.w7x_1=i,this.x7x_1="WCS 1.0.0"}function Rv(t,n,i,e){e=e===Wr?"EPSG:4326":e,this.y7x_1=t,this.z7x_1=n,this.a7y_1=i,this.b7y_1=e,this.c7y_1="WCS 1.0.0"}function Pv(t){this.o7y_1=t,this.n7y_1="WMS 1.3.0"}function Lv(){this.z7y_1="WMS"}function Fv(t,n,i,e,r){yq.call(this,e,r),this.o7z_1=t,this.p7z_1=n,this.q7z_1=i,this.r7z_1="WMS"}function Uv(){this.s7z_1="WMS"}function Hv(t,n,i,e,r){e=e===Wr?null:e,r=r===Wr?null:r,bq.call(this,e,r),this.d80_1=t,this.e80_1=n,this.f80_1=i,this.g80_1="WMS"}function Vv(t,n){this.f7y_1=t,this.g7y_1=n,this.h7y_1="1.3.0",this.i7y_1=null,this.j7y_1="EPSG:4326",this.k7y_1=null,this.l7y_1=!0,this.m7y_1=null}function Bv(t,n,i){var e,r,s=ro().vs_1;return so(s,(e=new Gv(n,null),r=function(t,n){return e.o83(t,n)},r.$arity=1,r),i)}function Wv(t,n,i,e,r){for(var s=as(),u=e.v();u.w();){var o=u.y().f81_1;null==o||s.s(o)}return new Hv(n,i,Jr(s,","),null==r?Jr(e,",",Wr,Wr,Wr,Wr,Kv):r,function(t,n){var i=n.h1(0).e82(),e=null==i?null:i.j82(),r=null==e?null:e.m82_1,s=null==r?null:r.y82_1;if(!(null==s||s>=n.n())){var u=kr.h6e("WmsLayerFactory","createFromWmsAsync","The number of layers specified exceeds the services limit");throw is(Gr(u))}var o=t.c83(n),_=t.d83(n);return new Ib(nd(o),(h=_,function(t,n){return Vb(t.r84_1,t.s84_1,t.t84_1,t.u84_1,t.w84_1,t.x84_1,t.v84_1,n),n}(h,Ts(Pr(Wb)))));var h}(t,e))}function Yv(t){var n=t,i=t.t54();return i.k56(),n.c54_1=i.y2(),Xr}function Gv(t,n){this.m83_1=t,Ks.call(this,n)}function Kv(t){return t.g81_1}function Xv(t){var n=t.f81_1;return null==n?"":n}function Jv(t,n,i,e,r,s){Ks.call(this,s),this.x83_1=t,this.y83_1=n,this.z83_1=i,this.a84_1=e,this.b84_1=r}function Zv(t,n,i){Ks.call(this,i),this.p80_1=t,this.q80_1=n}function Qv(){Pt=this,this.z82_1=20,this.a83_1=mu(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.b83_1=fo(Wr,Yv)}function td(){return null==Pt&&new Qv,Pt}function nd(t){return function(t,n){return id.call(n,t.f7y_1,t.h7y_1,t.g7y_1,t.i7y_1),n.t7y_1=t.j7y_1,n.u7y_1=t.k7y_1,n.v7y_1=t.l7y_1,n.w7y_1=t.m7y_1,n}(t,Ts(Pr(id)))}function id(t,n,i,e){this.p7y_1=t,this.q7y_1=n,this.r7y_1=i,this.s7y_1=e,this.t7y_1="EPSG:4326",this.u7y_1=null,this.v7y_1=!0,this.w7y_1=null,this.x7y_1="WMS 1.3.0"}function ed(){this.z84_1="WMTS"}function rd(t,n,i,e,r){e=e===Wr?null:e,r=r===Wr?null:r,bq.call(this,e,r),this.k85_1=t,this.l85_1=n,this.m85_1=i,this.n85_1="WMTS",this.o85_1=!0}function sd(t,n,i){var e,r,s=ro().vs_1;return so(s,(e=new hd(n,null),r=function(t,n){return e.v89(t,n)},r.$arity=1,r),i)}function ud(t,n,i,e,r){return new rd(n,i,e.p86_1,null==r?e.m86_1:r,function(t,n){var i=function(t,n){var i=n.v();t:for(;i.w();){var e,r=i.y();switch(r.f88_1){case"urn:ogc:def:crs:OGC:1.3:CRS84":case"http://www.opengis.net/def/crs/OGC/1.3/CRS84":e=!0;break;case"urn:ogc:def:crs:EPSG::4326":e=!1;break;default:continue t}var s=e,u=as(),o=0,_=0,h=0,a=0,l=0,c=0,f=0,v=0,d=0,w=null,p=r.i88_1.v();n:for(;p.w();){var m=p.y();if(null==w||m.o88_1===w){var g=m.o88_1,y=mo("\\s+").t8(g,0);if(2===y.n()&&!(0!==a&&a!==m.p88_1||0!==l&&l!==m.q88_1)){if(0!==d&&Tr(2,d)!==m.r88_1)break n;if(0!==v&&Tr(2,v)!==m.s88_1)break n;if(u.d1()){try{s?(o=go(y.h1(0)),_=go(y.h1(1))):(o=go(y.h1(1)),_=go(y.h1(0)))}catch(t){if(t instanceof yo){kr.y5i(kr.u5i_1,"WmtsLayerFactory","determineTileSchemeCompatibleTileMatrixSet","Unable to parse TopLeftCorner values");continue n}throw t}h=m.n88_1,a=m.p88_1,l=m.p88_1,c=m.r88_1,f=m.s88_1}u.s(m.m88_1),v=m.s88_1,d=m.r88_1,w=m.o88_1}}}if(!u.d1())return new od(r.e88_1,u,h,o,_,a,l,c,f)}return null}(0,n.a87());if(null==i){var e=kr.h6e("WmtsLayerFactory","createWmtsLayer","Tile Schemes Not Compatible");throw fs(Gr(e))}var r=i;return new Ib(function(t,n,i){for(var e=n.x86_1.v();e.w();){var r=e.y();if(t.w87_1.r(r.b87_1))return new dd(po(po(r.d87_1,"{style}",n.t86_1.h1(0).h87_1),"{TileMatrixSet}",i.k87_1),i.l87_1,i.s87_1,r.b87_1)}var s,u=function(t,n){var i=n.j82().x88_1;if(null==i)return null;var e=i.c89();if(null==e)return null;var r=e.e89_1;if(r.d1())return null;var s=r.h1(0).g89();if(s.d1())return null;var u=s.h1(0).i89_1;return u.d1()?null:u.h1(0).k89_1.r("KVP")?s.h1(0).h89_1:null}(0,n);if(null==u){var o=kr.h6e("WmtsLayerFactory","getWmtsTileFactory","No KVP Get Support");throw fs(Gr(o))}t:{for(var _=t.w87_1.v();_.w();){var h=_.y();if(n.u86_1.r(h)){s=h;break t}}s=null}var a=s;if(null==a){var l=kr.h6e("WmtsLayerFactory","getWmtsTileFactory","Image Formats Not Compatible");throw fs(Gr(l))}var c=a,f=n.t86_1.h1(0).h87_1;return new dd(function(t,n,i,e,r,s){return Gr(eo().f1u(n).y5a().a5a("VERSION","1.0.0").a5a("SERVICE","WMTS").a5a("REQUEST","GetTile").a5a("LAYER",i).a5a("STYLE",r).a5a("FORMAT",e).a5a("TILEMATRIXSET",s).y2())+"&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}"}(0,u,n.p86_1,c,f,i.k87_1),i.l87_1,i.s87_1,c)}(t,n,r),function(t,n,i){var e=n.r86_1,r=null==e?null:e.e5s();if(null==r){var s=kr.h6e("WmtsLayerFactory","createWmtsLevelSet","WGS84BoundingBox not defined for layer: "+n.p86_1);throw fs(Gr(s))}var u=r,o=i.m87_1/Fh().j69(la().u6a_1.w6a_1)*28e-5,_=i.p87_1*o,h=i.q87_1*o,a=i.n87_1+_*i.r87_1,l=i.o87_1-h*i.s87_1,c=a-i.n87_1,f=i.o87_1-l;return Bb(u,W.i6d(l,i.n87_1,f,c),ga().n6b(f/i.s87_1,c/i.r87_1),i.l87_1.n(),i.p87_1,i.q87_1)}(0,n,r))}(t,e))}function od(t,n,i,e,r,s,u,o,_){this.k87_1=t,this.l87_1=n,this.m87_1=i,this.n87_1=e,this.o87_1=r,this.p87_1=s,this.q87_1=u,this.r87_1=o,this.s87_1=_}function _d(t){var n=t,i=t.t54();return i.k56(),n.c54_1=i.y2(),Xr}function hd(t,n){this.t89_1=t,Ks.call(this,n)}function ad(t,n,i,e,r,s){Ks.call(this,s),this.e8a_1=t,this.f8a_1=n,this.g8a_1=i,this.h8a_1=e,this.i8a_1=r}function ld(t,n,i){Ks.call(this,i),this.x85_1=t,this.y85_1=n}function cd(){Lt=this,this.t87_1=28e-5,this.u87_1="{style}",this.v87_1="{TileMatrixSet}",this.w87_1=mu(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.x87_1=fo(Wr,_d)}function fd(){return null==Lt&&new cd,Lt}function vd(){this.p8a_1="{TileMatrix}",this.q8a_1="{TileRow}",this.r8a_1="{TileCol}"}function dd(t,n,i,e){this.s8a_1=t,this.t8a_1=n,this.u8a_1=i,this.v8a_1=e,this.w8a_1="WMTS 1.0.0"}function wd(){}function pd(){Ft=this;var t=new Pu("earth.worldwind.ogc.wms.WmsAttribution",this,3);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("onlineResource",!0),t.x3c("logoURL",!0),t.z3c(new $o("Attribution","http://www.opengis.net/wms","")),this.y8a_1=t}function md(){return null==Ft&&new pd,Ft}function gd(t,n,i,e,r){return function(t,n,i,e,r,s){return 0!=(0&t)&&Bu(t,0,md().y8a_1),s.z8a_1=0==(1&t)?null:n,s.a8b_1=0==(2&t)?null:i,s.b8b_1=0==(4&t)?null:e,s}(t,n,i,e,0,Ts(Pr(yd)))}function yd(t,n,i){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,this.z8a_1=t,this.a8b_1=n,this.b8b_1=i}function bd(){Ut=this;var t=new Pu("earth.worldwind.ogc.wms.WmsAuthorityUrl",this,2);t.x3c("name",!1),t.x3c("onlineResource",!1),t.z3c(new $o("AuthorityURL","http://www.opengis.net/wms","")),this.c8b_1=t}function $d(){return null==Ut&&new bd,Ut}function kd(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,$d().c8b_1),r.d8b_1=n,r.e8b_1=i,r}(t,n,i,0,Ts(Pr(xd)))}function xd(){}function qd(){Ht=this;var t=new Pu("earth.worldwind.ogc.wms.WmsBoundingBox",this,7);t.x3c("CRS",!1),t.x3c("minx",!1),t.x3c("maxx",!1),t.x3c("miny",!1),t.x3c("maxy",!1),t.x3c("resx",!0),t.x3c("resy",!0),t.z3c(new $o("BoundingBox","http://www.opengis.net/wms","")),this.f8b_1=t}function Sd(){return null==Ht&&new qd,Ht}function Cd(t,n,i,e,r,s,u,o,_){return function(t,n,i,e,r,s,u,o,_,h){return 31!=(31&t)&&Bu(t,31,Sd().f8b_1),h.g8b_1=n,h.h8b_1=i,h.i8b_1=e,h.j8b_1=r,h.k8b_1=s,h.l8b_1=0==(32&t)?null:u,h.m8b_1=0==(64&t)?null:o,h}(t,n,i,e,r,s,u,o,0,Ts(Pr(Ed)))}function Ed(){}function Od(){}function jd(){Vt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsCapabilities",this,4);t.x3c("version",!0),t.x3c("updateSequence",!0),t.x3c("service",!1),t.x3c("capability",!1),t.z3c(new $o("WMS_Capabilities","http://www.opengis.net/wms","")),this.n8b_1=t}function zd(){return null==Vt&&new jd,Vt}function Td(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 12!=(12&t)&&Bu(t,12,zd().n8b_1),u.k82_1=0==(1&t)?"1.3.0":n,u.l82_1=0==(2&t)?null:i,u.m82_1=e,u.n82_1=r,u.n82_1.i82_1=u,u}(t,n,i,e,r,0,Ts(Pr(Ad)))}function Ad(t,n,i,e){t=t===Wr?"1.3.0":t,n=n===Wr?null:n,this.k82_1=t,this.l82_1=n,this.m82_1=i,this.n82_1=e,this.n82_1.i82_1=this}function Id(){Bt=this,this.p8b_1=[null,new Wu(Rw()),null]}function Dd(){return null==Bt&&new Id,Bt}function Md(){Wt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsCapability",this,3);t.x3c("request",!1),t.x3c("layers",!0),t.x3c("exception",!0),t.z3c(new $o("Capability","http://www.opengis.net/wms","")),this.q8b_1=t}function Nd(){return null==Wt&&new Md,Wt}function Rd(t,n,i,e,r){return function(t,n,i,e,r,s){1!=(1&t)&&Bu(t,1,Nd().q8b_1),s.f82_1=n,s.g82_1=0==(2&t)?Ls():i,s.h82_1=0==(4&t)?new yw:e;for(var u=s.g82_1.v();u.w();)u.y().c82_1=s;return s}(t,n,i,e,0,Ts(Pr(Pd)))}function Pd(){}function Ld(){Yt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsContactAddress",this,6);t.x3c("addressType",!1),t.y3c(new bo(!0)),t.y3c(new $o("AddressType","http://www.opengis.net/wms","")),t.x3c("address",!1),t.y3c(new bo(!0)),t.y3c(new $o("Address","http://www.opengis.net/wms","")),t.x3c("city",!1),t.y3c(new bo(!0)),t.y3c(new $o("City","http://www.opengis.net/wms","")),t.x3c("stateOrProvince",!1),t.y3c(new bo(!0)),t.y3c(new $o("StateOrProvince","http://www.opengis.net/wms","")),t.x3c("postCode",!1),t.y3c(new bo(!0)),t.y3c(new $o("PostCode","http://www.opengis.net/wms","")),t.x3c("country",!1),t.y3c(new bo(!0)),t.y3c(new $o("Country","http://www.opengis.net/wms","")),t.z3c(new $o("ContactAddress","http://www.opengis.net/wms","")),this.r8b_1=t}function Fd(){return null==Yt&&new Ld,Yt}function Ud(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 63!=(63&t)&&Bu(t,63,Fd().r8b_1),_.s8b_1=n,_.t8b_1=i,_.u8b_1=e,_.v8b_1=r,_.w8b_1=s,_.x8b_1=u,_}(t,n,i,e,r,s,u,0,Ts(Pr(Hd)))}function Hd(){}function Vd(){}function Bd(){Gt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsContactInformation",this,6);t.x3c("position",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactPosition","http://www.opengis.net/wms","")),t.x3c("voiceTelephone",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactVoiceTelephone","http://www.opengis.net/wms","")),t.x3c("facsimileTelephone",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactFacsimileNumber","http://www.opengis.net/wms","")),t.x3c("electronicMailAddress",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactElectronicMailAddress","http://www.opengis.net/wms","")),t.x3c("contactAddress",!0),t.x3c("contactPersonPrimary",!0),t.z3c(new $o("ContactInformation","http://www.opengis.net/wms","")),this.y8b_1=t}function Wd(){return null==Gt&&new Bd,Gt}function Yd(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 0!=(0&t)&&Bu(t,0,Wd().y8b_1),_.z8b_1=0==(1&t)?null:n,_.a8c_1=0==(2&t)?null:i,_.b8c_1=0==(4&t)?null:e,_.c8c_1=0==(8&t)?null:r,_.d8c_1=0==(16&t)?null:s,_.e8c_1=0==(32&t)?null:u,_}(t,n,i,e,r,s,u,0,Ts(Pr(Gd)))}function Gd(t,n,i,e,r,s){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,s=s===Wr?null:s,this.z8b_1=t,this.a8c_1=n,this.b8c_1=i,this.c8c_1=e,this.d8c_1=r,this.e8c_1=s}function Kd(){Kt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsContactPersonPrimary",this,2);t.x3c("contactPerson",!1),t.y3c(new bo(!0)),t.y3c(new $o("ContactPerson","http://www.opengis.net/wms","")),t.x3c("contactOrganization",!1),t.y3c(new bo(!0)),t.y3c(new $o("ContactOrganization","http://www.opengis.net/wms","")),t.z3c(new $o("ContactPersonPrimary","http://www.opengis.net/wms","")),this.f8c_1=t}function Xd(){return null==Kt&&new Kd,Kt}function Jd(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,Xd().f8c_1),r.g8c_1=n,r.h8c_1=i,r}(t,n,i,0,Ts(Pr(Zd)))}function Zd(){}function Qd(){Xt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDcpType.WmsHttp",this,2);t.x3c("get",!1),t.y3c(new $o("Get","http://www.opengis.net/wms","")),t.x3c("post",!0),t.y3c(new $o("Post","http://www.opengis.net/wms","")),t.z3c(new $o("HTTP","http://www.opengis.net/wms","")),this.i8c_1=t}function tw(){return null==Xt&&new Qd,Xt}function nw(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,tw().i8c_1),r.j8c_1=n,r.k8c_1=0==(2&t)?null:i,r}(t,n,i,0,Ts(Pr(sw)))}function iw(){Jt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDcpType.WmsHttpProtocol",this,1);t.x3c("onlineResource",!1),this.l8c_1=t}function ew(){return null==Jt&&new iw,Jt}function rw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,ew().l8c_1),e.m8c_1=n,e}(t,n,0,Ts(Pr(uw)))}function sw(){}function uw(){}function ow(){Zt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDcpType",this,1);t.x3c("http",!1),t.z3c(new $o("DCPType","http://www.opengis.net/wms","")),this.n8c_1=t}function _w(){return null==Zt&&new ow,Zt}function hw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,_w().n8c_1),e.o8c_1=n,e}(t,n,0,Ts(Pr(aw)))}function aw(){}function lw(){Qt=this;var t=new Pu("earth.worldwind.ogc.wms.WmsDimension",this,8);t.x3c("name",!1),t.x3c("units",!1),t.x3c("unitSymbol",!0),t.x3c("default",!0),t.x3c("multipleValues",!0),t.x3c("nearestValue",!0),t.x3c("current",!0),t.x3c("value",!0),t.y3c(new Co(!0)),t.z3c(new $o("Dimension","http://www.opengis.net/wms","")),this.s8c_1=t}function cw(){return null==Qt&&new lw,Qt}function fw(t,n,i,e,r,s,u,o,_,h){return function(t,n,i,e,r,s,u,o,_,h,a){return 3!=(3&t)&&Bu(t,3,cw().s8c_1),a.t8c_1=n,a.u8c_1=i,a.v8c_1=0==(4&t)?null:e,a.w8c_1=0==(8&t)?null:r,a.x8c_1=0==(16&t)?null:s,a.y8c_1=0==(32&t)?null:u,a.z8c_1=0==(64&t)?null:o,a.a8d_1=0==(128&t)?null:_,a}(t,n,i,e,r,s,u,o,_,0,Ts(Pr(vw)))}function vw(){}function dw(){tn=this,this.b8d_1=[new Wu(Lu())]}function ww(){return null==tn&&new dw,tn}function pw(){nn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsException",this,1);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.z3c(new $o("Exception","http://www.opengis.net/wms","")),this.c8d_1=t}function mw(){return null==nn&&new pw,nn}function gw(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Bu(t,0,mw().c8d_1),e.d8d_1=0==(1&t)?Ls():n,e}(t,n,0,Ts(Pr(yw)))}function yw(t){ww(),t=t===Wr?Ls():t,this.d8d_1=t}function bw(){en=this;var t=new Pu("earth.worldwind.ogc.wms.WmsGeographicBoundingBox",this,4);t.x3c("north",!1),t.y3c(new bo(!0)),t.y3c(new $o("northBoundLatitude","http://www.opengis.net/wms","")),t.x3c("east",!1),t.y3c(new bo(!0)),t.y3c(new $o("eastBoundLongitude","http://www.opengis.net/wms","")),t.x3c("south",!1),t.y3c(new bo(!0)),t.y3c(new $o("southBoundLatitude","http://www.opengis.net/wms","")),t.x3c("west",!1),t.y3c(new bo(!0)),t.y3c(new $o("westBoundLongitude","http://www.opengis.net/wms","")),t.z3c(new $o("EX_GeographicBoundingBox","http://www.opengis.net/wms","")),this.e8d_1=t}function $w(){return null==en&&new bw,en}function kw(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 15!=(15&t)&&Bu(t,15,$w().e8d_1),u.f8d_1=n,u.g8d_1=i,u.h8d_1=e,u.i8d_1=r,u}(t,n,i,e,r,0,Ts(Pr(xw)))}function xw(){}function qw(){rn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsIdentifier",this,2);t.x3c("authority",!1),t.x3c("identifier",!1),t.y3c(new Co(!0)),t.z3c(new $o("Identifier","http://www.opengis.net/wms","")),this.j8d_1=t}function Sw(){return null==rn&&new qw,rn}function Cw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,Sw().j8d_1),r.k8d_1=n,r.l8d_1=i,r}(t,n,i,0,Ts(Pr(Ew)))}function Ew(){}function Ow(){sn=this,this.m8d_1=[new Wu(Lu()),null]}function jw(){return null==sn&&new Ow,sn}function zw(){un=this;var t=new Pu("earth.worldwind.ogc.wms.WmsInfoUrl",this,2);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),this.n8d_1=t}function Tw(){return null==un&&new zw,un}function Aw(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Bu(t,2,Tw().n8d_1),r.o8d_1=0==(1&t)?Ls():n,r.p8d_1=i,r}(t,n,i,0,Ts(Pr(Iw)))}function Iw(){}function Dw(){on=this,this.q8d_1=[null,null,null,null,new Wu(Lu()),new Wu($p()),new Wu(Lu()),null,new Wu(Sd()),new Wu(cw()),null,new Wu($d()),new Wu(Sw()),new Wu(Xw()),new Wu(Tw()),new Wu(Tw()),null,null,null,null,null,null,null,null]}function Mw(){return null==on&&new Dw,on}function Nw(){_n=this;var t=new Pu("earth.worldwind.ogc.wms.WmsLayer",this,24);t.x3c("layers",!0),t.x3c("name",!0),t.y3c(new bo(!0)),t.y3c(new $o("Name","http://www.opengis.net/wms","")),t.x3c("title",!1),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/wms","")),t.x3c("keywordList",!0),t.y3c(new $o("KeywordList","http://www.opengis.net/wms","")),t.y3c(new jo("Keyword","http://www.opengis.net/wms","")),t.x3c("_styles",!0),t.x3c("_referenceSystems",!0),t.y3c(new $o("CRS","http://www.opengis.net/wms","")),t.x3c("_geographicBoundingBox",!0),t.x3c("_boundingBoxes",!0),t.x3c("_dimensions",!0),t.x3c("_attribution",!0),t.x3c("_authorityUrls",!0),t.x3c("identifiers",!0),t.x3c("metadataUrls",!0),t.x3c("dataUrls",!0),t.y3c(new $o("DataURL","http://www.opengis.net/wms","")),t.x3c("featureListUrls",!0),t.y3c(new $o("FeatureListURL","http://www.opengis.net/wms","")),t.x3c("_maxScaleDenominator",!0),t.y3c(new bo(!0)),t.y3c(new $o("MaxScaleDenominator","http://www.opengis.net/wms","")),t.x3c("_minScaleDenominator",!0),t.y3c(new bo(!0)),t.y3c(new $o("MinScaleDenominator","http://www.opengis.net/wms","")),t.x3c("isQueryable",!0),t.y3c(new $o("queryable","http://www.opengis.net/wms","")),t.x3c("_cascaded",!0),t.y3c(new $o("cascaded","http://www.opengis.net/wms","")),t.x3c("isOpaque",!0),t.y3c(new $o("opaque","http://www.opengis.net/wms","")),t.x3c("isNoSubsets",!0),t.y3c(new $o("noSubsets","http://www.opengis.net/wms","")),t.x3c("_fixedWidth",!0),t.y3c(new $o("fixedWidth","http://www.opengis.net/wms","")),t.x3c("_fixedHeight",!0),t.y3c(new $o("fixedHeight","http://www.opengis.net/wms","")),t.z3c(new $o("Layer","http://www.opengis.net/wms","")),this.r8d_1=t}function Rw(){return null==_n&&new Nw,_n}function Pw(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q){return function(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S){4!=(4&t)&&Bu(t,4,Rw().r8d_1),S.e81_1=0==(1&t)?Ls():n,S.f81_1=0==(2&t)?null:i,S.g81_1=e,S.h81_1=0==(8&t)?null:r,S.i81_1=0==(16&t)?Ls():s,S.j81_1=0==(32&t)?Ls():u,S.k81_1=0==(64&t)?Ls():o,S.l81_1=0==(128&t)?null:_,S.m81_1=0==(256&t)?Ls():h,S.n81_1=0==(512&t)?Ls():a,S.o81_1=0==(1024&t)?null:l,S.p81_1=0==(2048&t)?Ls():c,S.q81_1=0==(4096&t)?Ls():f,S.r81_1=0==(8192&t)?Ls():v,S.s81_1=0==(16384&t)?Ls():d,S.t81_1=0==(32768&t)?Ls():w,S.u81_1=0==(65536&t)?null:p,S.v81_1=0==(131072&t)?null:m,S.w81_1=0!=(262144&t)&&g,S.x81_1=0==(524288&t)?null:y,S.y81_1=0!=(1048576&t)&&b,S.z81_1=0!=(2097152&t)&&$,S.a82_1=0==(4194304&t)?null:k,S.b82_1=0==(8388608&t)?null:x,S.c82_1=null,S.d82_1=null;for(var C=S.e81_1.v();C.w();)C.y().d82_1=S;return S}(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,0,Ts(Pr(Lw)))}function Lw(){}function Fw(){hn=this,this.s8d_1=[new Ao(Lu()),null,null,null]}function Uw(){return null==hn&&new Fw,hn}function Hw(){an=this;var t=new Pu("earth.worldwind.ogc.wms.WmsLogoUrl",this,4);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),t.x3c("width",!0),t.x3c("height",!0),t.z3c(new $o("LogoURL","http://www.opengis.net/wms","")),this.t8d_1=t}function Vw(){return null==an&&new Hw,an}function Bw(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 2!=(2&t)&&Bu(t,2,Vw().t8d_1),u.u8d_1=0==(1&t)?Io():n,u.v8d_1=i,u.w8d_1=0==(4&t)?null:e,u.x8d_1=0==(8&t)?null:r,u}(t,n,i,e,r,0,Ts(Pr(Ww)))}function Ww(){}function Yw(){ln=this,this.y8d_1=[null,new Wu(Lu()),null]}function Gw(){return null==ln&&new Yw,ln}function Kw(){cn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsMetadataUrl",this,3);t.x3c("type",!1),t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),t.z3c(new $o("MetadataURL","http://www.opengis.net/wms","")),this.z8d_1=t}function Xw(){return null==cn&&new Kw,cn}function Jw(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Bu(t,5,Xw().z8d_1),s.a8e_1=n,s.b8e_1=0==(2&t)?Ls():i,s.c8e_1=e,s}(t,n,i,e,0,Ts(Pr(Zw)))}function Zw(){}function Qw(){fn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsOnlineResource",this,2);t.x3c("type",!0),t.y3c(new $o("type","http://www.w3.org/1999/xlink","xlink")),t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.z3c(new $o("OnlineResource","http://www.opengis.net/wms","")),this.d8e_1=t}function tp(){return null==fn&&new Qw,fn}function np(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Bu(t,2,tp().d8e_1),r.q8c_1=0==(1&t)?"simple":n,r.r8c_1=i,r}(t,n,i,0,Ts(Pr(ip)))}function ip(){}function ep(){vn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsRequest",this,3);t.x3c("getCapabilities",!1),t.y3c(new $o("GetCapabilities","http://www.opengis.net/wms","")),t.x3c("getMap",!1),t.y3c(new $o("GetMap","http://www.opengis.net/wms","")),t.x3c("getFeatureInfo",!0),t.y3c(new $o("GetFeatureInfo","http://www.opengis.net/wms","")),t.z3c(new $o("Request","http://www.opengis.net/wms","")),this.e8e_1=t}function rp(){return null==vn&&new ep,vn}function sp(t,n,i,e,r){return function(t,n,i,e,r,s){return 3!=(3&t)&&Bu(t,3,rp().e8e_1),s.i84_1=n,s.j84_1=i,s.k84_1=0==(4&t)?null:e,s}(t,n,i,e,0,Ts(Pr(up)))}function up(){}function op(){dn=this,this.f8e_1=[new Wu(Lu()),null]}function _p(){return null==dn&&new op,dn}function hp(){wn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsRequestOperation",this,2);t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wms","")),t.x3c("dcpType",!1),this.g8e_1=t}function ap(){return null==wn&&new hp,wn}function lp(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Bu(t,2,ap().g8e_1),r.l84_1=0==(1&t)?Ls():n,r.m84_1=i,r}(t,n,i,0,Ts(Pr(cp)))}function cp(){}function fp(){pn=this,this.h8e_1=[null,null,null,null,null,new Wu(Lu()),null,null,null,null,null]}function vp(){return null==pn&&new fp,pn}function dp(){mn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsService",this,11);t.x3c("name",!1),t.y3c(new bo(!0)),t.y3c(new $o("Name","http://www.opengis.net/wms","")),t.x3c("title",!1),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/wms","")),t.x3c("fees",!0),t.y3c(new bo(!0)),t.y3c(new $o("Fees","http://www.opengis.net/wms","")),t.x3c("accessConstraints",!0),t.y3c(new bo(!0)),t.y3c(new $o("AccessConstraints","http://www.opengis.net/wms","")),t.x3c("keywordList",!0),t.y3c(new $o("KeywordList","http://www.opengis.net/wms","")),t.y3c(new jo("Keyword","http://www.opengis.net/wms","")),t.x3c("onlineResource",!1),t.x3c("contactInformation",!0),t.x3c("maxWidth",!0),t.y3c(new bo(!0)),t.y3c(new $o("MaxWidth","http://www.opengis.net/wms","")),t.x3c("maxHeight",!0),t.y3c(new bo(!0)),t.y3c(new $o("MaxHeight","http://www.opengis.net/wms","")),t.x3c("layerLimit",!0),t.y3c(new bo(!0)),t.y3c(new $o("LayerLimit","http://www.opengis.net/wms","")),t.z3c(new $o("Service","http://www.opengis.net/wms","")),this.i8e_1=t}function wp(){return null==mn&&new dp,mn}function pp(t,n,i,e,r,s,u,o,_,h,a,l,c){return function(t,n,i,e,r,s,u,o,_,h,a,l,c,f){return 67!=(67&t)&&Bu(t,67,wp().i8e_1),f.o82_1=n,f.p82_1=i,f.q82_1=0==(4&t)?null:e,f.r82_1=0==(8&t)?null:r,f.s82_1=0==(16&t)?null:s,f.t82_1=0==(32&t)?Ls():u,f.u82_1=o,f.v82_1=0==(128&t)?null:_,f.w82_1=0==(256&t)?null:h,f.x82_1=0==(512&t)?null:a,f.y82_1=0==(1024&t)?null:l,f}(t,n,i,e,r,s,u,o,_,h,a,l,0,Ts(Pr(mp)))}function mp(){}function gp(){gn=this,this.j8e_1=[null,null,null,new Wu(Vw()),null,null]}function yp(){return null==gn&&new gp,gn}function bp(){yn=this;var t=new Pu("earth.worldwind.ogc.wms.WmsStyle",this,6);t.x3c("name",!1),t.y3c(new bo(!0)),t.y3c(new $o("Name","http://www.opengis.net/wms","")),t.x3c("title",!1),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/wms","")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/wms","")),t.x3c("legendUrls",!0),t.y3c(new $o("LegendURL","http://www.opengis.net/wms","")),t.x3c("styleSheetUrl",!0),t.y3c(new $o("StyleSheetURL","http://www.opengis.net/wms","")),t.x3c("styleUrl",!0),t.y3c(new $o("StyleURL","http://www.opengis.net/wms","")),t.z3c(new $o("Style","http://www.opengis.net/wms","")),this.k8e_1=t}function $p(){return null==yn&&new bp,yn}function kp(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 3!=(3&t)&&Bu(t,3,$p().k8e_1),_.l8e_1=n,_.m8e_1=i,_.n8e_1=0==(4&t)?null:e,_.o8e_1=0==(8&t)?Ls():r,_.p8e_1=0==(16&t)?null:s,_.q8e_1=0==(32&t)?null:u,_}(t,n,i,e,r,s,u,0,Ts(Pr(xp)))}function xp(){}function qp(){bn=this,this.r8e_1=[new Wu(Lu()),null,null,null,null,new Wu(Lu())]}function Sp(){return null==bn&&new qp,bn}function Cp(){$n=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsAddress",this,6);t.x3c("deliveryPoints",!0),t.y3c(new $o("DeliveryPoint","http://www.opengis.net/ows/1.1","ows")),t.x3c("city",!0),t.y3c(new bo(!0)),t.y3c(new $o("City","http://www.opengis.net/ows/1.1","ows")),t.x3c("administrativeArea",!0),t.y3c(new bo(!0)),t.y3c(new $o("AdministrativeArea","http://www.opengis.net/ows/1.1","ows")),t.x3c("postalCode",!0),t.y3c(new bo(!0)),t.y3c(new $o("PostalCode","http://www.opengis.net/ows/1.1","ows")),t.x3c("country",!0),t.y3c(new bo(!0)),t.y3c(new $o("Country","http://www.opengis.net/ows/1.1","ows")),t.x3c("electronicMailAddresses",!0),t.y3c(new $o("ElectronicMailAddress","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("Address","http://www.opengis.net/ows/1.1","ows")),this.s8e_1=t}function Ep(){return null==$n&&new Cp,$n}function Op(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 0!=(0&t)&&Bu(t,0,Ep().s8e_1),_.t8e_1=0==(1&t)?Ls():n,_.u8e_1=0==(2&t)?null:i,_.v8e_1=0==(4&t)?null:e,_.w8e_1=0==(8&t)?null:r,_.x8e_1=0==(16&t)?null:s,_.y8e_1=0==(32&t)?Ls():u,_}(t,n,i,e,r,s,u,0,Ts(Pr(jp)))}function jp(t,n,i,e,r,s){Sp(),t=t===Wr?Ls():t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,s=s===Wr?Ls():s,this.t8e_1=t,this.u8e_1=n,this.v8e_1=i,this.w8e_1=e,this.x8e_1=r,this.y8e_1=s}function zp(){kn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsBoundingBox",this,3);t.x3c("crs",!0),t.x3c("lowerCorner",!1),t.y3c(new bo(!0)),t.y3c(new $o("LowerCorner","http://www.opengis.net/ows/1.1","ows")),t.x3c("upperCorner",!1),t.y3c(new bo(!0)),t.y3c(new $o("UpperCorner","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("BoundingBox","http://www.opengis.net/ows/1.1","ows")),this.z8e_1=t}function Tp(){return null==kn&&new zp,kn}function Ap(t,n,i,e,r){return function(t,n,i,e,r,s){return 6!=(6&t)&&Bu(t,6,Tp().z8e_1),s.y87_1=0==(1&t)?null:n,s.z87_1=i,s.a88_1=e,s}(t,n,i,e,0,Ts(Pr(Ip)))}function Ip(){}function Dp(){xn=this,this.a8f_1=[null,new Wu(Lu())]}function Mp(){return null==xn&&new Dp,xn}function Np(){qn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsConstraint",this,2);t.x3c("name",!1),t.x3c("allowedValues",!0),t.y3c(new $o("AllowedValues","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Value","http://www.opengis.net/ows/1.1","ows")),t.y3c(new Do("AnyValue")),t.z3c(new $o("Constraint","http://www.opengis.net/ows/1.1","ows")),this.b8f_1=t}function Rp(){return null==qn&&new Np,qn}function Pp(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,Rp().b8f_1),r.j89_1=n,r.k89_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Lp)))}function Lp(){}function Fp(){}function Up(){Sn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsContactInfo",this,5);t.x3c("phone",!0),t.x3c("address",!0),t.x3c("onlineResource",!0),t.x3c("hoursOfService",!0),t.y3c(new bo(!0)),t.y3c(new $o("HoursOfService","http://www.opengis.net/ows/1.1","ows")),t.x3c("contactInstructions",!0),t.y3c(new bo(!0)),t.y3c(new $o("ContactInstructions","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("ContactInfo","http://www.opengis.net/ows/1.1","ows")),this.c8f_1=t}function Hp(){return null==Sn&&new Up,Sn}function Vp(t,n,i,e,r,s,u){return function(t,n,i,e,r,s,u,o){return 0!=(0&t)&&Bu(t,0,Hp().c8f_1),o.d8f_1=0==(1&t)?null:n,o.e8f_1=0==(2&t)?null:i,o.f8f_1=0==(4&t)?null:e,o.g8f_1=0==(8&t)?null:r,o.h8f_1=0==(16&t)?null:s,o}(t,n,i,e,r,s,0,Ts(Pr(Bp)))}function Bp(t,n,i,e,r){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,this.d8f_1=t,this.e8f_1=n,this.f8f_1=i,this.g8f_1=e,this.h8f_1=r}function Wp(){Cn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsDcp",this,1);t.x3c("http",!1),t.z3c(new $o("DCP","http://www.opengis.net/ows/1.1","ows")),this.i8f_1=t}function Yp(){return null==Cn&&new Wp,Cn}function Gp(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,Yp().i8f_1),e.f89_1=n,e}(t,n,0,Ts(Pr(Kp)))}function Kp(){}function Xp(){}function Jp(){En=this,this.l8f_1=[new Wu(um()),new Wu(um())]}function Zp(){return null==En&&new Jp,En}function Qp(){On=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsHttp",this,2);t.x3c("getMethods",!0),t.y3c(new $o("Get","http://www.opengis.net/ows/1.1","ows")),t.x3c("postMethods",!0),t.y3c(new $o("Post","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("HTTP","http://www.opengis.net/ows/1.1","ows")),this.m8f_1=t}function tm(){return null==On&&new Qp,On}function nm(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Bu(t,0,tm().m8f_1),r.j8f_1=0==(1&t)?Ls():n,r.k8f_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(im)))}function im(t,n){Zp(),t=t===Wr?Ls():t,n=n===Wr?Ls():n,this.j8f_1=t,this.k8f_1=n}function em(){jn=this,this.n8f_1=[null,new Wu(Rp())]}function rm(){return null==jn&&new em,jn}function sm(){zn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsHttpMethod",this,2);t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.x3c("constraints",!0),this.o8f_1=t}function um(){return null==zn&&new sm,zn}function om(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,um().o8f_1),r.h89_1=n,r.i89_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(_m)))}function _m(){}function hm(){Tn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsOnlineResource",this,1);t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.z3c(new $o("OnlineResource","http://www.opengis.net/ows/1.1","ows")),this.p8f_1=t}function am(){return null==Tn&&new hm,Tn}function lm(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Bu(t,1,am().p8f_1),e.q8f_1=n,e}(t,n,0,Ts(Pr(cm)))}function cm(){}function fm(){An=this,this.r8f_1=[null,new Wu(Yp())]}function vm(){return null==An&&new fm,An}function dm(){In=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsOperation",this,2);t.x3c("name",!1),t.x3c("dcps",!0),t.z3c(new $o("Operation","http://www.opengis.net/ows/1.1","ows")),this.s8f_1=t}function wm(){return null==In&&new dm,In}function pm(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,wm().s8f_1),r.d89_1=n,r.e89_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(mm)))}function mm(){}function gm(){Dn=this,this.t8f_1=[new Wu(wm())]}function ym(){return null==Dn&&new gm,Dn}function bm(){Mn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsOperationsMetadata",this,1);t.x3c("operations",!0),t.z3c(new $o("OperationsMetadata","http://www.opengis.net/ows/1.1","ows")),this.u8f_1=t}function $m(){return null==Mn&&new bm,Mn}function km(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Bu(t,0,$m().u8f_1),e.b89_1=0==(1&t)?Ls():n,e}(t,n,0,Ts(Pr(xm)))}function xm(t){ym(),t=t===Wr?Ls():t,this.b89_1=t}function qm(){Nn=this,this.v8f_1=[new Wu(Lu()),new Wu(Lu())]}function Sm(){return null==Nn&&new qm,Nn}function Cm(){Rn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsPhone",this,2);t.x3c("voice",!0),t.y3c(new bo(!0)),t.y3c(new $o("Voice","http://www.opengis.net/ows/1.1","ows")),t.x3c("fax",!0),t.y3c(new bo(!0)),t.y3c(new $o("Facsimile","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("Phone","http://www.opengis.net/ows/1.1","ows")),this.w8f_1=t}function Em(){return null==Rn&&new Cm,Rn}function Om(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Bu(t,0,Em().w8f_1),r.x8f_1=0==(1&t)?Ls():n,r.y8f_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(jm)))}function jm(t,n){Sm(),t=t===Wr?Ls():t,n=n===Wr?Ls():n,this.x8f_1=t,this.y8f_1=n}function zm(){}function Tm(){Pn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsServiceContact",this,4);t.x3c("individualName",!0),t.y3c(new bo(!0)),t.y3c(new $o("IndividualName","http://www.opengis.net/ows/1.1","ows")),t.x3c("positionName",!0),t.y3c(new bo(!0)),t.y3c(new $o("PositionName","http://www.opengis.net/ows/1.1","ows")),t.x3c("contactInfo",!0),t.x3c("role",!0),t.y3c(new bo(!0)),t.y3c(new $o("Role","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("ServiceContact","http://www.opengis.net/ows/1.1","ows")),this.z8f_1=t}function Am(){return null==Pn&&new Tm,Pn}function Im(t,n,i,e,r,s){return function(t,n,i,e,r,s,u){return 0!=(0&t)&&Bu(t,0,Am().z8f_1),u.a8g_1=0==(1&t)?null:n,u.b8g_1=0==(2&t)?null:i,u.c8g_1=0==(4&t)?null:e,u.d8g_1=0==(8&t)?null:r,u}(t,n,i,e,r,0,Ts(Pr(Dm)))}function Dm(t,n,i,e){t=t===Wr?null:t,n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,this.a8g_1=t,this.b8g_1=n,this.c8g_1=i,this.d8g_1=e}function Mm(){Ln=this,this.e8g_1=[null,null,new Wu(Lu()),null,new Wu(Lu()),null,new Wu(Lu())]}function Nm(){return null==Ln&&new Mm,Ln}function Rm(){Fn=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsServiceIdentification",this,7);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("serviceType",!1),t.y3c(new bo(!0)),t.y3c(new $o("ServiceType","http://www.opengis.net/ows/1.1","ows")),t.x3c("serviceTypeVersions",!0),t.y3c(new $o("ServiceTypeVersion","http://www.opengis.net/ows/1.1","ows")),t.x3c("fees",!0),t.y3c(new bo(!0)),t.y3c(new $o("Fees","http://www.opengis.net/ows/1.1","ows")),t.x3c("accessConstraints",!0),t.y3c(new $o("AccessConstraints","http://www.opengis.net/ows/1.1","ows")),t.z3c(new $o("ServiceIdentification","http://www.opengis.net/ows/1.1","ows")),this.f8g_1=t}function Pm(){return null==Fn&&new Rm,Fn}function Lm(t,n,i,e,r,s,u,o,_){return function(t,n,i,e,r,s,u,o,_,h){return 8!=(8&t)&&Bu(t,8,Pm().f8g_1),Xp.call(h),h.g8g_1=0==(1&t)?null:n,h.h8g_1=0==(2&t)?null:i,h.i8g_1=0==(4&t)?Ls():e,h.j8g_1=r,h.k8g_1=0==(16&t)?Ls():s,h.l8g_1=0==(32&t)?null:u,h.m8g_1=0==(64&t)?Ls():o,h}(t,n,i,e,r,s,u,o,0,Ts(Pr(Fm)))}function Fm(){}function Um(){Un=this;var t=new Pu("earth.worldwind.ogc.wmts.OwsServiceProvider",this,3);t.x3c("providerName",!1),t.y3c(new bo(!0)),t.y3c(new $o("ProviderName","http://www.opengis.net/ows/1.1","ows")),t.x3c("onlineResource",!0),t.y3c(new $o("ProviderSite","http://www.opengis.net/ows/1.1","ows")),t.x3c("serviceContact",!1),t.z3c(new $o("ServiceProvider","http://www.opengis.net/ows/1.1","ows")),this.n8g_1=t}function Hm(){return null==Un&&new Um,Un}function Vm(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Bu(t,5,Hm().n8g_1),s.o8g_1=n,s.p8g_1=0==(2&t)?null:i,s.q8g_1=e,s}(t,n,i,e,0,Ts(Pr(Bm)))}function Bm(){}function Wm(){Hn=this,this.r8g_1=[null,null,null,null,null,null,new Wu(Ag()),new Wu(am())]}function Ym(){return null==Hn&&new Wm,Hn}function Gm(){Vn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsCapabilities",this,8);t.x3c("version",!1),t.x3c("updateSequence",!0),t.x3c("serviceIdentification",!0),t.x3c("serviceProvider",!0),t.x3c("operationsMetadata",!0),t.x3c("contents",!1),t.x3c("themes",!0),t.y3c(new $o("Themes","http://www.opengis.net/wmts/1.0","")),t.y3c(new jo("Theme","http://www.opengis.net/wmts/1.0","")),t.x3c("serviceMetadataUrls",!0),t.y3c(new $o("ServiceMetadataURL","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("Capabilities","http://www.opengis.net/wmts/1.0","")),this.s8g_1=t}function Km(){return null==Vn&&new Gm,Vn}function Xm(t,n,i,e,r,s,u,o,_,h){return function(t,n,i,e,r,s,u,o,_,h,a){33!=(33&t)&&Bu(t,33,Km().s8g_1),a.t88_1=n,a.u88_1=0==(2&t)?null:i,a.v88_1=0==(4&t)?null:e,a.w88_1=0==(8&t)?null:r,a.x88_1=0==(16&t)?null:s,a.y88_1=u,a.z88_1=0==(64&t)?Ls():o,a.a89_1=0==(128&t)?Ls():_;for(var l=a.r68().v();l.w();)l.y().z86_1=a;return a}(t,n,i,e,r,s,u,o,_,0,Ts(Pr(Jm)))}function Jm(t,n,i,e,r,s,u,o){Ym(),n=n===Wr?null:n,i=i===Wr?null:i,e=e===Wr?null:e,r=r===Wr?null:r,u=u===Wr?Ls():u,o=o===Wr?Ls():o,this.t88_1=t,this.u88_1=n,this.v88_1=i,this.w88_1=e,this.x88_1=r,this.y88_1=s,this.z88_1=u,this.a89_1=o;for(var _=this.r68().v();_.w();)_.y().z86_1=this}function Zm(){Bn=this,this.w8g_1=[new Wu(fg()),new Wu(Kg())]}function Qm(){return null==Bn&&new Zm,Bn}function tg(){Wn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsContents",this,2);t.x3c("layers",!0),t.x3c("tileMatrixSets",!0),t.z3c(new $o("Contents","http://www.opengis.net/wmts/1.0","")),this.x8g_1=t}function ng(){return null==Wn&&new tg,Wn}function ig(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Bu(t,0,ng().x8g_1),r.t8g_1=0==(1&t)?Ls():n,r.u8g_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(eg)))}function eg(t,n){Qm(),t=t===Wr?Ls():t,n=n===Wr?Ls():n,this.t8g_1=t,this.u8g_1=n}function rg(){Yn=this,this.y8g_1=[null,null,new Wu(Lu()),null,null,null,null,null,new Wu(Lu())]}function sg(){return null==Yn&&new rg,Yn}function ug(){Gn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsDimension",this,9);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("unitOfMeasure",!0),t.y3c(new bo(!0)),t.y3c(new $o("UOM","http://www.opengis.net/ows/1.1","ows")),t.x3c("unitSymbol",!0),t.y3c(new bo(!0)),t.y3c(new $o("UnitSymbol","http://www.opengis.net/wmts/1.0","")),t.x3c("valueDefault",!0),t.y3c(new bo(!0)),t.y3c(new $o("Default","http://www.opengis.net/wmts/1.0","")),t.x3c("current",!0),t.y3c(new bo(!0)),t.y3c(new $o("Current","http://www.opengis.net/wmts/1.0","")),t.x3c("values",!0),t.y3c(new $o("Value","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("Dimension","http://www.opengis.net/wmts/1.0","")),this.z8g_1=t}function og(){return null==Gn&&new ug,Gn}function _g(t,n,i,e,r,s,u,o,_,h,a){return function(t,n,i,e,r,s,u,o,_,h,a,l){return 8!=(8&t)&&Bu(t,8,og().z8g_1),Xp.call(l),l.a8h_1=0==(1&t)?null:n,l.b8h_1=0==(2&t)?null:i,l.c8h_1=0==(4&t)?Ls():e,l.d8h_1=r,l.e8h_1=0==(16&t)?null:s,l.f8h_1=0==(32&t)?null:u,l.g8h_1=0==(64&t)?null:o,l.h8h_1=0==(128&t)?null:_,l.i8h_1=0==(256&t)?Ls():h,l}(t,n,i,e,r,s,u,o,_,h,0,Ts(Pr(hg)))}function hg(){}function ag(){Kn=this,this.j8h_1=[null,null,new Wu(Lu()),null,new Wu(Tp()),null,new Wu(am()),new Wu(Cg()),new Wu(Lu()),new Wu(Lu()),new Wu(ny()),new Wu(bg()),new Wu(og())]}function lg(){return null==Kn&&new ag,Kn}function cg(){Xn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsLayer",this,13);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("boundingBoxes",!0),t.x3c("wgs84BoundingBox",!0),t.y3c(new $o("WGS84BoundingBox","http://www.opengis.net/ows/1.1","ows")),t.x3c("metadata",!0),t.y3c(new $o("Metadata","http://www.opengis.net/ows/1.1","ows")),t.x3c("styles",!0),t.x3c("formats",!0),t.y3c(new $o("Format","http://www.opengis.net/wmts/1.0","")),t.x3c("infoFormats",!0),t.y3c(new $o("InfoFormat","http://www.opengis.net/wmts/1.0","")),t.x3c("tileMatrixSetLinks",!0),t.x3c("resourceUrls",!0),t.x3c("dimensions",!0),t.z3c(new $o("Layer","http://www.opengis.net/wmts/1.0","")),this.k8h_1=t}function fg(){return null==Xn&&new cg,Xn}function vg(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v){return function(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d){return 8!=(8&t)&&Bu(t,8,fg().k8h_1),Xp.call(d),d.m86_1=0==(1&t)?null:n,d.n86_1=0==(2&t)?null:i,d.o86_1=0==(4&t)?Ls():e,d.p86_1=r,d.q86_1=0==(16&t)?Ls():s,d.r86_1=0==(32&t)?null:u,d.s86_1=0==(64&t)?Ls():o,d.t86_1=0==(128&t)?Ls():_,d.u86_1=0==(256&t)?Ls():h,d.v86_1=0==(512&t)?Ls():a,d.w86_1=0==(1024&t)?Ls():l,d.x86_1=0==(2048&t)?Ls():c,d.y86_1=0==(4096&t)?Ls():f,d}(t,n,i,e,r,s,u,o,_,h,a,l,c,f,0,Ts(Pr(dg)))}function dg(){}function wg(){Jn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsLegendURL",this,2);t.x3c("url",!1),t.y3c(new $o("href","http://www.w3.org/1999/xlink","xlink")),t.x3c("format",!1),t.z3c(new $o("LegendURL","http://www.opengis.net/wmts/1.0","")),this.n8h_1=t}function pg(){return null==Jn&&new wg,Jn}function mg(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Bu(t,3,pg().n8h_1),r.o8h_1=n,r.p8h_1=i,r}(t,n,i,0,Ts(Pr(gg)))}function gg(){}function yg(){Zn=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsResourceUrl",this,3);t.x3c("format",!1),t.x3c("resourceType",!1),t.x3c("template",!1),t.z3c(new $o("ResourceURL","http://www.opengis.net/wmts/1.0","")),this.q8h_1=t}function bg(){return null==Zn&&new yg,Zn}function $g(t,n,i,e,r){return function(t,n,i,e,r,s){return 7!=(7&t)&&Bu(t,7,bg().q8h_1),s.b87_1=n,s.c87_1=i,s.d87_1=e,s}(t,n,i,e,0,Ts(Pr(kg)))}function kg(){}function xg(){Qn=this,this.r8h_1=[null,null,new Wu(Lu()),null,null,new Wu(pg())]}function qg(){return null==Qn&&new xg,Qn}function Sg(){ti=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsStyle",this,6);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("isDefault",!0),t.x3c("legendUrls",!0),t.z3c(new $o("Style","http://www.opengis.net/wmts/1.0","")),this.s8h_1=t}function Cg(){return null==ti&&new Sg,ti}function Eg(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 8!=(8&t)&&Bu(t,8,Cg().s8h_1),Xp.call(_),_.e87_1=0==(1&t)?null:n,_.f87_1=0==(2&t)?null:i,_.g87_1=0==(4&t)?Ls():e,_.h87_1=r,_.i87_1=0!=(16&t)&&s,_.j87_1=0==(32&t)?Ls():u,_}(t,n,i,e,r,s,u,0,Ts(Pr(Og)))}function Og(){}function jg(){ni=this,this.t8h_1=[null,null,new Wu(Lu()),null,null,new Wu(Lu())]}function zg(){return null==ni&&new jg,ni}function Tg(){ii=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTheme",this,6);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("themes",!0),t.x3c("layerRefs",!0),t.y3c(new $o("LayerRef","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("Theme","http://www.opengis.net/wmts/1.0","")),this.u8h_1=t}function Ag(){return null==ii&&new Tg,ii}function Ig(t,n,i,e,r,s,u,o){return function(t,n,i,e,r,s,u,o,_){return 8!=(8&t)&&Bu(t,8,Ag().u8h_1),Xp.call(_),_.v8h_1=0==(1&t)?null:n,_.w8h_1=0==(2&t)?null:i,_.x8h_1=0==(4&t)?Ls():e,_.y8h_1=r,_.z8h_1=0==(16&t)?Ls():s,_.a8i_1=0==(32&t)?Ls():u,_}(t,n,i,e,r,s,u,0,Ts(Pr(Dg)))}function Dg(){}function Mg(){ei=this,this.b8i_1=[null,null,new Wu(Lu()),null,null,null,null,null,null,null]}function Ng(){return null==ei&&new Mg,ei}function Rg(){ri=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrix",this,10);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("scaleDenominator",!1),t.y3c(new bo(!0)),t.y3c(new $o("ScaleDenominator","http://www.opengis.net/wmts/1.0","")),t.x3c("topLeftCorner",!1),t.y3c(new bo(!0)),t.y3c(new $o("TopLeftCorner","http://www.opengis.net/wmts/1.0","")),t.x3c("tileWidth",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileWidth","http://www.opengis.net/wmts/1.0","")),t.x3c("tileHeight",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileHeight","http://www.opengis.net/wmts/1.0","")),t.x3c("matrixWidth",!1),t.y3c(new bo(!0)),t.y3c(new $o("MatrixWidth","http://www.opengis.net/wmts/1.0","")),t.x3c("matrixHeight",!1),t.y3c(new bo(!0)),t.y3c(new $o("MatrixHeight","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("TileMatrix","http://www.opengis.net/wmts/1.0","")),this.c8i_1=t}function Pg(){return null==ri&&new Rg,ri}function Lg(t,n,i,e,r,s,u,o,_,h,a,l){return function(t,n,i,e,r,s,u,o,_,h,a,l,c){return 1016!=(1016&t)&&Bu(t,1016,Pg().c8i_1),Xp.call(c),c.j88_1=0==(1&t)?null:n,c.k88_1=0==(2&t)?null:i,c.l88_1=0==(4&t)?Ls():e,c.m88_1=r,c.n88_1=s,c.o88_1=u,c.p88_1=o,c.q88_1=_,c.r88_1=h,c.s88_1=a,c}(t,n,i,e,r,s,u,o,_,h,a,0,Ts(Pr(Fg)))}function Fg(){}function Ug(){si=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrixLimits",this,5);t.x3c("tileMatrixIdentifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileMatrix","http://www.opengis.net/wmts/1.0","")),t.x3c("minTileRow",!1),t.y3c(new bo(!0)),t.y3c(new $o("MinTileRow","http://www.opengis.net/wmts/1.0","")),t.x3c("maxTileRow",!1),t.y3c(new bo(!0)),t.y3c(new $o("MaxTileRow","http://www.opengis.net/wmts/1.0","")),t.x3c("minTileCol",!1),t.y3c(new bo(!0)),t.y3c(new $o("MinTileCol","http://www.opengis.net/wmts/1.0","")),t.x3c("maxTileCol",!1),t.y3c(new bo(!0)),t.y3c(new $o("MaxTileCol","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),this.d8i_1=t}function Hg(){return null==si&&new Ug,si}function Vg(t,n,i,e,r,s,u){return function(t,n,i,e,r,s,u,o){return 31!=(31&t)&&Bu(t,31,Hg().d8i_1),o.e8i_1=n,o.f8i_1=i,o.g8i_1=e,o.h8i_1=r,o.i8i_1=s,o}(t,n,i,e,r,s,0,Ts(Pr(Bg)))}function Bg(){}function Wg(){ui=this,this.j8i_1=[null,null,new Wu(Lu()),null,null,null,null,new Wu(Pg())]}function Yg(){return null==ui&&new Wg,ui}function Gg(){oi=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrixSet",this,8);t.x3c("title",!0),t.y3c(new bo(!0)),t.y3c(new $o("Title","http://www.opengis.net/ows/1.1","ows")),t.x3c("abstract",!0),t.y3c(new bo(!0)),t.y3c(new $o("Abstract","http://www.opengis.net/ows/1.1","ows")),t.x3c("keywords",!0),t.y3c(new $o("Keywords","http://www.opengis.net/ows/1.1","ows")),t.y3c(new jo("Keyword","http://www.opengis.net/ows/1.1","ows")),t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("Identifier","http://www.opengis.net/ows/1.1","ows")),t.x3c("supportedCrs",!1),t.y3c(new bo(!0)),t.y3c(new $o("SupportedCRS","http://www.opengis.net/ows/1.1","ows")),t.x3c("wellKnownScaleSet",!0),t.y3c(new bo(!0)),t.y3c(new $o("WellKnownScaleSet","http://www.opengis.net/wmts/1.0","")),t.x3c("boundingBox",!0),t.x3c("tileMatrices",!0),t.z3c(new $o("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),this.k8i_1=t}function Kg(){return null==oi&&new Gg,oi}function Xg(t,n,i,e,r,s,u,o,_,h){return function(t,n,i,e,r,s,u,o,_,h,a){return 24!=(24&t)&&Bu(t,24,Kg().k8i_1),Xp.call(a),a.b88_1=0==(1&t)?null:n,a.c88_1=0==(2&t)?null:i,a.d88_1=0==(4&t)?Ls():e,a.e88_1=r,a.f88_1=s,a.g88_1=0==(32&t)?null:u,a.h88_1=0==(64&t)?null:o,a.i88_1=0==(128&t)?Ls():_,a}(t,n,i,e,r,s,u,o,_,0,Ts(Pr(Jg)))}function Jg(){}function Zg(){_i=this,this.l8i_1=[null,new Wu(Hg())]}function Qg(){return null==_i&&new Zg,_i}function ty(){hi=this;var t=new Pu("earth.worldwind.ogc.wmts.WmtsTileMatrixSetLink",this,2);t.x3c("identifier",!1),t.y3c(new bo(!0)),t.y3c(new $o("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),t.x3c("tileMatrixSetLimits",!0),t.y3c(new $o("TileMatrixSetLimits","http://www.opengis.net/wmts/1.0","")),t.y3c(new jo("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),t.z3c(new $o("TileMatrixSetLink","http://www.opengis.net/wmts/1.0","")),this.m8i_1=t}function ny(){return null==hi&&new ty,hi}function iy(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Bu(t,1,ny().m8i_1),r.l8h_1=n,r.m8h_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(ey)))}function ey(){}function ry(t){t=t===Wr?null:t,this.w7h_1=t,this.x7h_1=!0,this.y7h_1=!0,this.z7h_1=null,this.a7i_1=null}function sy(){return new oa}function uy(){return new Float32Array(2)}function oy(t,n){n=n===Wr?null:n,ry.call(this,n),this.t8i_1=Wa(t),this.u8i_1=fu(sy),this.v8i_1=fu(uy),this.w8i_1=new Hr(0,0),this.x8i_1=0,this.y8i_1=null,this.z8i_1=null}function _y(){return t=Ts(Pr(cy)),cy.call(t,1,1,1,1),t;var t}function hy(t,n,i,e){return function(t,n,i,e,r){return e=e===Wr?255:e,cy.call(r,t/255,n/255,i/255,e/255),r}(t,n,i,e,Ts(Pr(cy)))}function ay(t){return function(t,n){return cy.call(n,t.k5g_1,t.l5g_1,t.m5g_1,t.n5g_1),n}(t,Ts(Pr(cy)))}function ly(){}function cy(t,n,i,e){e=e===Wr?1:e,this.k5g_1=t,this.l5g_1=n,this.m5g_1=i,this.n5g_1=e}function fy(){if(fi)return Xr;fi=!0,ai=new vy("NORMAL",0),li=new vy("BOLD",1),ci=new vy("ITALIC",2)}function vy(t,n){ds.call(this,t,n)}function dy(){return fy(),ai}function wy(){return fy(),li}function py(){this.c5u_1=aS().d5t_1,this.d5u_1=Kr()}function my(){this.j8j_1=16777215}function gy(t,n){t=t===Wr?null:t,n=n===Wr?null:n,this.k8j_1=t,this.l8j_1=n}function yy(){return Xi.k8l()}function by(){this.d5p_1=1,this.e5p_1=1,this.f5p_1=0,this.g5p_1=0,this.h5p_1=0,this.i5p_1=0,this.j5p_1=null,this.k5p_1=null,this.l5p_1=new Hr(0,0),this.m5p_1=tl(),this.n5p_1=il(),this.o5p_1=Oa(),this.p5p_1=Oa(),this.q5p_1=Oa(),this.r5p_1=fa(),this.s5p_1=null,this.t5p_1=null,this.u5p_1=null,this.v5p_1=null,this.w5p_1=null,this.x5p_1=null,this.y5p_1=null,this.z5p_1=!1,this.a5q_1=!1,this.b5q_1=0,this.c5q_1=0,this.d5q_1=Kr(),this.e5q_1=Kr(),this.f5q_1=new Nq(this),this.g5q_1=new gy,this.h5q_1=tl(),this.i5q_1=fu(yy)}function $y(){}function ky(){}function xy(t,n,i,e,r){r=r!==Wr&&r,this.r5t_1=t,this.s5t_1=n,this.t5t_1=i,this.u5t_1=e,this.v5t_1=r,this.w5t_1=qa(),this.x5t_1=oS().f5t_1,this.y5t_1=null,this.z5t_1=!1,this.a5u_1=!1}function qy(t,n){this.b62_1=t,this.c62_1=n,this.d62_1=Kr(),this.e62_1=rS().g5t_1}function Sy(t,n){return!(!t.n5u_1[t.o5u_1].e8j()&&!function(t,n){var i=n.x5j_1.p8m();return!!i.e8j()&&(n.x5j_1.d5v(t.j5u_1,i),n.x5j_1.r8m(t.j5u_1,t.l5u_1,null,t.k5u_1),n.x5j_1.d5v(t.j5u_1,rS().g5t_1),t.n5u_1[t.o5u_1]=i,i.e8j())}(t,n)||(t.p5u_1=0,0))}function Cy(){this.t8m_1=65536,this.u8m_1=64}function Ey(t,n,i,e){i=i===Wr?65536:i,e=e===Wr?64:e,this.j5u_1=t,this.k5u_1=n,this.l5u_1=i,this.m5u_1=e;for(var r=0,s=this.m5u_1,u=hs(Array(s),null);r=0&&i>=0)){var r=kr.y5i(kr.t5i_1,"Ellipse","constructor","invalidRadius");throw is(Gr(r))}}function Qy(){}function tb(){qi=this,this.y8q_1=-.1,this.z8q_1=new ib}function nb(){return null==qi&&new tb,qi}function ib(){this.a8r_1=tl(),this.b8r_1=tl(),this.c8r_1=Za(),this.d8r_1=Oa(),this.e8r_1=il(),this.f8r_1=0,this.g8r_1=_y(),this.h8r_1=0}function eb(t,n,i){nb(),n=n===Wr?null:n,i=i===Wr?jb():i,ry.call(this),this.g79_1=n,this.h79_1=i,this.i79_1=La(t),this.j79_1=Mh(),this.k79_1=Fh().v5m_1,this.l79_1=hb(),this.m79_1=!1,this.n79_1=null,this.p79_1=!1,this.q79_1=0}function rb(){}function sb(t,n,i){i=i===Wr?Cb():i,ry.call(this),this.q8r_1=i,this.r8r_1=La(t),this.s8r_1=n,this.t8r_1=Mh(),this.u8r_1=!1,this.v8r_1=null;var e=Cb();if(e.t7b_1.t5w(new cy(1,0,0,1)),this.w8r_1=e,this.y8r_1=tl(),this.z8r_1=0,this.a8s_1=_y(),this.b8s_1=new _a,!(n>=0)){var r=kr.y5i(kr.t5i_1,"OmnidirectionalSightline","constructor","invalidRange");throw is(Gr(r))}}function ub(){if(Ei)return Xr;Ei=!0,Si=new ob("RELATIVE_TO_GLOBE",0),Ci=new ob("RELATIVE_TO_SCREEN",1)}function ob(t,n){ds.call(this,t,n)}function _b(){return ub(),Si}function hb(){return ub(),Ci}function ab(){Oi=this,this.e8s_1=10;var t=new Dy;t.y8m_1=Ry(),t.z8m_1=Fy(),this.f8s_1=t}function lb(){return null==Oi&&new ab,Oi}function cb(t,n){lb(),n=n===Wr?Cb():n,Ky.call(this,n),this.b8t_1=t,this.c8t_1=new Float32Array(0),this.d8t_1=0,this.e8t_1=0,this.f8t_1=0,this.g8t_1=as(),this.h8t_1=as(),this.i8t_1=as(),this.l8t_1=tl(),this.m8t_1=0,this.n8t_1=tl(),this.o8t_1=tl(),this.p8t_1=tl(),this.q8t_1=qa(),this.r8t_1=pa()}function fb(){if(Ti)return Xr;Ti=!0,ji=new vb("GREAT_CIRCLE",0),zi=new vb("LINEAR",1),new vb("RHUMB_LINE",2)}function vb(t,n){ds.call(this,t,n)}function db(){return fb(),ji}function wb(){return fb(),zi}function pb(){Ai=this,this.w8t_1=4e5,this.x8t_1=-.03,this.y8t_1=tl(),this.z8t_1=tl(),this.a8u_1=tl(),this.b8u_1=tl(),this.c8u_1=Za(),this.d8u_1=Oa(),this.e8u_1=Oa(),this.f8u_1=il(),this.g8u_1=il()}function mb(){return null==Ai&&new pb,Ai}function gb(t,n,i){var e;mb(),n=n===Wr?yb():n,e=!1!==(null==(i=i===Wr?null:i)?null:0===xu(i))?"Placemark":i,ry.call(this,e),this.y8u_1=n,this.z8u_1=La(t),this.a8v_1=Mh(),this.b8v_1=null,this.c8v_1=!1,this.d8v_1=null,this.e8v_1=null,this.f8v_1=!1,this.g8v_1=4e5,this.h8v_1=6e5,this.i8v_1=!1,this.j8v_1=!1,this.k8v_1=!1,this.l8v_1=Fh().v5m_1,this.m8v_1=hb(),this.n8v_1=Fh().v5m_1,this.o8v_1=hb(),this.q8v_1=0,this.r8v_1=_y(),this.s8v_1=0}function yb(){return t=Ts(Pr($b)),$b.call(t,null,new cy(1,1,1,1),U.t6c(),1,0,!0,!1,!0,jb(),Cb()),t;var t}function bb(){}function $b(t,n,i,e,r,s,u,o,_,h){this.i8u_1=t,this.j8u_1=e,this.k8u_1=r,this.l8u_1=s,this.m8u_1=u,this.n8u_1=o,this.o8u_1=n,this.p8u_1=i,this.q8u_1=_,this.r8u_1=h}function kb(){Di=this,this.d8w_1=5,this.e8w_1=10;var t=new Dy;t.z8m_1=Fy(),this.f8w_1=t;var n=new Dy;n.z8m_1=Fy(),n.y8m_1=Ry(),this.g8w_1=n,this.h8w_1=0,this.i8w_1=1,this.j8w_1=2}function xb(){return null==Di&&new kb,Di}function qb(t){this.k8w_1=t,L$.call(this)}function Sb(t,n){xb(),t=t===Wr?Ls():t,n=n===Wr?Cb():n,Ky.call(this,n),this.h8x_1=qu([t]),this.i8x_1=new Float32Array(0),this.j8x_1=0,this.k8x_1=new Float32Array(0),this.l8x_1=0,this.m8x_1=0,this.n8x_1=as(),this.o8x_1=as(),this.p8x_1=as(),this.q8x_1=as(),this.r8x_1=xb().u7w(),this.s8x_1=xb().u7w(),this.t8x_1=xb().u7w(),this.u8x_1=xb().u7w(),this.v8x_1=tl(),this.w8x_1=0,this.x8x_1=0,this.y8x_1=new qb(this),this.z8x_1=tl(),this.a8y_1=tl(),this.b8y_1=tl(),this.c8y_1=qa(),this.d8y_1=Oa(),this.e8y_1=pa(),this.f8y_1=new Float64Array(3),this.g8y_1=new Int32Array(3),this.h8y_1=Uo(3),this.i8y_1=!0,this.j8y_1=0}function Cb(){return t=Ts(Pr(Eb)),Eb.call(t,!0,!0,!1,!0,!0,!1,new cy(1,1,1,1),new cy(1,0,0,1),1,null,null),t;var t}function Eb(t,n,i,e,r,s,u,o,_,h,a){this.k7b_1=t,this.l7b_1=n,this.m7b_1=i,this.n7b_1=e,this.o7b_1=r,this.p7b_1=s,this.q7b_1=_,this.r7b_1=h,this.s7b_1=a,this.t7b_1=u,this.u7b_1=o}function Ob(t,n){oy.call(this,t,"Surface Image"),this.l70_1=n,this.m70_1=null,this.n70_1=Ba()}function jb(){return t=Ts(Pr(Tb)),Tb.call(t,Cq(),new cy(1,1,1,1),U.v6c(),new cy(0,0,0,1),3,!0,!0,1),t;var t}function zb(t){return function(t,n){return Tb.call(n,t.c7b_1,ay(t.d7b_1),za(t.e7b_1),ay(t.f7b_1),t.y7a_1,t.z7a_1,t.a7b_1,t.b7b_1),n}(t,Ts(Pr(Tb)))}function Tb(t,n,i,e,r,s,u,o){this.y7a_1=r,this.z7a_1=s,this.a7b_1=u,this.b7b_1=o,this.c7b_1=t,this.d7b_1=n,this.e7b_1=i,this.f7b_1=e}function Ab(){Mi=this,this.v8z_1=3;Zs(),this.w8z_1=tu(5,Qs());Zs(),this.x8z_1=tu(15,Qs())}function Ib(t,n){null==Mi&&new Ab,ry.call(this,"Tiled Surface Image"),this.s7s_1=t,this.t7s_1=n,this.u7s_1=null,this.v7s_1=1,this.w7s_1=!0,this.x7s_1=!0,this.y7s_1=null,this.z7s_1=!1,this.a7t_1=new Jb(new Hr(1200,0)),this.b7t_1=null,this.c7t_1=null,this.d7t_1=null,this.e7t_1=qa(),this.f7t_1=as(),this.g7t_1=null}function Db(t){this.b90_1=t,this.y8z_1=Ds.h3k(),this.z8z_1=0,this.a90_1=!1}function Mb(t,n){this.c6s_1=t,this.d6s_1=n;Zs(),this.e6s_1=tu(60,Qs()),this.f6s_1=Kr()}function Nb(t){this.k7s_1=t,this.l7s_1=null}function Rb(){return new oa}function Pb(){return new Float32Array(2)}function Lb(t){this.u6u_1=t,this.v6u_1=fu(Rb),this.w6u_1=fu(Pb),this.x6u_1=new Hr(0,0),this.y6u_1=0,this.z6u_1=null,this.a6v_1=null,this.b6v_1=tl()}function Fb(){this.e90_1=12}function Ub(){this.f90_1=0;var t=this.f90_1;this.g90_1=hs(Array(t),null)}function Hb(t,n,i){this.c6v_1=t,this.d6v_1=n,this.e6v_1=i,this.f6v_1=Yr(this.c6v_1.a6x_1*this.c6v_1.y6w_1.q65()/this.e6v_1.n5i_1),this.g6v_1=Yr(this.c6v_1.b6x_1*this.c6v_1.y6w_1.r65()/this.e6v_1.m5i_1),this.h6v_1=this.c6v_1.a6x_1,this.i6v_1=this.c6v_1.b6x_1,this.j6v_1=Ph(this.e6v_1.n5i_1)/this.c6v_1.a6x_1}function Vb(t,n,i,e,r,s,u,o){if(u=u===Wr?0:u,Wb.call(o),!(i.m5i_1>0&&i.n5i_1>0)){var _=kr.y5i(kr.t5i_1,"LevelSet","constructor","invalidTileDelta");throw is(Gr(_))}if(!(e>=0)){var h=kr.y5i(kr.t5i_1,"LevelSet","constructor","invalidNumLevels");throw is(Gr(h))}if(!(r>=1&&s>=1)){var a=kr.y5i(kr.t5i_1,"LevelSet","constructor","invalidWidthOrHeight");throw is(Gr(a))}o.x6w_1=t,o.y6w_1=n,o.z6w_1=i,o.a6x_1=r,o.b6x_1=s,o.c6x_1=u;for(var l=o,c=0,f=hs(Array(e),null);c=0)){var s=kr.y5i(kr.t5i_1,"LruMemoryCache","constructor","invalidCapacity");throw is(Gr(s))}var u=this.w68_1,o=this.x68_1;if(!(new Hr(0,0).ca(o)<=0&&o.ca(u)<0)){var _=kr.y5i(kr.t5i_1,"LruMemoryCache","constructor","The specified low-water value is greater than or equal to the capacity, or less than 1");throw is(Gr(_))}}function Zb(){return Ri||(Ri=!0,Ni=Is([As("errorReadingProgramSource","Error reading program sources"),As("exceptionParsingText","Exception parsing text"),As("invalidBitmap","The bitmap is recycled"),As("invalidCapacity","The capacity is less than 1"),As("invalidCount","The count is invalid"),As("invalidClipDistance","The clip distance is invalid"),As("invalidFieldOfView","The field of view is invalid"),As("invalidHeight","The height is invalid"),As("invalidIndex","The index is invalid"),As("invalidNumIntervals","The number of intervals is invalid"),As("invalidNumLevels","The number of levels is invalid"),As("invalidRadius","The radius is invalid"),As("invalidRange","The range is invalid"),As("invalidResolution","The resolution is invalid"),As("invalidStride","The stride is invalid"),As("invalidTileDelta","The tile delta is invalid"),As("invalidWidth","The width is invalid"),As("invalidWidthOrHeight","The width or the height is invalid"),As("missingArray","The array insufficient length"),As("missingLayerNames","The layer names are empty"),As("singularMatrix","The matrix cannot be inverted")])),Ni}function Qb(){}function t$(t,n){this.z7w_1=t,this.a7x_1=n}function n$(){}function i$(){this.f6x_1=!0}function e$(t,n,i,e){Lb.call(this,t),this.s6v_1=n,this.t6v_1=i,this.u6v_1=e,this.v6v_1=this.s6v_1.d6v_1+"."+this.t6v_1+"."+this.u6v_1,this.w6v_1=tl()}function r$(t,n,i,e){if(n=n===Wr?t.a():n,i=i===Wr?t.a()-1|0:i,e=e===Wr||e,i<0)return t.y7(0,Du(49)),e&&t.f8(n),As(t.toString(),!0);var r=t.b(i);return r===Du(46)?r$(t,n,i-1|0,e):r!==Du(57)?(t.e8(i,Go(r,1)),As(t.toString(),!1)):(t.e8(i,Du(48)),r$(t,n,i-1|0,e))}function s$(t,n){t.w90_1=n,t.y90_1="e"+t.w90_1}function u$(t,n){var i=n;i>t.x90_1.length&&(i=t.x90_1.length);var e=new Bs(Ko(t.x90_1,Es(0,i)));if(e.a()===t.x90_1.length)return e.toString();var r=Hs(t.x90_1,e.a());if(r===Du(46)){if((e.a()+1|0)>=t.x90_1.length)return e.toString();r=Hs(t.x90_1,e.a()+1|0)}if(Jo("56789",r)){var s=r$(e),u=s.ue();if(!s.ve())return u;s$(t,t.w90_1+1|0);var o=Xo(u,Du(46)),_=new Bs(u);return-1===o?u:_.f8(o).y7(o-1|0,Du(46)).toString()}return e.toString()}function o$(t){this.u90_1=t,this.w90_1=0;var n=this.u90_1,i=Math.abs(n),e=Ir(i);s$(this,ks(e)),this.w90_1<0&&s$(this,this.w90_1-1|0);var r=this.w90_1;this.v90_1=i/Math.pow(10,r),this.u90_1<0&&(this.v90_1=-this.v90_1),this.x90_1=this.v90_1.toString(),this.y90_1="e"+this.w90_1}function _$(){if(Vi)return Xr;Vi=!0,Fi=new f$("FLAGS",0),Ui=new f$("LENGTH",1),Hi=new f$("FRACTION",2)}function h$(t){var n=t.a91_1;return du("englishMonthNames",1,vu,(function(t){return h$(t)}),null),n.j2()}function a$(t){var n=t.b91_1;return du("englishWeekDayNames",1,vu,(function(t){return a$(t)}),null),n.j2()}function l$(){return Qo("January February March April May June July August September October November December",Zo([Du(32)]))}function c$(){return Qo("Monday Tuesday Wednesday Thursday Friday Saturday Sunday",Zo([Du(32)]))}function f$(t,n){ds.call(this,t,n)}function v$(t){return t.e91_1.equals(z$())}function d$(t,n){t.c91_1.t91(n)}function w$(t){return t.c91_1.u91(t.d91_1)}function p$(t,n){var i,e=t.c91_1.ye();if(k$(t),e===Du(72))i=N$("%02d",[w$(t).r3l()]);else if(e===Du(107))i=N$("%d",[w$(t).r3l()]);else if(e===Du(73)||e===Du(108)){var r=w$(t).r3l();r>12&&(r=r-12|0),i=e===Du(73)?N$("%02d",[r]):r.toString()}else if(e===Du(77))i=N$("%02d",[w$(t).v3l()]);else if(e===Du(83))i=N$("%02d",[w$(t).z3l()]);else if(e===Du(76))i=N$("%03d",[w$(t).x3l()/1e6|0]);else if(e===Du(78))i=N$("%09d",[w$(t).x3l()]);else if(e===Du(112))i=n?w$(t).r3l()>12?"PM":"AM":w$(t).r3l()>12?"pm":"am";else if(e===Du(122)){var s=ns().z3z();i=po(n_(s,t_(w$(t),s)).toString(),":","")}else if(e===Du(90)){var u=ns().z3z();i=n_(u,t_(w$(t),u)).toString()}else if(e===Du(115)){var o=ns().z3z();i=t_(w$(t),o).f3o().toString()}else if(e===Du(81)){var _=ns().z3z();i=t_(w$(t),_).n3z().toString()}else if(e===Du(66))i=j$().y91(i_(w$(t).u3z()));else if(e===Du(98)||e===Du(104))i=j$().x91(i_(w$(t).u3z()));else if(e===Du(101))i=w$(t).r3k().toString();else if(e===Du(100))i=N$("%02s",[w$(t).r3k()]);else if(e===Du(109))i=N$("%02s",[i_(w$(t).u3z())]);else if(e===Du(65))i=j$().w91(w$(t).r3p());else if(e===Du(97))i=j$().v91(w$(t).r3p());else if(e===Du(121))i=Su(w$(t).p3k().toString(),2);else if(e===Du(89))i=N$("%04d",[w$(t).p3k()]);else if(e===Du(106))i=N$("%03d",[w$(t).v3z()]);else if(e===Du(82))i=N$("%1!tH:%1!tM",[w$(t)]);else if(e===Du(114))i=N$(n?"%1!tI:%1!tM:%1!tS %1!Tp":"%1!tI:%1!tM:%1!tS %1!tp",[w$(t)]);else if(e===Du(84))i=N$("%tH:%1!tM:%1!tS",[w$(t)]);else if(e===Du(68))i=N$("%tm/%1!td/%1!ty",[w$(t)]);else if(e===Du(70))i=N$("%tY-%1!tm-%1!td",[w$(t)]);else if(e===Du(99))i=N$("%ta %1!tb %1!td %1!tT %1!tZ %1!tY",[w$(t)]);else if(e===Du(79)){var h=ns().z3z(),a=n_(h,t_(w$(t),h)).toString();i=N$("%tFT%1!tT%s",[w$(t),a])}else e===Du(35)?i=N$("%tY%1!tm%1!td%1!tH%1!tM%1!tS",[t_(w$(t),ns().g3z_1)]):d$(t,"unknown time field specificator: 't"+Vs(e)+"'");q$(t,i)}function m$(t){k$(t);var n=Us(t.c91_1.a92(t.d91_1));t.k91_1&&t.i91_1===Du(48)&&n.ca(new Hr(0,0))>0?x$(t,n.toString(),"+"):q$(t,t.k91_1?"+"+n.toString():n.toString())}function g$(t,n){k$(t);var i=Us(t.c91_1.a92(t.d91_1));t.k91_1&&d$(t,"'+' is incompatible with hex format");var e=e_(i,16);q$(t,n?e.toUpperCase():e.toLowerCase())}function y$(t){k$(t);var n=Us(t.c91_1.a92(t.d91_1));t.k91_1&&d$(t,"'+' is incompatible with oct format"),q$(t,e_(n,8))}function b$(t){k$(t),q$(t,Vs(t.c91_1.b92(t.d91_1)))}function $$(t,n){n&&(t.l91_1=!0);var i=t.j91_1;if(xu(i)>0){switch(t.e91_1.y9_1){case 1:t.f91_1=r_(t.j91_1.toString());break;case 2:t.g91_1=r_(t.j91_1.toString());break;case 0:d$(t,"can't parse format specifier (error 7)")}t.j91_1.d8()}}function k$(t,n,i){return $$(t,n=n===Wr||n)}function x$(t,n,i){var e=n.length+i.length|0;if(t.f91_1<0||t.f91_10))break t;u.s5(t.i91_1)}u.r5(n);t:for(;;){var _=s;if(s=_-1|0,!(_>0))break t;u.s5(t.i91_1)}t.c91_1.c92(u.toString())}}function q$(t,n,i,e){return x$(t,n,i=i===Wr?"":i)}function S$(t){k$(t);var n=xs(t.c91_1.a92(t.d91_1)),i=function(t,n,i){i=i===Wr?-1:i;var e=t,r=Au(),s=e;if(Math.abs(s)>=1){var u=0===i?Yo(e):Us(e);r.w7(u),e-=u.f6()}else r.r5(e<0?"-0":"0");var o=i<0?n<0?6:(n-r.a()|0)-1|0:i;0!==o&&r.s5(Du(46));var _=10*e;t:for(;;){var h=o;if(o=h-1|0,!(h>0))break t;var a=ks(_);r.v7(Fs(a)),_=10*(_-a)}var l=ks(_);return Fs(l)<5?r.toString():r$(r,Wr,Wr,!1).se_1}(n,t.f91_1,t.g91_1);t.k91_1&&t.i91_1===Du(48)&&n>0?x$(t,i,"+"):q$(t,t.k91_1?"+"+i:i)}function C$(t,n){k$(t);var i,e,r,s=xs(t.c91_1.a92(t.d91_1)),u=(i=s,e=t.f91_1,r=(r=t.g91_1)===Wr?-1:r,new o$(i).z90(e,r)),o=n?u.toUpperCase():u.toLowerCase();t.k91_1&&t.i91_1===Du(48)&&s>0?x$(t,o,"+"):q$(t,t.k91_1?"+"+o:o)}function E$(t,n){k$(t);var i=t.c91_1.a92(t.d91_1),e=Gr(i),r=n?e.toUpperCase():e.toLowerCase();t.k91_1&&t.i91_1===Du(48)&&xs(i)>0?x$(t,r,"+"):q$(t,t.k91_1?"+"+r:r)}function O$(){Bi=this,this.a91_1=fu(l$),this.b91_1=fu(c$)}function j$(){return null==Bi&&new O$,Bi}function z$(){return _$(),Fi}function T$(){return _$(),Ui}function A$(){return _$(),Hi}function I$(t,n){j$(),this.c91_1=t,this.d91_1=n,this.e91_1=z$(),this.f91_1=-1,this.g91_1=-1,this.h91_1=(D$(),Yi),this.i91_1=Du(32),this.j91_1=Au(),this.k91_1=!1,this.l91_1=!1,this.m91_1=!1}function D$(){if(Ki)return Xr;Ki=!0,Wi=new M$("LEFT",0),Yi=new M$("RIGHT",1),Gi=new M$("CENTER",2)}function M$(t,n){ds.call(this,t,n)}function N$(t,n){return new R$(t,n).f92().toString()}function R$(t,n){this.n91_1=t,this.o91_1=n,this.p91_1=0,this.q91_1=-1,this.r91_1=Au(),this.s91_1=0}function P$(){this.m8j_1=0,this.n8j_1=1,this.o8j_1=100800,this.p8j_1=100801,this.q8j_1="1.3",this.r8j_1="GLU_EXT_object_space_tess ",this.s8j_1=100900,this.t8j_1=100901,this.u8j_1=100902,this.v8j_1=100904,this.w8j_1=100100,this.x8j_1=100101,this.y8j_1=100102,this.z8j_1=100103,this.a8k_1=100104,this.b8k_1=100105,this.c8k_1=100106,this.d8k_1=100107,this.e8k_1=100108,this.f8k_1=100109,this.g8k_1=100110,this.h8k_1=100111,this.i8k_1=100120,this.j8k_1=100121,this.k8k_1=100122,this.l8k_1=100123,this.m8k_1=100124,this.n8k_1=100140,this.o8k_1=100141,this.p8k_1=100142,this.q8k_1=100151,this.r8k_1=100152,this.s8k_1=100153,this.t8k_1=100154,this.u8k_1=100155,this.v8k_1=100156,this.w8k_1=100157,this.x8k_1=100158,this.y8k_1=100151,this.z8k_1=100152,this.a8l_1=100153,this.b8l_1=100154,this.c8l_1=100155,this.d8l_1=100156,this.e8l_1=100130,this.f8l_1=100131,this.g8l_1=100132,this.h8l_1=100133,this.i8l_1=100134,this.j8l_1=1e150}function L$(){}function F$(){Ji=this,this.h92_1=["invalid enumerant","invalid value","out of memory","","invalid operation"]}function U$(t){this.x93_1=t,this.y93_1=null,this.z93_1=0,this.a94_1=!1,this.b94_1=!1,this.c94_1=!1,this.d94_1=!1}function H$(){this.e94_1=new Float64Array(3),this.f94_1=null}function V$(){}function B$(t,n,i){this.j94_1=t,this.k94_1=n,this.l94_1=i}function W$(t){t=t===Wr?null:t,this.n94_1=t,this.o94_1=this,this.p94_1=this}function Y$(){this.x94_1=null,this.y94_1=null,this.z94_1=null,this.a95_1=null,this.b95_1=null,this.c95_1=!1,this.d95_1=!1}function G$(t){this.e95_1=t,this.f95_1=null,this.g95_1=null,this.h95_1=null,this.i95_1=null,this.j95_1=null,this.k95_1=null,this.l95_1=null,this.m95_1=0}function K$(){this.n95_1=new ek,this.o95_1=new Y$,this.p95_1=new G$(!0),this.q95_1=new G$(!1)}function X$(t){var n=t.n92_1;null==n||ne.r95(n),t.l92_1=0,t.m92_1=null,t.n92_1=null}function J$(t,n){t.l92_1!==n&&function(t,n){for(;t.l92_1!==n;)t.l92_10&&k<=x||q<0&&x<=k)do{var S=k;k=k+q|0;for(var C=as(),E=r.v(),O=0;E.w();){var j=O;O=O+1|0;var z=E.y()/8|0,T=Tr(j,z);C.s(pr.v9m(h,S+T|0,z,s,t.t9m_1))}u?o.s(C.h1(0)):o.z(C)}while(S!==x);return gs(o)}(t,e,r,s,u,o,n):2===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: CCITT_1D"),_=[]):3===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: GROUP_3_FAX"),_=[]):4===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: GROUP_4_FAX"),_=[]):5===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: LZW"),_=[]):6===i?(kr.t64(kr.u5i_1,"Compression type not yet implemented: JPEG"),_=[]):(kr.t64(kr.u5i_1,"Unsupported compression type "+i),_=[]),_}function Hx(t,n,i){if(t.s9m_1.a9m_1.n()>6&&t.s9m_1.z9l_1.d1())throw new b_;return 16===t.s9m_1.b9m_1.n()?new ya(Fh().p5r(i*t.s9m_1.b9m_1.h1(4)+i*t.s9m_1.b9m_1.h1(5)+t.s9m_1.b9m_1.h1(7)),Fh().p5r(n*t.s9m_1.b9m_1.h1(0)+i*t.s9m_1.b9m_1.h1(1)+t.s9m_1.b9m_1.h1(3))):t.s9m_1.z9l_1.n()<3||t.s9m_1.a9m_1.n()<6?new ya(Fh().p5r(i),Fh().p5r(n)):new ya(Fh().p5r(-1*(i-t.s9m_1.a9m_1.h1(1))*t.s9m_1.z9l_1.h1(1)+t.s9m_1.a9m_1.h1(4)),Fh().p5r((n-t.s9m_1.a9m_1.h1(0))*t.s9m_1.z9l_1.h1(0)+t.s9m_1.a9m_1.h1(3)))}function Vx(t,n){var i=ks(pr.u9m(t.r9m_1,n,2,t.t9m_1)),e=as(),r=n+2|0,s=0;if(s0)){var u=kr.y5i(kr.t5i_1,"Font","constructor","invalidSize");throw is(Gr(u))}}function zq(){}function Tq(t,n,i,e){this.za2_1=t,this.aa3_1=n,this.ba3_1=i,Ks.call(this,e)}function Aq(t,n,i){this.ra3_1=t,this.sa3_1=n,Ks.call(this,i)}function Iq(t,n,i){this.ca4_1=t,this.da4_1=n,Ks.call(this,i)}function Dq(t,n,i,e,r){return function(s){var u=t.l7s_1;return null==u||n._v?i.ha3(t,e,r):(n._v=!0,ru(i.h5j_1,Wr,Wr,function(t,n,i){var e=new Iq(t,n,i),r=function(t,n){return e.a1h(t,n)};return r.$arity=1,r}(u,r,null))),null!=u&&URL.revokeObjectURL(r.src),Xr}}function Mq(t,n){var i;if(t=t===Wr?br.f9i():t,n===Wr){var e=.75*t.f6();i=Us(e)}else i=n;n=i,Jb.call(this,t,n),this.f5j_1=new Hr(0,0),this.g5j_1=16,this.h5j_1=nu();Zs();var r=tu(60,Qs());this.i5j_1=new Mb(3,r),this.j5j_1=vs()}function Nq(t){this.t8l_1=t,this.u8l_1=.15}function Rq(){$r=this,this.o6z_1=Kr()}function Pq(){return null==$r&&new Rq,$r}function Lq(){}function Fq(t,n){this.qa4_1=t,this.ra4_1=n}function Uq(t){Pq(),Nb.call(this,t)}function Hq(t){return function(t,n){return Vq.call(n,t,t.width,t.height),n}(t,Ts(Pr(Vq)))}function Vq(t,n,i){xy.call(this,n,i,sx(),ux()),this.ca5_1=t,this.da5_1=!!kx(n)&&kx(i),this.w5t_1.a6c()}function Bq(t,n,i,e){e$.call(this,t,n,i,e),this.f7s_1=null,this.g7s_1=null}function Wq(){this.t5i_1=1,this.u5i_1=2,this.v5i_1=3,this.w5i_1=4,this.x5i_1=this.t5i_1}function Yq(){Ub.call(this)}function Gq(t){this.ea5_1=t,this.fa5_1=!1}function Kq(){xr=this,this.ja5_1=new Xq}function Xq(t){null==xr&&new Kq,t=t===Wr?null:t,this.ha5_1=t}function Jq(){qr=this,this.e5t_1=new Qq}function Zq(){return null==qr&&new Jq,qr}function Qq(t){Zq(),t=t===Wr?null:t,this.e8n_1=t}function tS(){Sr=this,this.f72_1=new iS}function nS(){return null==Sr&&new tS,Sr}function iS(t){nS(),t=t===Wr?null:t,this.ia5_1=t}function eS(){Cr=this,this.g5t_1=new sS}function rS(){return null==Cr&&new eS,Cr}function sS(t){rS(),t=t===Wr?null:t,this.k8m_1=t}function uS(){Er=this,this.f5t_1=new _S}function oS(){return null==Er&&new uS,Er}function _S(t){oS(),t=t===Wr?null:t,this.d8m_1=t}function hS(){Or=this,this.d5t_1=new lS}function aS(){return null==Or&&new hS,Or}function lS(t){aS(),t=t===Wr?null:t,this.d8j_1=t}function cS(){return zr||(zr=!0,jr=Qo(window.navigator.language,Zo([Du(45)])).h1(0),Qo(window.navigator.language,Zo([Du(45)])).h1(1)),jr}return Fr(A_,"images",Lr),Fr(D_,"files",Lr),Fr(M_,"GoToAnimator",Br),Fr(N_,"Companion",Lr),Fr(R_,"PickedObject",Br),Fr(L_,"PickedObjectList",Br,Wr,Wr,L_),Fr(B_,"Event",ts),Fr(F_,"RequestRedraw",Lr,Wr,[B_]),Fr(U_,"UnmarkResourceAbsent",Br,Wr,[B_]),Fr(H_,"Companion",Lr,Wr,Wr,Wr,Wr,Wr,[1]),Fr(W_,"WorldWind",Br),Fr(Y_,"Companion",Lr),Fr(Eh,"DrawableTerrain",ts),Fr(G_,"BasicDrawableTerrain",Br,Wr,[Eh]),Fr(K_,"DrawContext",Br),Fr(X_,"Companion",Lr),Fr(J_,"DrawElements",Br,Wr,Wr,J_),Fr(Z_,"VertexAttrib",Br,Wr,Wr,Z_),Fr(Q_,"DrawShapeState",Br),Fr(nh,"DrawableGroup",Br,ds),Fr(rh,"Companion",Lr),Fr(sh,"DrawableHeatmap",Br),Fr(uh,"Companion",Lr),Fr(oh,"DrawableLines",Br),Fr(_h,"Companion",Lr),Fr(hh,"Entry",Br,Wr,Wr,hh),Fr(ah,"sam$kotlin_Comparator$0",Br),Fr(ch,"DrawableQueue",Br),Fr(fh,"Companion",Lr),Fr(vh,"DrawableScreenTexture",Br),Fr(dh,"Companion",Lr),Fr(wh,"DrawableShape",Br),Fr(ph,"Companion",Lr),Fr(mh,"DrawableSightline",Br),Fr(gh,"Companion",Lr),Fr(yh,"DrawableStarField",Br),Fr(bh,"Companion",Lr),Fr($h,"DrawableSurfaceColor",Br),Fr(kh,"Companion",Lr),Fr(xh,"DrawableSurfaceShape",Br),Fr(qh,"Companion",Lr),Fr(Ch,"DrawableSurfaceTexture",Br),Fr(Oh,"Companion",Lr),Fr(jh,"DrawableTessellation",Br),Fr(zh,"BasicFrameController",Br,Wr,Wr,zh),Fr(Th,"Companion",Lr),Fr(Ah,"Frame",Br,Wr,Wr,Ah),Fr(Dh,"AltitudeMode",Br,ds),Fr(Lh,"Companion",Lr),Fr(ia,"Angle",Br,Wr,[Cs]),Fr(ua,"Companion",Lr),Fr(oa,"BoundingBox",Br,Wr,Wr,oa),Fr(_a,"BoundingSphere",Br,Wr,Wr,_a),Fr(ha,"Camera",Br,Wr,Wr,ha),Fr(aa,"Companion",Lr),Fr(ca,"Ellipsoid",Br),Fr(va,"Frustum",Br,Wr,Wr,fa),Fr(wa,"Line",Br,Wr,Wr,da),Fr(ma,"Companion",Lr),Fr(ya,"Location",Br,Wr,Wr,pa),Fr($a,"LookAt",Br,Wr,Wr,ba),Fr(ka,"Companion",Lr),Fr(Sa,"Matrix3",Br,Wr,Wr,qa),Fr(Ca,"Companion",Lr),Fr(ja,"Matrix4",Br,Wr,Wr,Oa),Fr(Ta,"Companion",Lr),Fr(Aa,"Offset",Br),Fr(Ia,"OffsetMode",Br,ds),Fr(Ma,"Companion",Lr),Fr(Ra,"Plane",Br,Wr,Wr,(function(){return t=Ts(Pr(Ra)),Ra.call(t),t;var t})),Fr(Fa,"Companion",Lr),Fr(Ua,"Position",Br,ya,Wr,Pa),Fr(Va,"Range",Br,Wr,Wr,Ha),Fr(Ya,"Companion",Lr),Fr(Ga,"Sector",Br,Wr,Wr,Ba),Fr(Ka,"TileMatrix",Br),Fr(Xa,"Companion",Lr),Fr(Ja,"TileMatrixSet",Br,Wr,Wr,(function(){return t=Ts(Pr(Ja)),Ja.call(t,Ba(),Ls()),t;var t})),Fr(Qa,"Vec2",Br,Wr,Wr,Za),Fr(nl,"Vec3",Br,Qa,Wr,tl),Fr(el,"Viewport",Br,Wr,Wr,il),Fr(rl,"Companion",Lr),Fr(sl,"GKCoord",Br),Fr(ul,"Companion",Lr),Fr(ol,"GKCoordConverter",Br,Wr,Wr,ol),Fr(_l,"Companion",Lr),Fr(al,"HelmertParameters",Br),Fr(ll,"HelmertTransformation",Lr),Fr(fl,"Hemisphere",Br,ds),Fr(wl,"Companion",Lr),Fr(pl,"MGRSCoord",Br),Fr(ml,"Companion",Lr),Fr(kl,"MGRSCoordConverter",Br,Wr,Wr,kl),Fr(xl,"Companion",Lr),Fr(ql,"PolarCoordConverter",Br,Wr,Wr,ql),Fr(Sl,"Companion",Lr),Fr(Cl,"TMCoord",Br),Fr(El,"Companion",Lr),Fr(Ol,"TMCoordConverter",Br,Wr,Wr,Ol),Fr(jl,"Companion",Lr),Fr(zl,"UPSCoord",Br),Fr(Tl,"Companion",Lr),Fr(Al,"UPSCoordConverter",Br,Wr,Wr,Al),Fr(Il,"Companion",Lr),Fr(Dl,"UTMCoord",Br),Fr(Ml,"Companion",Lr),Fr(Nl,"UTMCoordConverter",Br,Wr,Wr,Nl),Fr(Pl,"GestureState",Br,ds),Fr(Yl,"SelectDragCallback",ts),Fr(Kl,"Offset",Br,ds),Fr(Xl,"State",Br),Fr(Zl,"Globe",Br,Wr,Wr,Zl),Fr(Ql,"ElevationModel",Br,Wr,Wr,Ql),Fr(tc,"AbstractElevationCoverage",Br),Fr(nc,"Companion",Lr),Fr(ic,"TileBlock",Br,Wr,Wr,ic),Fr(ec,"AbstractTiledElevationCoverage$fetchTileArray$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(rc,"AbstractTiledElevationCoverage",Br,tc,Wr,Wr,Wr,Wr,[4]),Fr(yq,"TiledElevationCoverage",Br,rc,Wr,Wr,Wr,Wr,[4,1]),Fr(Fv,"WmsElevationCoverage",Br,yq,Wr,Wr,Wr,Wr,[4]),Fr(sc,"BasicElevationCoverage",Br,Fv,Wr,sc,Wr,Wr,[4]),Fr(uc,"GeographicProjection",ts),Fr(oc,"Companion",Lr),Fr(_c,"MercatorProjection",Br,Wr,[uc],_c),Fr(hc,"Wgs84Projection",Br,Wr,[uc],hc),Fr(ac,"BasicTerrain",Br),Fr(lc,"Companion",Lr),Fr(fc,"sam$kotlin_Comparator$0",Br),Fr(dc,"BasicTessellator",Br,Wr,Wr,dc),Fr(wc,"Companion",Lr),Fr(Lb,"AbstractTile",Br),Fr(e$,"Tile",Br,Lb),Fr(mc,"TerrainTile",Br,e$),Fr(gc,"AbstractLayer",Br),Fr(kc,"RenderableLayer",Br,gc,Wr,kc),Fr(yc,"AbstractTiledImageLayer",Br,kc),Fr(bc,"BackgroundLayer",Br,kc,Wr,bc),Fr($c,"LayerList",Br,Wr,Wr,$c),Fr(xc,"ShowTessellationLayer",Br,gc,Wr,xc),Fr(Sc,"FragMode",Br,ds),Fr(Hy,"AbstractShaderProgram",Br),Fr(Ec,"AbstractAtmosphereProgram",Br,Hy),Fr(Oc,"Companion",Lr),Fr(zc,"AtmosphereLayer",Br,gc,Wr,zc),Fr(Tc,"Companion",Lr),Fr(Ac,"DrawableGroundAtmosphere",Br,Wr,Wr,Ac),Fr(Ic,"Companion",Lr),Fr(Dc,"DrawableSkyAtmosphere",Br,Wr,Wr,Dc),Fr(Mc,"GroundProgram",Br,Ec,Wr,Mc),Fr(Nc,"SkyProgram",Br,Ec,Wr,Nc),Fr(Uc,"Companion",Lr),Fr(Vc,"AbstractGraticuleLayer",Br,gc),Fr(Bc,"AbstractGraticuleTile",Br,Lb),Fr(Wc,"Companion",Lr),Fr(Yc,"GraticuleRenderingParams",Br,Wr,[pu],Yc),Fr(Zc,"GraticuleSupport",Br,Wr,Wr,Zc),Fr(tf,"Companion",Lr),Fr(nf,"GridElement",Br),Fr(ef,"Callback",ts),Fr(sf,"GridTilesSupport",Br),Fr(uf,"LineStyle",Br,ds),Fr(of,"Companion",Lr),Fr(hf,"GKGraticuleLayer",Br,Vc,[Vc,ef],hf),Fr(vf,"GKGraticuleTile",Br,Bc),Fr(wf,"GKLayerHelper",Lr),Fr(xf,"ZoneExtremes",Br),Fr(qf,"Companion",Lr),Fr(Sf,"GKMetricGrid",Br,Bc),Fr(jf,"Companion",Lr),Fr(zf,"GKMetricLabels",Br),Fr(Tf,"GKOverview",Br,Bc),Fr(Af,"Companion",Lr),Fr(If,"AbstractUTMGraticuleLayer",Br,Vc),Fr(Pf,"Companion",Lr),Fr(Lf,"MGRSGraticuleLayer",Br,If,Wr,Lf),Fr(Uf,"Companion",Lr),Fr(Hf,"MGRSGridZone",Br,Bc),Fr(Vf,"Companion",Lr),Fr(Wf,"MGRSOverview",Br,Bc),Fr(Yf,"UTMExtremes",Br,Wr,Wr,Yf),Fr(Xf,"Companion",Lr),Fr(Jf,"UTMMetricScaleSupport",Br),Fr(iv,"UTMSquareSector",Br,Bc),Fr(Zf,"UTMSquareGrid",Br,iv),Fr(nv,"Companion",Lr),Fr(sv,"UTMSquareZone",Br,iv),Fr(uv,"ElevationHeatmapLayer",Br,gc,Wr,uv),Fr(ov,"ElevationHeatmapProgram",Br,Hy,Wr,ov),Fr(_v,"Companion",Lr),Fr(Bq,"ImageTile",Br,e$,Wr,Wr,Wr,Wr,[1]),Fr(hv,"AbstractMercatorImageTile",Br,Bq,Wr,Wr,Wr,Wr,[1]),Fr(vv,"Companion",Lr),Fr(dv,"MercatorSector",Br,Ga,Wr,dv),Fr(wv,"MercatorTileFactory",ts),Fr(pv,"Companion",Lr),Fr(bq,"TiledImageLayer",Br,yc,Wr,bq),Fr(mv,"MercatorTiledImageLayer",Br,bq,Wr,mv),Fr($y,"Renderable",ts),Fr(ry,"AbstractRenderable",Br,Wr,[$y]),Fr(Ib,"TiledSurfaceImage",Br,ry,Wr,Wr,Wr,Wr,[5]),Fr(gv,"MercatorTiledSurfaceImage",Br,Ib,Wr,Wr,Wr,Wr,[5]),Fr(yv,"Companion",Lr),Fr(bv,"WebMercatorImageLayer",Br,mv),Fr($v,Wr,Br,Wr,[wv]),Fr(kv,"WebMercatorLayerFactory",Lr),Fr(xv,"$serializer",Lr,Wr,[Vu]),Fr(Cv,"Companion",Lr),Fr(Ov,"$serializer",Lr,Wr,[Vu]),Fr(Tv,"StarMetadata",Br,Wr,Wr,Wr,Wr,{0:qv}),Fr(Av,"StarData",Br,Wr,Wr,Wr,Wr,{0:jv}),Fr(Iv,"StarFieldLayer",Br,gc,Wr,Iv),Fr(Dv,"StarFieldProgram",Br,Hy,Wr,Dv),Fr(Mv,"Companion",Lr),Fr(Nv,"Wcs100ElevationCoverage",Br,yq,Wr,Wr,Wr,Wr,[4]),Fr(Rv,"Wcs100ElevationSourceFactory",Br),Fr(Pv,Wr,Br),Fr(Lv,"Companion",Lr),Fr(Uv,"Companion",Lr),Fr(Hv,"WmsImageLayer",Br,bq),Fr(Vv,"WmsLayerConfig",Br),Fr(Gv,"WmsLayerFactory$decodeWmsCapabilities$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Jv,"$createLayerCOROUTINE$1",Br,Ks),Fr(Zv,"$retrieveWmsCapabilitiesCOROUTINE$2",Br,Ks),Fr(Qv,"WmsLayerFactory",Lr,Wr,Wr,Wr,Wr,Wr,[4,1]),Fr(id,"WmsTileFactory",Br),Fr(ed,"Companion",Lr),Fr(rd,"WmtsImageLayer",Br,bq),Fr(od,"TileMatrixSet",Br),Fr(hd,"WmtsLayerFactory$decodeWmtsCapabilities$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(ad,"$createLayerCOROUTINE$3",Br,Ks),Fr(ld,"$retrieveWmtsCapabilitiesCOROUTINE$4",Br,Ks),Fr(cd,"WmtsLayerFactory",Lr,Wr,Wr,Wr,Wr,Wr,[4,1]),Fr(vd,"Companion",Lr),Fr(dd,"WmtsTileFactory",Br),Fr(wd,"Companion",Lr),Fr(pd,"$serializer",Lr,Wr,[Vu]),Fr(yd,"WmsAttribution",Br,Wr,Wr,yd,Wr,{0:md}),Fr(bd,"$serializer",Lr,Wr,[Vu]),Fr(xd,"WmsAuthorityUrl",Br,Wr,Wr,Wr,Wr,{0:$d}),Fr(qd,"$serializer",Lr,Wr,[Vu]),Fr(Ed,"WmsBoundingBox",Br,Wr,Wr,Wr,Wr,{0:Sd}),Fr(Od,"Companion",Lr),Fr(jd,"$serializer",Lr,Wr,[Vu]),Fr(Ad,"WmsCapabilities",Br,Wr,Wr,Wr,Wr,{0:zd}),Fr(Id,"Companion",Lr),Fr(Md,"$serializer",Lr,Wr,[Vu]),Fr(Pd,"WmsCapability",Br,Wr,Wr,Wr,Wr,{0:Nd}),Fr(Ld,"$serializer",Lr,Wr,[Vu]),Fr(Hd,"WmsContactAddress",Br,Wr,Wr,Wr,Wr,{0:Fd}),Fr(Vd,"Companion",Lr),Fr(Bd,"$serializer",Lr,Wr,[Vu]),Fr(Gd,"WmsContactInformation",Br,Wr,Wr,Gd,Wr,{0:Wd}),Fr(Kd,"$serializer",Lr,Wr,[Vu]),Fr(Zd,"WmsContactPersonPrimary",Br,Wr,Wr,Wr,Wr,{0:Xd}),Fr(Qd,"$serializer",Lr,Wr,[Vu]),Fr(iw,"$serializer",Lr,Wr,[Vu]),Fr(sw,"WmsHttp",Br,Wr,Wr,Wr,Wr,{0:tw}),Fr(uw,"WmsHttpProtocol",Br,Wr,Wr,Wr,Wr,{0:ew}),Fr(ow,"$serializer",Lr,Wr,[Vu]),Fr(aw,"WmsDcpType",Br,Wr,Wr,Wr,Wr,{0:_w}),Fr(lw,"$serializer",Lr,Wr,[Vu]),Fr(vw,"WmsDimension",Br,Wr,Wr,Wr,Wr,{0:cw}),Fr(dw,"Companion",Lr),Fr(pw,"$serializer",Lr,Wr,[Vu]),Fr(yw,"WmsException",Br,Wr,Wr,yw,Wr,{0:mw}),Fr(bw,"$serializer",Lr,Wr,[Vu]),Fr(xw,"WmsGeographicBoundingBox",Br,Wr,Wr,Wr,Wr,{0:$w}),Fr(qw,"$serializer",Lr,Wr,[Vu]),Fr(Ew,"WmsIdentifier",Br,Wr,Wr,Wr,Wr,{0:Sw}),Fr(Ow,"Companion",Lr),Fr(zw,"$serializer",Lr,Wr,[Vu]),Fr(Iw,"WmsInfoUrl",Br,Wr,Wr,Wr,Wr,{0:Tw}),Fr(Dw,"Companion",Lr),Fr(Nw,"$serializer",Lr,Wr,[Vu]),Fr(Lw,"WmsLayer",Br,Wr,Wr,Wr,Wr,{0:Rw}),Fr(Fw,"Companion",Lr),Fr(Hw,"$serializer",Lr,Wr,[Vu]),Fr(Ww,"WmsLogoUrl",Br,Wr,Wr,Wr,Wr,{0:Vw}),Fr(Yw,"Companion",Lr),Fr(Kw,"$serializer",Lr,Wr,[Vu]),Fr(Zw,"WmsMetadataUrl",Br,Wr,Wr,Wr,Wr,{0:Xw}),Fr(Qw,"$serializer",Lr,Wr,[Vu]),Fr(ip,"WmsOnlineResource",Br,Wr,Wr,Wr,Wr,{0:tp}),Fr(ep,"$serializer",Lr,Wr,[Vu]),Fr(up,"WmsRequest",Br,Wr,Wr,Wr,Wr,{0:rp}),Fr(op,"Companion",Lr),Fr(hp,"$serializer",Lr,Wr,[Vu]),Fr(cp,"WmsRequestOperation",Br,Wr,Wr,Wr,Wr,{0:ap}),Fr(fp,"Companion",Lr),Fr(dp,"$serializer",Lr,Wr,[Vu]),Fr(mp,"WmsService",Br,Wr,Wr,Wr,Wr,{0:wp}),Fr(gp,"Companion",Lr),Fr(bp,"$serializer",Lr,Wr,[Vu]),Fr(xp,"WmsStyle",Br,Wr,Wr,Wr,Wr,{0:$p}),Fr(qp,"Companion",Lr),Fr(Cp,"$serializer",Lr,Wr,[Vu]),Fr(jp,"OwsAddress",Br,Wr,Wr,jp,Wr,{0:Ep}),Fr(zp,"$serializer",Lr,Wr,[Vu]),Fr(Ip,"OwsBoundingBox",Br,Wr,Wr,Wr,Wr,{0:Tp}),Fr(Dp,"Companion",Lr),Fr(Np,"$serializer",Lr,Wr,[Vu]),Fr(Lp,"OwsConstraint",Br,Wr,Wr,Wr,Wr,{0:Rp}),Fr(Fp,"Companion",Lr),Fr(Up,"$serializer",Lr,Wr,[Vu]),Fr(Bp,"OwsContactInfo",Br,Wr,Wr,Bp,Wr,{0:Hp}),Fr(Wp,"$serializer",Lr,Wr,[Vu]),Fr(Kp,"OwsDcp",Br,Wr,Wr,Wr,Wr,{0:Yp}),Fr(Xp,"OwsDescription",Br),Fr(Jp,"Companion",Lr),Fr(Qp,"$serializer",Lr,Wr,[Vu]),Fr(im,"OwsHttp",Br,Wr,Wr,im,Wr,{0:tm}),Fr(em,"Companion",Lr),Fr(sm,"$serializer",Lr,Wr,[Vu]),Fr(_m,"OwsHttpMethod",Br,Wr,Wr,Wr,Wr,{0:um}),Fr(hm,"$serializer",Lr,Wr,[Vu]),Fr(cm,"OwsOnlineResource",Br,Wr,Wr,Wr,Wr,{0:am}),Fr(fm,"Companion",Lr),Fr(dm,"$serializer",Lr,Wr,[Vu]),Fr(mm,"OwsOperation",Br,Wr,Wr,Wr,Wr,{0:wm}),Fr(gm,"Companion",Lr),Fr(bm,"$serializer",Lr,Wr,[Vu]),Fr(xm,"OwsOperationsMetadata",Br,Wr,Wr,xm,Wr,{0:$m}),Fr(qm,"Companion",Lr),Fr(Cm,"$serializer",Lr,Wr,[Vu]),Fr(jm,"OwsPhone",Br,Wr,Wr,jm,Wr,{0:Em}),Fr(zm,"Companion",Lr),Fr(Tm,"$serializer",Lr,Wr,[Vu]),Fr(Dm,"OwsServiceContact",Br,Wr,Wr,Dm,Wr,{0:Am}),Fr(Mm,"Companion",Lr),Fr(Rm,"$serializer",Lr,Wr,[Vu]),Fr(Fm,"OwsServiceIdentification",Br,Xp,Wr,Wr,Wr,{0:Pm}),Fr(Um,"$serializer",Lr,Wr,[Vu]),Fr(Bm,"OwsServiceProvider",Br,Wr,Wr,Wr,Wr,{0:Hm}),Fr(Wm,"Companion",Lr),Fr(Gm,"$serializer",Lr,Wr,[Vu]),Fr(Jm,"WmtsCapabilities",Br,Wr,Wr,Wr,Wr,{0:Km}),Fr(Zm,"Companion",Lr),Fr(tg,"$serializer",Lr,Wr,[Vu]),Fr(eg,"WmtsContents",Br,Wr,Wr,eg,Wr,{0:ng}),Fr(rg,"Companion",Lr),Fr(ug,"$serializer",Lr,Wr,[Vu]),Fr(hg,"WmtsDimension",Br,Xp,Wr,Wr,Wr,{0:og}),Fr(ag,"Companion",Lr),Fr(cg,"$serializer",Lr,Wr,[Vu]),Fr(dg,"WmtsLayer",Br,Xp,Wr,Wr,Wr,{0:fg}),Fr(wg,"$serializer",Lr,Wr,[Vu]),Fr(gg,"WmtsLegendURL",Br,Wr,Wr,Wr,Wr,{0:pg}),Fr(yg,"$serializer",Lr,Wr,[Vu]),Fr(kg,"WmtsResourceUrl",Br,Wr,Wr,Wr,Wr,{0:bg}),Fr(xg,"Companion",Lr),Fr(Sg,"$serializer",Lr,Wr,[Vu]),Fr(Og,"WmtsStyle",Br,Xp,Wr,Wr,Wr,{0:Cg}),Fr(jg,"Companion",Lr),Fr(Tg,"$serializer",Lr,Wr,[Vu]),Fr(Dg,"WmtsTheme",Br,Xp,Wr,Wr,Wr,{0:Ag}),Fr(Mg,"Companion",Lr),Fr(Rg,"$serializer",Lr,Wr,[Vu]),Fr(Fg,"WmtsTileMatrix",Br,Xp,Wr,Wr,Wr,{0:Pg}),Fr(Ug,"$serializer",Lr,Wr,[Vu]),Fr(Bg,"WmtsTileMatrixLimits",Br,Wr,Wr,Wr,Wr,{0:Hg}),Fr(Wg,"Companion",Lr),Fr(Gg,"$serializer",Lr,Wr,[Vu]),Fr(Jg,"WmtsTileMatrixSet",Br,Xp,Wr,Wr,Wr,{0:Kg}),Fr(Zg,"Companion",Lr),Fr(ty,"$serializer",Lr,Wr,[Vu]),Fr(ey,"WmtsTileMatrixSetLink",Br,Wr,Wr,Wr,Wr,{0:ny}),Fr(oy,"AbstractSurfaceRenderable",Br,ry),Fr(ly,"Companion",Lr),Fr(cy,"Color",Br,Wr,Wr,_y),Fr(vy,"FontWeight",Br,ds),Fr(py,"Framebuffer",Br,Wr,Wr,py),Fr(my,"Companion",Lr),Fr(gy,"TextCacheKey",Br,Wr,Wr,gy),Fr(by,"RenderContext",Br,Wr,Wr,by),Fr(ky,"Companion",Lr),Fr(xy,"Texture",Br),Fr(qy,"AbstractBufferObject",Br),Fr(Cy,"Companion",Lr),Fr(Ey,"BufferPool",Br),Fr(Oy,"FloatBufferObject",Br,qy),Fr(jy,"IntBufferObject",Br,qy),Fr(zy,"ShortBufferObject",Br,qy),Fr(Ay,"ImageConfig",Br,ds),Fr(Dy,"ImageOptions",Br,Wr,Wr,Dy),Fr(Ny,"ResamplingMode",Br,ds),Fr(Ly,"WrapMode",Br,ds),Fr(Uy,"Companion",Lr),Fr(Vy,"BasicShaderProgram",Br,Hy,Wr,Vy),Fr(By,"SightlineProgram",Br,Hy,Wr,By),Fr(Wy,"SurfaceTextureProgram",Br,Hy,Wr,Wy),Fr(Yy,"TriangleShaderProgram",Br,Hy,Wr,Yy),Fr(Gy,"Companion",Lr),Fr(Qy,"Highlightable",ts),Fr(Ky,"AbstractShape",Br,ry,[ry,Qy]),Fr(Xy,"Companion",Lr),Fr(Zy,"Ellipse",Br,Ky),Fr(tb,"Companion",Lr),Fr(ib,"RenderData",Br,Wr,Wr,ib),Fr(rb,"Movable",ts),Fr(eb,"Label",Br,ry,[ry,Qy,rb]),Fr(sb,"OmnidirectionalSightline",Br,ry,[ry,Qy,rb]),Fr(ob,"OrientationMode",Br,ds),Fr(ab,"Companion",Lr),Fr(cb,"Path",Br,Ky),Fr(vb,"PathType",Br,ds),Fr(pb,"Companion",Lr),Fr(gb,"Placemark",Br,ry,[ry,Qy,rb]),Fr(bb,"Companion",Lr),Fr($b,"PlacemarkAttributes",Br,Wr,Wr,yb),Fr(kb,"Companion",Lr),Fr(L$,"GLUtessellatorCallbackAdapter",Br,Wr,Wr,L$),Fr(qb,Wr,Br,L$),Fr(Sb,"Polygon",Br,Ky,Wr,Sb),Fr(Eb,"ShapeAttributes",Br,Wr,Wr,Cb),Fr(Ob,"SurfaceImage",Br,oy),Fr(Tb,"TextAttributes",Br,Wr,Wr,jb),Fr(Ab,"Companion",Lr),Fr(Db,"AbsentResourceEntry",Br),Fr(Mb,"AbsentResourceList",Br),Fr(Nb,"AbstractSource",Br),Fr(Fb,"Companion",Lr),Fr(Qb,"Pool",ts),Fr(Ub,"BasicPool",Br,Wr,[Qb],Ub),Fr(Hb,"Level",Br),Fr(Wb,"LevelSet",Br,Wr,Wr,(function(){return t=Ts(Pr(Wb)),Wb.call(t),t.x6w_1=Ba(),t.y6w_1=Ba(),t.z6w_1=pa(),t.a6x_1=0,t.b6x_1=0,t.c6x_1=0,t.d6x_1=[],t;var t})),Fr(Yb,"LevelSetConfig",Br,Wr,Wr,Yb),Fr(Gb,"Entry",Br),Fr(Kb,"sam$kotlin_Comparator$0",Br),Fr(Jb,"LruMemoryCache",Br),Fr(t$,"CelestialLocation",Br),Fr(n$,"SunPosition",Lr),Fr(i$,"Companion",Lr),Fr(o$,"ExponentFormatter",Br),Fr(f$,"Stage",Br,ds),Fr(O$,"Companion",Lr),Fr(I$,"Specification",Br),Fr(M$,"Positioning",Br,ds),Fr(R$,"StringFormat",Br),Fr(P$,"GLU",Lr),Fr(F$,"Error",Lr),Fr(U$,"ActiveRegion",Br),Fr(H$,"CachedVertex",Br,Wr,Wr,H$),Fr(V$,"Companion",Lr),Fr(B$,"Dict",Br),Fr(W$,"DictNode",Br,Wr,Wr,W$),Fr(Y$,"GLUface",Br,Wr,Wr,Y$),Fr(G$,"GLUhalfEdge",Br),Fr(K$,"GLUmesh",Br,Wr,Wr,K$),Fr(tk,"Companion",Lr),Fr(ik,"GLUtessellatorImpl",Br),Fr(ek,"GLUvertex",Br,Wr,Wr,ek),Fr(rk,"Geom",Lr),Fr(sk,"Mesh",Lr),Fr(ok,"Normal",Lr),Fr(_k,"PQnode",Br,Wr,Wr,_k),Fr(hk,"PQhandleElem",Br,Wr,Wr,hk),Fr(ak,"Companion",Lr),Fr(lk,"PriorityQ",Br),Fr(ck,"PriorityQHeap",Br,lk,Wr,ck),Fr(dk,"Stack",Br,Wr,Wr,dk),Fr(wk,"Companion",Lr),Fr(pk,"PriorityQSort",Br,lk,Wr,pk),Fr(xk,"FaceCount",Br,Wr,Wr,mk),Fr(qk,"RenderTriangle",Br,Wr,Wr,qk),Fr(Sk,"RenderFan",Br,Wr,Wr,Sk),Fr(Ck,"RenderStrip",Br,Wr,Wr,Ck),Fr(Ek,"Render",Lr),Fr(Ak,Wr,Br),Fr(Ik,"Sweep",Lr),Fr(Dk,"TessMono",Lr),Fr(Mk,"TessState",Lr),Fr(Pk,"Kgl",ts),Fr(Rx,"WorldWindowController",Br),Fr(Sx,"BasicWorldWindowController",Br,Rx),Fr(Cx,"KeyboardControls",Br),Fr(Ox,"WorldWindow$contextRestored$slambda$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(zx,"EventListenerEntry",Br),Fr(Tx,"Companion",Lr),Fr(Ax,"RedrawStage",Br,ds),Fr(Ix,"sam$kotlinx_coroutines_flow_FlowCollector$0",Br,Wr,Wr,Wr,Wr,Wr,[1]),Fr(Mx,"WorldWindow$contextRestored$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Nx,"WorldWindow",Br),Fr(Px,"GeoTiffConstants",Lr),Fr(Lx,"GeoTiffKeyEntry",Br),Fr(Fx,"GeoTiffMetadata",Br,Wr,Wr,Fx),Fr(Bx,"GeoTiffReader",Br),Fr(Wx,"GeoTiffUtil",Lr),Fr(Yx,"IFDTag",Lr),Fr(Gx,"Compression",Lr),Fr(Kx,"SampleFormat",Lr),Fr(Xx,"Type",Lr),Fr(Jx,"TiffIFDEntry",Br),Fr(eq,"GestureRecognizer",Br),Fr(Zx,"ClickRecognizer",Br,eq),Fr(Qx,"DragRecognizer",Br,eq),Fr(tq,"Companion",Lr),Fr(iq,"Click",Br),Fr(rq,"PanRecognizer",Br,eq),Fr(sq,"PinchRecognizer",Br,eq),Fr(uq,"RotationRecognizer",Br,eq),Fr(oq,"Companion",Lr),Fr(_q,Wr,Br,Qx),Fr(hq,Wr,Br,rq),Fr(aq,"SelectDragDetector",Br),Fr(lq,"TapRecognizer",Br,eq),Fr(cq,"Companion",Lr),Fr(fq,"TiltRecognizer",Br,rq),Fr(vq,"TouchWrapper",Br),Fr(dq,"Companion",Lr),Fr(wq,"ElevationSource",Br,Nb),Fr(mq,"TiledElevationCoverage$decodeTiffImage$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(gq,"$retrieveTileArrayCOROUTINE$6",Br,Ks),Fr($q,"Companion",Lr),Fr(qq,"$processCOROUTINE$7",Br,Ks),Fr(Sq,"MercatorImageTile",Br,hv,Wr,Wr,Wr,Wr,[1]),Fr(jq,"Font",Br,Wr,Wr,Cq),Fr(zq,"Companion",Lr),Fr(Tq,"RenderResourceCache$retrieveTexture$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Aq,"RenderResourceCache$retrieveTextFile$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Iq,"RenderResourceCache$retrieveRemoteImage$lambda$slambda",Br,Ks,Wr,Wr,Wr,Wr,[1]),Fr(Mq,"RenderResourceCache",Br,Jb,Wr,Mq),Fr(Nq,"TextRenderer",Br),Fr(Rq,"Companion",Lr),Fr(Lq,"ImageFactory",ts),Fr(Fq,"LineStippleImageFactory",Br,Wr,[Lq]),Fr(Uq,"ImageSource",Br,Nb),Fr(Vq,"ImageTexture",Br,xy),Fr(Wq,"Logger",Lr),Fr(Yq,"SynchronizedPool",Br,Ub,Wr,Yq),Fr(Gq,"WebKgl",Br,Wr,[Pk]),Fr(Kq,"Companion",Lr),Fr(Xq,"KglShader",Br,Wr,Wr,Xq),Fr(Jq,"Companion",Lr),Fr(Qq,"KglProgram",Br,Wr,Wr,Qq),Fr(tS,"Companion",Lr),Fr(iS,"KglUniformLocation",Br,Wr,Wr,iS),Fr(eS,"Companion",Lr),Fr(sS,"KglBuffer",Br,Wr,Wr,sS),Fr(uS,"Companion",Lr),Fr(_S,"KglTexture",Br,Wr,Wr,_S),Fr(hS,"Companion",Lr),Fr(lS,"KglFramebuffer",Br,Wr,Wr,lS),Pr(N_).g5g=function(t,n,i){var e=n.h5g();return new R_(t,null==e?n:e,i)},Pr(N_).i5g=function(t,n){var i=La(n);return new R_(t,i,Wr,i)},Pr(N_).j5g=function(t,n){var i=t>>16&255,e=t>>8&255,r=255&t;return n.k5g_1=i/255,n.l5g_1=e/255,n.m5g_1=r/255,n.n5g_1=1,n},Pr(N_).o5g=function(t){var n=255*t.k5g_1,i=Yr(n),e=255*t.l5g_1,r=Yr(e),s=255*t.m5g_1;return i<<16|r<<8|Yr(s)},Pr(R_).u5g=function(){return!(null==this.s5g_1)},Pr(R_).v5g=function(){this.t5g_1=!0},Pr(R_).toString=function(){return"PickedObject(isOnTop="+this.t5g_1+", identifier="+this.p5g_1+", userObject="+Gr(this.q5g_1)+", layer="+this.r5g_1+", terrainPosition="+this.s5g_1+")"},Pr(L_).x5g=function(){return this.w5g_1.e2()},Pr(L_).y5g=function(){return this.w5g_1.n()},Pr(L_).z5g=function(){var t;t:{for(var n=this.x5g().v();n.w();){var i=n.y();if(i.t5g_1){t=i;break t}}t=null}return t},Pr(L_).a5h=function(){var t;t:{for(var n=this.x5g().v();n.w();){var i=n.y();if(i.u5g()){t=i;break t}}t=null}return t},Pr(L_).b5h=function(t){var n=this.w5g_1,i=t.p5g_1;n.g2(i,t)},Pr(L_).c5h=function(t){return this.w5g_1.q2(t)},Pr(L_).d5h=function(){return this.w5g_1.b1()},Pr(L_).toString=function(){var t=this.x5g();return Jr(t,", ","PickedObjectList{","}",Wr,Wr,P_)},Pr(H_).h5h=function(){this.f5h_1.q14(p)},Pr(W_).s5i=function(t){if(!(t>0)){var n=kr.y5i(kr.t5i_1,"WorldWind","setDensityFactor","invalidDensityFactor");throw is(Gr(n))}this.s5h_1=t},Pr(W_).w1h=function(){this.i5h_1.b1(),this.j5h_1.m5j_1.q5j(),this.q5h_1.v5j(),this.s5i(1)},Pr(W_).w5j=function(){this.w5h_1.x5j_1.x5k(oe),this.w5h_1.x5j_1.x5k(Lk()),this.w5h_1.x5j_1.x5k(Fk()),this.w5h_1.x5j_1.y5k(0),this.w5h_1.x5j_1.z5k(ae),this.w5h_1.x5j_1.a5l(Uk(),Hk()),this.w5h_1.x5j_1.b5l(fe),this.w5h_1.c5l(),this.x5h_1=this.w5h_1.x5j_1.d5l(ve)},Pr(W_).e5l=function(t,n){if(this.w5h_1.x5j_1.f5l(0,0,t,n),this.r5h_1&&0!==this.q5h_1.u5j_1)try{var i=this.o5h_1;i.g5l((e=i.l5i_1,r=n/this.q5h_1.u5j_1,Fh().p5r(e*xs(r))))}catch(t){if(!(t instanceof es))throw t}var e,r;this.q5h_1.h5l(0,0,t,n)},Pr(W_).i5l=function(t,n){if(null!=n)this.j5l(this.y5h_1),this.j5h_1.f5m(n.m5i_1,n.n5i_1,n.q5i_1,this.a5i_1),t.x5l_1.g5m(n);else if(this.q5h_1.t19()||!this.e5m(this.q5h_1.t5j_1/2,this.q5h_1.u5j_1/2,t.x5l_1)){this.j5l(this.y5h_1),this.y5h_1.n5l(this.b5i_1.k5l_1),this.y5h_1.o5l(this.b5i_1.l5l_1);var i=this.j5h_1.p5l(this.o5h_1.g5i_1,this.o5h_1.h5i_1);this.b5i_1.r5l(this.j5h_1.q5l(i.q5i_1),this.a5i_1),this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,t.x5l_1)}return this.j5h_1.h5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,this.z5h_1),this.y5h_1.i5m(this.z5h_1),t.z5l_1=-this.y5h_1.m5l_1[11],t.a5m_1=this.y5h_1.j5m(this.o5h_1.k5i_1),t.b5m_1=this.y5h_1.k5m(),t.c5m_1=this.o5h_1.k5i_1,t},Pr(W_).l5m=function(t,n,i){return n=n===Wr?null:n,i===Wr?this.i5l(t,n):i.i5l.call(this,t,n)},Pr(W_).m5m=function(t){this.n5m(t),this.o5m(t,this.y5h_1),this.y5h_1.n5l(this.a5i_1),this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,this.o5h_1.g5i_1),this.j5h_1.h5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,this.z5h_1),this.y5h_1.i5m(this.z5h_1),this.o5h_1.h5i_1=Mh(),this.o5h_1.i5i_1=this.y5h_1.j5m(t.c5m_1),this.o5h_1.j5i_1=this.y5h_1.k5m(),this.o5h_1.k5i_1=t.c5m_1;var n=this.o5h_1.g5i_1,i=this.j5h_1.q5m()?10:this.j5h_1.p5m(n.m5i_1,n.n5i_1)*this.t5h_1+10;if(i>n.q5i_1){n.q5i_1=i,this.j5h_1.f5m(n.m5i_1,n.n5i_1,n.q5i_1,this.a5i_1),this.j5h_1.f5m(t.x5l_1.m5i_1,t.x5l_1.n5i_1,t.x5l_1.q5i_1,this.b5i_1.k5l_1),this.j5h_1.r5m(t.x5l_1.m5i_1,t.x5l_1.n5i_1,this.b5i_1.l5l_1),this.a5i_1.s5m(this.b5i_1.k5l_1).t5m();var e=this.b5i_1.l5l_1.u5m(this.a5i_1);if(e>=-1&&e<=1){var r=this.o5h_1,s=Fh(),u=Math.acos(e);r.j5i_1=s.u5n(u)}}},Pr(W_).e5m=function(t,n,i){var e,r;if(this.x5n(t,n,this.b5i_1)){var s;t:{var u=this.l5h_1.v5n().e2();if(ss(u,rs)&&u.d1())s=!1;else{for(var o=u.v();o.w();)if(o.y().w5n(this.b5i_1,this.a5i_1)){s=!0;break t}s=!1}}r=s}else r=!1;return r?(this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,i),e=!0):e=!1,e},Pr(W_).y5n=function(t,n){return this.z5n(t.s5l_1,t.t5l_1,t.w5l_1,n)},Pr(W_).z5n=function(t,n,i,e){return!this.q5h_1.t19()&&(this.a5o(this.z5h_1,this.y5h_1),this.z5h_1.i5m(this.y5h_1),!!this.z5h_1.b5o(t,n,i,this.q5h_1,this.a5i_1)&&(e.s5l_1=this.a5i_1.s5l_1,e.t5l_1=this.q5h_1.u5j_1-this.a5i_1.t5l_1,!0))},Pr(W_).c5o=function(t,n,i,e){return this.j5h_1.f5m(t,n,i,this.a5i_1),this.y5n(this.a5i_1,e)},Pr(W_).d5o=function(t,n,i){var e;return this.x5n(t,n,this.b5i_1)&&this.j5h_1.w5n(this.b5i_1,this.a5i_1)?(this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,i),e=!0):e=!1,e},Pr(W_).x5n=function(t,n,i){return!this.q5h_1.t19()&&(this.a5o(this.z5h_1,this.y5h_1),this.z5h_1.i5m(this.y5h_1).e5o(),!!this.z5h_1.f5o(t,this.q5h_1.u5j_1-n,this.q5h_1,i.k5l_1,i.l5l_1)&&(i.l5l_1.s5m(i.k5l_1).t5m(),!0))},Pr(W_).g5o=function(t){var n=.5*Ph(this.o5h_1.l5i_1);return 2*t*Math.tan(n)/this.q5h_1.u5j_1},Pr(W_).f5i=function(){var t=.5*Ph(this.o5h_1.l5i_1),n=Math.sin(t),i=this.j5h_1.h5o();return i/n-i},Pr(W_).i5o=function(t){var n=t.t5o_1;if(!n){var i=this.m5h_1;null==i||i.v5o(this.v5h_1)}this.j5h_1.q5m()&&(this.o5h_1.j5i_1=Fh().v5m_1,this.o5h_1.k5i_1=Fh().v5m_1),this.v5h_1.w5o_1=this.j5h_1,this.v5h_1.x5o_1=this.k5h_1,this.v5h_1.z5o_1=this.n5h_1,this.v5h_1.b5p_1=this.o5h_1;var e=this.j5h_1.p5l(this.o5h_1.g5i_1,this.o5h_1.h5i_1);if(this.v5h_1.f5p_1=this.j5h_1.q5l(e.q5i_1),this.j5h_1.f5m(e.m5i_1,e.n5i_1,e.q5i_1,this.v5h_1.m5p_1),this.v5h_1.c5p_1=this.i5h_1,this.v5h_1.e5p_1=this.t5h_1,this.v5h_1.d5p_1=this.s5h_1,this.v5h_1.g5p_1=this.u5h_1,this.v5h_1.k5p_1=this.j5h_1.bn(),this.v5h_1.l5p_1=this.j5h_1.m5j_1.j5q(),this.a5o(t.k5o_1,t.l5o_1),t.j5o_1.k5q(this.q5h_1),this.v5h_1.n5p_1.k5q(t.j5o_1),this.v5h_1.o5p_1.l5q(t.k5o_1),this.v5h_1.p5p_1.l5q(t.l5o_1),this.v5h_1.q5p_1.m5q(t.k5o_1,t.l5o_1),n?this.v5h_1.r5p_1.x5q(t.k5o_1,t.l5o_1,t.j5o_1,us(t.q5o_1)):this.v5h_1.r5p_1.w5q(t.k5o_1,t.l5o_1,t.j5o_1),this.j5h_1.q5m()){this.b5i_1.k5l_1.y5q(this.v5h_1.m5p_1),this.v5h_1.p5p_1.o5l(this.b5i_1.l5l_1);var r,s=this.v5h_1;this.j5h_1.w5n(this.b5i_1,this.a5i_1)?(this.v5h_1.j5p_1=this.j5h_1.d5m(this.a5i_1.s5l_1,this.a5i_1.t5l_1,this.a5i_1.w5l_1,Pa()),r=this.a5i_1.z5q(this.v5h_1.m5p_1)):r=this.v5h_1.f5p_1,s.h5p_1=r,this.v5h_1.i5p_1=this.v5h_1.g5o(this.v5h_1.h5p_1)}this.v5h_1.s5p_1=t.m5o_1,this.v5h_1.t5p_1=t.n5o_1,this.v5h_1.u5p_1=t.o5o_1,this.v5h_1.v5p_1=t.p5o_1,this.v5h_1.w5p_1=t.q5o_1,this.v5h_1.x5p_1=t.r5o_1,this.v5h_1.y5p_1=t.s5o_1,this.v5h_1.z5p_1=t.t5o_1,this.l5h_1.a5r(this.v5h_1);var u=!n&&this.v5h_1.a5q_1;if(!n){var o=this.m5h_1;null==o||o.b5r(this.v5h_1)}return this.v5h_1.w1h(),u},Pr(W_).c5r=function(t){var n=t.t5o_1;if(!n){var i=this.m5h_1;null==i||i.d5r(this.w5h_1)}if(this.w5h_1.y5j_1.y5q(t.l5o_1.n5l(this.w5h_1.y5j_1)),this.w5h_1.z5j_1.k5q(t.j5o_1),this.w5h_1.a5k_1.l5q(t.k5o_1),this.w5h_1.b5k_1.l5q(t.l5o_1),this.w5h_1.c5k_1.m5q(t.k5o_1,t.l5o_1),this.w5h_1.d5k_1.e5r(t.j5o_1.t5j_1,t.j5o_1.u5j_1),this.w5h_1.e5k_1=t.m5o_1,this.w5h_1.f5k_1=t.n5o_1,this.w5h_1.g5k_1=t.o5o_1,this.w5h_1.h5k_1=t.q5o_1,this.w5h_1.i5k_1=t.r5o_1,this.w5h_1.j5k_1=t.t5o_1,this.l5h_1.f5r(this.w5h_1),this.i5h_1.g5r(),this.i5h_1.h5r(this.w5h_1),!n){var e=this.m5h_1;null==e||e.i5r(this.w5h_1)}this.w5h_1.w1h()},Pr(W_).a5o=function(t,n){var i=this.j5h_1.p5l(this.o5h_1.g5i_1,this.o5h_1.h5i_1).q5i_1,e=this.j5h_1.q5l(i)+this.j5h_1.q5l(this.u5h_1);e<1e3&&(e=1e3);var r=(1<0){var o=.5*Ph(this.o5h_1.l5i_1),_=Math.tan(o),h=2*_*_+1,a=u/(2*Math.sqrt(h));s>a&&(s=a)}s<1&&(s=1),t.j5r(this.q5h_1.t5j_1,this.q5h_1.u5j_1,this.o5h_1.l5i_1,s,e),this.j5l(n)},Pr(W_).j5l=function(t){return this.k5r(this.o5h_1.g5i_1,this.o5h_1.h5i_1,t),t.l5r(0,0,1,Gh(this.o5h_1.i5i_1)),t.l5r(1,0,0,this.o5h_1.j5i_1),t.l5r(0,0,1,this.o5h_1.k5i_1),t.m5r(),t},Pr(W_).o5m=function(t,n){return this.k5r(t.x5l_1,t.y5l_1,n),n.l5r(0,0,1,Gh(t.a5m_1)),n.l5r(1,0,0,t.b5m_1),n.l5r(0,0,1,t.c5m_1),n.n5r(0,0,t.z5l_1),n.m5r(),n},Pr(W_).k5r=function(t,n,i){switch(n.y9_1){case 0:this.j5h_1.o5r(t.m5i_1,t.n5i_1,t.q5i_1,i);break;case 1:this.j5h_1.o5r(t.m5i_1,t.n5i_1,this.j5h_1.p5m(t.m5i_1,t.n5i_1)*this.t5h_1,i);break;case 2:this.j5h_1.o5r(t.m5i_1,t.n5i_1,(t.q5i_1+this.j5h_1.p5m(t.m5i_1,t.n5i_1))*this.t5h_1,i)}return i},Pr(W_).n5m=function(t){t.x5l_1.m5i_1=Zh(t.x5l_1.m5i_1),t.x5l_1.n5i_1=Jh(t.x5l_1.n5i_1),t.z5l_1=os(t.z5l_1,10,2*this.f5i()),t.a5m_1=Kh(t.a5m_1);var n=t,i=Fh(),e=os(t.b5m_1,0,90);n.b5m_1=i.p5r(e),t.c5m_1=Kh(t.c5m_1),this.j5h_1.q5m()&&(t.z5l_1=os(t.z5l_1,1,2*_s()*this.j5h_1.h5o()),t.b5m_1=Fh().v5m_1,t.c5m_1=Fh().v5m_1)},Pr(Y_).q5r=function(t){var n=t.r5r(),i=null==n?new G_:n;return i.b5s_1=t,i},Pr(G_).c5s=function(t){this.s5r_1=t},Pr(G_).d5s=function(){return this.s5r_1},Pr(G_).e5s=function(){return this.t5r_1},Pr(G_).f5s=function(){return this.u5r_1},Pr(G_).g5s=function(){this.x5r_1=null,this.y5r_1=null,this.z5r_1=null,this.a5s_1=null;var t=this.b5s_1;null==t||t.h5s(this),this.b5s_1=null},Pr(G_).i5s=function(t,n){var i=this.x5r_1,e=null==i?null:i.o5s(t),r=null!=e&&e;return r&&t.x5j_1.p5s(n,3,cx(),!1,0,0),r},Pr(G_).q5s=function(t,n){var i=this.y5r_1,e=null==i?null:i.o5s(t),r=null!=e&&e;return r&&t.x5j_1.p5s(n,1,cx(),!1,0,0),r},Pr(G_).r5s=function(t,n){var i=this.z5r_1,e=null==i?null:i.o5s(t),r=null!=e&&e;return r&&t.x5j_1.p5s(n,2,cx(),!1,0,0),r},Pr(G_).s5s=function(t){var n=this.a5s_1,i=null==n?null:n.o5s(t),e=null!=i&&i;return e&&t.x5j_1.a5t(ur,this.v5r_1.a(),Yk(),Tr(this.v5r_1.y5s_1,2)),e},Pr(G_).b5t=function(t){var n=this.a5s_1,i=null==n?null:n.o5s(t),e=null!=i&&i;return e&&t.x5j_1.a5t(Wk(),this.w5r_1.a(),Yk(),Tr(this.w5r_1.y5s_1,2)),e},Pr(G_).c5t=function(t){this.b5t(t)},Pr(K_).h5t=function(){var t=this.f5k_1,n=null==t?null:t.y5g();return null==n?0:n},Pr(K_).m5t=function(){return this.k5k_1},Pr(K_).n5t=function(){return this.l5k_1},Pr(K_).o5t=function(){return this.p5t(this.m5k_1)},Pr(K_).q5t=function(){var t,n=this.q5k_1;if(null==n){var i=new py,e=new xy(1024,1024,sx(),ux(),!0),r=new xy(1024,1024,Ae,Yk(),!0);r.b5u(Xk(),Jk()),r.b5u(Zk(),Jk()),i.e5u(this,e,ox()),i.e5u(this,r,_x()),this.q5k_1=i,t=i}else t=n;return t},Pr(K_).f5u=function(){var t,n=this.r5k_1;if(null==n){var i=new Oy(Vk(),new Float32Array([0,1,0,0,1,1,1,0]));this.r5k_1=i,t=i}else t=n;return t},Pr(K_).g5u=function(){var t,n=this.s5k_1;if(null==n){var i=new jy(Bk(),new Int32Array([0,1,2,2,1,3]));this.s5k_1=i,t=i}else t=n;return t},Pr(K_).w1h=function(){this.y5j_1.h5u(0,0,0),this.z5j_1.v5j(),this.a5k_1.i5u(),this.b5k_1.i5u(),this.c5k_1.i5u(),this.d5k_1.i5u(),this.e5k_1=null,this.f5k_1=null,this.g5k_1=null,this.h5k_1=null,this.i5k_1=null,this.j5k_1=!1,ls(this.t5k_1,0),this.w5k_1.b1(),this.v5k_1.w1h()},Pr(K_).c5l=function(){this.k5k_1=aS().d5t_1,this.l5k_1=Zq().e5t_1,this.m5k_1=rx(),this.o5k_1=rS().g5t_1,this.p5k_1=rS().g5t_1,this.q5k_1=null,this.r5k_1=null,this.s5k_1=null,cs(this.n5k_1,oS().f5t_1),this.v5k_1.c5l()},Pr(K_).q5u=function(){var t=this.e5k_1;return null==t?null:t.q5u()},Pr(K_).r5u=function(){var t=this.e5k_1;return null==t?null:t.r5u()},Pr(K_).s5u=function(){var t=this.e5k_1;null==t||t.s5u()},Pr(K_).t5u=function(t){var n=this.f5k_1,i=null==n?null:n.u5u(t),e=null==i||ss(i,Eh)?i:Nr();if(null==e)throw fs(Gr("Invalid index"));return e},Pr(K_).v5u=function(t){this.k5k_1.equals(t)||(this.k5k_1=t,this.x5j_1.w5u(hx(),t))},Pr(K_).x5u=function(t){this.l5k_1.equals(t)||(this.l5k_1=t,this.x5j_1.x5u(t))},Pr(K_).y5u=function(t){this.m5k_1!==t&&(this.m5k_1=t,this.x5j_1.z5u(t))},Pr(K_).p5t=function(t){return this.n5k_1[t-rx()|0]},Pr(K_).a5v=function(t){var n=this.m5k_1-rx()|0;this.n5k_1[n].equals(t)||(this.n5k_1[n]=t,this.x5j_1.b5v(ax(),t))},Pr(K_).c5v=function(t){return t===Vk()?this.o5k_1:t===Bk()?this.p5k_1:rS().g5t_1},Pr(K_).d5v=function(t,n){t!==Vk()||this.o5k_1.equals(n)?(t!==Bk()||this.p5k_1.equals(n)||(this.p5k_1=n),this.x5j_1.d5v(t,n)):(this.o5k_1=n,this.x5j_1.d5v(t,n))},Pr(K_).e5v=function(t){return this.v5k_1.f5v(this,t)},Pr(K_).g5v=function(t,n,i){return this.x5j_1.h5v(t,n,1,1,sx(),ux(),this.u5k_1),i.k5g_1=(255&this.u5k_1[0])/255,i.l5g_1=(255&this.u5k_1[1])/255,i.m5g_1=(255&this.u5k_1[2])/255,i.n5g_1=(255&this.u5k_1[3])/255,i},Pr(K_).i5v=function(t,n,i,e){var r=Tr(i,e),s=this.j5v(Tr(r,4)),u=this.x5j_1.d5l(lx());this.x5j_1.k5v(lx(),1),this.x5j_1.h5v(t,n,i,e,sx(),ux(),s),this.x5j_1.k5v(lx(),u);var o=vs(),_=_y(),h=0;if(h>1,s=Math.max(r,12),u=hs(Array(e+s|0),null),o=this.k5t_1,_=o.length;ps(o,u,0,0,_),this.k5t_1=u}var h,a=this.k5t_1[this.i5t_1];if(null==a){var l=new hh;this.k5t_1[this.i5t_1]=l,h=l}else h=a;var c=h,f=this.i5t_1;this.i5t_1=f+1|0,c.i60(t,n,i,f)},Pr(ch).u5u=function(t){var n;if(tO.o63_1&&kr.t64(kr.u5i_1,"StarFieldLayer - sunSize is to big, max size allowed is: "+O.o63_1),!0!==(null==i?null:i.o5s(t))||!0!==(null==e?null:e.v61(t))?Xr:(t.x5j_1.p5s(0,4,cx(),!1,0,0),n.r64(!0),void t.x5j_1.w61(fx(),0,1))},Pr(bh).u64=function(t){var n=t.r5r(),i=null==n?new $h:n;return i.y64_1=t,i},Pr($h).g5s=function(){this.x64_1=null;var t=this.y64_1;null==t||t.h5s(this),this.y64_1=null},Pr($h).c5t=function(t){var n=this.x64_1;if(null==n)return Xr;var i=n;if(!i.k5x(t))return Xr;i.w5z(!1),i.y5z(this.v64_1),i.z5z(this.w64_1);var e=0,r=t.h5t();if(e0&&this.k65(t,_)}while(s180?n-360:n<-180?360+n:n},Pr(Lh).n69=function(t){var n=t%360;return n>=0?n:360+n},Pr(Lh).o69=function(t){var n=t%180,i=n>90?180-n:n<-90?-180-n:n;return 0==(ks(t/180)%2|0)?i:-i},Pr(Lh).p69=function(t){var n=t%360;return n>180?n-360:n<-180?360+n:n},Pr(Lh).q69=function(t){return os(t,-90,90)},Pr(Lh).r69=function(t){return os(t,-180,180)},Pr(Lh).s69=function(t,n){return this.p5r(.5*(t+n))},Pr(Lh).t69=function(t,n){return t>=n?t:n},Pr(Lh).u69=function(t,n){return t<=n?t:n},Pr(ia).w69=function(t){return ta(this.v69_1,t)},Pr(ia).d=function(t){return function(t,n){return ta(t.v69_1,n instanceof ia?n.v69_1:Nr())}(this,t)},Pr(ia).toString=function(){return this.v69_1+"°"},Pr(ia).hashCode=function(){return na(this.v69_1)},Pr(ia).equals=function(t){return function(t,n){if(!(n instanceof ia))return!1;var i=n instanceof ia?n.v69_1:Nr();return!!qs(t,i)}(this.v69_1,t)},Pr(oa).c6a=function(){return 0===this.y67_1.s5l_1&&0===this.y67_1.t5l_1&&0===this.y67_1.w5l_1&&this.e68_1===Math.sqrt(3)},Pr(oa).d6a=function(){return this.y67_1.h5u(0,0,0),this.z67_1.h5u(-.5,0,0),this.a68_1.h5u(.5,0,0),this.b68_1.h5u(1,0,0),this.c68_1.h5u(0,1,0),this.d68_1.h5u(0,0,1),this.e68_1=Math.sqrt(3),this},Pr(oa).e6a=function(t,n,i){var e=Oa();e.f6a(t,n,i),e.g6a(this.b68_1,this.c68_1,this.d68_1),this.b68_1.t5m(),this.c68_1.t5m(),this.d68_1.t5m();var r=1/0,s=-1/0,u=1/0,o=-1/0,_=1/0,h=-1/0,a=tl(),l=Os(Es(0,n),i),c=l.ha_1,f=l.ia_1,v=l.ja_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0,a.h5u(t[d],t[d+1|0],t[d+2|0]);var w=a.u5m(this.b68_1);r>w&&(r=w),sp&&(u=p),om&&(_=m),h180){var p=e;n.f5m(t.j6a(),Hh(t.k6a(),90),p,this.f68_1),n.f5m(t.j6a(),Wh(t.k6a(),90),p,this.g68_1),ea(0,this.b68_1,h,this.c68_1,a,this.d68_1,l,this.f68_1),ea(0,this.b68_1,h,this.c68_1,a,this.d68_1,l,this.g68_1)}h[1]-h[0]i&&(n=i),n>(i=this.z67_1.m6a(t))&&(n=i),n>(i=this.a68_1.m6a(t))&&(n=i),this.f68_1.s5l_1=this.y67_1.s5l_1-.5*this.c68_1.s5l_1,this.f68_1.t5l_1=this.y67_1.t5l_1-.5*this.c68_1.t5l_1,this.f68_1.w5l_1=this.y67_1.w5l_1-.5*this.c68_1.w5l_1,n>(i=this.f68_1.m6a(t))&&(n=i),this.f68_1.s5l_1=this.y67_1.s5l_1+.5*this.c68_1.s5l_1,this.f68_1.t5l_1=this.y67_1.t5l_1+.5*this.c68_1.t5l_1,this.f68_1.w5l_1=this.y67_1.w5l_1+.5*this.c68_1.w5l_1,n>(i=this.f68_1.m6a(t))&&(n=i);var e=n;return Math.sqrt(e)},Pr(oa).l68=function(t){this.f68_1.y5q(this.z67_1),this.g68_1.y5q(this.a68_1);var n,i=this.j68_1>=0?t.u5q_1[this.j68_1]:null,e=-1;if(!1!==(null==i?null:sa(this,i)>=0)){var r;t:{for(var s=t.u5q_1,u=0,o=s.length;u=0;if(h||(this.j68_1=e),!h){r=!1;break t}}r=!0}n=r}else n=!1;return n},Pr(oa).toString=function(){return"BoundingBox(center="+this.y67_1+", bottomCenter="+this.z67_1+", topCenter="+this.a68_1+", r="+this.b68_1+", s="+this.c68_1+", t="+this.d68_1+", radius="+this.e68_1+")"},Pr(_a).q6a=function(t){if(!(t>=0)){var n=kr.y5i(kr.t5i_1,"BoundingSphere","setRadius","invalidRadius");throw is(Gr(n))}this.o6a_1=t},Pr(_a).r6a=function(t,n){return this.n6a_1.y5q(t),this.q6a(n),this},Pr(_a).l68=function(t){var n,i=-this.o6a_1,e=this.p6a_1>=0?t.u5q_1[this.p6a_1]:null,r=-1;if(!1!==(null==e?null:e.s6a(this.n6a_1)>i)){var s;t:{for(var u=t.u5q_1,o=0,_=u.length;o<_;){var h=u[o];o=o+1|0;var a=(r=r+1|0)===this.p6a_1||h.s6a(this.n6a_1)>i;if(a||(this.p6a_1=r),!a){s=!1;break t}}s=!0}n=s}else n=!1;return n},Pr(_a).equals=function(t){return this===t||t instanceof _a&&!!this.n6a_1.equals(t.n6a_1)&&this.o6a_1===t.o6a_1},Pr(_a).hashCode=function(){var t=this.n6a_1.hashCode();return Tr(31,t)+Ss(this.o6a_1)|0},Pr(_a).toString=function(){return"BoundingSphere(center="+this.n6a_1+", radius="+this.o6a_1+")"},Pr(ha).g5l=function(t){if(!(t>0&&t<180)){var n=kr.y5i(kr.t5i_1,"Camera","setFieldOfView","invalidFieldOfView");throw is(Gr(n))}this.l5i_1=t},Pr(ha).t6a=function(t,n,i,e,r,s,u){return this.g5i_1.r5i(t,n,i),this.h5i_1=e,this.i5i_1=r,this.j5i_1=s,this.k5i_1=u,this},Pr(ha).toString=function(){return"Camera(position="+this.g5i_1+", altitudeMode="+this.h5i_1+", heading="+new ia(this.i5i_1)+", tilt="+new ia(this.j5i_1)+", roll="+new ia(this.k5i_1)+", fieldOfView="+new ia(this.l5i_1)+")"},Pr(ca).y6a=function(){var t=1/this.x6a_1;return this.w6a_1*(1-t)},Pr(ca).z6a=function(){var t=1/this.x6a_1;return 2*t-t*t},Pr(ca).toString=function(){return"Ellipsoid(semiMajorAxis="+this.w6a_1+", inverseFlattening="+this.x6a_1+")"},Pr(ca).hashCode=function(){var t=Ss(this.w6a_1);return Tr(t,31)+Ss(this.x6a_1)|0},Pr(ca).equals=function(t){if(this===t)return!0;if(!(t instanceof ca))return!1;var n=t instanceof ca?t:Nr();return!!qs(this.w6a_1,n.w6a_1)&&!!qs(this.x6a_1,n.x6a_1)},Pr(va).a6b=function(){return this.n5q_1.b6b(1,0,0,1),this.o5q_1.b6b(-1,0,0,1),this.p5q_1.b6b(0,1,0,1),this.q5q_1.b6b(0,-1,0,1),this.r5q_1.b6b(0,0,-1,1),this.s5q_1.b6b(0,0,1,1),this.t5q_1.h5l(0,0,1,1),this},Pr(va).w5q=function(t,n,i){this.v5q_1.c6b(n);var e=t.m5l_1,r=e[12]+e[0],s=e[13]+e[1],u=e[14]+e[2],o=e[15]+e[3];return this.n5q_1.b6b(r,s,u,o),this.n5q_1.d6b(this.v5q_1),r=e[12]-e[0],s=e[13]-e[1],u=e[14]-e[2],o=e[15]-e[3],this.o5q_1.b6b(r,s,u,o),this.o5q_1.d6b(this.v5q_1),r=e[12]+e[4],s=e[13]+e[5],u=e[14]+e[6],o=e[15]+e[7],this.p5q_1.b6b(r,s,u,o),this.p5q_1.d6b(this.v5q_1),r=e[12]-e[4],s=e[13]-e[5],u=e[14]-e[6],o=e[15]-e[7],this.q5q_1.b6b(r,s,u,o),this.q5q_1.d6b(this.v5q_1),r=e[12]+e[8],s=e[13]+e[9],u=e[14]+e[10],o=e[15]+e[11],this.r5q_1.b6b(r,s,u,o),this.r5q_1.d6b(this.v5q_1),r=e[12]-e[8],s=e[13]-e[9],u=e[14]-e[10],o=e[15]-e[11],this.s5q_1.b6b(r,s,u,o),this.s5q_1.d6b(this.v5q_1),this.t5q_1.k5q(i),this},Pr(va).x5q=function(t,n,i,e){var r,s,u,o,_,h,a,l,c=e.r5j_1,f=e.r5j_1+e.t5j_1|0,v=e.s5j_1,d=e.s5j_1+e.u5j_1|0,w=this.v5q_1.m5q(t,n).e5o(),p=tl();r=p;var m=p,g=tl();s=g,w.f5o(c,v,i,m,g);var y=tl();u=y;var b=y,$=tl();o=$,w.f5o(f,v,i,b,$);var k=tl();_=k;var x=k,q=tl();h=q,w.f5o(c,d,i,x,q);var S=tl();a=S;var C=S,E=tl();l=E,w.f5o(f,d,i,C,E);var O=new nl(h.s5l_1-r.s5l_1,h.t5l_1-r.t5l_1,h.w5l_1-r.w5l_1),j=new nl(_.s5l_1-s.s5l_1,_.t5l_1-s.t5l_1,_.w5l_1-s.w5l_1),z=O.e6b(j);this.n5q_1.b6b(z.s5l_1,z.t5l_1,z.w5l_1,-z.u5m(r)),O.h5u(a.s5l_1-o.s5l_1,a.t5l_1-o.t5l_1,a.w5l_1-o.w5l_1),j.h5u(l.s5l_1-u.s5l_1,l.t5l_1-u.t5l_1,l.w5l_1-u.w5l_1);var T=O.e6b(j);this.o5q_1.b6b(T.s5l_1,T.t5l_1,T.w5l_1,-T.u5m(u)),O.h5u(o.s5l_1-r.s5l_1,o.t5l_1-r.t5l_1,o.w5l_1-r.w5l_1),j.h5u(s.s5l_1-u.s5l_1,s.t5l_1-u.t5l_1,s.w5l_1-u.w5l_1);var A=O.e6b(j);this.p5q_1.b6b(A.s5l_1,A.t5l_1,A.w5l_1,-A.u5m(u)),O.h5u(h.s5l_1-a.s5l_1,h.t5l_1-a.t5l_1,h.w5l_1-a.w5l_1),j.h5u(l.s5l_1-_.s5l_1,l.t5l_1-_.t5l_1,l.w5l_1-_.w5l_1);var I=O.e6b(j);this.q5q_1.b6b(I.s5l_1,I.t5l_1,I.w5l_1,-I.u5m(_)),O.h5u(_.s5l_1-u.s5l_1,_.t5l_1-u.t5l_1,_.w5l_1-u.w5l_1),j.h5u(a.s5l_1-r.s5l_1,a.t5l_1-r.t5l_1,a.w5l_1-r.w5l_1);var D=O.e6b(j);this.r5q_1.b6b(D.s5l_1,D.t5l_1,D.w5l_1,-D.u5m(r)),O.h5u(l.s5l_1-s.s5l_1,l.t5l_1-s.t5l_1,l.w5l_1-s.w5l_1),j.h5u(h.s5l_1-o.s5l_1,h.t5l_1-o.t5l_1,h.w5l_1-o.w5l_1);var M=O.e6b(j);return this.s5q_1.b6b(M.s5l_1,M.t5l_1,M.w5l_1,-M.u5m(s)),this.t5q_1.k5q(e),this},Pr(va).f6b=function(t){return this.s5q_1.u5m(t)>0&&this.n5q_1.u5m(t)>0&&this.o5q_1.u5m(t)>0&&this.q5q_1.u5m(t)>0&&this.p5q_1.u5m(t)>0&&this.r5q_1.u5m(t)>0},Pr(va).g6b=function(t,n){if(this.f6b(t)||this.f6b(n))return!0;if(t.equals(n))return!1;var i=0,e=this.u5q_1.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=this.u5q_1[r];if(s.h6b(t,n)<0)return!1;if(null!=s.i6b(t,n))return!0}while(i<=e);return!1},Pr(va).j6b=function(t){return this.t5q_1.k6b(t)},Pr(wa).l6b=function(t,n){return this.k5l_1.y5q(t),this.l5l_1.h5u(n.s5l_1-t.s5l_1,n.t5l_1-t.t5l_1,n.w5l_1-t.w5l_1),this},Pr(wa).r5l=function(t,n){return n.s5l_1=this.k5l_1.s5l_1+this.l5l_1.s5l_1*t,n.t5l_1=this.k5l_1.t5l_1+this.l5l_1.t5l_1*t,n.w5l_1=this.k5l_1.w5l_1+this.l5l_1.w5l_1*t,n},Pr(wa).m6b=function(t,n,i,e,r){if(!(t.length>=n)){var s=kr.y5i(kr.t5i_1,"Line","triStripIntersection","missingArray");throw is(Gr(s))}if(!(n>=3)){var u=kr.y5i(kr.t5i_1,"Line","triStripIntersection","invalidStride");throw is(Gr(u))}if(0===i.length){var o=kr.y5i(kr.t5i_1,"Line","triStripIntersection","missingArray");throw is(Gr(o))}if(!(e>=0)){var _=kr.y5i(kr.t5i_1,"Line","triStripIntersection","invalidCount");throw is(Gr(_))}var h=this.l5l_1.s5l_1,a=this.l5l_1.t5l_1,l=this.l5l_1.w5l_1,c=this.k5l_1.s5l_1,f=this.k5l_1.t5l_1,v=this.k5l_1.w5l_1,d=1/0,w=1e-5,p=i[0]*n|0,m=p;p=m+1|0;var g=t[m],y=p;p=y+1|0;var b=t[y],$=t[p],k=p=i[1]*n|0;p=k+1|0;var x=t[k],q=p;p=q+1|0;var S=t[q],C=t[p],E=2;if(E-1e-5&&V1.00001)){var X=Y*N-G*M,J=G*D-W*N,Z=W*M-Y*D,Q=B*(h*X+a*J+l*Z);if(!(Q<-1e-5||K+Q>1.00001)){var tt=B*(R*X+P*J+L*Z);tt>=0&&tte?Fh().y5m_1:Fh().v5m_1;var s=r-i,u=Math.cos(e)*Math.sin(s),o=r-i,_=Math.cos(n)*Math.sin(e)-Math.sin(n)*Math.cos(e)*Math.cos(o),h=Math.atan2(u,_);return $s(h)?Fh().v5m_1:Fh().u5n(h)},Pr(ya).r6b=function(t){var n=Ph(this.m5i_1),i=Ph(this.n5i_1),e=Ph(t.m5i_1),r=Ph(t.n5i_1);if(n===e&&i===r)return 0;var s=(e-n)/2,u=Math.sin(s),o=(r-i)/2,_=Math.sin(o),h=u*u+Math.cos(n)*Math.cos(e)*_*_,a=Math.sqrt(h),l=2*Math.asin(a);return $s(l)?0:l},Pr(ya).s6b=function(t,n,i){if(0===n)return i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1,i;var e=Ph(this.m5i_1),r=Ph(this.n5i_1),s=Ph(t),u=Math.cos(e),o=Math.sin(e),_=Math.cos(s),h=Math.sin(s),a=Math.sin(n),l=Math.cos(n),c=o*l+u*a*_,f=Math.asin(c),v=a*h,d=u*l-o*a*_,w=r+Math.atan2(v,d);return $s(f)||$s(w)?(i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1):(i.m5i_1=Xh(Fh().u5n(f)),i.n5i_1=Jh(Fh().u5n(w))),i},Pr(ya).t6b=function(t){var n=Ph(this.m5i_1),i=Ph(this.n5i_1),e=Ph(t.m5i_1),r=Ph(t.n5i_1);if(n===e&&i===r)return Fh().v5m_1;var s=r-i,u=e/2+_s()/4,o=Math.tan(u),_=n/2+_s()/4,h=o/Math.tan(_),a=Math.log(h),l=s;Math.abs(l)>_s()&&(s=s>0?-(2*_s()-s):2*_s()+s);var c=s,f=Math.atan2(c,a);return $s(f)?Fh().v5m_1:Fh().u5n(f)},Pr(ya).u6b=function(t){var n=Ph(this.m5i_1),i=Ph(this.n5i_1),e=Ph(t.m5i_1),r=Ph(t.n5i_1);if(n===e&&i===r)return 0;var s,u=e-n,o=r-i;if(Math.abs(u)<1e-15)s=Math.cos(n);else{var _=e/2+_s()/4,h=Math.tan(_),a=n/2+_s()/4,l=h/Math.tan(a);s=u/Math.log(l)}var c=s,f=o;Math.abs(f)>_s()&&(o=o>0?-(2*_s()-o):2*_s()+o);var v=u*u+c*c*o*o,d=Math.sqrt(v);return $s(d)?0:d},Pr(ya).v6b=function(t,n,i){if(0===n)return i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1,i;var e,r=Ph(this.m5i_1),s=Ph(this.n5i_1),u=Ph(t),o=r+n*Math.cos(u),_=o-r;if(Math.abs(_)<1e-15)e=Math.cos(r);else{var h=o/2+_s()/4,a=Math.tan(h),l=r/2+_s()/4,c=a/Math.tan(l);e=_/Math.log(c)}var f=e,v=n*Math.sin(u)/f,d=o;Math.abs(d)>_s()/2&&(o=o>0?_s()-o:-_s()-o);var w=(s+v+_s())%(2*_s())-_s();return $s(o)||$s(w)?(i.m5i_1=this.m5i_1,i.n5i_1=this.n5i_1):(i.m5i_1=Xh(Fh().u5n(o)),i.n5i_1=Jh(Fh().u5n(w))),i},Pr(ya).equals=function(t){return this===t||t instanceof ya&&this.m5i_1===t.m5i_1&&this.n5i_1===t.n5i_1},Pr(ya).hashCode=function(){var t=na(this.m5i_1);return Tr(31,t)+na(this.n5i_1)|0},Pr(ya).toString=function(){return"Location(latitude="+new ia(this.m5i_1)+", longitude="+new ia(this.n5i_1)+")"},Pr($a).w6b=function(t,n,i,e,r,s,u,o){return this.x5l_1.r5i(t,n,i),this.y5l_1=e,this.z5l_1=r,this.a5m_1=s,this.b5m_1=u,this.c5m_1=o,this},Pr($a).x6b=function(t){return this.w6b(t.x5l_1.m5i_1,t.x5l_1.n5i_1,t.x5l_1.q5i_1,t.y5l_1,t.z5l_1,t.a5m_1,t.b5m_1,t.c5m_1)},Pr($a).toString=function(){return"LookAt(position="+this.x5l_1+", altitudeMode="+this.y5l_1+", range="+this.z5l_1+", heading="+new ia(this.a5m_1)+", tilt="+new ia(this.b5m_1)+", roll="+new ia(this.c5m_1)+")"},Pr(Sa).y5w=function(t){var n=t.r5w_1,i=this.r5w_1,e=n.length;return ps(n,i,0,0,e),this},Pr(Sa).z6b=function(t,n){return this.r5w_1[0]=t,this.r5w_1[4]=n,this},Pr(Sa).i5u=function(){var t=xa().y6b_1,n=this.r5w_1,i=t.length;return ps(t,n,0,0,i),this},Pr(Sa).a6c=function(){return this.r5w_1[0]=1,this.r5w_1[1]=0,this.r5w_1[2]=0,this.r5w_1[3]=0,this.r5w_1[4]=-1,this.r5w_1[5]=1,this.r5w_1[6]=0,this.r5w_1[7]=0,this.r5w_1[8]=1,this},Pr(Sa).c67=function(t,n){var i=t.r65(),e=t.q65(),r=n.r65(),s=n.q65(),u=e/s,o=i/r,_=(t.o65_1-n.o65_1)/s,h=(t.m65_1-n.m65_1)/r;return this.r5w_1[0]=u,this.r5w_1[1]=0,this.r5w_1[2]=_,this.r5w_1[3]=0,this.r5w_1[4]=o,this.r5w_1[5]=h,this.r5w_1[6]=0,this.r5w_1[7]=0,this.r5w_1[8]=1,this},Pr(Sa).b67=function(t,n){var i=t.r65(),e=t.q65(),r=n.r65(),s=n.q65(),u=e/s,o=i/r,_=(t.o65_1-n.o65_1)/s,h=(t.m65_1-n.m65_1)/r,a=this.r5w_1;a[2]=a[2]+(this.r5w_1[0]*_+this.r5w_1[1]*h);var l=this.r5w_1;l[5]=l[5]+(this.r5w_1[3]*_+this.r5w_1[4]*h);var c=this.r5w_1;c[8]=c[8]+(this.r5w_1[6]*_+this.r5w_1[6]*h);var f=this.r5w_1;f[0]=f[0]*u;var v=this.r5w_1;v[1]=v[1]*o;var d=this.r5w_1;d[3]=d[3]*u;var w=this.r5w_1;w[4]=w[4]*o;var p=this.r5w_1;p[6]=p[6]*u;var m=this.r5w_1;return m[7]=m[7]*o,this},Pr(Sa).b6c=function(t){var n=this.r5w_1,i=t.r5w_1,e=n[0],r=n[1],s=n[2];return n[0]=e*i[0]+r*i[3]+s*i[6],n[1]=e*i[1]+r*i[4]+s*i[7],n[2]=e*i[2]+r*i[5]+s*i[8],e=n[3],r=n[4],s=n[5],n[3]=e*i[0]+r*i[3]+s*i[6],n[4]=e*i[1]+r*i[4]+s*i[7],n[5]=e*i[2]+r*i[5]+s*i[8],e=n[6],r=n[7],s=n[8],n[6]=e*i[0]+r*i[3]+s*i[6],n[7]=e*i[1]+r*i[4]+s*i[7],n[8]=e*i[2]+r*i[5]+s*i[8],this},Pr(Sa).c6c=function(t,n){var i=n;if(!((t.length-i|0)>=9)){var e=kr.y5i(kr.t5i_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.r5w_1[0];var s=i;i=s+1|0,t[s]=this.r5w_1[3];var u=i;i=u+1|0,t[u]=this.r5w_1[6];var o=i;i=o+1|0,t[o]=this.r5w_1[1];var _=i;i=_+1|0,t[_]=this.r5w_1[4];var h=i;i=h+1|0,t[h]=this.r5w_1[7];var a=i;i=a+1|0,t[a]=this.r5w_1[2];var l=i;return i=l+1|0,t[l]=this.r5w_1[5],t[i]=this.r5w_1[8],t},Pr(Sa).equals=function(t){return this===t||t instanceof Sa&&Ns(this.r5w_1,t.r5w_1)},Pr(Sa).hashCode=function(){return Rs(this.r5w_1)},Pr(Sa).toString=function(){return"Matrix3(["+this.r5w_1[0]+", "+this.r5w_1[1]+", "+this.r5w_1[2]+"], ["+this.r5w_1[3]+", "+this.r5w_1[4]+", "+this.r5w_1[5]+"], ["+this.r5w_1[6]+", "+this.r5w_1[7]+", "+this.r5w_1[8]+"])"},Pr(Ca).i6c=function(t,n){for(var i=0,e=hs(Array(4),null);i<4;)e[i]=new Float64Array(4),i=i+1|0;var r=e;r[0][0]=t[0],r[0][1]=t[1],r[0][2]=t[2],r[0][3]=t[3],r[1][0]=t[4],r[1][1]=t[5],r[1][2]=t[6],r[1][3]=t[7],r[2][0]=t[8],r[2][1]=t[9],r[2][2]=t[10],r[2][3]=t[11],r[3][0]=t[12],r[3][1]=t[13],r[3][2]=t[14],r[3][3]=t[15];var s=new Int32Array(4),u=this.j6c(r,s),o=0;if(o<=3)do{var _=o;o=o+1|0,u*=r[_][_]}while(o<=3);var h=u;if(Math.abs(h)<1e-8)return!1;for(var a=0,l=hs(Array(4),null);a<4;)l[a]=new Float64Array(4),a=a+1|0;var c=l,f=new Float64Array(4),v=0;if(v<=3)do{var d=v;v=v+1|0;var w=0;if(w<=3)do{var p=w;w=w+1|0,f[p]=0}while(w<=3);f[d]=1,this.k6c(r,s,f);var m=0;if(m<=3)do{var g=m;m=m+1|0,c[g][d]=f[g]}while(m<=3)}while(v<=3);return n[0]=c[0][0],n[1]=c[0][1],n[2]=c[0][2],n[3]=c[0][3],n[4]=c[1][0],n[5]=c[1][1],n[6]=c[1][2],n[7]=c[1][3],n[8]=c[2][0],n[9]=c[2][1],n[10]=c[2][2],n[11]=c[2][3],n[12]=c[3][0],n[13]=c[3][1],n[14]=c[3][2],n[15]=c[3][3],!0},Pr(Ca).j6c=function(t,n){var i=new Float64Array(4),e=1,r=0;if(r<=3)do{var s=r;r=r+1|0;var u=0,o=0;if(o<=3)do{var _=o;o=o+1|0;var h=t[s][_],a=Math.abs(h);a>u&&(u=a)}while(o<=3);if(0===u)return 0;i[s]=1/u}while(r<=3);var l=0;if(l<=3)do{var c=l;l=l+1|0;var f=0;if(f=g&&(g=m,y=$)}while(b<=3);if(c!==y){var O=0;if(O<=3)do{var j=O;O=O+1|0,m=t[y][j],t[y][j]=t[c][j],t[c][j]=m}while(O<=3);e=-e,i[y]=i[c]}if(n[c]=y,0===t[c][c]&&(t[c][c]=1e-20),3!==c){m=1/t[c][c];var z=c+1|0;if(z<=3)do{var T=z;z=z+1|0;var A=t[T];A[c]=A[c]*m}while(z<=3)}}while(l<=3);return e},Pr(Ca).k6c=function(t,n,i){var e=-1,r=0;if(r<=3)do{var s=r;r=r+1|0;var u=n[s],o=i[u];if(i[u]=i[s],-1!==e){var _=e;if(_0)){var s=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidWidth");throw is(Gr(s))}if(!(n>0)){var u=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidHeight");throw is(Gr(u))}if(!(i>0&&i<180)){var o=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidFieldOfView");throw is(Gr(o))}if(e===r){var _=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(_))}if(!(e>0&&r>0)){var h=kr.y5i(kr.t5i_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(h))}var a=t/n,l=.5*Ph(i),c=2*e*Math.tan(l),f=c*a;return this.m5l_1[0]=2*e/f,this.m5l_1[1]=0,this.m5l_1[2]=0,this.m5l_1[3]=0,this.m5l_1[4]=0,this.m5l_1[5]=2*e/c,this.m5l_1[6]=0,this.m5l_1[7]=0,this.m5l_1[8]=0,this.m5l_1[9]=0,this.m5l_1[10]=-(r+e)/(r-e),this.m5l_1[11]=-2*e*r/(r-e),this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=-1,this.m5l_1[15]=0,this},Pr(ja).e5r=function(t,n){if(!(t>0)){var i=kr.y5i(kr.t5i_1,"Matrix4","setToScreenProjection","invalidWidth");throw is(Gr(i))}if(!(n>0)){var e=kr.y5i(kr.t5i_1,"Matrix4","setToScreenProjection","invalidHeight");throw is(Gr(e))}return this.m5l_1[0]=2/t,this.m5l_1[1]=0,this.m5l_1[2]=0,this.m5l_1[3]=-1,this.m5l_1[4]=0,this.m5l_1[5]=2/n,this.m5l_1[6]=0,this.m5l_1[7]=-1,this.m5l_1[8]=0,this.m5l_1[9]=0,this.m5l_1[10]=2,this.m5l_1[11]=-1,this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=0,this.m5l_1[15]=1,this},Pr(ja).f6a=function(t,n,i){if(!(t.length>=i)){var e=kr.y5i(kr.t5i_1,"Matrix4","setToCovarianceOfPoints","invalidArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.y5i(kr.t5i_1,"Matrix4","setToCovarianceOfPoints","invalidCount");throw is(Gr(r))}if(!(i>=3)){var s=kr.y5i(kr.t5i_1,"Matrix4","setToCovarianceOfPoints","invalidStride");throw is(Gr(s))}var u=0,o=0,_=0,h=0,a=0,l=0,c=0,f=0,v=0,d=0,w=Os(Es(0,n),i),p=w.ha_1,m=w.ia_1,g=w.ja_1;if(g>0&&p<=m||g<0&&m<=p)do{var y=p;p=p+g|0,u+=t[y],o+=t[y+1|0],_+=t[y+2|0],d+=1}while(y!==m);u/=d,o/=d,_/=d;var b=Os(Es(0,n),i),$=b.ha_1,k=b.ia_1,x=b.ja_1;if(x>0&&$<=k||x<0&&k<=$)do{var q=$;$=$+x|0;var S=t[q]-u,C=t[q+1|0]-o,E=t[q+2|0]-_;h+=S*S,a+=C*C,l+=E*E,c+=S*C,f+=S*E,v+=C*E}while(q!==k);return this.m5l_1[0]=h/d,this.m5l_1[1]=c/d,this.m5l_1[2]=f/d,this.m5l_1[3]=0,this.m5l_1[4]=c/d,this.m5l_1[5]=a/d,this.m5l_1[6]=v/d,this.m5l_1[7]=0,this.m5l_1[8]=f/d,this.m5l_1[9]=v/d,this.m5l_1[10]=l/d,this.m5l_1[11]=0,this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=0,this.m5l_1[15]=0,this},Pr(ja).n5r=function(t,n,i){var e=this.m5l_1;e[3]=e[3]+(this.m5l_1[0]*t+this.m5l_1[1]*n+this.m5l_1[2]*i);var r=this.m5l_1;r[7]=r[7]+(this.m5l_1[4]*t+this.m5l_1[5]*n+this.m5l_1[6]*i);var s=this.m5l_1;s[11]=s[11]+(this.m5l_1[8]*t+this.m5l_1[9]*n+this.m5l_1[10]*i);var u=this.m5l_1;return u[15]=u[15]+(this.m5l_1[12]*t+this.m5l_1[13]*n+this.m5l_1[14]*i),this},Pr(ja).l5r=function(t,n,i,e){var r=Ph(e),s=Math.cos(r),u=Ph(e),o=Math.sin(u);return this.o6c(s+(1-s)*t*t,(1-s)*t*n-o*i,(1-s)*t*i+o*n,0,(1-s)*t*n+o*i,s+(1-s)*n*n,(1-s)*n*i-o*t,0,(1-s)*t*i-o*n,(1-s)*n*i+o*t,s+(1-s)*i*i,0,0,0,0,1),this},Pr(ja).s65=function(t,n,i){var e=this.m5l_1;e[0]=e[0]*t;var r=this.m5l_1;r[4]=r[4]*t;var s=this.m5l_1;s[8]=s[8]*t;var u=this.m5l_1;u[12]=u[12]*t;var o=this.m5l_1;o[1]=o[1]*n;var _=this.m5l_1;_[5]=_[5]*n;var h=this.m5l_1;h[9]=h[9]*n;var a=this.m5l_1;a[13]=a[13]*n;var l=this.m5l_1;l[2]=l[2]*i;var c=this.m5l_1;c[6]=c[6]*i;var f=this.m5l_1;f[10]=f[10]*i;var v=this.m5l_1;return v[14]=v[14]*i,this},Pr(ja).i5m=function(t){var n=this.m5l_1,i=t.m5l_1,e=n[0],r=n[1],s=n[2],u=n[3];return n[0]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[1]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[2]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[3]=e*i[3]+r*i[7]+s*i[11]+u*i[15],e=n[4],r=n[5],s=n[6],u=n[7],n[4]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[5]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[6]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[7]=e*i[3]+r*i[7]+s*i[11]+u*i[15],e=n[8],r=n[9],s=n[10],u=n[11],n[8]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[9]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[10]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[11]=e*i[3]+r*i[7]+s*i[11]+u*i[15],e=n[12],r=n[13],s=n[14],u=n[15],n[12]=e*i[0]+r*i[4]+s*i[8]+u*i[12],n[13]=e*i[1]+r*i[5]+s*i[9]+u*i[13],n[14]=e*i[2]+r*i[6]+s*i[10]+u*i[14],n[15]=e*i[3]+r*i[7]+s*i[11]+u*i[15],this},Pr(ja).o6c=function(t,n,i,e,r,s,u,o,_,h,a,l,c,f,v,d){var w=this.m5l_1[0],p=this.m5l_1[1],m=this.m5l_1[2],g=this.m5l_1[3];return this.m5l_1[0]=w*t+p*r+m*_+g*c,this.m5l_1[1]=w*n+p*s+m*h+g*f,this.m5l_1[2]=w*i+p*u+m*a+g*v,this.m5l_1[3]=w*e+p*o+m*l+g*d,w=this.m5l_1[4],p=this.m5l_1[5],m=this.m5l_1[6],g=this.m5l_1[7],this.m5l_1[4]=w*t+p*r+m*_+g*c,this.m5l_1[5]=w*n+p*s+m*h+g*f,this.m5l_1[6]=w*i+p*u+m*a+g*v,this.m5l_1[7]=w*e+p*o+m*l+g*d,w=this.m5l_1[8],p=this.m5l_1[9],m=this.m5l_1[10],g=this.m5l_1[11],this.m5l_1[8]=w*t+p*r+m*_+g*c,this.m5l_1[9]=w*n+p*s+m*h+g*f,this.m5l_1[10]=w*i+p*u+m*a+g*v,this.m5l_1[11]=w*e+p*o+m*l+g*d,w=this.m5l_1[12],p=this.m5l_1[13],m=this.m5l_1[14],g=this.m5l_1[15],this.m5l_1[12]=w*t+p*r+m*_+g*c,this.m5l_1[13]=w*n+p*s+m*h+g*f,this.m5l_1[14]=w*i+p*u+m*a+g*v,this.m5l_1[15]=w*e+p*o+m*l+g*d,this},Pr(ja).c6b=function(t){return this.m5l_1[0]=t.m5l_1[0],this.m5l_1[1]=t.m5l_1[4],this.m5l_1[2]=t.m5l_1[8],this.m5l_1[3]=t.m5l_1[12],this.m5l_1[4]=t.m5l_1[1],this.m5l_1[5]=t.m5l_1[5],this.m5l_1[6]=t.m5l_1[9],this.m5l_1[7]=t.m5l_1[13],this.m5l_1[8]=t.m5l_1[2],this.m5l_1[9]=t.m5l_1[6],this.m5l_1[10]=t.m5l_1[10],this.m5l_1[11]=t.m5l_1[14],this.m5l_1[12]=t.m5l_1[3],this.m5l_1[13]=t.m5l_1[7],this.m5l_1[14]=t.m5l_1[11],this.m5l_1[15]=t.m5l_1[15],this},Pr(ja).c6c=function(t,n){var i=n;if(!((t.length-i|0)>=16)){var e=kr.y5i(kr.t5i_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.m5l_1[0];var s=i;i=s+1|0,t[s]=this.m5l_1[4];var u=i;i=u+1|0,t[u]=this.m5l_1[8];var o=i;i=o+1|0,t[o]=this.m5l_1[12];var _=i;i=_+1|0,t[_]=this.m5l_1[1];var h=i;i=h+1|0,t[h]=this.m5l_1[5];var a=i;i=a+1|0,t[a]=this.m5l_1[9];var l=i;i=l+1|0,t[l]=this.m5l_1[13];var c=i;i=c+1|0,t[c]=this.m5l_1[2];var f=i;i=f+1|0,t[f]=this.m5l_1[6];var v=i;i=v+1|0,t[v]=this.m5l_1[10];var d=i;i=d+1|0,t[d]=this.m5l_1[14];var w=i;i=w+1|0,t[w]=this.m5l_1[3];var p=i;i=p+1|0,t[p]=this.m5l_1[7];var m=i;return i=m+1|0,t[m]=this.m5l_1[11],t[i]=this.m5l_1[15],t},Pr(ja).e5o=function(){if(!Ea().i6c(this.m5l_1,this.m5l_1)){var t=kr.y5i(kr.t5i_1,"Matrix4","invertMatrix","singularMatrix");throw is(Gr(t))}return this},Pr(ja).m5r=function(){var t=this.m5l_1[1];this.m5l_1[1]=this.m5l_1[4],this.m5l_1[4]=t,t=this.m5l_1[2],this.m5l_1[2]=this.m5l_1[8],this.m5l_1[8]=t,t=this.m5l_1[6],this.m5l_1[6]=this.m5l_1[9],this.m5l_1[9]=t;var n=this.m5l_1[3],i=this.m5l_1[7],e=this.m5l_1[11];return this.m5l_1[3]=-this.m5l_1[0]*n-this.m5l_1[1]*i-this.m5l_1[2]*e,this.m5l_1[7]=-this.m5l_1[4]*n-this.m5l_1[5]*i-this.m5l_1[6]*e,this.m5l_1[11]=-this.m5l_1[8]*n-this.m5l_1[9]*i-this.m5l_1[10]*e,this.m5l_1[12]=0,this.m5l_1[13]=0,this.m5l_1[14]=0,this.m5l_1[15]=1,this},Pr(ja).f62=function(t){var n=this.m5l_1;return n[10]=n[10]*(1+t),this},Pr(ja).n5l=function(t){return t.s5l_1=-this.m5l_1[0]*this.m5l_1[3]-this.m5l_1[4]*this.m5l_1[7]-this.m5l_1[8]*this.m5l_1[11],t.t5l_1=-this.m5l_1[1]*this.m5l_1[3]-this.m5l_1[5]*this.m5l_1[7]-this.m5l_1[9]*this.m5l_1[11],t.w5l_1=-this.m5l_1[2]*this.m5l_1[3]-this.m5l_1[6]*this.m5l_1[7]-this.m5l_1[10]*this.m5l_1[11],t},Pr(ja).o5l=function(t){return t.s5l_1=-this.m5l_1[8],t.t5l_1=-this.m5l_1[9],t.w5l_1=-this.m5l_1[10],t},Pr(ja).j5m=function(t){var n=Ph(t),i=Math.cos(n),e=Ph(t),r=Math.sin(e),s=i*this.m5l_1[0]-r*this.m5l_1[4],u=r*this.m5l_1[5]-i*this.m5l_1[1],o=Fh(),_=Math.atan2(u,s);return o.u5n(_)},Pr(ja).k5m=function(){var t=this.m5l_1[10],n=this.m5l_1[2]*this.m5l_1[2]+this.m5l_1[6]*this.m5l_1[6],i=Math.sqrt(n),e=Fh(),r=Math.atan2(i,t);return e.u5n(r)},Pr(ja).g6a=function(t,n,i){if(this.m5l_1[1]!==this.m5l_1[4]||this.m5l_1[2]!==this.m5l_1[8]||this.m5l_1[6]!==this.m5l_1[9])return!1;for(var e=this.m5l_1[0],r=this.m5l_1[1],s=this.m5l_1[2],u=this.m5l_1[5],o=this.m5l_1[6],_=this.m5l_1[10],h=0,a=hs(Array(3),null);h<3;)a[h]=new Float64Array(3),h=h+1|0;var l=a;l[2][2]=1,l[1][1]=l[2][2],l[0][0]=l[1][1];var c=0;if(c<32)t:do{var f,v;c=c+1|0;var d=r;if(Math.abs(d)<1e-10){var w=s;v=Math.abs(w)<1e-10}else v=!1;if(v){var p=o;f=Math.abs(p)<1e-10}else f=!1;if(f)break t;if(0!==r){var m=.5*(u-e)/r,g=m*m,y=g+1,b=y!==g?(m<0?-1:1)*(Math.sqrt(y)-Math.abs(m)):.5/m,$=b*b+1,k=1/Math.sqrt($),x=k*b;e-=b*r,u+=b*r,r=0;var q=k*s-x*o;o=x*s+k*o,s=q;var S=0;if(S<=2)do{var C=S;S=S+1|0,q=k*l[C][0]-x*l[C][1],l[C][1]=x*l[C][0]+k*l[C][1],l[C][0]=q}while(S<=2)}if(0!==s){var E=.5*(_-e)/s,O=E*E,j=O+1,z=j!==O?(E<0?-1:1)*(Math.sqrt(j)-Math.abs(E)):.5/E,T=z*z+1,A=1/Math.sqrt(T),I=A*z;e-=z*s,_+=z*s,s=0;var D=A*r-I*o;o=I*r+A*o,r=D;var M=0;if(M<=2)do{var N=M;M=M+1|0,D=A*l[N][0]-I*l[N][2],l[N][2]=I*l[N][0]+A*l[N][2],l[N][0]=D}while(M<=2)}if(0!==o){var R=.5*(_-u)/o,P=R*R,L=P+1,F=L!==P?(R<0?-1:1)*(Math.sqrt(L)-Math.abs(R)):.5/R,U=F*F+1,H=1/Math.sqrt(U),V=H*F;u-=F*o,_+=F*o,o=0;var B=H*r-V*s;s=V*r+H*s,r=B;var W=0;if(W<=2)do{var Y=W;W=W+1|0,B=H*l[Y][1]-V*l[Y][2],l[Y][2]=V*l[Y][1]+H*l[Y][2],l[Y][1]=B}while(W<=2)}}while(c<32);var G=0,K=1,X=2;if(e1||(u=.5*(u/=_)+.5,o=.5*o+.5,s=(s=.5*(s/=_)+.5)*e.t5j_1+e.r5j_1,u=u*e.u5j_1+e.s5j_1,r.s5l_1=s,r.t5l_1=u,r.w5l_1=o,0))},Pr(ja).f5o=function(t,n,i,e,r){var s=(t-i.r5j_1)/i.t5j_1,u=(n-i.s5j_1)/i.u5j_1;s=2*s-1,u=2*u-1;var o=this.m5l_1[0]*s+this.m5l_1[1]*u+this.m5l_1[3],_=this.m5l_1[4]*s+this.m5l_1[5]*u+this.m5l_1[7],h=this.m5l_1[8]*s+this.m5l_1[9]*u+this.m5l_1[11],a=this.m5l_1[12]*s+this.m5l_1[13]*u+this.m5l_1[15],l=o-this.m5l_1[2],c=_-this.m5l_1[6],f=h-this.m5l_1[10],v=a-this.m5l_1[14],d=o+this.m5l_1[2],w=_+this.m5l_1[6],p=h+this.m5l_1[10],m=a+this.m5l_1[14];return 0!==v&&0!==m&&(e.s5l_1=l/v,e.t5l_1=c/v,e.w5l_1=f/v,r.s5l_1=d/m,r.t5l_1=w/m,r.w5l_1=p/m,!0)},Pr(ja).equals=function(t){return this===t||t instanceof ja&&Ns(this.m5l_1,t.m5l_1)},Pr(ja).hashCode=function(){return Rs(this.m5l_1)},Pr(ja).toString=function(){return"Matrix4(["+this.m5l_1[0]+", "+this.m5l_1[1]+", "+this.m5l_1[2]+", "+this.m5l_1[3]+"], ["+this.m5l_1[4]+", "+this.m5l_1[5]+", "+this.m5l_1[6]+", "+this.m5l_1[7]+"], ["+this.m5l_1[8]+", "+this.m5l_1[9]+", "+this.m5l_1[10]+", "+this.m5l_1[11]+"], ["+this.m5l_1[12]+", "+this.m5l_1[13]+", "+this.m5l_1[14]+", "+this.m5l_1[15]+"])"},Pr(Ta).t6c=function(){return new Aa(Da(),.5,Da(),.5)},Pr(Ta).u6c=function(){return new Aa(Da(),0,Da(),0)},Pr(Ta).v6c=function(){return new Aa(Da(),.5,Da(),0)},Pr(Ta).w6c=function(){return new Aa(Da(),1,Da(),0)},Pr(Aa).x6c=function(t,n,i,e){return this.p6c_1=t,this.q6c_1=n,this.r6c_1=i,this.s6c_1=e,this},Pr(Aa).y6c=function(t){return this.x6c(t.p6c_1,t.q6c_1,t.r6c_1,t.s6c_1)},Pr(Aa).z6c=function(t,n,i){var e,r;switch(this.p6c_1.y9_1){case 0:e=t*this.q6c_1;break;case 1:e=t-this.q6c_1;break;default:e=this.q6c_1}switch(this.r6c_1.y9_1){case 0:r=n*this.s6c_1;break;case 1:r=n-this.s6c_1;break;default:r=this.s6c_1}return i.a6d(e,r)},Pr(Aa).toString=function(){return"Offset(xUnits="+this.p6c_1+", x="+this.q6c_1+", yUnits="+this.r6c_1+", y="+this.s6c_1+")"},Pr(Aa).hashCode=function(){var t=this.p6c_1.hashCode();return t=Tr(t,31)+Ss(this.q6c_1)|0,t=Tr(t,31)+this.r6c_1.hashCode()|0,Tr(t,31)+Ss(this.s6c_1)|0},Pr(Aa).equals=function(t){if(this===t)return!0;if(!(t instanceof Aa))return!1;var n=t instanceof Aa?t:Nr();return!!(this.p6c_1.equals(n.p6c_1)&&qs(this.q6c_1,n.q6c_1)&&this.r6c_1.equals(n.r6c_1)&&qs(this.s6c_1,n.s6c_1))},Pr(Ra).s6a=function(t){return this.u5m(t)},Pr(Ra).b6b=function(t,n,i,e){return this.y69_1.s5l_1=t,this.y69_1.t5l_1=n,this.y69_1.w5l_1=i,this.z69_1=e,this.c6d(),this},Pr(Ra).d6b=function(t){var n=t.m5l_1,i=n[0]*this.y69_1.s5l_1+n[1]*this.y69_1.t5l_1+n[2]*this.y69_1.w5l_1+n[3]*this.z69_1,e=n[4]*this.y69_1.s5l_1+n[5]*this.y69_1.t5l_1+n[6]*this.y69_1.w5l_1+n[7]*this.z69_1,r=n[8]*this.y69_1.s5l_1+n[9]*this.y69_1.t5l_1+n[10]*this.y69_1.w5l_1+n[11]*this.z69_1,s=n[12]*this.y69_1.s5l_1+n[13]*this.y69_1.t5l_1+n[14]*this.y69_1.w5l_1+n[15]*this.z69_1;return this.y69_1.s5l_1=i,this.y69_1.t5l_1=e,this.y69_1.w5l_1=r,this.z69_1=s,this.c6d(),this},Pr(Ra).u5m=function(t){return this.y69_1.u5m(t)+this.z69_1},Pr(Ra).h6b=function(t,n){var i=this.s6a(t),e=this.s6a(n);return i<0&&e<0?-1:i>0&&e>0?1:0},Pr(Ra).i6b=function(t,n){if(t.equals(n))return null;var i=da().l6b(t,n),e=this.y69_1.u5m(i.l5l_1);if(0===e)return 0===this.u5m(i.k5l_1)?[t,n]:null;var r=-this.u5m(i.k5l_1)/e;if(r<0||r>1)return null;var s=i.r5l(r,tl());return e>0?[s,n]:[t,s]},Pr(Ra).c6d=function(){var t=this.y69_1.d6d();if(0===t)return Xr;if(t>=.9999999999&&t<=1.0000000001)return Xr;var n=this.y69_1;n.s5l_1=n.s5l_1/t;var i=this.y69_1;i.t5l_1=i.t5l_1/t;var e=this.y69_1;e.w5l_1=e.w5l_1/t,this.z69_1=this.z69_1/t},Pr(Ra).equals=function(t){return this===t||t instanceof Ra&&!!this.y69_1.equals(t.y69_1)&&this.z69_1===t.z69_1},Pr(Ra).hashCode=function(){var t=this.y69_1.hashCode();return Tr(31,t)+Ss(this.z69_1)|0},Pr(Ra).toString=function(){return"Plane(normal="+this.y69_1+", distance="+this.z69_1+")"},Pr(Fa).e6d=function(t,n,i){return new Ua(Fh().p5r(t),Fh().p5r(n),i)},Pr(Ua).r5i=function(t,n,i){return this.o6b(t,n),this.q5i_1=i,this},Pr(Ua).f6d=function(t,n,i){return this.p6b(t,n),this.q5i_1=i,this},Pr(Ua).g5m=function(t){return this.r5i(t.m5i_1,t.n5i_1,t.q5i_1)},Pr(Ua).equals=function(t){return this===t||t instanceof Ua&&!!Pr(ya).equals.call(this,t)&&this.q5i_1===t.q5i_1},Pr(Ua).hashCode=function(){var t=Pr(ya).hashCode.call(this);return Tr(31,t)+Ss(this.q5i_1)|0},Pr(Ua).toString=function(){return"Position(latitude="+new ia(this.m5i_1)+", longitude="+new ia(this.n5i_1)+", altitude="+this.q5i_1+")"},Pr(Va).a=function(){return this.z5s_1>this.y5s_1?this.z5s_1-this.y5s_1|0:0},Pr(Va).g6d=function(t,n){return this.y5s_1=t,this.z5s_1=n,this},Pr(Va).h6d=function(t){return this.g6d(t.y5s_1,t.z5s_1)},Pr(Va).equals=function(t){return this===t||t instanceof Va&&this.y5s_1===t.y5s_1&&this.z5s_1===t.z5s_1},Pr(Va).hashCode=function(){var t=this.y5s_1;return Tr(31,t)+this.z5s_1|0},Pr(Va).toString=function(){return"Range(lower="+this.y5s_1+", upper="+this.z5s_1+")"},Pr(Ya).i6d=function(t,n,i,e){var r=i>0?Fh().q69(t+i):t,s=e>0?Fh().r69(n+e):n;return new Ga(Fh().p5r(t),Fh().p5r(r),Fh().p5r(n),Fh().p5r(s))},Pr(Ga).t19=function(){return!!(qs(this.m65_1,Fh().v5m_1)&&qs(this.n65_1,Fh().v5m_1)&&qs(this.o65_1,Fh().v5m_1))&&qs(this.p65_1,Fh().v5m_1)},Pr(Ga).j6d=function(){return!!(qs(this.m65_1,Fh().x5m_1)&&qs(this.n65_1,Fh().w5m_1)&&qs(this.o65_1,Fh().z5m_1))&&qs(this.p65_1,Fh().y5m_1)},Pr(Ga).r65=function(){return Bh(this.n65_1,this.m65_1)},Pr(Ga).q65=function(){return Bh(this.p65_1,this.o65_1)},Pr(Ga).j6a=function(){return Fh().s69(this.m65_1,this.n65_1)},Pr(Ga).k6a=function(){return Fh().s69(this.o65_1,this.p65_1)},Pr(Ga).k6d=function(t){return t.m5i_1=this.j6a(),t.n5i_1=this.k6a(),t},Pr(Ga).f66=function(t){return this.m65_1=t.m65_1,this.n65_1=t.n65_1,this.o65_1=t.o65_1,this.p65_1=t.p65_1,this},Pr(Ga).v5j=function(){return this.m65_1=Fh().v5m_1,this.n65_1=Fh().v5m_1,this.o65_1=Fh().v5m_1,this.p65_1=Fh().v5m_1,this},Pr(Ga).u67=function(){return this.m65_1=Fh().x5m_1,this.n65_1=Fh().w5m_1,this.o65_1=Fh().z5m_1,this.p65_1=Fh().y5m_1,this},Pr(Ga).a67=function(t){return this.m65_1t.m65_1&&this.o65_1t.o65_1},Pr(Ga).t65=function(t){return this.m65_1<=t.n65_1&&this.n65_1>=t.m65_1&&this.o65_1<=t.p65_1&&this.p65_1>=t.o65_1},Pr(Ga).l6d=function(t){return this.m65_1t.m65_1&&this.o65_1t.o65_1&&(this.m65_1t.n65_1&&(this.n65_1=t.n65_1),this.o65_1t.p65_1&&(this.p65_1=t.p65_1),!0)},Pr(Ga).m6d=function(t,n){var i,e=this.m65_1,r=this.n65_1;if(e<=t&&t<=r){var s=this.o65_1,u=this.p65_1;i=s<=n&&n<=u}else i=!1;return i},Pr(Ga).n6d=function(t){return this.m6d(t.m5i_1,t.n5i_1)},Pr(Ga).o6d=function(t,n){return this.t19()?(this.m65_1=t,this.n65_1=t,this.o65_1=n,this.p65_1=n):(this.m65_1=Fh().u69(this.m65_1,t),this.n65_1=Fh().t69(this.n65_1,t),this.o65_1=Fh().u69(this.o65_1,n),this.p65_1=Fh().t69(this.p65_1,n)),this},Pr(Ga).p6d=function(t){return this.o6d(t.m5i_1,t.n5i_1)},Pr(Ga).q6d=function(t,n,i){if(!(t.length>=i)){var e=kr.y5i(kr.t5i_1,"Sector","union","missingArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.y5i(kr.t5i_1,"Sector","union","invalidCount");throw is(Gr(r))}if(!(i>=2)){var s=kr.y5i(kr.t5i_1,"Sector","union","invalidStride");throw is(Gr(s))}var u=this.t19(),o=u?17976931348623157e292:this.m65_1,_=u?-17976931348623157e292:this.n65_1,h=u?17976931348623157e292:this.o65_1,a=u?-17976931348623157e292:this.p65_1,l=Os(Es(0,n),i),c=l.ha_1,f=l.ia_1,v=l.ja_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0;var w=t[d],p=t[d+1|0];_p&&(o=p),aw&&(h=w)}while(d!==f);return o<17976931348623157e292&&(this.m65_1=Fh().p5r(o)),_>-17976931348623157e292&&(this.n65_1=Fh().p5r(_)),h<17976931348623157e292&&(this.o65_1=Fh().p5r(h)),a>-17976931348623157e292&&(this.p65_1=Fh().p5r(a)),this},Pr(Ga).r6d=function(t){return t.t19()||(this.t19()?(this.m65_1=t.m65_1,this.n65_1=t.n65_1,this.o65_1=t.o65_1,this.p65_1=t.p65_1):(this.m65_1>t.m65_1&&(this.m65_1=t.m65_1),this.n65_1t.o65_1&&(this.o65_1=t.o65_1),this.p65_10)){var u=kr.h6e("TileMatrixSet","fromTilePyramid","invalidResolution");throw is(Gr(u))}var o=0,_=n,h=i,a=as();do{var l=o;o=l+1|0;var c=new Ka(t,l,_,h,e,r);a.s(c),_=Tr(_,2),h=Tr(h,2)}while(c.d6e()>s);return new Ja(t,a)},Pr(Ja).k6e=function(t){var n=-1,i=1/0,e=0,r=this.j6e_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var u=Bh(this.j6e_1.h1(s).d6e(),t),o=u*u;i>o&&(i=o,n=s)}while(e<=r);return n},Pr(Qa).l6e=function(){return this.s5l_1*this.s5l_1+this.t5l_1*this.t5l_1},Pr(Qa).d6d=function(){var t=this.l6e();return Math.sqrt(t)},Pr(Qa).a6d=function(t,n){return this.s5l_1=t,this.t5l_1=n,this},Pr(Qa).m6e=function(t){var n=this.s5l_1;return this.s5l_1=t.s5l_1,t.s5l_1=n,n=this.t5l_1,this.t5l_1=t.t5l_1,t.t5l_1=n,this},Pr(Qa).n6e=function(t){this.s5l_1=this.s5l_1+t.s5l_1,this.t5l_1=this.t5l_1+t.t5l_1},Pr(Qa).o6e=function(t){this.s5l_1=this.s5l_1-t.s5l_1,this.t5l_1=this.t5l_1-t.t5l_1},Pr(Qa).p6e=function(t){this.s5l_1=this.s5l_1*t,this.t5l_1=this.t5l_1*t},Pr(Qa).q6e=function(t){return this.s5l_1*t.s5l_1+this.t5l_1*t.t5l_1},Pr(Qa).equals=function(t){return this===t||t instanceof Qa&&this.s5l_1===t.s5l_1&&this.t5l_1===t.t5l_1},Pr(Qa).hashCode=function(){var t=Ss(this.s5l_1);return Tr(31,t)+Ss(this.t5l_1)|0},Pr(Qa).toString=function(){return"Vec2(x="+this.s5l_1+", y="+this.t5l_1+")"},Pr(nl).l6e=function(){return Pr(Qa).l6e.call(this)+this.w5l_1*this.w5l_1},Pr(nl).r6e=function(t,n){var i=n;if(!((t.length-i|0)>=3)){var e=kr.y5i(kr.t5i_1,"Vec3","toArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.s5l_1;var s=i;return i=s+1|0,t[s]=this.t5l_1,t[i]=this.w5l_1,t},Pr(nl).z5q=function(t){var n=this.m6a(t);return Math.sqrt(n)},Pr(nl).m6a=function(t){var n=this.s5l_1-t.s5l_1,i=this.t5l_1-t.t5l_1,e=this.w5l_1-t.w5l_1;return n*n+i*i+e*e},Pr(nl).h5u=function(t,n,i){return this.a6d(t,n),this.w5l_1=i,this},Pr(nl).y5q=function(t){return this.h5u(t.s5l_1,t.t5l_1,t.w5l_1)},Pr(nl).x69=function(t){Pr(Qa).m6e.call(this,t);var n=this.w5l_1;return this.w5l_1=t.w5l_1,t.w5l_1=n,this},Pr(nl).s6e=function(t){return this.t6e(t),this},Pr(nl).t6e=function(t){Pr(Qa).n6e.call(this,t),this.w5l_1=this.w5l_1+t.w5l_1},Pr(nl).s5m=function(t){return this.u6e(t),this},Pr(nl).u6e=function(t){Pr(Qa).o6e.call(this,t),this.w5l_1=this.w5l_1-t.w5l_1},Pr(nl).h6a=function(t){return this.p6e(t),this},Pr(nl).p6e=function(t){Pr(Qa).p6e.call(this,t),this.w5l_1=this.w5l_1*t},Pr(nl).i5m=function(t){var n=t.m5l_1,i=n[0]*this.s5l_1+n[1]*this.t5l_1+n[2]*this.w5l_1+n[3],e=n[4]*this.s5l_1+n[5]*this.t5l_1+n[6]*this.w5l_1+n[7],r=n[8]*this.s5l_1+n[9]*this.t5l_1+n[10]*this.w5l_1+n[11],s=n[12]*this.s5l_1+n[13]*this.t5l_1+n[14]*this.w5l_1+n[15];return this.s5l_1=i/s,this.t5l_1=e/s,this.w5l_1=r/s,this},Pr(nl).t5m=function(){var t=this.d6d();return 0!==t&&(this.s5l_1=this.s5l_1/t,this.t5l_1=this.t5l_1/t,this.w5l_1=this.w5l_1/t),this},Pr(nl).u5m=function(t){return Pr(Qa).q6e.call(this,t)+this.w5l_1*t.w5l_1},Pr(nl).e6b=function(t){var n=this.t5l_1*t.w5l_1-this.w5l_1*t.t5l_1,i=this.w5l_1*t.s5l_1-this.s5l_1*t.w5l_1,e=this.s5l_1*t.t5l_1-this.t5l_1*t.s5l_1;return this.s5l_1=n,this.t5l_1=i,this.w5l_1=e,this},Pr(nl).equals=function(t){return this===t||t instanceof nl&&!!Pr(Qa).equals.call(this,t)&&this.w5l_1===t.w5l_1},Pr(nl).hashCode=function(){var t=Pr(Qa).hashCode.call(this);return Tr(31,t)+Ss(this.w5l_1)|0},Pr(nl).toString=function(){return"Vec3(x="+this.s5l_1+", y="+this.t5l_1+", z="+this.w5l_1+")"},Pr(el).t19=function(){return this.t5j_1<=0||this.u5j_1<=0},Pr(el).v5j=function(){return this.t5j_1=0,this.u5j_1=0,this},Pr(el).h5l=function(t,n,i,e){return this.r5j_1=t,this.s5j_1=n,this.t5j_1=i,this.u5j_1=e,this},Pr(el).k5q=function(t){return this.h5l(t.r5j_1,t.s5j_1,t.t5j_1,t.u5j_1)},Pr(el).k6b=function(t){return this.t5j_1>0&&this.u5j_1>0&&t.t5j_1>0&&t.u5j_1>0&&this.r5j_1<(t.r5j_1+t.t5j_1|0)&&t.r5j_1<(this.r5j_1+this.t5j_1|0)&&this.s5j_1<(t.s5j_1+t.u5j_1|0)&&t.s5j_1<(this.s5j_1+this.u5j_1|0)},Pr(el).v6e=function(t){return this.t5j_1>0&&this.u5j_1>0&&t.t5j_1>0&&t.u5j_1>0&&this.r5j_1<(t.r5j_1+t.t5j_1|0)&&t.r5j_1<(this.r5j_1+this.t5j_1|0)&&this.s5j_1<(t.s5j_1+t.u5j_1|0)&&t.s5j_1<(this.s5j_1+this.u5j_1|0)&&(this.r5j_1(t.r5j_1+t.t5j_1|0)&&(this.t5j_1=(t.r5j_1+t.t5j_1|0)-this.r5j_1|0),(this.s5j_1+this.u5j_1|0)>(t.s5j_1+t.u5j_1|0)&&(this.u5j_1=(t.s5j_1+t.u5j_1|0)-this.s5j_1|0),!0)},Pr(el).w6e=function(t,n){return xs(t)>=this.r5j_1&&xs(t)<(this.r5j_1+this.t5j_1|0)&&xs(n)>=this.s5j_1&&xs(n)<(this.s5j_1+this.u5j_1|0)},Pr(el).equals=function(t){return this===t||t instanceof el&&this.r5j_1===t.r5j_1&&this.s5j_1===t.s5j_1&&this.t5j_1===t.t5j_1&&this.u5j_1===t.u5j_1},Pr(el).hashCode=function(){var t=this.r5j_1;return t=Tr(31,t)+this.s5j_1|0,t=Tr(31,t)+this.t5j_1|0,Tr(31,t)+this.u5j_1|0},Pr(el).toString=function(){return"Viewport(x="+this.r5j_1+", y="+this.s5j_1+", width="+this.t5j_1+", height="+this.u5j_1+")"},Pr(rl).x6e=function(t,n){return this.y6e(t,n,0)},Pr(rl).y6e=function(t,n,i){var e=new ol;if(0!==e.e6f(Ph(t),Ph(n),i))throw is(Gr("Gauss-Kruger Conversion Error"));return new sl(t,n,e.b6f_1,e.a6f_1)},Pr(rl).f6f=function(t,n){var i=new ol;if(0!==i.g6f(n,t))throw is(Gr("Gauss-Kruger Conversion Error"));var e=Fh(),r=i.c6f_1,s=e.u5n(r),u=Fh(),o=i.d6f_1;return new sl(s,u.u5n(o),t,n)},Pr(sl).toString=function(){var t=Yr(this.j6f_1),n=Yr(this.k6f_1),i=1e5;return N$("%02d-%05d, %02d-%05d",[t/i|0,Fs(t%i|0),n/i|0,Fs(n%i|0)])},Pr(ol).e6f=function(t,n,i){var e=n<0?n+2*_s():n,r=0!==i?i:1+(ks(180*e/_s())/6|0)|0,s=this.z6e_1.w6a_1,u=this.z6e_1.y6a(),o=(s*s-u*u)/(s*s),_=(s-u)/(s+u),h=_*_,a=_*_*_,l=1e6*r+5e5,c=e-(Tr(r,6)-3|0)*_s()/180,f=t-0,v=t+0,d=Math.sin(t),w=d*d,p=Math.cos(t),m=p*p*p,g=p*p*p*p*p,y=Math.tan(t),b=y*y,$=b*b,k=1-o*w,x=1*s*Math.pow(k,-.5),q=1-o*w,S=1*s*(1-o)*Math.pow(q,-1.5),C=x/S-1,E=2*f,O=2*v,j=3*f,z=3*v,T=1*u*((1+_+1.25*h+1.25*a)*f-(3*_+3*h+2.625*a)*Math.sin(f)*Math.cos(v)+(1.875*h+1.875*a)*Math.sin(E)*Math.cos(O)-1.4583333333333333*a*Math.sin(j)*Math.cos(z))+0,A=x/2*d*p,I=x/24*d*m*(5-b+9*C),D=x/720*d*g*(61-58*b+$),M=x*p,N=x/6*m*(x/S-b),R=x/120*g*(5-18*b+$+14*C-58*b*C);return this.a6f_1=l+M*c+N*c*c*c+R*c*c*c*c*c,this.b6f_1=T+A*c*c+I*c*c*c*c+D*c*c*c*c*c*c,0},Pr(ol).g6f=function(t,n){var i=ks(t/1e6),e=(Tr(6,i<=30?i:i-60|0)-3|0)*_s()/180,r=t-(1e6*i+5e5),s=n/6367558.497,u=Math.cos(s),o=u*u,_=((2382*o+293609)*o+50221747)*Math.sin(s)*Math.cos(s)*1e-10+s,h=Math.cos(_),a=h*h,l=Math.sin(_),c=l*l,f=(.003369263*a+.5)*l*h,v=((.0056154-151e-7*a)*a+.1616128)*a+.25,d=((.00389*a+.0431)*a-.00168)*a+.125,w=((.013*a+.008)*a-.031)*a+.078,p=(.16666666666666666-.00112309*a)*a-.3333333333333333,m=((.008783-112e-6*a)*a-.16666666666666666)*a+.2,g=(.16666666666666666-.0361*a)*a-.1429,y=((.064-.004*a)*a-.16666666666666666)*a+.1111111111111111,b=r/((((.605*c+107.155)*c+21346.142)*c+this.z6e_1.w6a_1)*h);return this.c6f_1=_+(((w*b*b-d)*b*b+v)*b*b-1)*b*b*f,this.d6f_1=e+((((y*b*b+g)*b*b+m)*b*b+p)*b*b+1)*b,0},Pr(al).toString=function(){return"HelmertParameters(dX="+this.q6f_1+", dY="+this.r6f_1+", dZ="+this.s6f_1+", omegaX="+this.t6f_1+", omegaY="+this.u6f_1+", omegaZ="+this.v6f_1+", m="+this.w6f_1+", fromEllipsoid="+this.x6f_1+", toEllipsoid="+this.y6f_1+")"},Pr(al).hashCode=function(){var t=Ss(this.q6f_1);return t=Tr(t,31)+Ss(this.r6f_1)|0,t=Tr(t,31)+Ss(this.s6f_1)|0,t=Tr(t,31)+Ss(this.t6f_1)|0,t=Tr(t,31)+Ss(this.u6f_1)|0,t=Tr(t,31)+Ss(this.v6f_1)|0,t=Tr(t,31)+Ss(this.w6f_1)|0,t=Tr(t,31)+this.x6f_1.hashCode()|0,Tr(t,31)+this.y6f_1.hashCode()|0},Pr(al).equals=function(t){if(this===t)return!0;if(!(t instanceof al))return!1;var n=t instanceof al?t:Nr();return!!(qs(this.q6f_1,n.q6f_1)&&qs(this.r6f_1,n.r6f_1)&&qs(this.s6f_1,n.s6f_1)&&qs(this.t6f_1,n.t6f_1)&&qs(this.u6f_1,n.u6f_1)&&qs(this.v6f_1,n.v6f_1)&&qs(this.w6f_1,n.w6f_1)&&this.x6f_1.equals(n.x6f_1)&&this.y6f_1.equals(n.y6f_1))},Pr(ll).z6f=function(t,n,i){return this.a6g(t.m5i_1,t.n5i_1,t.q5i_1,n,i)},Pr(ll).a6g=function(t,n,i,e,r){var s=new hc,u=new Zl(e.x6f_1,s),o=new Zl(e.y6f_1,s),_=u.f5m(t,n,i,tl()),h=this.b6g(_,e);return o.d5m(h.s5l_1,h.t5l_1,h.w5l_1,r)},Pr(ll).c6g=function(t,n,i){return this.d6g(t.s5l_1,t.t5l_1,t.w5l_1,n,i)},Pr(ll).b6g=function(t,n,i,e){return i=i===Wr?tl():i,e===Wr?this.c6g(t,n,i):e.c6g.call(this,t,n,i)},Pr(ll).d6g=function(t,n,i,e,r){return r.h5u(t+-e.v6f_1*i+e.w6f_1*t+e.t6f_1*n+e.r6f_1,n+e.u6f_1*i+-e.t6f_1*t+e.w6f_1*n+e.s6f_1,i+e.w6f_1*i+e.v6f_1*t+-e.u6f_1*n+e.q6f_1)},Pr(wl).x6e=function(t,n){return this.y6e(t,n,5)},Pr(wl).y6e=function(t,n,i){var e=new kl,r=e.r6g(Ph(t),Ph(n),i);if(gl(),0!==r)throw is(Gr("MGRS Conversion Error"));return new pl(t,n,e.g6g_1)},Pr(pl).toString=function(){return this.u6g_1},Pr(kl).r6g=function(t,n,i){this.g6g_1="";var e=0;if((t<-1.5707963267948966||t>1.5707963267948966)&&(e=1),(n<-_s()||n>2*_s())&&(e=2),(i<0||i>5)&&(e=8),0===e){var r;if(t<-1.3962634015954636||t>1.4660765716752369){var s;try{var u=et,o=Fh().u5n(t),_=Fh().u5n(n),h=u.x6e(o,_);s=e|function(t,n,i,e,r){var s,u,o,_,h,a=i,l=e,c=new Int32Array(3),f=0;if(vl().equals(n)||dl().equals(n)||(f|=512),(a<0||a>4e6)&&(f|=64),(l<0||l>4e6)&&(f|=128),(r<0||r>5)&&(f|=8),0===f){var v=5-r|0,d=Math.pow(10,v);if(a=bl(0,a/d)*d,l=bl(0,l/d)*d,vl().equals(n)){c[0]=a>=2e6?25:24;var w=c[0]-22|0;h=gl().w6i_1[w][1],s=gl().w6i_1[w][4],u=gl().w6i_1[w][5]}else c[0]=a>=2e6?1:0,h=gl().w6i_1[c[0]][1],s=gl().w6i_1[c[0]][4],u=gl().w6i_1[c[0]][5];_=l,_-=u,c[2]=ks(_/1e5),c[2]>7&&(c[2]=c[2]+1|0),c[2]>13&&(c[2]=c[2]+1|0),o=a,o-=s,c[1]=h+ks(o/1e5)|0,a<2e6?(c[1]>11&&(c[1]=c[1]+3|0),c[1]>20&&(c[1]=c[1]+2|0)):(c[1]>2&&(c[1]=c[1]+2|0),c[1]>7&&(c[1]=c[1]+1|0),c[1]>11&&(c[1]=c[1]+3|0)),$l(t,0,c,a,l,r)}return f}(this,h.g6j_1,h.h6j_1,h.i6j_1,i)}catch(t){if(!(t instanceof bs))throw t;s=8192}r=s}else{var a;try{var l=rt,c=Fh().u5n(t),f=Fh().u5n(n),v=l.x6e(c,f);a=e|yl(this,v.a6j_1,t,v.c6j_1,v.d6j_1,i)}catch(t){if(!(t instanceof bs))throw t;a=4096}r=a}e=r}return e},Pr(ql).r6k=function(t,n,i,e,r,s){var u=e,o=1/n,_=0;if(t<=0&&(_|=64),(o<250||o>350)&&(_|=128),(i<-1.5707963267948966||i>1.5707963267948966)&&(_|=4),(u<-_s()||u>6.283185307179586)&&(_|=8),0===_){this.x6j_1=t,this.g6k_1=2*this.x6j_1,this.y6j_1=n,u>_s()&&(u-=6.283185307179586),i<0?(this.b6k_1=1,this.h6k_1=-i,this.i6k_1=-u):(this.b6k_1=0,this.h6k_1=i,this.i6k_1=u),this.j6k_1=r,this.k6k_1=s;var h=2*this.y6j_1-this.y6j_1*this.y6j_1;this.z6j_1=Math.sqrt(h),this.a6k_1=this.z6j_1/2;var a=this.h6k_1,l=Math.abs(a)-1.5707963267948966;if(Math.abs(l)>1e-10){var c=this.h6k_1,f=Math.sin(c),v=this.z6j_1*f,d=(1-v)/(1+v),w=this.a6k_1,p=Math.pow(d,w),m=this.h6k_1,g=Math.cos(m),y=1-v*v;this.c6k_1=g/Math.sqrt(y),this.f6k_1=this.x6j_1*this.c6k_1;var b=.7853981633974483-this.h6k_1/2;this.d6k_1=Math.tan(b)/p}else{var $=1+this.z6j_1,k=1-this.z6j_1,x=Math.pow($,$)*Math.pow(k,k);this.e6k_1=Math.sqrt(x)}}this.s6k(0,this.i6k_1),this.m6k_1=2*this.o6k_1;var q=this.m6k_1;return this.m6k_1=Math.abs(q)+.01,this.l6k_1=this.m6k_1,_},Pr(ql).s6k=function(t,n){var i=t,e=n,r=0;if((i<-1.5707963267948966||i>1.5707963267948966)&&(r|=1),i<0&&0===this.b6k_1&&(r|=1),i>0&&1===this.b6k_1&&(r|=1),(e<-_s()||e>6.283185307179586)&&(r|=2),0===r){var s=i,u=Math.abs(s)-1.5707963267948966;if(Math.abs(u)<1e-10)this.n6k_1=0,this.o6k_1=0;else{0!==this.b6k_1&&(e*=-1,i*=-1);var o=e-this.i6k_1;o>_s()&&(o-=6.283185307179586),o<-_s()&&(o+=6.283185307179586);var _=i,h=Math.sin(_),a=this.z6j_1*h,l=(1-a)/(1+a),c=this.a6k_1,f=Math.pow(l,c),v=.7853981633974483-i/2,d=Math.tan(v)/f,w=this.h6k_1,p=Math.abs(w)-1.5707963267948966,m=Math.abs(p)>1e-10?this.f6k_1*d/this.d6k_1:this.g6k_1*d/this.e6k_1;if(0!==this.b6k_1){var g=o;this.n6k_1=-(m*Math.sin(g)-this.j6k_1);var y=o;this.o6k_1=m*Math.cos(y)+this.k6k_1}else{var b=o;this.n6k_1=m*Math.sin(b)+this.j6k_1}var $=-m,k=o;this.o6k_1=$*Math.cos(k)+this.k6k_1}}return r},Pr(ql).t6k=function(t,n){var i=0,e=0,r=0,s=0,u=0,o=this.j6k_1-this.l6k_1,_=this.j6k_1+this.l6k_1,h=this.k6k_1-this.m6k_1;if((t>_||tthis.k6k_1+this.m6k_1||nMath.sqrt(l)&&(u|=256)}if(0===u){if(0===i&&0===e)this.p6k_1=1.5707963267948966,this.q6k_1=this.i6k_1;else{0!==this.b6k_1&&(i*=-1,e*=-1);var c=this.h6k_1,f=Math.abs(c)-1.5707963267948966,v=Math.abs(f)>1e-10?r*this.d6k_1/this.f6k_1:r*this.e6k_1/this.g6k_1,d=1.5707963267948966-2*Math.atan(v);t:for(;;){var w=d-s;if(!(Math.abs(w)>1e-10))break t;s=d;var p=d,m=Math.sin(p),g=this.z6j_1*m,y=(1-g)/(1+g),b=this.a6k_1,$=v*Math.pow(y,b);d=1.5707963267948966-2*Math.atan($)}this.p6k_1=d;var k=this.i6k_1,x=e,q=-i;this.q6k_1=k+Math.atan2(x,q),this.q6k_1>_s()?this.q6k_1=this.q6k_1-6.283185307179586:this.q6k_1<-_s()&&(this.q6k_1=this.q6k_1+6.283185307179586),this.p6k_1>1.5707963267948966?this.p6k_1=1.5707963267948966:this.p6k_1<-1.5707963267948966&&(this.p6k_1=-1.5707963267948966),this.q6k_1>_s()?this.q6k_1=_s():this.q6k_1<-_s()&&(this.q6k_1=-_s())}0!==this.b6k_1&&(this.p6k_1=-1*this.p6k_1,this.q6k_1=-1*this.q6k_1)}return u},Pr(Sl).u6k=function(t,n,i,e,r,s,u,o,_){var h=i,a=e,l=new Ol;null!=h&&null!=a||(h=l.w6k_1,a=l.x6k_1);var c=l.q6l(h,a,Ph(r),Ph(s),u,o,_);if(0===c&&(c=l.r6l(Ph(t),Ph(n))),0!==c&&512!==c)throw is(Gr("TM Conversion Error"));return new Cl(t,n,l.m6l_1,l.n6l_1)},Pr(Sl).s6l=function(t,n,i,e,r,s,u){var o=new Ol,_=o.w6k_1,h=o.x6k_1,a=o.q6l(_,h,Ph(i),Ph(e),r,s,u);if(0===a&&(a=o.t6l(t,n)),0!==a&&512!==a)throw is(Gr("TM Conversion Error"));var l=Fh(),c=o.o6l_1,f=l.u5n(c),v=Fh(),d=o.p6l_1;return new Cl(f,v.u5n(d),t,n)},Pr(Ol).q6l=function(t,n,i,e,r,s,u){var o=e,_=1/n,h=0;if(t<=0&&(h|=64),(_<250||_>350)&&(h|=128),(i<-1.570621793869697||i>1.570621793869697)&&(h|=16),(o<-_s()||o>2*_s())&&(h|=32),(u<.3||u>3)&&(h|=256),0===h){this.w6k_1=t,this.x6k_1=n,this.a6l_1=0,this.b6l_1=0,this.c6l_1=0,this.d6l_1=0,this.e6l_1=1,this.y6k_1=2*this.x6k_1-this.x6k_1*this.x6k_1,this.z6k_1=1/(1-this.y6k_1)-1;var a=this.w6k_1*(1-this.x6k_1),l=(this.w6k_1-a)/(this.w6k_1+a),c=l*l,f=c*l,v=f*l,d=v*l;this.f6l_1=this.w6k_1*(1-l+5*(c-f)/4+81*(v-d)/64),this.g6l_1=3*this.w6k_1*(l-c+7*(f-v)/8+55*d/64)/2,this.h6l_1=15*this.w6k_1*(c-f+3*(v-d)/4)/16,this.i6l_1=35*this.w6k_1*(f-v+11*d/16)/48,this.j6l_1=315*this.w6k_1*(v-d)/512,this.r6l(1.570621793869697,1.5707963267948966),this.k6l_1=this.m6l_1,this.l6l_1=this.n6l_1,this.r6l(0,1.5707963267948966),this.k6l_1=this.m6l_1,this.a6l_1=i,o>_s()&&(o-=2*_s()),this.b6l_1=o,this.c6l_1=s,this.d6l_1=r,this.e6l_1=u}return h},Pr(Ol).r6l=function(t,n){var i=n,e=0;if((t<-1.570621793869697||t>1.570621793869697)&&(e|=1),i>_s()&&(i-=2*_s()),ithis.b6l_1+1.5707963267948966){var r=i<0?i+2*_s():i,s=this.b6l_1<0?this.b6l_1+2*_s():this.b6l_1;(rs+1.5707963267948966)&&(e|=2)}if(0===e){var u=i-this.b6l_1,o=u;Math.abs(o)>9*_s()/180&&(e|=512),u>_s()&&(u-=2*_s()),u<-_s()&&(u+=2*_s());var _=u;Math.abs(_)<2e-10&&(u=0);var h=Math.sin(t),a=Math.cos(t),l=a*a,c=l*a,f=c*l,v=f*l,d=Math.tan(t),w=d*d,p=w*d*d,m=p*d*d,g=this.z6k_1*l,y=g*g,b=y*g,$=b*g,k=this.w6k_1,x=this.y6k_1,q=Math.sin(t),S=1-x*Math.pow(q,2),C=k/Math.sqrt(S),E=2*t,O=4*t,j=6*t,z=8*t,T=this.f6l_1*t-this.g6l_1*Math.sin(E)+this.h6l_1*Math.sin(O)-this.i6l_1*Math.sin(j)+this.j6l_1*Math.sin(z),A=this.f6l_1*this.a6l_1,I=this.g6l_1,D=2*this.a6l_1,M=A-I*Math.sin(D),N=this.h6l_1,R=4*this.a6l_1,P=M+N*Math.sin(R),L=this.i6l_1,F=6*this.a6l_1,U=P-L*Math.sin(F),H=this.j6l_1,V=8*this.a6l_1,B=(T-(U+H*Math.sin(V)))*this.e6l_1,W=C*h*a*this.e6l_1/2,Y=C*h*c*this.e6l_1*(5-w+9*g+4*y)/24,G=C*h*f*this.e6l_1*(61-58*w+p+270*g-330*w*g+445*y+324*b-680*w*y+88*$-600*w*b-192*w*$)/720,K=C*h*v*this.e6l_1*(1385-3111*w+543*p-m)/40320,X=u,J=u,Z=u,Q=this.c6l_1+B+Math.pow(X,2)*W+Math.pow(J,4)*Y+Math.pow(Z,6)*G,tt=u;this.n6l_1=Q+Math.pow(tt,8)*K;var nt=C*a*this.e6l_1,it=C*c*this.e6l_1*(1-w+g)/6,et=C*f*this.e6l_1*(5-18*w+p+14*g-58*w*g+13*y+4*b-64*w*y-24*w*b)/120,rt=C*v*this.e6l_1*(61-479*w+179*p-m)/5040,st=u,ut=u,ot=this.d6l_1+u*nt+Math.pow(st,3)*it+Math.pow(ut,5)*et,_t=u;this.m6l_1=ot+Math.pow(_t,7)*rt}return e},Pr(Ol).t6l=function(t,n){var i=0;if((tthis.d6l_1+this.k6l_1)&&(i|=4),(nthis.c6l_1+this.l6l_1)&&(i|=8),0===i){var e=this.f6l_1*this.a6l_1,r=this.g6l_1,s=2*this.a6l_1,u=e-r*Math.sin(s),o=this.h6l_1,_=4*this.a6l_1,h=u+o*Math.sin(_),a=this.i6l_1,l=6*this.a6l_1,c=h-a*Math.sin(l),f=this.j6l_1,v=8*this.a6l_1,d=c+f*Math.sin(v)+(n-this.c6l_1)/this.e6l_1,w=this.w6k_1*(1-this.y6k_1),p=this.y6k_1,m=Math.sin(0),g=1-p*Math.pow(m,2),y=Math.sqrt(g),b=w/Math.pow(y,3),$=d/b,k=0;if(k<=4)do{k=k+1|0;var x=2*$,q=4*$,S=6*$,C=8*$,E=this.f6l_1*$-this.g6l_1*Math.sin(x)+this.h6l_1*Math.sin(q)-this.i6l_1*Math.sin(S)+this.j6l_1*Math.sin(C),O=this.w6k_1*(1-this.y6k_1),j=this.y6k_1,z=$,T=Math.sin(z),A=1-j*Math.pow(T,2),I=Math.sqrt(A);$+=(d-E)/(b=O/Math.pow(I,3))}while(k<=4);var D=this.w6k_1*(1-this.y6k_1),M=this.y6k_1,N=$,R=Math.sin(N),P=1-M*Math.pow(R,2),L=Math.sqrt(P);b=D/Math.pow(L,3);var F=this.w6k_1,U=this.y6k_1,H=$,V=Math.sin(H),B=1-U*Math.pow(V,2),W=F/Math.sqrt(B),Y=$,G=Math.cos(Y),K=$,X=Math.tan(K),J=X*X,Z=J*J,Q=this.z6k_1*Math.pow(G,2),tt=Q*Q,nt=tt*Q,it=nt*Q,et=t-this.d6l_1,rt=et;Math.abs(rt)<1e-4&&(et=0);var st=2*b*W,ut=this.e6l_1,ot=X/(st*Math.pow(ut,2)),_t=X*(5+3*J+Q-4*Math.pow(Q,2)-9*J*Q),ht=24*b*Math.pow(W,3),at=this.e6l_1,lt=_t/(ht*Math.pow(at,4)),ct=X*(61+90*J+46*Q+45*Z-252*J*Q-3*tt+100*nt-66*J*tt-90*Z*Q+88*it+225*Z*tt+84*J*nt-192*J*it),ft=720*b*Math.pow(W,5),vt=this.e6l_1,dt=ct/(ft*Math.pow(vt,6)),wt=X*(1385+3633*J+4095*Z+1575*Math.pow(X,6)),pt=40320*b*Math.pow(W,7),mt=this.e6l_1,gt=wt/(pt*Math.pow(mt,8)),yt=et,bt=et,$t=et,kt=$-Math.pow(yt,2)*ot+Math.pow(bt,4)*lt-Math.pow($t,6)*dt,xt=et;this.o6l_1=kt+Math.pow(xt,8)*gt;var qt=1/(W*G*this.e6l_1),St=1+2*J+Q,Ct=6*Math.pow(W,3)*G,Et=this.e6l_1,Ot=St/(Ct*Math.pow(Et,3)),jt=5+6*Q+28*J-3*tt+8*J*Q+24*Z-4*nt+4*J*tt+24*J*nt,zt=120*Math.pow(W,5)*G,Tt=this.e6l_1,At=jt/(zt*Math.pow(Tt,5)),It=61+662*J+1320*Z+720*Math.pow(X,6),Dt=5040*Math.pow(W,7)*G,Mt=this.e6l_1,Nt=It/(Dt*Math.pow(Mt,7)),Rt=et,Pt=et,Lt=et,Ft=et*qt-Math.pow(Rt,3)*Ot+Math.pow(Pt,5)*At-Math.pow(Lt,7)*Nt;this.p6l_1=this.b6l_1+Ft;var Ut=this.o6l_1;if(Math.abs(Ut)>90*_s()/180&&(i|=8),this.p6l_1>_s()){this.p6l_1=this.p6l_1-2*_s();var Ht=this.p6l_1;Math.abs(Ht)>_s()&&(i|=4)}var Vt=Math.abs(Ft),Bt=9*_s()/180,Wt=this.o6l_1;Vt>Bt*Math.cos(Wt)&&(i|=512),this.o6l_1>1e10&&(i|=512)}return i},Pr(jl).x6e=function(t,n){var i=new Al;if(0!==i.a6n(Ph(t),Ph(n)))throw is(Gr("UPS Conversion Error"));return new zl(t,n,i.u6m_1,i.v6m_1,i.w6m_1)},Pr(jl).b6n=function(t,n,i){var e=new Al;if(0!==e.c6n(t,n,i))throw is(Gr("UTM Conversion Error"));var r=Fh(),s=e.x6m_1,u=r.u5n(s),o=Fh(),_=e.y6m_1;return new zl(u,o.u5n(_),t,n,i)},Pr(zl).toString=function(){return this.g6j_1.toString()+" "+this.h6j_1+"E "+this.i6j_1+"N"},Pr(Al).a6n=function(t,n){return t<-1.5707963267948966||t>1.5707963267948966||t<0&&t>-1.2566370614359172||t>=0&&t<1.2566370614359172?1:n<-_s()||n>2*_s()?2:(t<0?(this.n6m_1=-1.4157155848011311,this.u6m_1=dl()):(this.n6m_1=1.4157155848011311,this.u6m_1=vl()),this.z6m_1.r6k(this.q6m_1,this.r6m_1,this.n6m_1,this.o6m_1,0,0),this.z6m_1.s6k(t,n),this.v6m_1=this.s6m_1+this.z6m_1.n6k_1,this.w6m_1=this.t6m_1+(dl().equals(this.u6m_1)?-this.z6m_1.o6k_1:this.z6m_1.o6k_1),0)},Pr(Al).c6n=function(t,n,i){var e=0;return vl().equals(t)||dl().equals(t)||(e|=4),(n<0||n>4e6)&&(e|=8),(i<0||i>4e6)&&(e|=16),vl().equals(t)&&(this.n6m_1=1.4157155848011311),dl().equals(t)&&(this.n6m_1=-1.4157155848011311),0===e&&(this.z6m_1.r6k(this.q6m_1,this.r6m_1,this.n6m_1,this.o6m_1,this.s6m_1,this.t6m_1),this.z6m_1.t6k(n,i),this.x6m_1=this.z6m_1.p6k_1,this.y6m_1=this.z6m_1.q6k_1,this.x6m_1<0&&this.x6m_1>-1.2566370614359172&&(e|=1),this.x6m_1>=0&&this.x6m_1<1.2566370614359172&&(e|=1)),e},Pr(Il).x6e=function(t,n){var i=new Nl;if(0!==i.a6o(Ph(t),Ph(n)))throw is(Gr("UTM Conversion Error"));return new Dl(t,n,i.x6n_1,i.u6n_1,i.v6n_1,i.w6n_1)},Pr(Il).b6o=function(t,n,i,e){var r=new Nl;if(0!==r.c6o(t,n,i,e))throw is(Gr("UTM Conversion Error"));var s=Fh(),u=r.y6n_1,o=s.u5n(u),_=Fh(),h=r.z6n_1;return new Dl(o,_.u5n(h),t,n,i,e)},Pr(Dl).toString=function(){return this.a6j_1.toString()+" "+this.b6j_1+" "+Yr(this.c6j_1)+"E "+Yr(this.d6j_1)+"N"},Pr(Nl).a6o=function(t,n){var i=n,e=0,r=0;if((t<-1.43116998663535||t>1.5009831567151233)&&(e|=1),(i<-_s()||i>2*_s())&&(e|=2),0===e){i<0&&(i+=2*_s()+1e-10);var s=ks(180*t/_s()),u=ks(180*i/_s()),o=ks(i<_s()?31+180*i/_s()/6:180*i/_s()/6-29);if(o>60&&(o=1),56<=s&&s<=63&&u>-1&&u<3&&(o=31),56<=s&&s<=63&&u>2&&u<12&&(o=32),s>71&&u>-1&&u<9&&(o=31),s>71&&u>8&&u<21&&(o=33),s>71&&u>20&&u<33&&(o=35),s>71&&u>32&&u<42&&(o=37),0!==this.s6n_1&&(1===o&&60===this.s6n_1||60===o&&1===this.s6n_1||(o-1|0)<=this.s6n_1&&this.s6n_1<=(o+1|0)?o=this.s6n_1:e=64),0===e){this.t6n_1=o>=31?(Tr(6,o)-183|0)*_s()/180:(Tr(6,o)+177|0)*_s()/180,this.x6n_1=o,t<0?(r=1e7,this.u6n_1=dl()):this.u6n_1=vl();try{var _=it,h=Fh().u5n(t),a=Fh(),l=i,c=a.u5n(l),f=Fh().u5n(0),v=Fh(),d=this.t6n_1,w=v.u5n(d),p=_.u6k(h,c,this.q6n_1,this.r6n_1,f,w,5e5,r,.9996);this.v6n_1=p.w6l_1,this.w6n_1=p.x6l_1,(this.v6n_1<1e5||this.v6n_1>9e5)&&(e=4),(this.w6n_1<0||this.w6n_1>1e7)&&(e|=8)}catch(t){if(!(t instanceof bs))throw t;e=512}}}return e},Pr(Nl).c6o=function(t,n,i,e){var r=0,s=0;if((t<1||t>60)&&(r|=16),n.equals(dl())||n.equals(vl())||(r|=32),(e<0||e>1e7)&&(r|=8),0===r){this.t6n_1=t>=31?(Tr(6,t)-183|0)*_s()/180:(Tr(6,t)+177|0)*_s()/180,n.equals(dl())&&(s=1e7);try{var u=it,o=Fh().u5n(0),_=Fh(),h=this.t6n_1,a=_.u5n(h),l=u.s6l(i,e,o,a,5e5,s,.9996);this.y6n_1=Ph(l.u6l_1),this.z6n_1=Ph(l.v6l_1),(this.y6n_1<-1.43116998663535||this.y6n_1>1.5009831567151233)&&(r|=8)}catch(t){if(!(t instanceof bs))throw t;r=512}}return r},Pr(Xl).toString=function(){return"State(ellipsoid="+this.c6p_1+", projectionName="+this.d6p_1+")"},Pr(Xl).hashCode=function(){var t=this.c6p_1.hashCode();return Tr(t,31)+Ws(this.d6p_1)|0},Pr(Xl).equals=function(t){if(this===t)return!0;if(!(t instanceof Xl))return!1;var n=t instanceof Xl?t:Nr();return!!this.c6p_1.equals(n.c6p_1)&&this.d6p_1===n.d6p_1},Pr(Zl).h5o=function(){return this.k5j_1.w6a_1},Pr(Zl).e6p=function(){return this.k5j_1.y6a()},Pr(Zl).z6a=function(){return this.k5j_1.z6a()},Pr(Zl).q5m=function(){return this.l5j_1.q5m()},Pr(Zl).x67=function(){return this.l5j_1.x67()},Pr(Zl).f6p=function(){return this.l5j_1.f6p()},Pr(Zl).bn=function(){return new Xl(this.k5j_1,this.l5j_1.g6p())},Pr(Zl).c5s=function(t){this.n5j_1=t;var n;switch(t.y9_1){case 0:n=0;break;case 1:n=2*_s()*this.h5o();break;case 2:n=-2*_s()*this.h5o();break;default:Ys()}this.o5j_1=n},Pr(Zl).h6p=function(t,n){var i=Ph(t),e=Math.sin(i),r=this.k5j_1.z6a(),s=1-r*e*e,u=1+(r*r-2*r)*e*e;return this.k5j_1.w6a_1/Math.sqrt(s)*Math.sqrt(u)},Pr(Zl).f5m=function(t,n,i,e){return this.l5j_1.i6p(this,t,n,i,this.o5j_1,e)},Pr(Zl).r5m=function(t,n,i){return this.l5j_1.j6p(this,t,n,i)},Pr(Zl).o5r=function(t,n,i,e){return this.l5j_1.k6p(this,t,n,i,e)},Pr(Zl).l6p=function(t,n,i,e,r,s,u,o,_){return this.l5j_1.m6p(this,t,n,i,e,r,s,this.o5j_1,u,o,_)},Pr(Zl).i6a=function(t,n,i,e,r,s,u,o,_,h){return o=o===Wr?0:o,_=_===Wr?0:_,h===Wr?this.l6p(t,n,i,e,r,s,u,o,_):h.l6p.call(this,t,n,i,e,r,s,u,o,_)},Pr(Zl).n6p=function(t,n,i,e,r,s){return this.l5j_1.o6p(this,t,n,i,e,r,this.o5j_1,s)},Pr(Zl).d5m=function(t,n,i,e){var r=this.l5j_1.p6p(this,t,n,i,this.o5j_1,e);return this.q5m()&&(e.n5i_1=Kh(e.n5i_1)),r},Pr(Zl).h5m=function(t,n,i,e){return this.l5j_1.q6p(this,t,n,i,e)},Pr(Zl).q5l=function(t){var n;if(t>0){var i=t*(2*this.k5j_1.w6a_1+t);n=Math.sqrt(i)}else n=0;return n},Pr(Zl).w5n=function(t,n){return this.l5j_1.r6p(this,t,n)},Pr(Zl).s6p=function(t,n,i){return this.m5j_1.t6p(t,n,i)},Pr(Zl).p5m=function(t,n,i,e){return i=i!==Wr&&i,e===Wr?this.s6p(t,n,i):e.s6p.call(this,new ia(t),new ia(n),i)},Pr(Zl).u6p=function(t,n){return new Ua(t,n,this.s6p(t,n,!0))},Pr(Zl).p5l=function(t,n){var i;switch(n.y9_1){case 1:i=this.u6p(t.m5i_1,t.n5i_1);break;case 2:var e=this.u6p(t.m5i_1,t.n5i_1);e.q5i_1=e.q5i_1+t.q5i_1,i=e;break;default:i=La(t)}return i},Pr(Ql).j5q=function(){var t=new Hr(0,0),n=0,i=this.p5j_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.p5j_1.h1(e).j5q();t.ca(r)<0&&(t=r)}while(n<=i);return t},Pr(Ql).q5j=function(){for(var t=this.p5j_1.v();t.w();)t.y().b1();return Xr},Pr(Ql).v6p=function(t){return!this.p5j_1.r(t)&&this.p5j_1.s(t)},Pr(Ql).w6p=function(t){return this.p5j_1.t(t)},Pr(Ql).v=function(){return this.p5j_1.v()},Pr(Ql).t6p=function(t,n,i){var e=this.p5j_1.n()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=this.p5j_1.h1(r).t6p(t,n,i);if(null!=s)return s}while(0<=e);return 0},Pr(Ql).x6p=function(t,n,i,e){var r=0,s=this.p5j_1.n()-1|0;if(r<=s)do{var u=r;r=r+1|0,this.p5j_1.h1(u).x6p(t,n,i,e)}while(r<=s)},Pr(Ql).y6p=function(t,n){var i=0,e=this.p5j_1.n()-1|0;if(i<=e)do{var r=i;i=i+1|0,this.p5j_1.h1(r).y6p(t,n)}while(i<=e)},Pr(tc).f6q=function(t){this.b6q_1=t,this.g6q()},Pr(tc).h6q=function(){return this.b6q_1},Pr(tc).i6q=function(t){this.c6q_1=t},Pr(tc).j5q=function(){return this.c6q_1},Pr(tc).g6q=function(){this.i6q(Ds.h3k().n3z()),this.e6q_1.b1()},Pr(tc).t6p=function(t,n,i){var e;if(this.h6q()){var r,s=Tr(31,Ss(t))+Ss(n)|0,u=this.e6q_1.q2(s);if(null==u){var o,_=this.j6q(t,n,i);null==_?o=null:(this.e6q_1.d69(s,_,1),o=_),r=o}else r=u;e=r}else e=null;return e},Pr(tc).x6p=function(t,n,i,e){this.h6q()&&this.k6q(t,n,i,e)},Pr(tc).y6p=function(t,n){this.h6q()&&this.l6q(t,n)},Pr(ic).v6q=function(){var t=this.o6q_1;if(null!=t)return t;Gs("tileMatrix")},Pr(ic).b1=function(){this.p6q_1.b1(),this.q6q_1.b1(),this.r6q_1.b1(),this.s6q_1=-1,this.t6q_1=-1,this.u6q_1=null},Pr(ic).w6q=function(t,n,i){var e=this.v6q().e6e(t,n);this.r6q_1.g2(e,i)},Pr(ic).x6q=function(t,n){return this.s6q_1===t&&this.t6q_1===n||(this.s6q_1=t,this.t6q_1=n,this.u6q_1=this.r6q_1.q2(this.v6q().e6e(t,n))),this.u6q_1},Pr(ic).y6q=function(t,n,i,e){var r=this.x6q(t,n),s=null==r?null:r[i+Tr(e,this.v6q().b6e_1)|0];return null==s?-32768:s},Pr(ec).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(ec).cd=function(t,n){return this.a1h(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(ec).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.h6r_1.b6s(this.i6r_1,this.j6r_1,this.k6r_1,this.l6r_1,this))===Js())return t;continue t;case 1:return Xr;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},Pr(ec).b1h=function(t,n){var i=new ec(this.h6r_1,this.i6r_1,this.j6r_1,this.k6r_1,this.l6r_1,n);return i.m6r_1=t,i},Pr(rc).b1=function(){iu(this.a6s_1.gm()),this.w6r_1.b1(),this.x6r_1.b1(),this.z6r_1.b1(),this.g6q()},Pr(rc).j6q=function(t,n,i){if(!this.t6r_1.i6e_1.m6d(t,n))return null;var e=this.t6r_1.j6e_1.n()-1|0,r=e;if(0<=r)do{var s=r;r=r+-1|0,this.y6r_1=!!i&&(s===e||0===s);var u=this.t6r_1.j6e_1.h1(s),o=u.x6d_1.r65()/u.a6e_1,_=u.x6d_1.q65()/u.z6d_1,h=(u.x6d_1.n65_1-t)/o,a=Math.floor(h),l=ks(a),c=(n-u.x6d_1.o65_1)/_,f=Math.floor(c),v=ks(f),d=this.g6s(u,l,v);if(null!=d){var w=u.x6d_1.n65_1-o*l,p=u.x6d_1.o65_1+_*v,m=u.b6e_1-1|0,g=u.c6e_1-1|0,y=m*(n-p)/_,b=g*(w-t)/o,$=Math.floor(y),k=eu(ks($),0,m),x=eu(k+1|0,0,m),q=Math.floor(b),S=eu(ks(q),0,g),C=eu(S+1|0,0,g),E=d[k+Tr(S,u.b6e_1)|0],O=d[x+Tr(S,u.b6e_1)|0],j=d[k+Tr(C,u.b6e_1)|0],z=d[x+Tr(C,u.b6e_1)|0];if(-32768===E||-32768===O||-32768===j||-32768===z)return null;var T=y-k,A=b-S;return(1-T)*(1-A)*E+T*(1-A)*O+(1-T)*A*j+T*A*z}}while(0<=r);return null},Pr(rc).k6q=function(t,n,i,e){if(!this.t6r_1.i6e_1.a67(t))return Xr;var r=Yh(t.r65(),i),s=this.t6r_1.k6e(r),u=new ic,o=s;if(0<=o)do{var _=o;o=o+-1|0,this.y6r_1=_===s||0===_;var h=this.t6r_1.j6e_1.h1(_);if(this.i6s(t,n,i,h,u))return this.h6s(t,n,i,u,e),Xr}while(0<=o)},Pr(rc).l6q=function(t,n){if(!this.t6r_1.i6e_1.a67(t))return Xr;var i=Yh(t.r65(),32),e=this.t6r_1.k6e(i),r=new ic,s=e;if(0<=s)do{var u=s;s=s+-1|0,this.y6r_1=u===e||0===u;var o=this.t6r_1.j6e_1.h1(u);if(this.k6s(t,o,r))return this.j6s(t,r,n),Xr}while(0<=s)},Pr(rc).i6s=function(t,n,i,e,r){var s=e.b6e_1,u=e.c6e_1,o=Tr(e.z6d_1,s),_=Tr(e.a6e_1,u),h=e.x6d_1.m65_1,a=e.x6d_1.n65_1,l=e.x6d_1.o65_1,c=e.x6d_1.p65_1,f=e.x6d_1.r65(),v=e.x6d_1.q65(),d=1/(2*o),w=1-d,p=1/(2*_),m=1-p;r.o6q_1=e,r.b1();for(var g=t.o65_1,y=t.q65()/(n-1|0),b=0;bK&&(i[0]=K),i[1]=1&&e>=1)){var l=kr.y5i(kr.t5i_1,"MercatorProjection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Tr(i,e))){var c=kr.y5i(kr.t5i_1,"MercatorProjection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=t.h5o(),v=t.z6a(),d=Math.sqrt(v),w=Ph(n.m65_1),p=Ph(n.n65_1),m=Ph(n.o65_1),g=Ph(n.p65_1),y=(p-w)/(i>1?i-1|0:1),b=(g-m)/(e>1?e-1|0:1),$=Ph(this.f6p().m65_1),k=Ph(this.f6p().n65_1),x=Ph(this.f6p().o65_1),q=Ph(this.f6p().p65_1),S=0,C=null==u?null:u.s5l_1,E=null==C?0:C,O=null==u?null:u.t5l_1,j=null==O?0:O,z=null==u?null:u.w5l_1,T=null==z?0:z,A=h,I=0===a?Tr(e,3):a,D=w,M=0;if(M1?i-3|0:1),w=(v-f)/(e>1?e-3|0:1),p=Ph(this.f6p().m65_1),m=Ph(this.f6p().n65_1),g=Ph(this.f6p().o65_1),y=Ph(this.f6p().p65_1),b=null==s?null:s.s5l_1,$=null==b?0:b,k=null==s?null:s.t5l_1,x=null==k?0:k,q=null==s?null:s.w5l_1,S=null==q?0:q,C=0,E=l,O=f,j=0;if(j1e-6))break t;c=l;var v=_s()/2,d=l,w=l,p=(1-_*Math.sin(d))/(1+_*Math.sin(w)),m=_/2,g=a*Math.pow(p,m);l=v-2*Math.atan(g)}var y=(n-r)/u;return s.f6d(l,y,e)},Pr(_c).q6p=function(t,n,i,e,r){return r.l6c(1,0,0,n,0,1,0,i,0,0,1,e,0,0,0,1)},Pr(_c).r6p=function(t,n,i){var e=n.l5l_1.s5l_1,r=n.l5l_1.t5l_1,s=n.l5l_1.w5l_1,u=n.k5l_1.s5l_1,o=n.k5l_1.t5l_1,_=n.k5l_1.w5l_1;if(0===s&&0!==_)return!1;var h=-_/s;return!(h<0||(i.s5l_1=u+e*h,i.t5l_1=o+r*h,i.w5l_1=_+s*h,0))},Pr(hc).g6p=function(){return this.n6t_1},Pr(hc).i6p=function(t,n,i,e,r,s){var u=Ph(n),o=Math.cos(u),_=Ph(n),h=Math.sin(_),a=Ph(i),l=Math.cos(a),c=Ph(i),f=Math.sin(c),v=t.z6a(),d=1-v*h*h,w=t.h5o()/Math.sqrt(d);return s.h5u((e+w)*o*f,(e+w*(1-v))*h,(e+w)*o*l)},Pr(hc).j6p=function(t,n,i,e){var r=Ph(n),s=Math.cos(r),u=Ph(n),o=Math.sin(u),_=Ph(i),h=Math.cos(_),a=Ph(i),l=Math.sin(a),c=t.h5o()*t.h5o(),f=t.e6p()*t.e6p();return e.h5u(s*l/c,(1-t.z6a())*o/f,s*h/c).t5m()},Pr(hc).k6p=function(t,n,i,e,r){var s=Ph(n),u=Math.cos(s),o=Ph(n),_=Math.sin(o),h=Ph(i),a=Math.cos(h),l=Ph(i),c=Math.sin(l),f=t.z6a(),v=1-f*_*_,d=t.h5o()/Math.sqrt(v),w=t.h5o()*t.h5o(),p=t.e6p()*t.e6p(),m=(d+e)*u*c,g=(d*(1-f)+e)*_,y=(d+e)*u*a,b=u*c/w,$=(1-t.z6a())*_/p,k=u*a/w,x=b*b+$*$+k*k,q=Math.sqrt(x);b/=q,$/=q,k/=q;var S=-_*c,C=u,E=-_*a,O=S*S+C*C+E*E,j=(C/=q=Math.sqrt(O))*k-(E/=q)*$,z=E*b-(S/=q)*k,T=S*$-C*b;return S=$*T-k*z,C=k*j-b*T,E=b*z-$*j,r.l6c(j,S,b,m,z,C,$,g,T,E,k,y,0,0,0,1)},Pr(hc).m6p=function(t,n,i,e,r,s,u,o,_,h,a){if(!(i>=1&&e>=1)){var l=kr.y5i(kr.t5i_1,"Wgs84Projection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Tr(i,e))){var c=kr.y5i(kr.t5i_1,"Wgs84Projection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=Ph(n.m65_1),v=Ph(n.n65_1),d=Ph(n.o65_1),w=Ph(n.p65_1),p=(v-f)/(i>1?i-1|0:1),m=(w-d)/(e>1?e-1|0:1),g=t.h5o(),y=t.z6a(),b=new Float64Array(e),$=new Float64Array(e),k=0,x=null==u?null:u.s5l_1,q=null==x?0:x,S=null==u?null:u.t5l_1,C=null==S?0:S,E=null==u?null:u.w5l_1,O=null==E?0:E,j=d,z=0;if(z=1&&e>=1)){var _=kr.y5i(kr.t5i_1,"Wgs84Projection","geographicToCartesianBorder","Number of latitude or longitude locations is less than one");throw is(Gr(_))}var h=Ph(n.m65_1),a=Ph(n.n65_1),l=Ph(n.o65_1),c=Ph(n.p65_1),f=(a-h)/(i>1?i-3|0:1),v=(c-l)/(e>1?e-3|0:1),d=h,w=l,p=t.h5o(),m=t.z6a(),g=null==s?null:s.s5l_1,y=null==g?0:g,b=null==s?null:s.t5l_1,$=null==b?0:b,k=null==s?null:s.w5l_1,x=null==k?0:k,q=0,S=0;if(S0||0!==d){var m;if(p>0){var g,y=Math.sqrt(p),b=f*v*d,$=Math.sqrt(b),k=(y+$)*(y+$),x=Math.pow(k,.3333333333333333);if(p>10*c)g=w+.5*x+2*w*w/x;else{var q=(y-$)*(y-$);g=w+.5*x+.5*Math.pow(q,.3333333333333333)}m=g}else{var S=-p,C=Math.sqrt(S),E=-8*w*w*w,O=Math.sqrt(E),j=f*v*d,z=Math.sqrt(j),T=C+O,A=2*Math.atan2(z,T)/3,I=-4*w*Math.sin(A),D=_s()/6+A;m=I*Math.cos(D)}var M=m*m+f*d,N=Math.sqrt(M),R=c*(m+N-d)/(2*N),P=R*R+m+N,L=(m+N)/(Math.sqrt(P)+R),F=L*h/(L+c),U=F*F+i*i,H=Math.sqrt(U);u=(L+c-1)*H/L;var V=H+F;o=2*Math.atan2(i,V)}else{var B=1-c,W=Math.sqrt(B),Y=c-v,G=Math.sqrt(Y),K=Math.sqrt(c);u=-a*W*G/K,o=G/(K*G+W*Math.sqrt(v))}var X,J=Math.sqrt(2);if((J-1)*n0||(w=(-v+Math.sqrt(d))/(2*f))>0)&&(i.h5u(u+e*w,o+r*w,_+s*w),!0)},Pr(ac).e5s=function(){return this.r6t_1},Pr(ac).w5n=function(t,n){var i=!1,e=this.p6t_1;if(null==e)return i;var r=e,s=0,u=this.q6t_1.n()-1|0;if(s<=u)t:do{var o=s;s=s+1|0;var _=this.q6t_1.h1(o);if(t.k5l_1.s5m(_.g6u_1),t.m6b(_.s6u(),3,r,r.length,this.s6t_1)&&(n.y5q(this.s6t_1).s6e(_.g6u_1),i=!0),t.k5l_1.s6e(_.g6u_1),i)break t}while(s<=u);return i},Pr(ac).t6u=function(t,n,i){var e=0,r=this.q6t_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var u=this.q6t_1.h1(s),o=u.u6u_1;if(o.m6d(t,n)){var _=u.s6v_1.h6v_1,h=u.s6v_1.i6v_1,a=(n-o.o65_1)/o.q65()*(_-1|0),l=(t-o.m65_1)/o.r65()*(h-1|0),c=a<(_-1|0)?xx(a):1,f=l<(h-1|0)?xx(l):1,v=a<(_-1|0)?ks(a+1):_-1|0,d=l<(h-1|0)?ks(l+1):h-1|0,w=_+2|0,p=Tr(v+Tr(d,w)|0,3),m=p+3|0,g=Tr(v+Tr(d+1|0,w)|0,3),y=g+3|0,b=(1-c)*(1-f),$=c*(1-f),k=(1-c)*f,x=c*f,q=u.s6u();return i.s5l_1=q[p]*b+q[m]*$+q[g]*k+q[y]*x,i.t5l_1=q[p+1|0]*b+q[m+1|0]*$+q[g+1|0]*k+q[y+1|0]*x,i.w5l_1=q[p+2|0]*b+q[m+2|0]*$+q[g+2|0]*k+q[y+2|0]*x,i.s5l_1=i.s5l_1+u.g6u_1.s5l_1,i.t5l_1=i.t5l_1+u.g6u_1.t5l_1,i.w5l_1=i.w5l_1+u.g6u_1.w5l_1,!0}}while(e<=r);return!1},Pr(ac).x6v=function(t,n){n[0]=34028235e31,n[1]=-34028235e31;var i=this.q6t_1.v();if(!i.w())throw ou();for(var e=i.y().s6v_1.d6v_1;i.w();){var r=i.y().s6v_1.d6v_1;ws(e,r)<0&&(e=r)}for(var s=e-t|0,u=this.q6t_1.v();u.w();){var o=u.y();if(o.s6v_1.d6v_1>=s){var _=n[0],h=o.y6v()[0];n[0]=Math.min(_,h);var a=n[1],l=o.y6v()[1];n[1]=Math.max(a,l)}}n[0]>n[1]&&js(n,0)},Pr(fc).o9=function(t,n){return this.b6w_1(t,n)},Pr(fc).compare=function(t,n){return this.o9(t,n)},Pr(dc).n68=function(t){return this.r6w(t),this.s6w(t)},Pr(dc).t6w=function(t,n,i,e){return new mc(t,n,i,e)},Pr(dc).s6w=function(t){this.h6w_1.b1(),this.i6w_1.v5j(),this.u6w(t),this.g6w_1.d1()&&this.v6w();var n=0,i=this.g6w_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.g6w_1.h1(e);this.w6w(t,r instanceof mc?r:Nr())}while(n<=i);var s=this.h6w_1;if(s.n()>1){var u=new fc(vc);au(s,u)}return this.o6w_1=null,this.p6w_1=null,new ac(this.h6w_1,this.i6w_1,this.l6w_1)},Pr(dc).v6w=function(){return Li.g6x(this.d6w_1.e6x(),this,this.g6w_1)},Pr(dc).w6w=function(t,n){var i=t.w67().f6p();if(!1===(null==i?null:n.h6x(i)))return Xr;if(!n.h6x(this.d6w_1.x6w_1)||!n.i6x(t))return Xr;if(n.s6v_1.l6x()||!n.k6x(t,this.e6w_1))return this.j6x(t,n),Xr;var e=n.m6x(this,this.f6w_1,4),r=0,s=e.length-1|0;if(r<=s)do{var u=r;r=r+1|0;var o=e[u];this.w6w(t,o instanceof mc?o:Nr())}while(r<=s)},Pr(dc).j6x=function(t,n){n.n6x(t),this.h6w_1.s(n),this.i6w_1.r6d(n.u6u_1);var i,e=ys(G_),r=t.e5q_1.q2(e),s=null==r||ss(r,Qb)?r:Nr();if(null==s){var u=new Yq;t.e5q_1.g2(e,u),i=u}else i=s;var o=i,_=g.q5r(o);this.o6x(t,n,_),t.p6x(_,n.p6u_1)},Pr(dc).r6w=function(t){qs(t.k5p_1,this.q6w_1)||(this.q6x(),this.q6w_1=t.k5p_1)},Pr(dc).q6x=function(){this.g6w_1.b1(),this.h6w_1.b1(),this.i6w_1.v5j(),this.f6w_1.b1(),this.j6w_1=null,this.k6w_1=null,this.l6w_1=null},Pr(dc).o6x=function(t,n,i){i.c5s(t.w67().n5j_1),i.e5s().f66(n.u6u_1),i.f5s().y5q(n.g6u_1),i.v5r_1.h6d(this.m6w_1),i.w5r_1.h6d(this.n6w_1),i.x5r_1=n.r6x(t),i.y5r_1=n.s6x(t),i.z5r_1=this.o6w_1,i.a5s_1=this.p6w_1},Pr(dc).u6w=function(t){var n,i=this.d6w_1.b6x_1+2|0,e=this.d6w_1.a6x_1+2|0,r=this.j6w_1;if(null==r){var s=new Float32Array(Tr(Tr(i,e),2));this.j6w_1=s,this.t6x(i,e,s),n=s}else n=r;var u,o=n,_=this.k6w_1;if(null==_){var h=this.u6x(i,e);this.k6w_1=h,u=h}else u=_;var a,l=u,c=this.l6w_1;if(null==c){var f=this.v6x(i,e);this.l6w_1=f,a=f}else a=c;var v,d=a,w=cc().z6v_1,p=t.v68(),m=p.q2(w);if(null==m){var g=new Oy(Vk(),o);p.d69(w,g,g.c62_1),v=g}else v=m;var y=v;this.o6w_1=y instanceof Oy?y:Nr();var b,$=cc().a6w_1,k=t.v68(),x=k.q2($);if(null==x){var q=new zy(Bk(),lu([l,d]));this.m6w_1.z5s_1=l.length,this.n6w_1.y5s_1=l.length,this.n6w_1.z5s_1=l.length+d.length|0,k.d69($,q,q.c62_1),b=q}else b=x;var S=b;this.p6w_1=S instanceof zy?S:Nr()},Pr(dc).t6x=function(t,n,i){var e=1/(n>1?n-3|0:1),r=1/(t>1?t-3|0:1),s=0,u=0,o=0,_=0;if(_1)return!0;var e=t.g77_1-n.u6y().j5i_1;if(Math.abs(e)>1)return!0;var r=t.h77_1-n.u6y().l5i_1;return Math.abs(r)>1||n.m5p_1.z5q(t.e77_1)>t.q77(n)/100||!qs(n.k5p_1,t.j77_1)}(this,t)?t.w67().n5j_1.equals(this.k77_1)||this.w77(t):(this.x77(t),this.w77(t)),this.k77_1=t.w67().n5j_1,this.c77_1.y77(t,this.p6y())},Pr(Vc).x77=function(t){this.c77_1.p77(),this.e77_1.y5q(t.m5p_1),this.h77_1=t.u6y().l5i_1,this.f77_1=t.u6y().i5i_1,this.g77_1=t.u6y().j5i_1,this.i77_1=t.e5p_1,this.j77_1=t.k5p_1},Pr(Vc).a78=function(t){var n,i=t.j5p_1;if(null==i)n=null;else{var e=Fh().k69(t.i5p_1/t.w67().h5o()*t.n5p_1.t5j_1/4);n=new ya(su(new ia(Xh(Wh(i.m5i_1,e))),new ia(Hc().r77_1),new ia(Hc().s77_1)).v69_1,Jh(Wh(i.n5i_1,e)))}var r=n;return null==r?t.u6y().g5i_1:r},Pr(Vc).b78=function(t,n){var i=new cb(t);return i.x78(n),i.y78(Nh()),i.z78(!0),i},Pr(Vc).a79=function(t,n,i){var e=new eb(t,n);return e.y78(Nh()),e},Pr(Vc).r79=function(t,n,i){return t.p68().t6u(n,i,this.d77_1)||t.w67().f5m(n,i,t.w67().p5m(n,i)*t.e5p_1,this.d77_1),this.d77_1},Pr(Vc).q77=function(t){var n=this.r79(t,t.u6y().g5i_1.m5i_1,t.u6y().g5i_1.n5i_1);return t.m5p_1.z5q(n)},Pr(Vc).s79=function(t,n,i,e){var r=i.m6d(t.m5i_1,t.n5i_1),s=i.m6d(n.m5i_1,n.n5i_1);if(!r&&!s)return Xr;if(r&&s)e.s(t),e.s(n);else{var u=r?n:t,o=r?t:n,_=1;if(_<=2)t:do{_=_+1|0;var h=null;if(u.n5i_1>i.p65_1||180===i.p65_1&&u.n5i_1<0?h=Rc(0,o,u,i.p65_1):u.n5i_10?h=Rc(0,o,u,i.o65_1):u.m5i_1>i.n65_1?h=Pc(0,o,u,i.n65_1):u.m5i_188)n=45;else{var i=(t+88)/4+1,e=Math.floor(i);n=gu(ks(e),45)}return n},Pr(hf).z77=function(t){return t>=1e6?"Graticule.GK.1_000_000":t>=5e5?"Graticule.GK.500_000":t>=2e5?"Graticule.GK.200_000":t>=1e5?"Graticule.GK.100_000":t>=35e3?"Graticule.GK.50_000":t>=15e3?"Graticule.GK.25_000":"Graticule.GK.10_000"},Pr(hf).o7f=function(t){switch(t){case"Graticule.GK.1_000_000":return 1e6;case"Graticule.GK.500_000":return 5e5;case"Graticule.GK.200_000":return 2e5;case"Graticule.GK.100_000":return 1e5;case"Graticule.GK.50_000":return 35e3;case"Graticule.GK.25_000":return 15e3;default:return 8e3}},Pr(hf).o7c=function(t){return new vf(this,t,"Graticule.GK.1_000_000")},Pr(hf).p7f=function(t){return this.v7d_1.q7f(t)},Pr(hf).r7f=function(t){(function(t,n){return 0===n||n>0&&0===t.w7d_1||0!==t.w7d_1&&n=0?1+(ks(t)/6|0)|0:31+(ks(t+180)/6|0)|0},Pr(wf).p7h=function(t,n,i,e,r,s,u,o){var _,h=e-n,a=t-i,l=h*t+a*n,c=o-s,f=r-u,v=c*r+f*s,d=h*f-c*a;if(0!==d){var w=(f*l-a*v)/d,p=(h*v-c*l)/d;_=G.f6f(w,p)}else _=null;return _},Pr(wf).l7h=function(t,n,i,e){var r;if(_f(),"Graticule.GK.1_000_000"===i)r=df(this,t,n);else if(_f(),"Graticule.GK.500_000"===i)r=(0===xu(e)?df(jt,t,n):e)+function(t,n,i){var e=1-ks((n+88)%4/2)|0,r=ks((i+180)%6/3);switch(Tr(e,2)+r|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n);else if(_f(),"Graticule.GK.200_000"===i)r=df(this,t,n)+function(t,n,i){var e=5-ks((n+88)%4/.6666666666666667)|0,r=ks((i+180)%6),s=Tr(e,6)+r|0;return"-"+_f().r7e_1[s]}(0,t,n);else if(_f(),"Graticule.GK.100_000"===i)r=df(this,t,n)+function(t,n,i){var e=11-ks((n+88)%4/.33333333333333337)|0,r=ks((i+180)%6/.5)+1|0;return"-"+(Tr(e,12)+r|0)}(0,t,n);else if(_f(),"Graticule.GK.50_000"===i){var s;if(0===xu(e)){var u=jt;_f(),s=u.q7h(t,n,"Graticule.GK.100_000")}else s=e;r=s+function(t,n,i){var e=ks((n+88)/.33333333333333337),r=1-ks((n+88-.33333333333333337*e)/.16666666666666669)|0;e=ks((i+180)/.5);var s=ks((i+180-.5*e)/.25);switch(Tr(r,2)+s|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n)}else if(_f(),"Graticule.GK.25_000"===i){var o;if(0===xu(e)){var _=jt;_f(),o=_.q7h(t,n,"Graticule.GK.50_000")}else o=e;r=o+function(t,n,i){var e=ks((n+88)/.16666666666666669),r=1-ks((n+88-.16666666666666669*e)/.08333333333333334)|0;e=ks((i+180)/.25);var s=ks((i+180-.25*e)/.125);switch(Tr(r,2)+s|0){case 0:return"-a";case 1:return"-б";case 2:return"-в";default:return"-г"}}(0,t,n)}else{var h;if(0===xu(e)){var a=jt;_f(),h=a.q7h(t,n,"Graticule.GK.25_000")}else h=e;r=h+function(t,n,i){var e=ks((n+88)/.08333333333333334),r=1-ks((n+88-.08333333333333334*e)/.04166666666666667)|0;e=ks((i+180)/.125);var s=ks((i+180-.125*e)/.0625)+1|0;return"-"+(Tr(r,2)+s|0)}(0,t,n)}return r},Pr(wf).q7h=function(t,n,i,e,r){var s;return i===Wr?(_f(),s="Graticule.GK.1_000_000"):s=i,i=s,e=e===Wr?"":e,r===Wr?this.l7h(t,n,i,e):r.l7h.call(this,new ia(t),new ia(n),i,e)},Pr(wf).o7h=function(t){return ks((t+88+4)/4)},Pr(wf).n7h=function(t){return gu(ks((t+180)/6),59)},Pr(Sf).f7a=function(){var t=Pr(Bc).f7a.call(this);return t instanceof hf?t:Nr()},Pr(Sf).b7h=function(t){for(var n=this.c7a_1.v();n.w();){var i=n.y();i.m7c_1===t?this.f7a().v77(i.l7c_1,t):"metric.label"===i.m7c_1&&i.l7c_1 instanceof eb&&this.f7a().p7f(i.l7c_1)}return Xr},Pr(Sf).i7a=function(){Pr(Bc).i7a.call(this);var t=this.a7h_1.r7h_1.j6f_1,n=this.a7h_1.s7h_1.j6f_1,i=Math.min(t,n),e=this.a7h_1.u7h_1.j6f_1,r=this.a7h_1.t7h_1.j6f_1,s=Math.max(e,r),u=this.a7h_1.r7h_1.k6f_1,o=this.a7h_1.u7h_1.k6f_1,_=Math.max(u,o),h=this.a7h_1.t7h_1.k6f_1,a=this.a7h_1.s7h_1.k6f_1,l=Math.min(h,a),c=ks(i/this.y7g_1),f=ks(s/this.y7g_1),v=ks(_/this.y7g_1),d=ks(l/this.y7g_1);(function(t,n,i,e,r){var s=n;if(s<=i)do{var u=s;s=s+1|0;var o=u*t.y7g_1,_=u*t.y7g_1+t.y7g_1,h=e;if(h<=r)do{var a=h;h=h+1|0;var l=a*t.y7g_1,c=$f(t,o,l);if(u!==n){var f=a*t.y7g_1+t.y7g_1,v=$f(t,o,f),d=a;d===e?(gf(t,bf(0,t.a7h_1.r7h_1,t.a7h_1.u7h_1,o,l,o,f),v),pf(t,c,a,u,"X")):d===r?gf(t,bf(0,t.a7h_1.s7h_1,t.a7h_1.t7h_1,o,l,o,f),c):yf(t,c,v)}if(a!==e){var w=$f(t,_,l),p=u;p===n?(gf(t,bf(0,t.a7h_1.r7h_1,t.a7h_1.s7h_1,o,l,_,l),w),pf(t,c,a,u,"Y")):p===i?gf(t,bf(0,t.a7h_1.u7h_1,t.a7h_1.t7h_1,o,l,_,l),c):yf(t,c,w)}}while(a!==r)}while(u!==i)})(this,c,f,v,d),function(t,n,i,e,r){var s=n*t.y7g_1;if(t.a7h_1.r7h_1.k6f_1=l){var c=i*t.y7g_1,f=e*t.y7g_1,v=bf(0,t.a7h_1.s7h_1,t.a7h_1.t7h_1,c,l,f,l);mf(t,bf(0,t.a7h_1.r7h_1,t.a7h_1.s7h_1,c,l,f,l),v)}else if(t.a7h_1.s7h_1.k6f_1=l){var d=i*t.y7g_1,w=e*t.y7g_1;mf(t,bf(0,t.a7h_1.u7h_1,t.a7h_1.t7h_1,d,l,w,l),bf(0,t.a7h_1.s7h_1,t.a7h_1.t7h_1,d,l,w,l))}}(this,v,c,f,d)},Pr(zf).i7f=function(t,n){if(0===n||this.f7f_1.d1()&&this.g7f_1.d1())return Xr;for(var i=function(t,n){var i=n.n5p_1.t5j_1*n.i5p_1/4,e=n.n5p_1.u5j_1*n.i5p_1/4,r=n.j5p_1,s=null==r?n.u6y().g5i_1:r,u=t.e7f_1.j7f(new Ua(s.m5i_1,s.n5i_1,0)),o=G.x6e(u.m5i_1,u.n5i_1);return new Cu(o.j6f_1-e,o.k6f_1-i)}(this,t),e=i.ue(),r=i.ve(),s=this.f7f_1.f2().v();s.w();){var u=s.y();Of(this,t,u.j2(),n)?this.h7f_1.s(u.i2()):Ef(this,"X",u.j2(),e,r)}Cf(this,"X");for(var o=this.g7f_1.f2().v();o.w();){var _=o.y();Of(this,t,_.j2(),n)?this.h7f_1.s(_.i2()):Ef(this,"Y",_.j2(),e,r)}Cf(this,"Y")},Pr(zf).q7f=function(t){var n=function(t,n){return n.e7i("label.name")}(0,t);if(null==n)return Xr;var i=n,e=function(t,n,i){var e=n.e7i("label.scale.type");if(null==e)return null;var r,s=e;switch(i){case"X":r=n.e7i("label.x");break;case"Y":r=n.e7i("label.y");break;default:r=null}if(null==r)return null;var u=r,o=n.i79_1.n5i_1>=0?"E":"W";return u+(n.i79_1.m5i_1>=0?"N":"S")+o+s}(0,t,i);if(null==e)return Xr;var r=e;if("X"===i){var s=this.f7f_1;(ss(s,Eu)?s:Nr()).n2(r)||this.f7f_1.g2(r,t)}else if("Y"===i){var u=this.g7f_1;(ss(u,Eu)?u:Nr()).n2(r)||this.g7f_1.g2(r,t)}},Pr(Tf).w77=function(t){Pr(Bc).w77.call(this,t);for(var n=this.f7a().a78(t),i=this.c7a_1.v();i.w();){var e=i.y();if(e.g7a(t)){if(e.l7c_1 instanceof eb){var r=e.l7c_1;if(n.m5i_1<72||!Ou("*32*34*36*","*"+r.g79_1+"*")){var s=r.i79_1;"GridElement_LatitudeLabel"===e.m7c_1?r.f7i(new Ua(s.m5i_1,n.n5i_1,s.q5i_1)):"GridElement_LongitudeLabel"===e.m7c_1&&r.f7i(new Ua(n.m5i_1,s.n5i_1,s.q5i_1))}}var u=this.f7a();_f(),u.v77(e.l7c_1,"Graticule.GK.Overview")}}},Pr(Tf).i7a=function(){Pr(Bc).i7a.call(this);var t=as(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e=6*i-180;t.b1(),t.s(B.e6d(-88,e,0)),t.s(B.e6d(-60,e,0)),t.s(B.e6d(-30,e,0)),t.s(B.e6d(0,e,0)),t.s(B.e6d(30,e,0)),t.s(B.e6d(60,e,0)),t.s(B.e6d(88,e,0));var r=this.f7a().b78(uu(t),db()),s=W.i6d(-88,e,176,30),u=s;this.c7a_1.s(Qc(u,r,"GridElement_Line"));var o=this.f7a().a79(B.e6d(0,e-3,0),i.toString(),1e7);o.h79_1.z7a_1=!1;var _=s=W.i6d(-90,e-3,180,0);this.c7a_1.s(Qc(_,o,"GridElement_LongitudeLabel"))}while(n<=60);var h=0;if(h<=45)do{var a=h;h=h+1|0;var l=4*a-92;if(0!==a||46!==a){var c=0;if(c<=3)do{var f=c;c=c+1|0,t.b1();var v=90*f-180;t.s(B.e6d(l,v,0)),t.s(B.e6d(l,v+30,0)),t.s(B.e6d(l,v+60,0)),3===f?t.s(B.e6d(l,180,0)):t.s(B.e6d(l,v+90,0));var d=this.f7a().b78(ju(t),wb()),w=W.i6d(l,v,3,90);this.c7a_1.s(Qc(w,d,"GridElement_Line"))}while(c<=3)}var p=this.f7a().a79(B.e6d(l+2,0,0),_f().q7e_1[a],1e7);p.h79_1.z7a_1=!1;var m=W.i6d(l+2,-180,3,360);this.c7a_1.s(Qc(m,p,"GridElement_LatitudeLabel"))}while(h<=45)},Pr(If).w7j=function(){return this.v7j_1},Pr(If).t77=function(){var t=new Yc,n=t,i=hy(0,255,0);n.g2("GraticuleLineColor",i);var e=t,r=hy(0,255,0);e.g2("LabelColor",r);var s=t,u=Oq("arial",wy(),14);s.g2("LabelFont",u),this.u77("Graticule.UTM.100000m",t);var o=t=new Yc,_=hy(0,102,255);o.g2("GraticuleLineColor",_);var h=t,a=hy(0,102,255);h.g2("LabelColor",a),this.u77("Graticule.UTM.10000m",t);var l=t=new Yc,c=hy(0,255,255);l.g2("GraticuleLineColor",c);var f=t,v=hy(0,255,255);f.g2("LabelColor",v),this.u77("Graticule.UTM.1000m",t);var d=t=new Yc,w=hy(0,153,153);d.g2("GraticuleLineColor",w);var p=t,m=hy(0,153,153);p.g2("LabelColor",m),this.u77("Graticule.UTM.100m",t);var g=t=new Yc,y=hy(102,255,204);g.g2("GraticuleLineColor",y);var b=t,$=hy(102,255,204);b.g2("LabelColor",$),this.u77("Graticule.UTM.10m",t);var k=t=new Yc,x=hy(153,153,255);k.g2("GraticuleLineColor",x);var q=t,S=hy(153,153,255);q.g2("LabelColor",S),this.u77("Graticule.UTM.1m",t)},Pr(If).z77=function(t){return t>=1e5?"Graticule.UTM.100000m":t>=1e4?"Graticule.UTM.10000m":t>=1e3?"Graticule.UTM.1000m":t>=100?"Graticule.UTM.100m":t>=10?"Graticule.UTM.10m":"Graticule.UTM.1m"},Pr(If).x77=function(t){Pr(Vc).x77.call(this,t),this.u7j_1.b1(),this.u7j_1.x7j(t)},Pr(If).w77=function(t){this.u7j_1.w77(t)},Pr(If).y7j=function(t,n,i,e){this.u7j_1.y7j(t,n,i,e)},Pr(If).z7j=function(t,n,i,e){return t>0?function(t,n,i,e,r){var s=rt.b6o(n,i,e,r);return new Ua(Zh(s.y6i_1),Qh(s.z6i_1),1e4)}(0,t,n,i,e):function(t,n,i,e){var r=et.b6n(n,i,e);return new Ua(Zh(r.e6j_1),Qh(r.f6j_1),1e4)}(0,n,i,e)},Pr(If).a7k=function(t,n,i,e,r,s,u){for(var o=as(),_=e/1e5,h=1e5*Math.floor(_),a=s/1e5,l=1e5*Math.floor(a),c=(r-h)/1e5,f=Math.ceil(c),v=ks(f),d=(u-l)/1e5,w=Math.ceil(d),p=ks(w),m=0,g=hs(Array(p),null);m1e6)return Xr;var r,s=this.x7m_1;if(null==s){var u=this.t7m_1?function(t){var n,i,e,r;vl().equals(t.v7m_1)?(e=13e5,r=27e5,n="Y"===t.u7m_1?13e5:2e6,i="Y"===t.u7m_1?2e6:27e5):(e=8e5,r=32e5,n="A"===t.u7m_1?8e5:2e6,i="A"===t.u7m_1?2e6:32e5);for(var s=t.f7a().a7k(t.w7m_1,t.v7m_1,t.u6u_1,n,i,e,r),u=s.v();u.w();)Ff(0,u.y());return s}(this):function(t){var n=rt.x6e(t.u6u_1.m65_1,t.u6u_1.k6a()),i=n.d6j_1,e=(n=rt.x6e(t.u6u_1.n65_1,t.u6u_1.k6a())).d6j_1;e=0===e?1e7:e;var r=(n=rt.x6e(t.u6u_1.m65_1,t.u6u_1.o65_1)).c6j_1;n=rt.x6e(t.u6u_1.n65_1,t.u6u_1.o65_1);var s=1e6-(r=zu(n.c6j_1,r));"32V"===t.u7m_1&&(e+=2e4),"31X"===t.u7m_1&&(s+=1e5);for(var u=t.f7a().a7k(t.w7m_1,t.v7m_1,t.u6u_1,r,s,i,e),o=u.v();o.w();)Ff(0,o.y());return u}(this);this.x7m_1=u,r=u}else r=s;for(var o=r.v();o.w();){var _=o.y();_.g7a(t)?_.w77(t):_.j7a()}},Pr(Hf).j7a=function(){Pr(Bc).j7a.call(this);var t=this.x7m_1;if(null==t);else for(var n=t.v();n.w();)n.y().j7a();this.x7m_1=null},Pr(Hf).i7a=function(){Pr(Bc).i7a.call(this);var t=qu([new Ua(this.u6u_1.m65_1,this.u6u_1.o65_1,1e4),new Ua(this.u6u_1.n65_1,this.u6u_1.o65_1,1e4)]),n=this.f7a().b78(ju(t),wb()),i=new Ga(this.u6u_1.m65_1,this.u6u_1.n65_1,this.u6u_1.o65_1,this.u6u_1.o65_1),e=i,r=n;if(this.c7a_1.s(Qc(e,r,"GridElement_LineWest")),!this.t7m_1){if(ku(this.u7m_1,"60")){t.b1(),t.s(new Ua(this.u6u_1.m65_1,this.u6u_1.p65_1,1e4)),t.s(new Ua(this.u6u_1.n65_1,this.u6u_1.p65_1,1e4)),n=this.f7a().b78(ju(t),wb());var s=i=new Ga(this.u6u_1.m65_1,this.u6u_1.n65_1,this.u6u_1.p65_1,this.u6u_1.p65_1),u=n;this.c7a_1.s(Qc(s,u,"GridElement_LineEast"))}t.b1(),t.s(new Ua(this.u6u_1.m65_1,this.u6u_1.o65_1,1e4)),t.s(new Ua(this.u6u_1.m65_1,this.u6u_1.p65_1,1e4)),n=this.f7a().b78(ju(t),wb());var o=i=new Ga(this.u6u_1.m65_1,this.u6u_1.m65_1,this.u6u_1.o65_1,this.u6u_1.p65_1),_=n;if(this.c7a_1.s(Qc(o,_,"GridElement_LineSouth")),Tu(this.u7m_1,"X")){t.b1(),t.s(new Ua(this.u6u_1.n65_1,this.u6u_1.o65_1,1e4)),t.s(new Ua(this.u6u_1.n65_1,this.u6u_1.p65_1,1e4)),n=this.f7a().b78(ju(t),wb());var h=i=new Ga(this.u6u_1.n65_1,this.u6u_1.n65_1,this.u6u_1.o65_1,this.u6u_1.p65_1),a=n;this.c7a_1.s(Qc(h,a,"GridElement_LineNorth"))}}var l=this.f7a().a79(new Ua(this.u6u_1.j6a(),this.u6u_1.k6a(),0),this.u7m_1,1e7);this.c7a_1.s(Qc(this.u6u_1,l,"GridElement_GridZoneLabel"))},Pr(Wf).w77=function(t){Pr(Bc).w77.call(this,t);for(var n=this.f7a().a78(t),i=this.c7a_1.v();i.w();){var e=i.y();if(e.g7a(t)){if(e.l7c_1 instanceof eb){var r=e.l7c_1;if(n.m5i_1<72||!Ou("*32*34*36*","*"+r.g79_1+"*")){var s=r.i79_1;"GridElement_LatitudeLabel"===e.m7c_1?s=new Ua(s.m5i_1,n.n5i_1,s.q5i_1):"GridElement_LongitudeLabel"===e.m7c_1&&(s=new Ua(n.m5i_1,s.n5i_1,s.q5i_1)),r.f7i(s)}}var u=this.f7a(),o=this.f7a();u.v77(e.l7c_1,o.z77(1e6))}}},Pr(Wf).i7a=function(){Pr(Bc).i7a.call(this);var t=as(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e,r,s=6*i-180;t.b1(),t.s(B.e6d(-80,s,1e4)),t.s(B.e6d(-60,s,1e4)),t.s(B.e6d(-30,s,1e4)),t.s(B.e6d(0,s,1e4)),t.s(B.e6d(30,s,1e4)),s<6||s>36?(t.s(B.e6d(60,s,1e4)),e=84):(6===s?r=56:(t.s(B.e6d(60,s,1e4)),r=72),e=r);var u=e;t.s(B.e6d(u,s,1e4));var o=this.f7a().b78(uu(t),db()),_=W.i6d(-80,s,u+80,0),h=_;this.c7a_1.s(Qc(h,o,"GridElement_Line"));var a=this.f7a().a79(B.e6d(0,s-3,0),i.toString(),1e7),l=_=W.i6d(-90,s-3,180,0);this.c7a_1.s(Qc(l,a,"GridElement_LongitudeLabel"))}while(n<=60);var c=0;if(c<=4)do{var f=c;c=c+1|0,t.b1();var v=Bf().q7o_1[f][0],d=Bf().q7o_1[f][1],w=Bf().q7o_1[f][2];t.s(B.e6d(d,v,1e4)),t.s(B.e6d(w,v,1e4));var p=this.f7a().b78(ju(t),db()),m=W.i6d(d,v,w-d,0);this.c7a_1.s(Qc(m,p,"GridElement_Line"))}while(c<=4);var g=-80,y=0;if(y<=20)do{var b=y;y=y+1|0;var $=0;if($<=3)do{var k=$;$=$+1|0,t.b1();var x=90*k-180;t.s(B.e6d(g,x,1e4)),t.s(B.e6d(g,x+30,1e4)),t.s(B.e6d(g,x+60,1e4)),t.s(B.e6d(g,x+90,1e4));var q=this.f7a().b78(ju(t),wb()),S=W.i6d(g,x,0,90);this.c7a_1.s(Qc(S,q,"GridElement_Line"))}while($<=3);if(b<20){var C=this.f7a().a79(B.e6d(g+4,0,0),Vs(Hs("CDEFGHJKLMNPQRSTUVWX",b)),1e7),E=W.i6d(g+4,-180,0,360);this.c7a_1.s(Qc(E,C,"GridElement_LatitudeLabel"))}g+=g<72?8:12}while(y<=20)},Pr(Jf).c7j=function(t){this.z7i_1=t,this.b1()},Pr(Jf).x7j=function(t){try{var n=t.j5p_1;if(null==n);else{var i,e=n.m5i_1;i=-80<=e&&e<=84?rt.x6e(n.m5i_1,n.n5i_1).a6j_1:0,this.a7j_1=i}}catch(t){if(!(t instanceof bs))throw t;this.a7j_1=0}},Pr(Jf).b1=function(){for(var t=this.z7i_1,n=Ir(t),i=ks(n),e=0,r=hs(Array(i),null);ethis.z7i_1)return Xr;var r=Gf(this),s=Ir(e),u=r[ks(s)-1|0];"GridElement_LineEasting"!==i.m7c_1&&"GridElement_LineEast"!==i.m7c_1&&"GridElement_LineWest"!==i.m7c_1?("GridElement_LineNorthing"===i.m7c_1||"GridElement_LineSouth"===i.m7c_1||"GridElement_LineNorth"===i.m7c_1)&&(n.equals(u.w7o_1)?u.u7o_1=zu(i.n7c_1,u.u7o_1):n.equals(dl())&&(u.u7o_1=i.n7c_1,u.w7o_1=n),n.equals(u.x7o_1)?u.v7o_1=yu(i.n7c_1,u.v7o_1):n.equals(vl())&&(u.v7o_1=i.n7c_1,u.x7o_1=n)):(u.s7o_1=zu(i.n7c_1,u.s7o_1),u.t7o_1=yu(i.n7c_1,u.t7o_1))},Pr(Jf).w77=function(t){var n=t.j5p_1;if(null==n)return Xr;var i,e,r,s=n,u=t.n5p_1.t5j_1*t.i5p_1*-.5/2,o=t.n5p_1.u5j_1*t.i5p_1*-.5/2;if(this.a7j_1>0){var _=rt.x6e(s.m5i_1,s.n5i_1);i=_.c6j_1+u,e=_.d6j_1+o,r=_.b6j_1,e<0&&(e+=1e7,r=dl())}else{var h=et.x6e(s.m5i_1,s.n5i_1);i=h.h6j_1+u,e=h.i6j_1+o,r=h.g6j_1}var a,l=t.r5p_1,c=0,f=Gf(this).length-1|0;if(c<=f)do{var v=c;c=c+1|0;var d=Gf(this)[v],w=Math.pow(10,v),p=10*w,m=this.x7i_1.z77(w);if(d.s7o_1<=d.t7o_1)for(var g=d.s7o_1;g<=d.t7o_1;){if(v===(Gf(this).length-1|0)||g%p!=0){var y=(a=this.x7i_1.z7j(this.a7j_1,r,g,e)).m5i_1,b=a.n5i_1,$=this.x7i_1.r79(t,y,b);if(l.f6b($)&&Kf(this,t,$)){var k=ks(g%this.y7i_1/w).toString(),x=this.x7i_1.a79(new Ua(y,b,0),k,p);x.h79_1.z7a_1=!1,this.x7i_1.v77(x,m)}}g+=w}if(!d.x7o_1.equals(dl())||0!==d.v7o_1)for(var q=d.w7o_1,S=d.u7o_1;S<=d.v7o_1||!q.equals(d.x7o_1);){if(v===(Gf(this).length-1|0)||S%p!=0){var C=(a=this.x7i_1.z7j(this.a7j_1,q,i,S)).m5i_1,E=a.n5i_1,O=this.x7i_1.r79(t,C,E);if(l.f6b(O)&&Kf(this,t,O)){var j=ks(S%this.y7i_1/w).toString(),z=this.x7i_1.a79(new Ua(C,E,0),j,p);z.h79_1.z7a_1=!1,this.x7i_1.v77(z,m)}!q.equals(d.x7o_1)&&S>=1e7-w&&(q=d.x7o_1,S=-w)}S+=w}}while(c<=f)},Pr(Jf).toString=function(){var t=Au(),n=0;if(n<=4)do{var i=n;n=n+1|0,t.r5("level "),t.v7(i),t.r5(" : ");var e=Gf(this)[i];e.s7o_1Tr(100,4)},Pr(Zf).w77=function(t){Pr(iv).w77.call(this,t);for(var n=this.f7a().z77(this.s7k_1/10),i=this.c7a_1.v();i.w();){var e=i.y();e.g7a(t)&&(this.f7a().y7j(this.n7k_1,this.o7k_1,e,this.s7k_1),this.f7a().v77(e.l7c_1,n))}if(this.d7q(t)<=Tr(Tr(100,4),2))return Xr;var r,s=this.c7q_1;if(null==s){var u=function(t){var n=as(),i=t.s7k_1/10,e=0;if(e<=9)do{var r=e;e=e+1|0;var s=t.q7k_1+i*r,u=0;if(u<=9)do{var o=u;u=u+1|0;var _=t.r7k_1+i*o,h=new Zf(t.f7a(),t.n7k_1,t.o7k_1,t.p7k_1,s,_,i);h.b7l_1||n.s(h)}while(u<=9)}while(e<=9);return n}(this);this.c7q_1=u,r=u}else r=s;for(var o=r.v();o.w();){var _=o.y();_.g7a(t)?_.w77(t):_.j7a()}},Pr(Zf).j7a=function(){Pr(iv).j7a.call(this);var t=this.c7q_1;if(null==t);else for(var n=t.v();n.w();)n.y().j7a();this.c7q_1=null},Pr(Zf).i7a=function(){Pr(iv).i7a.call(this);var t=this.s7k_1/10,n=as(),i=1;if(i<=9)do{var e=i;i=i+1|0;var r=this.q7k_1+t*e;n.b1();var s=this.f7a().z7j(this.n7k_1,this.o7k_1,r,this.r7k_1),u=this.f7a().z7j(this.n7k_1,this.o7k_1,r,this.r7k_1+this.s7k_1);if(this.a7l_1?this.f7a().s79(s,u,this.p7k_1,n):(n.s(s),n.s(u)),n.n()>0){s=n.h1(0),u=n.h1(1);var o=this.f7a().b78(ju(n),db()),_=this.e7q(s,u),h=Fh().p5r(r);this.c7a_1.s(new nf(_,o,"GridElement_LineEasting",h))}}while(i<=9);var a=1;if(a<=9)do{var l=a;a=a+1|0;var c=this.r7k_1+t*l;n.b1();var f=this.f7a().z7j(this.n7k_1,this.o7k_1,this.q7k_1,c),v=this.f7a().z7j(this.n7k_1,this.o7k_1,this.q7k_1+this.s7k_1,c);if(this.a7l_1?this.f7a().s79(f,v,this.p7k_1,n):(n.s(f),n.s(v)),n.n()>0){f=n.h1(0),v=n.h1(1);var d=this.f7a().b78(ju(n),db()),w=this.e7q(f,v),p=Fh().p5r(c);this.c7a_1.s(new nf(w,d,"GridElement_LineNorthing",p))}}while(a<=9)},Pr(iv).f7a=function(){var t=Pr(Bc).f7a.call(this);return t instanceof If?t:Nr()},Pr(iv).e7q=function(t,n){var i=t.m5i_1,e=t.n5i_1,r=t.m5i_1,s=t.n5i_1;return n.m5i_1r&&(r=n.m5i_1),n.n5i_1s&&(s=n.n5i_1),new Ga(i,r,e,s)},Pr(iv).m7o=function(t){return this.p7k_1.n6d(t)},Pr(iv).d7q=function(t){var n=this.f7a().r79(t,this.z7k_1.m5i_1,this.z7k_1.n5i_1),i=t.m5p_1.z5q(n);return this.s7k_1/t.g5o(i)/t.d5p_1},Pr(sv).g7a=function(t){return!!Pr(iv).g7a.call(this,t)&&this.d7q(t)>100},Pr(sv).w77=function(t){Pr(iv).w77.call(this,t);var n=this.f7a().z77(this.s7k_1),i=this.c7a_1.v();t:for(;i.w();){var e=i.y();if(e.g7a(t)){if("GridElement_LineNorth"===e.m7c_1&&ev(this,t))continue t;if("GridElement_LineEast"===e.m7c_1&&rv(this,t))continue t;this.f7a().v77(e.l7c_1,n)}}if(this.d7q(t)<=Tr(100,2))return Xr;var r,s=this.g7m_1;if(null==s){var u=new Zf(this.f7a(),this.n7k_1,this.o7k_1,this.p7k_1,this.q7k_1,this.r7k_1,this.s7k_1);this.g7m_1=u,r=u}else r=s;var o=r;o.g7a(t)?o.w77(t):o.j7a()},Pr(sv).j7a=function(){Pr(iv).j7a.call(this);var t=this.g7m_1;null==t||t.j7a(),this.g7m_1=null},Pr(sv).i7a=function(){Pr(iv).i7a.call(this);var t=as();if(this.a7l_1?this.f7a().s79(this.u7k_1,this.w7k_1,this.p7k_1,t):(t.s(this.u7k_1),t.s(this.w7k_1)),t.n()>0){var n=t.h1(0),i=t.h1(1),e=this.f7a().b78(ju(t),db()),r=this.e7q(n,i),s=Fh(),u=this.q7k_1,o=s.p5r(u);this.c7a_1.s(new nf(r,e,"GridElement_LineWest",o))}if(t.b1(),this.a7l_1?this.f7a().s79(this.v7k_1,this.x7k_1,this.p7k_1,t):(t.s(this.v7k_1),t.s(this.x7k_1)),t.n()>0){var _=t.h1(0),h=t.h1(1),a=this.f7a().b78(ju(t),db()),l=this.e7q(_,h),c=Fh(),f=this.q7k_1+this.s7k_1,v=c.p5r(f);this.c7a_1.s(new nf(l,a,"GridElement_LineEast",v))}if(t.b1(),this.a7l_1?this.f7a().s79(this.u7k_1,this.v7k_1,this.p7k_1,t):(t.s(this.u7k_1),t.s(this.v7k_1)),t.n()>0){var d=t.h1(0),w=t.h1(1),p=this.f7a().b78(ju(t),db()),m=this.e7q(d,w),g=Fh(),y=this.r7k_1,b=g.p5r(y);this.c7a_1.s(new nf(m,p,"GridElement_LineSouth",b))}if(t.b1(),this.a7l_1?this.f7a().s79(this.w7k_1,this.x7k_1,this.p7k_1,t):(t.s(this.w7k_1),t.s(this.x7k_1)),t.n()>0){var $=t.h1(0),k=t.h1(1),x=this.f7a().b78(ju(t),db()),q=this.e7q($,k),S=Fh(),C=this.r7k_1+this.s7k_1,E=S.p5r(C);this.c7a_1.s(new nf(q,x,"GridElement_LineNorth",E))}var O=this.d7m_1;if(null==O);else{var j=this.y7k_1.q65(),z=Ph(this.z7k_1.m5i_1);if(j*Math.cos(z)>.2&&this.y7k_1.r65()>.2){var T=0!==this.n7k_1?this.z7k_1:this.m7o(new Ua(this.t7k_1.m5i_1,this.t7k_1.n5i_1,0))?this.t7k_1:this.t7k_1.m5i_1<=this.p7k_1.n65_1&&this.t7k_1.m5i_1>=this.p7k_1.m65_1?this.z7k_1:null;if(null!=T){var A=this.f7a().a79(new Ua(T.m5i_1,T.n5i_1,0),O,10*this.s7k_1),I=this.y7k_1;this.c7a_1.s(Qc(I,A,"GridElement_GridZoneLabel"))}}}},Pr(uv).o6y=function(){return this.n7q_1},Pr(uv).p6y=function(){return this.o7q_1},Pr(uv).s6y=function(t){this.q7q_1&&t.p68().x6v(this.r7q_1,this.s7q_1);var n,i=ys(sh),e=t.e5q_1.q2(i),r=null==e||ss(e,Qb)?e:Nr();if(null==r){var s=new Yq;t.e5q_1.g2(i,s),n=s}else n=r;var u=n,o=x.a5x(u),_=this.s7q_1,h=o.b5x_1,a=_.length;ps(_,h,0,0,a);for(var l=0,c=o.c5x_1,f=0,v=c.length;f0)){var s=kr.y5i(kr.t5i_1,"WmsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}if(this.z83_1.d1()){var u=kr.y5i(kr.t5i_1,"WmsLayerFactory","createLayer","missingLayerNames");throw is(Gr(u))}if(this.c84_1=this.a84_1,null==this.c84_1){if(this.cc_1=1,t=this.x83_1,n=this.y83_1,i=void 0,(i=new Zv(t,n,this)).ec_1=Xr,i.fc_1=null,(e=i.pc())===Js())return e;continue t}this.d84_1=this.c84_1,this.cc_1=2;continue t;case 1:this.d84_1=e,this.cc_1=2;continue t;case 2:if(this.e84_1=this.d84_1,this.cc_1=3,(e=Bv(this.x83_1,this.e84_1,this))===Js())return e;continue t;case 3:var o=e.f84(this.z83_1);if(o.d1()){var _=kr.h6e("WmsLayerFactory","createLayer","Provided layer names did not match available layers");throw is(Gr(_))}return Wv(this.x83_1,this.y83_1,this.e84_1,o,this.b84_1);case 4:throw this.fc_1}}catch(t){var h=t;if(4===this.dc_1)throw h;this.cc_1=this.dc_1,this.fc_1=h}},Pr(Zv).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.r80_1=Nk(),this.s80_1=!1,this.cc_1=1;continue t;case 1:this.dc_1=5,this.dc_1=4,this.u80_1=this.r80_1,this.v80_1=eo().f1u(this.q80_1).y5a().a5a("VERSION","1.3.0").a5a("SERVICE","WMS").a5a("REQUEST","GetCapabilities").y2(),this.w80_1=this.u80_1,this.x80_1=Gr(this.v80_1),this.y80_1=this.w80_1,this.z80_1=this.y80_1;var n=new uo;if(oo(n,this.x80_1),_o(n,!0),this.a81_1=n,this.a81_1.t28_1=ho().z1z_1,this.b81_1=this.z80_1,this.c81_1=this.a81_1,this.cc_1=2,(t=new ao(this.c81_1,this.b81_1).d2z(this))===Js())return t;continue t;case 2:if(this.d81_1=t,this.cc_1=3,(t=lo(this.d81_1,Wr,this))===Js())return t;continue t;case 3:this.t80_1=t,this.dc_1=6,this.cc_1=7;continue t;case 4:if(this.dc_1=5,this.fc_1 instanceof Error){var i=this.fc_1;try{this.s80_1=!0,this.r80_1.e1j()}catch(t){if(!(t instanceof Error))throw t;co(i,t)}throw i}throw this.fc_1;case 5:this.dc_1=6;var e=this.fc_1;throw this.s80_1||this.r80_1.e1j(),e;case 6:throw this.fc_1;case 7:var r=this.t80_1;return this.dc_1=6,this.s80_1||this.r80_1.e1j(),r}}catch(t){var s=t;if(6===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},Pr(Qv).g84=function(t,n,i,e,r){var s=new Jv(this,t,n,i,e,r);return s.ec_1=Xr,s.fc_1=null,s.pc()},Pr(Qv).h84=function(t,n,i,e,r,s){return i=i===Wr?null:i,e=e===Wr?null:e,s===Wr?this.g84(t,n,i,e,r):s.g84.call(this,t,n,i,e,r)},Pr(Qv).c83=function(t){var n=t.h1(0).e82(),i=null==n?null:n.j82(),e=null==i?null:i.n82_1,r=null==e?null:e.f82_1,s=null==r?null:r.j84_1,u=null==s?null:s.n84();if(null==u){var o=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Unable to resolve GetMap URL");throw fs(Gr(o))}for(var _=u,h=null,a=t.v();a.w();){var l=a.y().o84();null==h?h=wo(l):h.a1(vo(l))}var c=new Vv(_,Jr(t,",",Wr,Wr,Wr,Wr,Xv)),f=i.k82_1;if("1.3.0"!==f){var v=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Version not compatible");throw fs(Gr(v))}if(c.h7y_1=f,!0===(null==h?null:h.r("EPSG:4326")))c.j7y_1="EPSG:4326";else{if(!0!==(null==h?null:h.r("CRS:84"))){var d=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Coordinate systems not compatible");throw fs(Gr(d))}c.j7y_1="CRS:84"}var w,p=i.n82_1.f82_1.j84_1.l84_1,m=c;t:{for(var g=this.a83_1.v();g.w();){var y=g.y();if(p.r(y)){w=y;break t}}w=null}var b,$=w;if(null==$){var k=kr.h6e("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Image Formats Not Compatible");throw fs(Gr(k))}b=$,m.k7y_1=b;var x,q=c;t:if(ss(t,rs)&&t.d1())x=!1;else{for(var S=t.v();S.w();)if(S.y().y81_1){x=!0;break t}x=!1}return q.l7y_1=!x,c},Pr(Qv).d83=function(t){for(var n=new Yb,i=17976931348623157e292,e=Ba(),r=t.v();r.w();){var s=r.y(),u=s.p84();null==u||(i=zu(i,u));var o=s.q84();null==o||e.r6d(o)}if(e.t19()){var _=kr.h6e("WmsLayerFactory","getLevelSetConfigFromWmsCapabilities","Geographic Bounding Box Not Defined");throw fs(Gr(_))}n.r84_1.f66(e);var h,a=n;if(17976931348623157e292!==i){var l=28e-5*i/la().u6a_1.w6a_1;h=n.y84(l)}else h=20;return a.u84_1=h,n},Pr(id).t6w=function(t,n,i,e){var r=new Bq(t,n,i,e),s=this.y7y(t,n.h6v_1,n.i6v_1),u=r,o=Pq().b7v(s);return o.l7s_1=r,u.f7s_1=o,r},Pr(id).y7y=function(t,n,i){var e=eo().f1u(this.p7y_1).y5a();if(!(n>=1&&i>=1)){var r=kr.y5i(kr.t5i_1,"WmsTileFactory","urlForTile","invalidWidthOrHeight");throw is(Gr(r))}e.a5a("VERSION",this.q7y_1),e.a5a("SERVICE","WMS"),e.a5a("REQUEST","GetMap"),e.a5a("LAYERS",this.r7y_1);var s=this.s7y_1;e.a5a("STYLES",null==s?"":s),e.a5a("WIDTH",n.toString()),e.a5a("HEIGHT",i.toString());var u=this.u7y_1;if(e.a5a("FORMAT",null==u?"image/png":u),e.a5a("TRANSPARENT",this.v7y_1?"TRUE":"FALSE"),"1.3.0"===this.q7y_1){e.a5a("CRS",this.t7y_1);var o="CRS:84"===this.t7y_1?t.o65_1+","+t.m65_1+","+t.p65_1+","+t.n65_1:t.m65_1+","+t.o65_1+","+t.n65_1+","+t.p65_1;e.a5a("BBOX",o)}else{e.a5a("SRS",this.t7y_1);var _=t.o65_1+","+t.m65_1+","+t.p65_1+","+t.n65_1;e.a5a("BBOX",_)}var h=this.w7y_1;return null==h||e.a5a("TIME",h),Gr(e.y2())},Pr(hd).v89=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(hd).cd=function(t,n){return this.v89(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(hd).pc=function(){for(this.ec_1;;)try{var t=this.cc_1;if(0===t){this.dc_1=1;var n=fd().x87_1,i=this.t89_1,e=n.b38(),r=Zu(e,Ju(ys(Jm),Xu([]),!1));return n.u41(ss(r,Qu)?r:Nr(),i)}if(1===t)throw this.fc_1}catch(t){throw t}},Pr(hd).b1h=function(t,n){var i=new hd(this.t89_1,n);return i.u89_1=t,i},Pr(ad).pc=function(){var t,n,i,e=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4;var r=this.f8a_1;if(!(xu(r)>0)){var s=kr.y5i(kr.t5i_1,"WmtsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}var u=this.g8a_1;if(!(xu(u)>0)){var o=kr.y5i(kr.t5i_1,"WmtsLayerFactory","createLayer","missingLayerNames");throw is(Gr(o))}if(this.j8a_1=this.h8a_1,null==this.j8a_1){if(this.cc_1=1,t=this.e8a_1,n=this.f8a_1,i=void 0,(i=new ld(t,n,this)).ec_1=Xr,i.fc_1=null,(e=i.pc())===Js())return e;continue t}this.k8a_1=this.j8a_1,this.cc_1=2;continue t;case 1:this.k8a_1=e,this.cc_1=2;continue t;case 2:if(this.l8a_1=this.k8a_1,this.cc_1=3,(e=sd(this.e8a_1,this.l8a_1,this))===Js())return e;continue t;case 3:var _=e.m8a(this.g8a_1);n:do{if(null==_){var h=kr.h6e("WmtsLayerFactory","createLayer","Specified layer name was not found");throw is(Gr(h))}break n}while(0);return ud(this.e8a_1,this.f8a_1,this.l8a_1,_,this.i8a_1);case 4:throw this.fc_1}}catch(t){var a=t;if(4===this.dc_1)throw a;this.cc_1=this.dc_1,this.fc_1=a}},Pr(ld).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.z85_1=Nk(),this.a86_1=!1,this.cc_1=1;continue t;case 1:this.dc_1=5,this.dc_1=4,this.c86_1=this.z85_1,this.d86_1=eo().f1u(this.y85_1).y5a().a5a("VERSION","1.0.0").a5a("SERVICE","WMTS").a5a("REQUEST","GetCapabilities").y2(),this.e86_1=this.c86_1,this.f86_1=Gr(this.d86_1),this.g86_1=this.e86_1,this.h86_1=this.g86_1;var n=new uo;if(oo(n,this.f86_1),_o(n,!0),this.i86_1=n,this.i86_1.t28_1=ho().z1z_1,this.j86_1=this.h86_1,this.k86_1=this.i86_1,this.cc_1=2,(t=new ao(this.k86_1,this.j86_1).d2z(this))===Js())return t;continue t;case 2:if(this.l86_1=t,this.cc_1=3,(t=lo(this.l86_1,Wr,this))===Js())return t;continue t;case 3:this.b86_1=t,this.dc_1=6,this.cc_1=7;continue t;case 4:if(this.dc_1=5,this.fc_1 instanceof Error){var i=this.fc_1;try{this.a86_1=!0,this.z85_1.e1j()}catch(t){if(!(t instanceof Error))throw t;co(i,t)}throw i}throw this.fc_1;case 5:this.dc_1=6;var e=this.fc_1;throw this.a86_1||this.z85_1.e1j(),e;case 6:throw this.fc_1;case 7:var r=this.b86_1;return this.dc_1=6,this.a86_1||this.z85_1.e1j(),r}}catch(t){var s=t;if(6===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},Pr(cd).n8a=function(t,n,i,e,r){var s=new ad(this,t,n,i,e,r);return s.ec_1=Xr,s.fc_1=null,s.pc()},Pr(cd).o8a=function(t,n,i,e,r,s){return i=i===Wr?null:i,e=e===Wr?null:e,s===Wr?this.n8a(t,n,i,e,r):s.n8a.call(this,t,n,i,e,r)},Pr(dd).t6w=function(t,n,i,e){var r=new Bq(t,n,i,e),s=this.x8a(n.d6v_1,i,e);if(null==s);else{var u=r,o=Pq().b7v(s);o.l7s_1=r,u.f7s_1=o}return r},Pr(dd).x8a=function(t,n,i){if(t>=this.t8a_1.n())return kr.y5i(kr.u5i_1,"WmtsTileFactory","urlForTile","invalid level for tileMatrixIdentifiers: "+t),null;var e=((this.u8a_1<this.y6v()[1]&&js(this.y6v(),0)},Pr(cy).q5w=function(t,n,i,e){return this.k5g_1=t,this.l5g_1=n,this.m5g_1=i,this.n5g_1=e,this},Pr(cy).t5w=function(t){return this.q5w(t.k5g_1,t.l5g_1,t.m5g_1,t.n5g_1)},Pr(cy).x7a=function(t){var n,i,e=io(io(this.k5g_1,this.l5g_1),this.m5g_1),r=e-to(to(this.k5g_1,this.l5g_1),this.m5g_1);if(0===r)n=0,i=0;else{i=r/e;var s=(e-this.k5g_1)/6/r+.5,u=(e-this.l5g_1)/6/r+.5,o=(e-this.m5g_1)/6/r+.5;(n=this.k5g_1===e?o-u:this.l5g_1===e?.3333333333333333+s-o:this.m5g_1===e?.6666666666666666+u-s:0)<0?n+=1:n>1&&(n-=1)}t[0]=360*n,t[1]=i,t[2]=e},Pr(cy).a8j=function(t,n){var i=n;if(!((t.length-i|0)>=4)){var e=kr.y5i(kr.t5i_1,"Color","premultiplyToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.k5g_1*this.n5g_1;var s=i;i=s+1|0,t[s]=this.l5g_1*this.n5g_1;var u=i;return i=u+1|0,t[u]=this.m5g_1*this.n5g_1,t[i]=this.n5g_1,t},Pr(cy).equals=function(t){return this===t||t instanceof cy&&this.k5g_1===t.k5g_1&&this.l5g_1===t.l5g_1&&this.m5g_1===t.m5g_1&&this.n5g_1===t.n5g_1},Pr(cy).hashCode=function(){var t=Ss(this.k5g_1);return t=Tr(31,t)+Ss(this.l5g_1)|0,t=Tr(31,t)+Ss(this.m5g_1)|0,Tr(31,t)+Ss(this.n5g_1)|0},Pr(cy).toString=function(){return"Color(red="+this.k5g_1+", green="+this.l5g_1+", blue="+this.m5g_1+", alpha="+this.n5g_1+")"},Pr(cy).b8j=function(){var t=255*this.k5g_1,n=Yr(t),i=255*this.l5g_1,e=Yr(i),r=255*this.m5g_1;return"rgba("+n+", "+e+", "+Yr(r)+", "+this.n5g_1+")"},Pr(py).i63=function(t){return this.c5u_1.e8j()||this.c8j(t),this.c5u_1.e8j()&&t.v5u(this.c5u_1),this.c5u_1.e8j()},Pr(py).e5u=function(t,n,i){return this.c5u_1.e8j()||this.c8j(t),this.c5u_1.e8j()&&(this.f8j(t,n,i),this.d5u_1.g2(i,n)),this.c5u_1.e8j()},Pr(py).j63=function(t){var n=this.d5u_1.q2(t);if(null==n)throw fs(Gr("Invalid attachment type"));return n},Pr(py).c8j=function(t){var n=t.m5t();try{this.c5u_1=t.x5j_1.g8j(),t.x5j_1.w5u(hx(),this.c5u_1)}finally{t.x5j_1.w5u(hx(),n)}},Pr(py).f8j=function(t,n,i){var e=t.m5t();try{t.v5u(this.c5u_1);var r=null==n?null:n.h8j(t),s=null==r?oS().f5t_1:r;t.x5j_1.i8j(hx(),i,ax(),s,0)}finally{t.v5u(e)}},Pr(gy).toString=function(){return"TextCacheKey(text="+this.k8j_1+", attributes="+this.l8j_1+")"},Pr(gy).hashCode=function(){var t=null==this.k8j_1?0:Ws(this.k8j_1);return Tr(t,31)+(null==this.l8j_1?0:this.l8j_1.hashCode())|0},Pr(gy).equals=function(t){if(this===t)return!0;if(!(t instanceof gy))return!1;var n=t instanceof gy?t:Nr();return this.k8j_1==n.k8j_1&&!!qs(this.l8j_1,n.l8j_1)},Pr(by).w67=function(){var t=this.w5o_1;if(null!=t)return t;Gs("globe")},Pr(by).m68=function(){var t=this.x5o_1;if(null!=t)return t;Gs("terrainTessellator")},Pr(by).p68=function(){var t=this.y5o_1;if(null!=t)return t;Gs("terrain")},Pr(by).r68=function(){var t=this.z5o_1;if(null!=t)return t;Gs("layers")},Pr(by).l8l=function(){var t=this.a5p_1;if(null!=t)return t;Gs("currentLayer")},Pr(by).u6y=function(){var t=this.b5p_1;if(null!=t)return t;Gs("camera")},Pr(by).v68=function(){var t=this.c5p_1;if(null!=t)return t;Gs("renderResourceCache")},Pr(by).m8l=function(){var t=this.i5q_1;return du("tessellator",1,vu,(function(t){return t.m8l()}),null),t.j2()},Pr(by).w1h=function(){this.d5p_1=1,this.e5p_1=1,this.f5p_1=0,this.g5p_1=0,this.h5p_1=0,this.i5p_1=0,this.j5p_1=null,this.k5p_1=null,this.l5p_1=new Hr(0,0),this.m5p_1.h5u(0,0,0),this.n5p_1.v5j(),this.o5p_1.i5u(),this.p5p_1.i5u(),this.q5p_1.i5u(),this.r5p_1.a6b(),this.s5p_1=null,this.t5p_1=null,this.u5p_1=null,this.v5p_1=null,this.w5p_1=null,this.x5p_1=null,this.y5p_1=null,this.z5p_1=!1,this.b5q_1=0,this.a5q_1=!1,this.c5q_1=0,this.d5q_1.b1()},Pr(by).g5o=function(t){if(0===this.c5q_1){var n=.5*Ph(this.u6y().l5i_1),i=Math.tan(n);this.c5q_1=2*i/this.n5p_1.u5j_1}return t*this.c5q_1},Pr(by).n8l=function(t,n,i){var e=t.s5l_1,r=t.t5l_1,s=t.w5l_1,u=this.p5p_1.m5l_1,o=u[0]*e+u[1]*r+u[2]*s+u[3],_=u[4]*e+u[5]*r+u[6]*s+u[7],h=u[8]*e+u[9]*r+u[10]*s+u[11],a=u[12]*e+u[13]*r+u[14]*s+u[15],l=this.o5p_1.m5l_1,c=l[0]*o+l[1]*_+l[2]*h+l[3]*a,f=l[4]*o+l[5]*_+l[6]*h+l[7]*a,v=l[8]*o+l[9]*_+l[10]*h+l[11]*a,d=l[12]*o+l[13]*_+l[14]*h+l[15]*a;return 0!==d&&(c/=d,f/=d,!((v/=d)<-1||v>1||(v=l[8]*o+l[9]*_+l[10]*h*(1+n)+l[11]*a,f=.5*f+.5,v=.5*(v=os(v/=d,-1,1))+.5,c=(c=.5*c+.5)*this.n5p_1.t5j_1+this.n5p_1.r5j_1,f=f*this.n5p_1.u5j_1+this.n5p_1.s5j_1,i.s5l_1=c,i.t5l_1=f,i.w5l_1=v,0)))},Pr(by).o8l=function(t,n,i){return this.p8l(t.m5i_1,t.n5i_1,t.q5i_1,n,i)},Pr(by).p8l=function(t,n,i,e,r){switch(e.y9_1){case 0:this.w67().f5m(t,n,i*this.e5p_1,r);break;case 1:if(!this.p68().t6u(t,n,r)){var s=this.w67(),u=s.p5m(t,n);s.f5m(t,n,u*this.e5p_1,r)}break;case 2:if(this.p68().t6u(t,n,r))0!==i&&(this.w67().r5m(t,n,this.h5q_1),r.s6e(this.h5q_1.h6a(i)));else{var o=this.w67(),_=i+o.p5m(t,n);o.f5m(t,n,_*this.e5p_1,r)}}return r},Pr(by).q8l=function(t,n,i){var e=this.v68(),r=e.q2(t),s=null==r?i?e.r8l(t,n):null:r;return null==s||s instanceof xy?s:Nr()},Pr(by).m74=function(t,n,i,e){return i=i===Wr||i,e===Wr?this.q8l(t,n,i):e.q8l.call(this,t,n,i)},Pr(by).s8l=function(t,n,i){var e=this.v68();this.g5q_1.k8j_1=t,this.g5q_1.l8j_1=n;var r,s=e.q2(this.g5q_1),u=null==s||s instanceof xy?s:Nr();if(null==u){var o;if(i){var _,h=this.f5q_1.v8l(t,n);null==h?_=null:(e.d69(new gy(t,zb(n)),h,h.w8l()),_=h),o=_}else o=null;r=o}else r=u;return r},Pr(by).b7x=function(t){var n=this.s5p_1;null==n||n.l60(t,ih(),0)},Pr(by).e69=function(t,n){var i=this.s5p_1;null==i||i.l60(t,eh(),n)},Pr(by).x8l=function(t,n){var i=this.s5p_1;null==i||i.l60(t,(th(),$),-n)},Pr(by).p6x=function(t,n){var i=this.t5p_1;null==i||i.l60(t,eh(),n)},Pr(by).m60=function(){var t=this.s5p_1;null==t||t.m60();var n=this.t5p_1;null==n||n.m60()},Pr(by).y8l=function(){var t=this.s5p_1,n=null==t?null:t.y5g();return null==n?0:n},Pr(by).b5h=function(t){var n=this.u5p_1;null==n||n.b5h(t)},Pr(by).u68=function(){return this.b5q_1=this.b5q_1+1|0,this.b5q_1>16777215&&(this.b5q_1=1),this.b5q_1},Pr(ky).z8l=function(t,n,i,e,r){if(!(t>=0&&n>=0)){var s=kr.y5i(kr.t5i_1,"Texture","estimateByteCount","invalidWidthOrHeight");throw is(Gr(s))}var u=$x(t),o=e===ux()?i===He||i===Ve?u:i===Be?Tr(u,2):i===We?Tr(u,3):(sx(),Tr(u,4)):e===Yk()||e===Ye||e===Ge||e===Ke?Tr(u,2):(Gk(),Tr(u,4)),_=$x(n),h=Tr(o,_);return r&&(h=h+(h/3|0)|0),h},Pr(xy).w8l=function(){return vi.z8l(this.r5t_1,this.s5t_1,this.t5t_1,this.u5t_1,this.a8m())},Pr(xy).a8m=function(){return this.z5t_1},Pr(xy).b8m=function(t){var n=this.y5t_1,i=null==n?null:n.q2(t);return null==i?0:i},Pr(xy).b5u=function(t,n){var i,e=this.y5t_1;if(null==e){var r=Kr();this.y5t_1=r,i=r}else i=e;i.g2(t,n)},Pr(xy).h8j=function(t){return this.x5t_1.e8j()||this.c8m(t),this.x5t_1},Pr(xy).v61=function(t){return this.x5t_1.e8j()||this.c8m(t),this.x5t_1.e8j()&&t.a5v(this.x5t_1),this.x5t_1.e8j()&&this.a5u_1!==t.j5k_1&&(this.e8m(t),this.a5u_1=t.j5k_1),this.x5t_1.e8j()},Pr(xy).c8m=function(t){var n=t.o5t();try{this.x5t_1=t.x5j_1.f8m(),t.x5j_1.b5v(ax(),this.x5t_1),this.g8m(t),this.e8m(t)}finally{t.x5j_1.b5v(ax(),n)}},Pr(xy).g8m=function(t){this.v5t_1&t.x5j_1.i8m()&&t.x5j_1.h8m(ax(),0,this.t5t_1,1,1,0,this.t5t_1,this.u5t_1,null),t.x5j_1.h8m(ax(),0,this.t5t_1,this.r5t_1,this.s5t_1,0,this.t5t_1,this.u5t_1,null)},Pr(xy).e8m=function(t){var n;if(t.j5k_1)t.x5j_1.j8m(ax(),Xk(),Jk());else{var i=this.b8m(Xk());n=i,0!==i?t.x5j_1.j8m(ax(),Xk(),n):t.x5j_1.j8m(ax(),Xk(),this.a8m()?Xe:dx())}if(t.j5k_1)t.x5j_1.j8m(ax(),Zk(),Jk());else{var e=this.b8m(Zk());n=e,0!==e?t.x5j_1.j8m(ax(),Zk(),n):t.x5j_1.j8m(ax(),Zk(),dx())}var r=this.b8m(Qk());n=r,0!==r?t.x5j_1.j8m(ax(),Qk(),n):t.x5j_1.j8m(ax(),Qk(),wx());var s=this.b8m(nx());n=s,0!==s?t.x5j_1.j8m(ax(),nx(),n):t.x5j_1.j8m(ax(),nx(),wx())},Pr(qy).o5s=function(t){return this.e62_1.e8j()&&t.d5v(this.b62_1,this.e62_1),this.e62_1.e8j()},Pr(qy).l8m=function(t){var n=t.c5v(this.b62_1);try{this.e62_1.e8j()||this.m8m(t),t.d5v(this.b62_1,this.e62_1),this.n8m(t)}catch(n){if(!(n instanceof bs))throw n;var i=n;this.o8m(t),kr.i69(kr.t5i_1,"BufferObject","loadBuffer","Exception attempting to load buffer data",i)}finally{t.d5v(this.b62_1,n)}},Pr(qy).m8m=function(t){this.e62_1=t.x5j_1.p8m()},Pr(qy).o8m=function(t){this.e62_1.e8j()&&(t.x5j_1.q8m(this.e62_1),this.e62_1=rS().g5t_1)},Pr(Ey).w1h=function(){this.o5u_1=0,this.p5u_1=0},Pr(Ey).c5l=function(){this.w1h(),cs(this.n5u_1,rS().g5t_1)},Pr(Ey).f5v=function(t,n){var i=n.length;return this.l5u_1t.l5u_1)return-1;n.x5j_1.s8m(t.j5u_1,t.p5u_1,r,i);var s=t.p5u_1;return t.p5u_1=t.p5u_1+r|0,s}(this,t,n)):-1},Pr(Oy).o5s=function(t){return null==this.n5s_1||this.l8m(t),this.n5s_1=null,Pr(qy).o5s.call(this,t)},Pr(Oy).n8m=function(t){var n=this.n5s_1;null==n||t.x5j_1.r8m(this.b62_1,this.c62_1,n,vx())},Pr(jy).o5s=function(t){return null==this.t5y_1||this.l8m(t),this.t5y_1=null,Pr(qy).o5s.call(this,t)},Pr(jy).n8m=function(t){var n=this.t5y_1;null==n||t.x5j_1.v8m(this.b62_1,this.c62_1,n,vx())},Pr(zy).o5s=function(t){return null==this.x5s_1||this.l8m(t),this.x5s_1=null,Pr(qy).o5s.call(this,t)},Pr(zy).n8m=function(t){var n=this.x5s_1;null==n||t.x5j_1.w8m(this.b62_1,this.c62_1,n,vx())},Pr(Hy).h72=function(){var t=this.h5x_1;if(null!=t)return t;Gs("gl")},Pr(Hy).c69=function(){for(var t=0,n=this.w72(),i=0,e=n.length;i0&&a<=l||c<0&&l<=a)do{var f=a;a=a+c|0;var v=n[f]-s,d=n[f+1|0]-u,w=n[f+2|0]-o,p=v*v+d*d+w*w;_>p&&(_=p)}while(f!==l);var m=_;return Math.sqrt(m)},Pr(Ky).f8o=function(t,n,i){var e=i.i5u();return e.z6b(1/(t.r5t_1*n),1/(t.s5t_1*n)),e.b6c(t.w5t_1),e},Pr(Ky).r6w=function(t){qs(t.k5p_1,this.r78_1)||(this.w1h(),this.r78_1=t.k5p_1)},Pr(Ky).w1h=function(){this.v78_1.d6a(),this.u78_1.v5j()},Pr(Xy).r8o=function(t){var n=as(),i=cu(t),e=this.s8o(t);n.s(0),n.s(1);var r=2;if(r(t/2|0))i=Po(i-1),n.s(i);else{var u=i;i=Po(u+1),n.s(u)}s===(t/2|0)&&n.s(cu(s)),n.s(cu(s))}while(rthis.r8p_1,s=r?90:0,u=2*_s()/this.v8p_1,o=t.w67().h5o(),_=t.w67().e6p(),h=Math.max(o,_);r?(i=this.q8p_1/h,e=this.r8p_1/h):(i=this.r8p_1/h,e=this.q8p_1/h);var a=Tr(Jy().s8o(this.v8p_1),5),l=0,c=new Float64Array(n),f=Pa(),v=0,d=this.v8p_1;if(v0&&w<(this.v8p_1/2|0)){var C=l;l=C+1|0,c[C]=m}w<1&&(f=new Ua(S.m5i_1,S.n5i_1,this.p8p_1.q5i_1),this.w8q(t,S.m5i_1,S.n5i_1,this.p8p_1.q5i_1,this.d8q_1,!0)),this.w8q(t,S.m5i_1,S.n5i_1,this.p8p_1.q5i_1,this.d8q_1,!1)}while(v=this.u8p_1)return n;var i=t.o8l(this.p8p_1,this.i78_1,Jy().p8o_1),e=this.q8p_1,r=this.r8p_1,s=Math.max(e,r),u=i.z5q(t.m5p_1)-s;if(u<=0)return this.u8p_1;var o=t.g5o(u),_=this.x8q()/o/this.t8p_1/n,h=Math.log(_)/Math.log(2),a=Math.ceil(h),l=Fo(ks(a),0);return gu(n<<=l,this.u8p_1)},Pr(Zy).t8q=function(t){return 0==(t%2|0)?t:t-1|0},Pr(Zy).x8q=function(){var t=this.q8p_1,n=this.r8p_1,i=(3*t+n)*(t+3*n);return _s()*(3*(t+n)-Math.sqrt(i))},Pr(Zy).w1h=function(){Pr(Ky).w1h.call(this),this.w8p_1=new Float32Array(0),this.z8p_1=new Float32Array(0)},Pr(eb).f7i=function(t){this.i79_1.g5m(t)},Pr(eb).y78=function(t){this.j79_1=t},Pr(eb).i8r=function(){return this.j79_1},Pr(eb).x8n=function(t){this.m79_1=t},Pr(eb).y8n=function(){return this.m79_1},Pr(eb).z8n=function(){var t=this.o79_1;if(null!=t)return t;Gs("activeAttributes")},Pr(eb).j8r=function(){return this.i79_1},Pr(eb).k8r=function(t,n){this.f7i(n)},Pr(eb).s6y=function(t){var n=this.g79_1;if(!1!==(null==n?null:0===xu(n)))return Xr;var i=t.w67().f6p();if(!1===(null==i?null:i.n6d(this.i79_1)))return Xr;var e=t.w67().q5m()?Nh():this.i8r();if(t.o8l(this.i79_1,e,nb().z8q_1.a8r_1),nb().z8q_1.h8r_1=this.p79_1?0:t.w67().q5m()?t.h5p_1:t.m5p_1.z5q(nb().z8q_1.a8r_1),this.q79_1>0&&nb().z8q_1.h8r_1>this.q79_1)return Xr;var r=0;if(nb().z8q_1.h8r_10)}else n=!1;return n},Pr(gb).v8v=function(t){return!(!this.z8n().m8u_1||!this.i8v_1&&t.z5p_1||this.i8r().equals(Nh())||t.w67().q5m())},Pr(bb).a8w=function(t){var n=yb();return n.i8u_1=t,n},Pr(bb).b8w=function(t){var n=yb();return n.i8u_1=t,n.m8u_1=!0,n},Pr($b).s8u=function(t){this.o8u_1.t5w(t)},Pr($b).c8w=function(t){this.p8u_1.y6c(t)},Pr($b).equals=function(t){return this===t||t instanceof $b&&!!qs(this.i8u_1,t.i8u_1)&&!!this.o8u_1.equals(t.o8u_1)&&!!this.p8u_1.equals(t.p8u_1)&&this.j8u_1===t.j8u_1&&this.k8u_1===t.k8u_1&&this.l8u_1===t.l8u_1&&this.m8u_1===t.m8u_1&&this.n8u_1===t.n8u_1&&!!this.q8u_1.equals(t.q8u_1)&&!!this.r8u_1.equals(t.r8u_1)},Pr($b).hashCode=function(){var t=this.i8u_1,n=null==t?null:t.hashCode(),i=null==n?0:n;return i=Tr(31,i)+this.o8u_1.hashCode()|0,i=Tr(31,i)+this.p8u_1.hashCode()|0,i=Tr(31,i)+Ss(this.j8u_1)|0,i=Tr(31,i)+Ss(this.k8u_1)|0,i=Tr(31,i)+Oo(this.l8u_1)|0,i=Tr(31,i)+Oo(this.m8u_1)|0,i=Tr(31,i)+Oo(this.n8u_1)|0,i=Tr(31,i)+this.q8u_1.hashCode()|0,Tr(31,i)+this.r8u_1.hashCode()|0},Pr(kb).u7w=function(){return new Object},Pr(qb).l8w=function(t,n,i,e,r){return this.k8w_1.k8y(r instanceof by?r:Nr(),t,n,i,e)},Pr(qb).l8y=function(t,n){return this.k8w_1.m8y(n instanceof by?n:Nr(),t)},Pr(qb).n8y=function(t,n){return this.k8w_1.o8y(n instanceof by?n:Nr(),t)},Pr(qb).p8y=function(t,n){return this.k8w_1.q8y(n instanceof by?n:Nr(),t)},Pr(Sb).z8y=function(t){return this.w1h(),this.h8x_1.s(t)},Pr(Sb).w1h=function(){Pr(Ky).w1h.call(this),this.i8x_1=new Float32Array(0),this.k8x_1=new Float32Array(0),this.n8x_1.b1(),this.o8x_1.b1(),this.p8x_1.b1(),this.q8x_1.b1()},Pr(Sb).c8o=function(t){if(this.h8x_1.d1())return Xr;var n,i,e,r;if(this.p8q(t)&&(this.o8q(t),this.r8x_1=xb().u7w(),this.s8x_1=xb().u7w(),this.t8x_1=xb().u7w(),this.u8x_1=xb().u7w()),this.q78_1){var s,u=ys(xh),o=t.e5q_1.q2(u),_=null==o||ss(o,Qb)?o:Nr();if(null==_){var h=new Yq;t.e5q_1.g2(u,h),s=h}else s=_;var a=s;i=(n=z.a65(a)).d65_1,this.w8x_1=this.d8o(t,this.u78_1),n.b65_1=t.w67().n5j_1,n.c65_1.f66(this.u78_1),r=(e=z.a65(a)).d65_1,e.b65_1=t.w67().n5j_1,e.c65_1.f66(this.u78_1)}else{var l,c=ys(wh),f=t.e5q_1.q2(c),v=null==f||ss(f,Qb)?f:Nr();if(null==v){var d=new Yq;t.e5q_1.g2(c,d),l=d}else l=v;var w=l;i=(n=C.x61(w)).y61_1,r=(e=C.x61(w)).y61_1,this.w8x_1=this.e8o(t,this.i8x_1,this.j8x_1,5,this.v8x_1)}var p,m=i,g=ys(Yy),y=t.v68(),b=y.q2(g);if(null==b){var $=new Yy;y.d69(g,$,$.c69()),p=$}else p=b;var k=p;m.y5v_1=k instanceof Yy?k:Nr();var x,q=i,S=this.r8x_1,E=t.v68(),O=E.q2(S);if(null==O){var j=new Oy(Vk(),this.i8x_1,this.j8x_1);E.d69(S,j,j.c62_1),x=j}else x=O;var T=x;q.z5v_1=T instanceof Oy?T:Nr();var A,I=i,D=this.s8x_1,M=t.v68(),N=M.q2(D);if(null==N){for(var R=new Int32Array(this.n8x_1.n()+this.o8x_1.n()|0),P=0,L=this.n8x_1.v();L.w();){var F=L.y(),U=P;P=U+1|0,R[U]=F}for(var H=this.o8x_1.v();H.w();){var V=H.y(),B=P;P=B+1|0,R[B]=V}var W=new jy(Bk(),R);M.d69(D,W,W.c62_1),A=W}else A=N;var Y=A;I.a5w_1=Y instanceof jy?Y:Nr(),r.h5w_1=!0;var G,K=r,X=ys(Yy),J=t.v68(),Z=J.q2(X);if(null==Z){var Q=new Yy;J.d69(X,Q,Q.c69()),G=Q}else G=Z;var tt=G;K.y5v_1=tt instanceof Yy?tt:Nr();var nt,it=r,et=this.t8x_1,rt=t.v68(),st=rt.q2(et);if(null==st){var ut=new Oy(Vk(),this.k8x_1);rt.d69(et,ut,ut.c62_1),nt=ut}else nt=st;var ot=nt;it.z5v_1=ot instanceof Oy?ot:Nr();var _t,ht=r,at=this.u8x_1,lt=t.v68(),ct=lt.q2(at);if(null==ct){for(var ft=new Int32Array(this.p8x_1.n()+this.q8x_1.n()|0),vt=0,dt=this.p8x_1.v();dt.w();){var wt=dt.y(),pt=vt;vt=pt+1|0,ft[pt]=wt}for(var mt=this.q8x_1.v();mt.w();){var gt=mt.y(),yt=vt;vt=yt+1|0,ft[yt]=gt}var bt=new jy(Bk(),ft);lt.d69(at,bt,bt.c62_1),_t=bt}else _t=ct;var $t=_t;ht.a5w_1=$t instanceof jy?$t:Nr(),this.q8q(t,i),this.r8q(t,r),i.b5w_1.y5q(this.v8x_1),i.c5w_1=20,i.d5w_1=this.k78_1,i.e5w_1=this.z8n().n7b_1,i.f5w_1=this.z8n().o7b_1,r.b5w_1.y5q(this.v8x_1),r.d5w_1=!1,r.e5w_1=this.z8n().n7b_1,r.f5w_1=this.z8n().o7b_1,this.q78_1||this.z8n().t7b_1.n5g_1>=1?(t.e69(n,0),t.e69(e,0)):(t.x8l(e,this.w8x_1),t.x8l(n,this.w8x_1))},Pr(Sb).q8q=function(t,n){if(!this.z8n().k7b_1)return Xr;var i,e=this.z8n().r7b_1;if(null==e)i=null;else{var r,s=t.m74(e,xb().f8w_1);if(null==s)r=null;else{var u=t.g5o(this.w8x_1);this.f8o(s,u,this.c8y_1),n.w5w(s),r=n.x5w(this.c8y_1)}i=r}if(null==i&&n.w5w(null),n.s5w(t.z5p_1?this.t78_1:this.z8n().t7b_1),n.u5w(t.z5p_1?1:t.l8l().p6y()),n.z5w(2,12),n.a5t(Kk(),this.n8x_1.n(),Gk(),0),this.k78_1){n.w5w(null);var o=Kk(),_=this.o8x_1.n(),h=Gk(),a=this.n8x_1.n();n.a5t(o,_,h,Tr(a,4))}},Pr(Sb).r8q=function(t,n){if(!this.z8n().l7b_1)return Xr;var i,e=this.z8n().s7b_1;if(null==e)i=null;else{var r,s=t.m74(e,xb().g8w_1);if(null==s)r=null;else{var u=t.g5o(this.w8x_1);this.f8o(s,u,this.c8y_1),n.w5w(s),r=n.x5w(this.c8y_1)}i=r}if(null==i&&n.w5w(null),n.s5w(t.z5p_1?this.t78_1:this.z8n().u7b_1),n.u5w(t.z5p_1?1:t.l8l().p6y()),n.v5w(this.z8n().q7b_1),n.a5t(Kk(),this.p8x_1.n(),Gk(),0),this.z8n().m7b_1&&this.k78_1){n.s5w(t.z5p_1?this.t78_1:this.z8n().u7b_1),n.u5w(t.z5p_1?1:t.l8l().p6y()),n.v5w(this.z8n().q7b_1),n.w5w(null);var o=Kk(),_=this.q8x_1.n(),h=Gk(),a=this.p8x_1.n();n.a5t(o,_,h,Tr(a,4))}},Pr(Sb).p8q=function(t){return 0===this.i8x_1.length||!(!this.k78_1||this.q78_1)&&0===this.k8x_1.length},Pr(Sb).o8q=function(t){var n=this.o78_1<=0||this.j78_1.equals(wb()),i=0,e=0,r=0,s=0,u=this.h8x_1.n()-1|0;if(s<=u)do{var o=s;s=s+1|0;var _=this.h8x_1.h1(o);_.d1()||(n?(i=i+_.n()|0,e=e+(_.n()+2|0)|0,r=r+_.n()|0):!_.d1()&&_.h1(0).equals(_.h1(_.n()-1|0))?(i=i+(_.n()+Tr(_.n()-1|0,this.o78_1)|0)|0,e=e+((2+_.n()|0)+Tr(_.n()-1|0,this.o78_1)|0)|0,r=r+_.n()|0):(i=i+(_.n()+Tr(_.n(),this.o78_1)|0)|0,e=e+((3+_.n()|0)+Tr(_.n(),this.o78_1)|0)|0,r=r+_.n()|0))}while(s<=u);this.j8x_1=0,this.i8x_1=this.k78_1&&!this.q78_1?new Float32Array(Tr(Tr(i,2),5)):this.q78_1?new Float32Array(Tr(i+this.h8x_1.n()|0,5)):new Float32Array(Tr(i,5)),this.n8x_1.b1(),this.o8x_1.b1(),this.l8x_1=0,this.m8x_1=Tr(e,10),this.k8x_1=this.k78_1&&!this.q78_1?new Float32Array(Tr(e,10)+Tr(Tr(r,4),10)|0):new Float32Array(Tr(e,10)),this.p8x_1.b1(),this.q8x_1.b1(),this.u8q(t);var h=t.m8l();Xi.a8z(h,0,0,1),Xi.b8z(h,100111,this.y8x_1),Xi.b8z(h,100107,this.y8x_1),Xi.b8z(h,100110,this.y8x_1),Xi.b8z(h,100109,this.y8x_1),Xi.c8z(h,t);var a=0,l=this.h8x_1.n()-1|0;if(a<=l)do{var c=a;a=a+1|0;var f=this.h8x_1.h1(c);if(!f.d1()){Xi.d8z(h);var v=f.h1(0);this.e8z(t,v.m5i_1,v.n5i_1,v.q5i_1,0),this.f8z(t,v.m5i_1,v.n5i_1,v.q5i_1,!0,!1),this.f8z(t,v.m5i_1,v.n5i_1,v.q5i_1,!1,!1);var d=1,w=f.n();if(d>1,12),i=new Float32Array(t+n|0),e=this.i8x_1,r=e.length;ps(e,i,0,0,r),this.i8x_1=i}},Pr(Eb).l8z=function(t){this.t7b_1.t5w(t)},Pr(Eb).h7b=function(t){this.u7b_1.t5w(t)},Pr(Eb).m8z=function(t){return this.k7b_1=t.k7b_1,this.l7b_1=t.l7b_1,this.m7b_1=t.m7b_1,this.n7b_1=t.n7b_1,this.o7b_1=t.o7b_1,this.p7b_1=t.p7b_1,this.t7b_1.t5w(t.t7b_1),this.u7b_1.t5w(t.u7b_1),this.q7b_1=t.q7b_1,this.r7b_1=t.r7b_1,this.s7b_1=t.s7b_1,this},Pr(Eb).equals=function(t){return this===t||t instanceof Eb&&this.k7b_1===t.k7b_1&&this.l7b_1===t.l7b_1&&this.m7b_1===t.m7b_1&&this.n7b_1===t.n7b_1&&this.o7b_1===t.o7b_1&&this.p7b_1===t.p7b_1&&!!this.t7b_1.equals(t.t7b_1)&&!!this.u7b_1.equals(t.u7b_1)&&this.q7b_1===t.q7b_1&&!!qs(this.r7b_1,t.r7b_1)&&!!qs(this.s7b_1,t.s7b_1)},Pr(Eb).hashCode=function(){var t=Oo(this.k7b_1);t=Tr(31,t)+Oo(this.l7b_1)|0,t=Tr(31,t)+Oo(this.m7b_1)|0,t=Tr(31,t)+Oo(this.n7b_1)|0,t=Tr(31,t)+Oo(this.o7b_1)|0,t=Tr(31,t)+Oo(this.p7b_1)|0,t=Tr(31,t)+this.t7b_1.hashCode()|0,t=Tr(31,t)+this.u7b_1.hashCode()|0,t=Tr(31,t)+Ss(this.q7b_1)|0;var n=Tr(31,t),i=this.r7b_1,e=null==i?null:i.hashCode(),r=Tr(31,t=n+(null==e?0:e)|0),s=this.s7b_1,u=null==s?null:s.hashCode();return r+(null==u?0:u)|0},Pr(Ob).s6y=function(t){if(this.n70_1.f66(this.t8i_1),this.n70_1.t19()||!this.n70_1.l6d(t.p68().e5s())||!this.g6y(t).l68(t.r5p_1))return Xr;var n=t.m74(this.l70_1,this.m70_1);if(null==n)return Xr;var i,e=n,r=t.z5p_1?1:t.l8l().p6y(),s=this.n8z(t),u=ys(Ch),o=t.e5q_1.q2(u),_=null==o||ss(o,Qb)?o:Nr();if(null==_){var h=new Yq;t.e5q_1.g2(u,h),i=h}else i=_;var a=i,l=T.u65(a).e66(s,this.t8i_1,r,e,e.w5t_1,t.w67().n5j_1,this.n70_1);if(t.e69(l,0),t.z5p_1){var c=t.u68();w.j5g(c,l.y65_1),t.b5h(w.g5g(c,this,t.l8l()))}},Pr(Ob).n8z=function(t){var n,i=ys(Wy),e=t.v68(),r=e.q2(i);if(null==r){var s=new Wy;e.d69(i,s,s.c69()),n=s}else n=r;return n instanceof Wy?n:Nr()},Pr(Tb).i7b=function(t){this.c7b_1.u8z(t)},Pr(Tb).g7b=function(t){this.d7b_1.t5w(t)},Pr(Tb).v7h=function(t){this.e7b_1.y6c(t)},Pr(Tb).h7b=function(t){this.f7b_1.t5w(t)},Pr(Tb).equals=function(t){return this===t||t instanceof Tb&&!!this.c7b_1.equals(t.c7b_1)&&!!this.d7b_1.equals(t.d7b_1)&&!!this.e7b_1.equals(t.e7b_1)&&!!this.f7b_1.equals(t.f7b_1)&&this.y7a_1===t.y7a_1&&this.z7a_1===t.z7a_1&&this.a7b_1===t.a7b_1&&this.b7b_1===t.b7b_1},Pr(Tb).hashCode=function(){var t=this.c7b_1.hashCode();return t=Tr(31,t)+this.d7b_1.hashCode()|0,t=Tr(31,t)+this.e7b_1.hashCode()|0,t=Tr(31,t)+this.f7b_1.hashCode()|0,t=Tr(31,t)+Ss(this.y7a_1)|0,t=Tr(31,t)+Oo(this.z7a_1)|0,t=Tr(31,t)+Oo(this.a7b_1)|0,Tr(31,t)+Ss(this.b7b_1)|0},Pr(Ib).h7t=function(t){this.u7s_1=t,this.q6x()},Pr(Ib).s6y=function(t){if(t.p68().e5s().t19())return Xr;this.r6w(t),this.c7u(t),this.d7u(t),this.b7t_1=null,this.c7t_1=null,this.d7t_1=null},Pr(Ib).c7u=function(t){var n,i=ys(Wy),e=t.v68(),r=e.q2(i);if(null==r){var s=new Wy;e.d69(i,s,s.c69()),n=s}else n=r;var u=n;this.b7t_1=u instanceof Wy?u:Nr()},Pr(Ib).d7u=function(t){this.f7t_1.d1()&&this.v6w();var n=0,i=this.f7t_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.f7t_1.h1(e);this.e7u(t,r instanceof Bq?r:Nr())}while(n<=i)},Pr(Ib).v6w=function(){return Li.g6x(this.t7s_1.e6x(),this.s7s_1,this.f7t_1)},Pr(Ib).e7u=function(t,n){var i=t.w67().f6p();if(!1===(null==i?null:n.h6x(i)))return Xr;if(!n.h6x(this.t7s_1.x6w_1)||!n.h6x(t.p68().e5s())||!n.i6x(t))return Xr;var e=n.s6v_1.d6v_1>=this.t7s_1.c6x_1;if(n.s6v_1.l6x()||!n.k6x(t,this.v7s_1))return e&&this.f7u(t,n),Xr;var r=this.c7t_1,s=this.d7t_1,u=this.g7u(t,n,!!this.w7s_1&&e);null==u||this.x7s_1&&(this.c7t_1=n,this.d7t_1=u);var o=n.m6x(this.s7s_1,this.a7t_1,4),_=0,h=o.length-1|0;if(_<=h)do{var a=_;_=_+1|0;var l=o[a];this.e7u(t,l instanceof Bq?l:Nr())}while(_<=h);this.c7t_1=r,this.d7t_1=s},Pr(Ib).f7u=function(t,n){var i=this.h7u(t,n),e=this.c7t_1,r=this.d7t_1,s=t.z5p_1?1:t.l8l().p6y();if(null!=i){var u,o=ys(Ch),_=t.e5q_1.q2(o),h=null==_||ss(_,Qb)?_:Nr();if(null==h){var a=new Yq;t.e5q_1.g2(o,a),u=a}else u=h;var l=u,c=T.u65(l).g66(this.b7t_1,n.u6u_1,s,i,i.w5t_1,t.w67().n5j_1);t.e69(c,0)}else if(null!=e&&null!=r){this.e7t_1.y5w(r.w5t_1),this.e7t_1.b67(n.u6u_1,e.u6u_1);var f,v=ys(Ch),d=t.e5q_1.q2(v),w=null==d||ss(d,Qb)?d:Nr();if(null==w){var p=new Yq;t.e5q_1.g2(v,p),f=p}else f=w;var m=f,g=T.u65(m).g66(this.b7t_1,n.u6u_1,s,r,this.e7t_1,t.w67().n5j_1);t.e69(g,0)}},Pr(Ib).g7u=function(t,n,i){var e=n.f7s_1;if(null==e)return null;var r,s=e,u=n.g7s_1;if(null==u){var o,_=this.y7s_1;if(null==_)o=null;else{var h,a=_.t6w(n.u6u_1,n.s6v_1,n.t6v_1,n.u6v_1),l=(a instanceof Bq?a:Nr()).f7s_1;null==l?h=null:(n.g7s_1=l,h=l),o=h}r=o}else r=u;var c=r,f=!!this.z7s_1||qs(this.s7s_1,this.y7s_1),v=null==c||t.v68().i5j_1.l6s(c.hashCode());return t.q8l(v?s:us(c),this.u7s_1,!(!i||f&&v))},Pr(Ib).h7u=function(t,n,i,e){return i=i===Wr||i,e===Wr?this.g7u(t,n,i):e.g7u.call(this,t,n,i)},Pr(Ib).r6w=function(t){qs(t.k5p_1,this.g7t_1)||(this.q6x(),this.g7t_1=t.k5p_1)},Pr(Ib).q6x=function(){this.f7t_1.b1(),this.a7t_1.b1()},Pr(Db).c90=function(t){this.z8z_1=this.z8z_1+1|0,this.y8z_1=Ds.h3k(),this.a90_1=t},Pr(Mb).b1=function(){this.f6s_1.b1()},Pr(Mb).l6s=function(t){var n=this.f6s_1.q2(t);if(null==n)return!1;var i=n;if(i.a90_1)return!0;var e=Ds.h3k().o3z(i.y8z_1);return Ho(e,this.e6s_1)>0?(this.f6s_1.k2(t),!1):Ho(e,this.d6s_1)<0||i.z8z_1>this.c6s_1},Pr(Mb).d90=function(t,n){var i,e=this.f6s_1.q2(t);if(null==e){var r=new Db(this);this.f6s_1.g2(t,r),i=r}else i=e;i.c90(n)},Pr(Mb).p6s=function(t,n,i){var e;return n=n!==Wr&&n,i===Wr?(this.d90(t,n),e=Xr):e=i.d90.call(this,t,n),e},Pr(Mb).n6s=function(t){this.f6s_1.k2(t)},Pr(Nb).equals=function(t){return this===t||t instanceof Nb&&!!qs(this.k7s_1,t.k7s_1)},Pr(Nb).hashCode=function(){return Gu(this.k7s_1)},Pr(Nb).toString=function(){return Gr(this.k7s_1)},Pr(Lb).e6y=function(){var t=this.v6u_1;return du("extent",1,vu,(function(t){return t.e6y()}),null),t.j2()},Pr(Lb).y6v=function(){var t=this.w6u_1;return du("heightLimits",1,vu,(function(t){return t.y6v()}),null),t.j2()},Pr(Lb).i6x=function(t){return this.g6y(t).l68(t.r5p_1)},Pr(Lb).h6x=function(t){return this.u6u_1.a67(t)},Pr(Lb).c6y=function(t){var n=t.u6y().g5i_1,i=n.m5i_1-this.u6u_1.j6a(),e=Math.abs(i),r=n.n5i_1-this.u6u_1.k6a(),s=Math.abs(r),u=360-s;return e+Math.min(s,u)},Pr(Lb).f6y=function(t){var n=t.u6y().g5i_1,i=os(n.m5i_1,this.u6u_1.m65_1,this.u6u_1.n65_1),e=n.n5i_1-this.u6u_1.k6a(),r=e<-180?this.u6u_1.p65_1:e>180?this.u6u_1.o65_1:os(n.n5i_1,this.u6u_1.o65_1,this.u6u_1.p65_1),s=this.y6v()[0]*t.e5p_1,u=t.w67(),o=Fh().p5r(i),_=Fh().p5r(r);return u.f5m(o,_,s,this.b6v_1)},Pr(Lb).g6y=function(t){var n=t.w67(),i=t.l5p_1;i.equals(this.x6u_1)||(n.q5m()?js(this.y6v(),0):this.z6x(n));var e=t.e5p_1,r=t.k5p_1,s=t.w67().n5j_1;if(!i.equals(this.x6u_1)||e!==this.y6u_1||!qs(r,this.z6u_1)||!s.equals(this.a6v_1)){var u=this.y6v()[0]*e,o=this.y6v()[1]*e;this.e6y().k68(this.u6u_1,n,u,o)}return this.x6u_1=i,this.y6u_1=e,this.z6u_1=r,this.a6v_1=s,this.e6y()},Pr(Lb).z6x=function(t){this.y6v()[0]=34028235e31,this.y6v()[1]=-34028235e31,t.m5j_1.y6p(this.u6u_1,this.y6v()),this.y6v()[0]>this.y6v()[1]&&js(this.y6v(),0)},Pr(Ub).r5r=function(){if(this.f90_1>0){this.f90_1=this.f90_1-1|0;var t=this.f90_1,n=this.g90_1[t];return this.g90_1[t]=null,null==n||null!=n?n:Nr()}return null},Pr(Ub).h5s=function(t){if(null!=t){var n=this.g90_1.length;if(n===this.f90_1){var i=n>>1,e=Math.max(i,12),r=hs(Array(n+e|0),null),s=this.g90_1;ps(s,r,0,0,n),this.g90_1=r}var u=this.g90_1,o=this.f90_1;this.f90_1=o+1|0,u[o]=t}},Pr(Hb).l6x=function(){return this.d6v_1===(this.c6v_1.h90()-1|0)},Pr(Hb).r7r=function(){return this.c6v_1.i90(this.d6v_1+1|0)},Pr(Wb).h90=function(){return this.d6x_1.length},Pr(Wb).e6x=function(){return Vo(this.d6x_1)},Pr(Wb).i90=function(t){return 0<=t&&t<=(this.d6x_1.length-1|0)?this.d6x_1[t]:null},Pr(Yb).y84=function(t){if(!(t>0)){var n=kr.y5i(kr.t5i_1,"LevelSetConfig","numLevelsForMinResolution","invalidResolution");throw is(Gr(n))}var i=Fh().k69(t),e=this.t84_1.m5i_1/this.x84_1/i,r=Math.log(e)/Math.log(2),s=Math.floor(r),u=ks(s);return u<0&&(u=0),u+1|0},Pr(Kb).o9=function(t,n){return this.n90_1(t,n)},Pr(Kb).compare=function(t,n){return this.o9(t,n)},Pr(Jb).o90=function(){return this.z68_1},Pr(Jb).p90=function(){return this.b69_1=this.b69_1.jb(),this.b69_1},Pr(Jb).q2=function(t){var n,i=this.a69_1.q2(t);return null==i?n=null:(i.m90_1=this.p90(),n=i.k90_1),n},Pr(Jb).d69=function(t,n,i){this.y68_1.gb(Ps(i)).ca(this.w68_1)>0&&this.q90(i);var e=new Gb(t,n,i);e.m90_1=this.p90();var r=this.y68_1,s=e.l90_1;this.y68_1=r.gb(Ps(s));var u=this.a69_1.g2(t,e);if(null!=u){var o=this.y68_1,_=u.l90_1;if(this.y68_1=o.hb(Ps(_)),e.k90_1!==u.k90_1)return this.r90(u.j90_1,u.k90_1,e.k90_1,!1),u.k90_1}return null},Pr(Jb).b1=function(){this.a69_1.b1(),this.y68_1=new Hr(0,0)},Pr(Jb).q90=function(t){var n=this.s90(),i=0,e=n.n()-1|0;if(i<=e)t:do{var r=i;i=i+1|0;var s=n.h1(r);if(!(this.y68_1.ca(this.x68_1)>0||this.w68_1.hb(this.y68_1).ca(Ps(t))<0))break t;this.a69_1.k2(s.j90_1);var u=this.y68_1,o=s.l90_1;this.y68_1=u.hb(Ps(o)),this.r90(s.j90_1,s.k90_1,null,!0)}while(i<=e)},Pr(Jb).s90=function(){return Bo(this.a69_1.e2(),this.o90())},Pr(Jb).r90=function(t,n,i,e){},Pr(n$).s73=function(t){return this.t90(this.y7w(t),t)},Pr(n$).y7w=function(t){var n=this.x7w(t)-2451545,i=Fh().n69(280.46+.9856474*n),e=Fh().j69(Fh().n69(357.528+.9856003*n)),r=2*e,s=i+1.915*Math.sin(e)+.02*Math.sin(r),u=Fh().j69(s),o=Fh().j69(23.439-4e-7*n),_=Fh(),h=Math.sin(o)*Math.sin(u),a=Math.asin(h),l=_.u5n(a),c=Fh(),f=Math.cos(o)*Math.tan(u),v=Math.atan(f),d=c.u5n(v);return s>=90&&s<270&&(d=Uh(d,Fh().y5m_1)),new t$(l,function(t){var n;if(0<=t&&t<=360)n=t;else{var i=Fh(),e=Fh().n69(t);n=i.p5r(e)}return n}(d))},Pr(n$).t90=function(t,n){var i=this.x7w(n)-2451545,e=Fh().n69(280.46061837+360.98564736629*i),r=-Fh().n69(e-t.a7x_1),s=Jh(Fh().p5r(r));return new ya(t.z7w_1,s)},Pr(n$).x7w=function(t){var n=Wo(t,ns().g3z_1),i=n.p3k(),e=n.q3k()+1|0,r=n.r3k(),s=(n.r3l()+n.v3l()/60+n.z3l()/3600)/24;e<=2&&(i=i-1|0,e=e+12|0);var u=i/100,o=Math.floor(u),_=o/4,h=2-o+Math.floor(_),a=365.25*(i+4716|0),l=30.6001*(e+1|0);return Math.floor(a)+Math.floor(l)+r+h-1524.5+s},Pr(i$).g6x=function(t,n,i){var e=t.c6v_1.x6w_1,r=t.c6v_1.y6w_1,s=t.e6v_1,u=r.t6d(s.m5i_1,e.m65_1),o=r.v6d(s.m5i_1,e.n65_1),_=r.u6d(s.n5i_1,e.o65_1),h=r.w6d(s.n5i_1,e.p65_1),a=Hh(r.m65_1,u*s.m5i_1),l=Hh(r.o65_1,_*s.n5i_1),c=a,f=u;if(f<=o)do{var v=f;f=f+1|0;var d=Uh(c,s.m5i_1),w=l,p=_;if(p<=h)do{var m=p;p=p+1|0;var g=Uh(w,s.n5i_1),y=new Ga(c,d,w,g);i.s(n.t6w(y,t,v,m)),w=g}while(m!==h);c=d}while(v!==o);return i},Pr(e$).k6x=function(t,n){var i,e=this.s6v_1.j6v_1*t.w67().h5o();if(t.w67().q5m())i=t.i5p_1;else{var r=e,s=Ph(this.u6u_1.j6a());e=r*Math.cos(s);var u=this.f6y(t),o=u.z5q(t.m5p_1);if(Li.f6x_1&&this.s6v_1.e6v_1.m5i_1<=5.625){var _=u.s5m(t.m5p_1),h=t.w67().r5m(this.u6u_1.j6a(),this.u6u_1.k6a(),this.w6v_1),a=e,l=_.u5m(h)/(_.d6d()*h.d6d());e=a*Math.abs(l)}i=t.g5o(o)}return e>i*n*t.d5p_1},Pr(e$).d6y=function(t){var n=this.s6v_1.r7r();if(null==n)return[];var i=n,e=this.u6u_1.m65_1,r=this.u6u_1.o65_1,s=this.u6u_1.j6a(),u=this.u6u_1.k6a(),o=this.u6u_1.n65_1,_=this.u6u_1.p65_1,h=Tr(2,this.t6v_1),a=Tr(2,this.u6v_1),l=new Ga(e,s,r,u),c=t.t6w(l,i,h,a);h=Tr(2,this.t6v_1),a=Tr(2,this.u6v_1)+1|0,l=new Ga(e,s,u,_);var f=t.t6w(l,i,h,a);h=Tr(2,this.t6v_1)+1|0,a=Tr(2,this.u6v_1),l=new Ga(s,o,r,u);var v=t.t6w(l,i,h,a);return h=Tr(2,this.t6v_1)+1|0,a=Tr(2,this.u6v_1)+1|0,l=new Ga(s,o,u,_),[c,f,v,t.t6w(l,i,h,a)]},Pr(e$).m6x=function(t,n,i){var e,r=n.q2(this.v6v_1);if(null==r){var s=this.d6y(t);n.d69(this.v6v_1,s,i),e=s}else e=r;return e},Pr(o$).z90=function(t,n){var i=this.v90_1<0?2:1;if(0===t)return this.x90_1+this.y90_1;if(n<0&&t>0){var e=t-this.y90_1.length|0;return e=0){this.p91_1=this.p91_1-1|0;var e=this.s91_1;this.s91_1=e+1|0,new I$(this,e).d92()}else this.r91_1.s5(n)}return this},Pr(R$).ye=function(){this.p91_1>=this.n91_1.length&&this.t91("unexpected end of string inside format specification");var t=this.p91_1;return this.p91_1=t+1|0,Hs(this.n91_1,t)},Pr(R$).t91=function(t){throw is("bad format: "+t+" at ofset "+(this.p91_1-1|0)+' of "'+this.n91_1+'"')},Pr(R$).toString=function(){return this.r91_1.toString()},Pr(R$).a92=function(t){return this.g92(t)},Pr(R$).z91=function(t){return Gr(us(this.o91_1[t]))},Pr(R$).b92=function(t){return this.g92(t).oa_1},Pr(R$).c92=function(t){this.r91_1.r5(t),this.q91_1=-1},Pr(R$).u91=function(t){var n=this.g92(t);return n instanceof a_?Wo(n,ns().z3z()):n instanceof h_?n:n instanceof __?o_(n,0,0,0):Wo(function(t){if(!(t instanceof Date))throw is("Can't convert to LocalDateTime: "+Gr(t));return Vr().j3z(Us(t.getTime()))}(n),ns().z3z())},Pr(R$).g92=function(t){var n=us(this.o91_1[t]);return null!=n?n:Nr()},Pr(R$).e92=function(){this.s91_1=this.s91_1-1|0},Pr(P$).k8z=function(t){return(null==Ji&&new F$,Ji).k8z(t)},Pr(P$).k8l=function(){return nk().k8l()},Pr(P$).a8z=function(t,n,i,e){(t instanceof ik?t:Nr()).q93(n,i,e)},Pr(P$).b8z=function(t,n,i){(t instanceof ik?t:Nr()).r93(n,i)},Pr(P$).i8z=function(t,n,i,e){(t instanceof ik?t:Nr()).s93(n,i,e)},Pr(P$).c8z=function(t,n){(t instanceof ik?t:Nr()).t93(n)},Pr(P$).d8z=function(t){(t instanceof ik?t:Nr()).u93()},Pr(P$).g8z=function(t){(t instanceof ik?t:Nr()).v93()},Pr(P$).h8z=function(t){(t instanceof ik?t:Nr()).w93()},Pr(L$).r8y=function(t){},Pr(L$).s8y=function(t){},Pr(L$).t8y=function(t){},Pr(L$).u8y=function(){},Pr(L$).v8y=function(t){},Pr(L$).w8y=function(t,n,i,e){},Pr(L$).x8y=function(t,n){},Pr(L$).n8y=function(t,n){},Pr(L$).l8y=function(t,n){},Pr(L$).y8y=function(t){},Pr(L$).p8y=function(t,n){},Pr(L$).l8w=function(t,n,i,e,r){},Pr(F$).k8z=function(t){return 0===t?"no error":t>=100900&&t<=100904?this.h92_1[t-100900|0]:t>=100151&&t<=100158?this.h92_1[t-100150|0]:null},Pr(V$).g94=function(t,n){return new B$(new W$,t,n)},Pr(V$).h94=function(t){},Pr(V$).i94=function(t,n){return this.m94(t,t.j94_1,n)},Pr(V$).m94=function(t,n,i){var e=n;do{e=e.p94_1}while(null!=e.n94_1&&!t.l94_1.q94(t.k94_1,e.n94_1,i));var r=new W$(i);r.p94_1=e,r.o94_1=e.o94_1;var s=r;return e.o94_1.p94_1=s,e.o94_1=s,s},Pr(V$).r94=function(t){return t.n94_1},Pr(V$).s94=function(t){return t.o94_1},Pr(V$).t94=function(t){return t.p94_1},Pr(V$).u94=function(t){return t.j94_1.o94_1},Pr(V$).v94=function(t){t.o94_1.p94_1=t.p94_1,t.p94_1.o94_1=t.o94_1},Pr(V$).w94=function(t,n){var i=t.j94_1;do{i=i.o94_1}while(null!=i.n94_1&&!t.l94_1.q94(t.k94_1,n,i.n94_1));return i},Pr(tk).k8l=function(){return new ik},Pr(ik).q93=function(t,n,i){this.o92_1[0]=t,this.o92_1[1]=n,this.o92_1[2]=i},Pr(ik).r93=function(t,n){100100===t?this.e93_1=null==n?nk().k92_1:n:100106===t?this.k93_1=null==n?nk().k92_1:n:100104===t?(this.f93_1=null==n?nk().k92_1:n,this.x92_1=!(null==n)):100110===t?(this.e93_1=null==n?nk().k92_1:n,this.l93_1=this.e93_1,this.x92_1=!(null==n)):100101===t?this.g93_1=null==n?nk().k92_1:n:100107===t?this.m93_1=null==n?nk().k92_1:n:100102===t?this.h93_1=null==n?nk().k92_1:n:100108===t?this.n93_1=null==n?nk().k92_1:n:100103===t?this.i93_1=null==n?nk().k92_1:n:100109===t?this.o93_1=null==n?nk().k92_1:n:100105===t?this.j93_1=null==n?nk().k92_1:n:100111===t?this.p93_1=null==n?nk().k92_1:n:this.s95(100900)},Pr(ik).s93=function(t,n,i){var e=!1,r=new Float64Array(3);if(J$(this,2),this.a93_1){if(!Q$(this))return this.s95(100902),Xr;this.m92_1=null}for(var s=0;s<3;){var u=t[s+n|0];u<-1e150&&(u=-1e150,e=!0),u>1e150&&(u=1e150,e=!0),r[s]=u,s=s+1|0}if(e&&this.s95(100155),null==this.n92_1){if(this.b93_1<100)return function(t,n,i){var e=t.c93_1[t.b93_1];e.f94_1=i,e.e94_1[0]=n[0],e.e94_1[1]=n[1],e.e94_1[2]=n[2],t.b93_1=t.b93_1+1|0}(this,r,i),Xr;if(!Q$(this))return this.s95(100902),Xr}Z$(this,r,i)||this.s95(100902)},Pr(ik).t93=function(t){J$(this,0),this.l92_1=1,this.b93_1=0,this.a93_1=!1,this.n92_1=null,this.d93_1=t},Pr(ik).u93=function(){J$(this,1),this.l92_1=2,this.m92_1=null,this.b93_1>0&&(this.a93_1=!0)},Pr(ik).v93=function(){J$(this,2),this.l92_1=1},Pr(ik).w93=function(){try{if(J$(this,1),this.l92_1=0,null==this.n92_1){if(!this.x92_1&&Ok().k96(this))return this.d93_1=null,Xr;if(!Q$(this))throw l_()}if((null==ie&&new ok,ie).p96(this),!se.s96(this))throw l_();var t=us(this.n92_1);if(!this.t92_1){if(!(this.y92_1?ue.u96(t,1,!0):ue.t96(t)))throw l_();ne.v96(t),this.e93_1===nk().k92_1&&this.h93_1===nk().k92_1&&this.g93_1===nk().k92_1&&this.f93_1===nk().k92_1&&this.k93_1===nk().k92_1&&this.n93_1===nk().k92_1&&this.m93_1===nk().k92_1&&this.l93_1===nk().k92_1||(this.y92_1?Ok().x96(this,t):Ok().w96(this,t))}ne.r95(t),this.d93_1=null}catch(t){if(!(t instanceof bs))throw t;c_(t),this.s95(100902)}},Pr(ik).y96=function(t){this.k93_1!==nk().k92_1?this.k93_1.x8y(t,us(this.d93_1)):this.e93_1.r8y(t)},Pr(ik).z96=function(t){this.m93_1!==nk().k92_1?this.m93_1.l8y(t,us(this.d93_1)):this.g93_1.t8y(t)},Pr(ik).a97=function(t){this.l93_1!==nk().k92_1?this.l93_1.n8y(t,us(this.d93_1)):this.f93_1.s8y(t)},Pr(ik).b97=function(){this.n93_1!==nk().k92_1?this.n93_1.y8y(us(this.d93_1)):this.h93_1.u8y()},Pr(ik).c97=function(t,n,i,e){this.p93_1!==nk().k92_1?this.p93_1.l8w(t,n,i,e,us(this.d93_1)):this.j93_1.w8y(t,n,i,e)},Pr(ik).s95=function(t){this.o93_1!==nk().k92_1?this.o93_1.p8y(t,us(this.d93_1)):this.i93_1.v8y(t)},Pr(rk).d97=function(t,n,i){var e=n.b96_1-t.b96_1,r=i.b96_1-n.b96_1;return e+r>0?e0?(n.c96_1-i.c96_1)*e+(n.c96_1-t.c96_1)*r:0},Pr(rk).f97=function(t,n,i){var e=n.c96_1-t.c96_1,r=i.c96_1-n.c96_1;return e+r>0?e0?(n.b96_1-i.b96_1)*e+(n.b96_1-t.b96_1)*r:0},Pr(rk).h97=function(t,n,i,e){var r=t<0?0:t,s=i<0?0:i;return r<=s?0===s?(n+e)/2:n+r/(r+s)*(e-n):e+s/(r+s)*(n-e)},Pr(rk).i97=function(t,n,i,e,r){var s=t,u=n,o=i,_=e;if(!this.j97(s,u)){var h=s;s=u,u=h}if(!this.j97(o,_)){var a=o;o=_,_=a}if(!this.j97(s,o)){var l=s;s=o,o=l,l=u,u=_,_=l}if(this.j97(o,u))if(this.j97(u,_)){var c=this.d97(s,o,u),f=this.d97(o,u,_);c+f<0&&(c=-c,f=-f),r.b96_1=this.h97(c,o.b96_1,f,u.b96_1)}else{var v=this.e97(s,o,u),d=-this.e97(s,_,u);v+d<0&&(v=-v,d=-d),r.b96_1=this.h97(v,o.b96_1,d,_.b96_1)}else r.b96_1=(o.b96_1+u.b96_1)/2;if(!this.k97(s,u)){var w=s;s=u,u=w}if(!this.k97(o,_)){var p=o;o=_,_=p}if(!this.k97(s,o)){var m=o;o=s,s=m,m=_,_=u,u=m}if(this.k97(o,u))if(this.k97(u,_)){var g=this.f97(s,o,u),y=this.f97(o,u,_);g+y<0&&(g=-g,y=-y),r.c96_1=this.h97(g,o.c96_1,y,u.c96_1)}else{var b=this.g97(s,o,u),$=-this.g97(s,_,u);b+$<0&&(b=-b,$=-$),r.c96_1=this.h97(b,o.c96_1,$,_.c96_1)}else r.c96_1=(o.c96_1+u.c96_1)/2},Pr(rk).l97=function(t,n){return t.b96_1===n.b96_1&&t.c96_1===n.c96_1},Pr(rk).j97=function(t,n){return t.b96_1Math.abs(r)&&(n=1);var s=t[2],u=Math.abs(s),o=t[n];return u>Math.abs(o)&&(n=2),n},Pr(ok).b98=function(t,n){var i=t.n92_1,e=us(null==i?null:i.n95_1),r=new Float64Array(3),s=new Float64Array(3),u=hs(Array(3),null),o=hs(Array(3),null),_=new Float64Array(3),h=new Float64Array(3),a=new Float64Array(3);r[2]=-2e150,r[1]=r[2],r[0]=r[1],s[2]=2e150,s[1]=s[2],s[0]=s[1];for(var l=us(e.w95_1);l!==e;){for(var c=0;c<3;){var f=l.a96_1[c];fr[c]&&(r[c]=f,o[c]=l),c=c+1|0}l=us(l.w95_1)}var v=0;if(r[1]-s[1]>r[0]-s[0]&&(v=1),r[2]-s[2]>r[v]-s[v]&&(v=2),s[v]>=r[v])return n[0]=0,n[1]=0,n[2]=1,Xr;var d=0,w=us(u[v]),p=us(o[v]);for(_[0]=w.a96_1[0]-p.a96_1[0],_[1]=w.a96_1[1]-p.a96_1[1],_[2]=w.a96_1[2]-p.a96_1[2],l=us(e.w95_1);l!==e;){h[0]=l.a96_1[0]-p.a96_1[0],h[1]=l.a96_1[1]-p.a96_1[1],h[2]=l.a96_1[2]-p.a96_1[2],a[0]=_[1]*h[2]-_[2]*h[1],a[1]=_[2]*h[0]-_[0]*h[2],a[2]=_[0]*h[1]-_[1]*h[0];var m=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];m>d&&(d=m,n[0]=a[0],n[1]=a[1],n[2]=a[2]),l=us(l.w95_1)}d<=0&&(n[2]=0,n[1]=n[2],n[0]=n[1],n[this.a98(_)]=1)},Pr(ok).c98=function(t){for(var n=t.n92_1,i=us(null==n?null:n.o95_1),e=t.n92_1,r=us(null==e?null:e.n95_1),s=0,u=us(i.x94_1);u!==i;){var o=us(u.z94_1);if(o.m95_1<=0)u=us(u.x94_1);else{do{s+=(us(o.j95_1).b96_1-us(us(o.g95_1).j95_1).b96_1)*(us(o.j95_1).c96_1+us(us(o.g95_1).j95_1).c96_1),o=us(o.i95_1)}while(o!==u.z94_1);u=us(u.x94_1)}}if(s<0){for(var _=us(r.w95_1);_!==r;)_.c96_1=-_.c96_1,_=us(_.w95_1);t.q92_1[0]=-t.q92_1[0],t.q92_1[1]=-t.q92_1[1],t.q92_1[2]=-t.q92_1[2]}},Pr(ok).p96=function(t){var n=t.n92_1,i=us(null==n?null:n.n95_1),e=new Float64Array(3),r=!1;e[0]=t.o92_1[0],e[1]=t.o92_1[1],e[2]=t.o92_1[2],0===e[0]&&0===e[1]&&0===e[2]&&(this.b98(t,e),r=!0);var s=t.p92_1,u=t.q92_1,o=this.a98(e);s[o]=0,s[(o+1|0)%3|0]=this.m96_1,s[(o+2|0)%3|0]=this.n96_1,u[o]=0,u[(o+1|0)%3|0]=e[o]>0?-this.n96_1:this.n96_1,u[(o+2|0)%3|0]=e[o]>0?this.m96_1:-this.m96_1;for(var _=us(i.w95_1);_!==i;)_.b96_1=uk(0,_.a96_1,s),_.c96_1=uk(0,_.a96_1,u),_=us(_.w95_1);r&&this.c98(t)},Pr(ak).h98=function(t,n){var i=te,e=t instanceof ek?t:Nr();return i.j97(e,n instanceof ek?n:Nr())},Pr(ak).i98=function(){return new pk},Pr(ck).j98=function(){this.q98_1=[],this.p98_1=[]},Pr(ck).v98=function(t){var n=t,i=this.p98_1,e=this.q98_1,r=i[n].d98_1;t:for(;;){var s=n<<1;sthis.r98_1||ee.h98(us(e[r].e98_1),us(e[u].e98_1))){i[n].d98_1=r,e[r].f98_1=n;break t}i[n].d98_1=u,e[u].f98_1=n,n=s}},Pr(ck).w98=function(t){var n=t,i=this.p98_1,e=this.q98_1,r=i[n].d98_1;t:for(;;){var s=n>>1,u=i[s].d98_1;if(0===s||ee.h98(us(e[u].e98_1),us(e[r].e98_1))){i[n].d98_1=r,e[r].f98_1=n;break t}i[n].d98_1=u,e[u].f98_1=n,n=s}},Pr(ck).k98=function(){for(var t=this.r98_1;t>=1;)this.v98(t),t=t-1|0;return this.u98_1=!0,!0},Pr(ck).l98=function(t){var n;this.r98_1=this.r98_1+1|0;var i=this.r98_1;if(Tr(i,2)>this.s98_1){this.s98_1=this.s98_1<<1;for(var e=0,r=this.s98_1+1|0,s=hs(Array(r),null);e0&&(t[1].d98_1=t[this.r98_1].d98_1,n[t[1].d98_1].f98_1=1,n[i].e98_1=null,n[i].f98_1=this.t98_1,this.t98_1=i,this.r98_1=this.r98_1-1|0,this.r98_1>0&&this.v98(1)),e},Pr(ck).n98=function(t){var n=this.p98_1,i=this.q98_1,e=i[t].f98_1;n[e].d98_1=n[this.r98_1].d98_1,i[n[e].d98_1].f98_1=e,this.r98_1=this.r98_1-1|0,e<=this.r98_1&&(e<=1||ee.h98(us(i[n[e>>1].d98_1].e98_1),us(i[n[e].d98_1].e98_1))?this.v98(e):this.w98(e)),i[t].e98_1=null,i[t].f98_1=this.t98_1,this.t98_1=t},Pr(ck).o98=function(){return this.q98_1[this.p98_1[1].d98_1].e98_1},Pr(ck).x98=function(){return 0===this.r98_1},Pr(pk).j98=function(){this.a99_1.j98(),this.c99_1=null,this.b99_1=null},Pr(pk).k98=function(){var t=hs(Array(50),null),n=0,i=t.length-1|0;if(n<=i)do{var e=n;n=n+1|0,t[e]=new dk}while(n<=i);var r=0,s=2016473283;this.c99_1=new Int32Array(this.d99_1+1|0);for(var u=0,o=this.d99_1-1|0,_=0,h=u;h<=o;)us(this.c99_1)[h]=_,_=_+1|0,h=h+1|0;var a=t[r];null!=a&&(a.y98_1=u);var l,c,f=t[r];for(null!=f&&(f.z98_1=o),r=r+1|0;(r=r-1|0)>=0;){for(u=us(t[r]).y98_1,o=us(t[r]).z98_1;o>(u+10|0);){h=u+((s=Fs(Tr(s,1539415821)+1|0))%(1+(o-u|0)|0)|0)|0,_=us(this.c99_1)[h],us(this.c99_1)[h]=us(this.c99_1)[u],us(this.c99_1)[u]=_,h=u-1|0;var v=o+1|0;do{do{h=h+1|0}while(l=us(us(this.b99_1)[us(this.c99_1)[h]]),c=us(us(this.b99_1)[_]),!ee.h98(l,c));do{v=v-1|0}while(fk(0,us(us(this.b99_1)[us(this.c99_1)[v]]),us(us(this.b99_1)[_])));vk(0,us(this.c99_1),h,v)}while(hu&&fk(0,us(us(this.b99_1)[us(this.c99_1)[g-1|0]]),us(us(this.b99_1)[_]));)us(this.c99_1)[g]=us(this.c99_1)[g-1|0],g=g-1|0;us(this.c99_1)[g]=_,h=h+1|0}}return this.e99_1=this.d99_1,this.f99_1=!0,this.a99_1.k98(),!0},Pr(pk).l98=function(t){if(this.f99_1)return this.a99_1.l98(t);var n=this.d99_1;if(this.d99_1=this.d99_1+1|0,this.d99_1>=this.e99_1){this.e99_1=this.e99_1<<1;var i=this.e99_1,e=hs(Array(i),null),r=this.b99_1;if(null==r);else{var s=r.length;ps(r,e,0,0,s)}this.b99_1=e}return us(this.b99_1)[n]=t,0|-(n+1|0)},Pr(pk).m98=function(){if(0===this.d99_1)return this.a99_1.m98();var t=us(us(this.b99_1)[us(this.c99_1)[this.d99_1-1|0]]);if(!this.a99_1.x98()){var n=us(this.a99_1.o98());if(ee.h98(n,t))return this.a99_1.m98()}do{this.d99_1=this.d99_1-1|0}while(this.d99_1>0&&null==us(this.b99_1)[us(this.c99_1)[this.d99_1-1|0]]);return t},Pr(pk).o98=function(){if(0===this.d99_1)return this.a99_1.o98();var t=us(us(this.b99_1)[us(this.c99_1)[this.d99_1-1|0]]);if(!this.a99_1.x98()){var n=us(this.a99_1.o98());if(ee.h98(n,t))return n}return t},Pr(pk).n98=function(t){var n=t;if(n>=0)return this.a99_1.n98(n),Xr;for(n=0|-(n+1|0),us(this.b99_1)[n]=null;this.d99_1>0&&null==us(this.b99_1)[us(this.c99_1)[this.d99_1-1|0]];)this.d99_1=this.d99_1-1|0},Pr(qk).j99=function(t,n,i){t.z92_1=bk(Ok(),us(n.k95_1),t.z92_1)},Pr(Sk).j99=function(t,n,i){var e=n,r=i;t.y96(cr);var s=e.j95_1;t.z96(us(null==s?null:s.z95_1));var u=e.g95_1,o=null==u?null:u.j95_1;for(t.z96(us(null==o?null:o.z95_1));!yk(Ok(),us(e.k95_1));){var _=e.k95_1;null!=_&&(_.c95_1=!0),r=r.kb();var h=(e=us(e.h95_1)).g95_1,a=null==h?null:h.j95_1;t.z96(us(null==a?null:a.z95_1))}t.b97()},Pr(Ck).j99=function(t,n,i){var e=n,r=i;t.y96(Wk());var s=e.j95_1;t.z96(us(null==s?null:s.z95_1));var u=e.g95_1,o=null==u?null:u.j95_1;t.z96(us(null==o?null:o.z95_1));t:for(;!yk(Ok(),us(e.k95_1));){var _=e.k95_1;null!=_&&(_.c95_1=!0),r=r.kb();var h=e.i95_1,a=(e=us(null==h?null:h.g95_1)).j95_1;if(t.z96(us(null==a?null:a.z95_1)),yk(Ok(),us(e.k95_1)))break t;var l=e.k95_1;null!=l&&(l.c95_1=!0),r=r.kb();var c=(e=us(e.h95_1)).g95_1,f=null==c?null:c.j95_1;t.z96(us(null==f?null:f.z95_1))}t.b97()},Pr(Ek).w96=function(t,n){t.z92_1=null;for(var i=us(n.o95_1.x94_1);i!==n.o95_1;)i.c95_1=!1,i=us(i.x94_1);for(i=us(n.o95_1.x94_1);i!==n.o95_1;)i.d95_1&&!i.c95_1&&this.k99(t,i),i=us(i.x94_1);null!=t.z92_1&&(this.l99(t,t.z92_1),t.z92_1=null)},Pr(Ek).k99=function(t,n){var i=us(n.z94_1),e=mk();if(e.g99_1=new Hr(1,0),e.h99_1=i,e.i99_1=this.i96_1,!t.x92_1){var r=this.m99(i);r.g99_1.ca(e.g99_1)>0&&(e=r),(r=this.m99(us(i.i95_1))).g99_1.ca(e.g99_1)>0&&(e=r);var s=i.h95_1;(r=this.m99(us(null==s?null:s.g95_1))).g99_1.ca(e.g99_1)>0&&(e=r),(r=this.n99(i)).g99_1.ca(e.g99_1)>0&&(e=r),(r=this.n99(us(i.i95_1))).g99_1.ca(e.g99_1)>0&&(e=r);var u=i.h95_1;(r=this.n99(us(null==u?null:u.g95_1))).g99_1.ca(e.g99_1)>0&&(e=r)}var o=e.i99_1;null==o||o.j99(t,us(e.h99_1),e.g99_1)},Pr(Ek).m99=function(t){for(var n=gk(new Hr(0,0),null,this.g96_1),i=null,e=t;!yk(0,us(e.k95_1));)i=bk(0,us(e.k95_1),i),n.g99_1=n.g99_1.jb(),e=us(e.h95_1);e=t;t:for(;;){var r=e.g95_1;if(yk(0,us(null==r?null:r.k95_1)))break t;var s=e.g95_1;i=bk(0,us(null==s?null:s.k95_1),i),n.g99_1=n.g99_1.jb();var u=e.g95_1;e=us(null==u?null:u.i95_1)}return n.h99_1=e,$k(0,i),n},Pr(Ek).n99=function(t){var n=gk(new Hr(0,0),null,this.h96_1),i=new Hr(0,0),e=new Hr(0,0),r=null,s=t;t:for(;!yk(0,us(s.k95_1));){r=bk(0,us(s.k95_1),r),e=e.jb();var u=s.i95_1;if(s=us(null==u?null:u.g95_1),yk(0,us(s.k95_1)))break t;r=bk(0,us(s.k95_1),r),e=e.jb(),s=us(s.h95_1)}var o=s;s=t;t:for(;;){var _=s.g95_1;if(yk(0,us(null==_?null:_.k95_1)))break t;var h=s.g95_1;r=bk(0,us(null==h?null:h.k95_1),r),i=i.jb();var a=s.g95_1,l=(s=us(null==a?null:a.i95_1)).g95_1;if(yk(0,us(null==l?null:l.k95_1)))break t;var c=s.g95_1;r=bk(0,us(null==c?null:c.k95_1),r),i=i.jb();var f=s.g95_1,v=null==f?null:f.h95_1;s=us(null==v?null:v.g95_1)}var d=s;return n.g99_1=e.gb(i),kk(0,e)?n.h99_1=o.g95_1:kk(0,i)?n.h99_1=d:(n.g99_1=n.g99_1.kb(),n.h99_1=d.h95_1),$k(0,r),n},Pr(Ek).l99=function(t,n){var i=n,e=-1;for(t.y96(Kk());null!=i;){var r=us(i.z94_1);do{if(t.x92_1){var s=us(us(r.g95_1).k95_1).d95_1?0:1;e!==s&&(e=s,t.a97(!(0===e)))}var u=r.j95_1;t.z96(us(null==u?null:u.z95_1)),r=us(r.i95_1)}while(r!==i.z94_1);i=i.b95_1}t.b97()},Pr(Ek).x96=function(t,n){for(var i=us(n.o95_1.x94_1);i!==n.o95_1;){if(i.d95_1){t.y96(lr);var e=us(i.z94_1);do{var r=e.j95_1;t.z96(us(null==r?null:r.z95_1)),e=us(e.i95_1)}while(e!==i.z94_1);t.b97()}i=us(i.x94_1)}},Pr(Ek).o99=function(t,n,i){var e=t.c93_1,r=t.b93_1,s=new Float64Array(3),u=0;i||(n[2]=0,n[1]=n[2],n[0]=n[1]);for(var o=1,_=e[o].e94_1[0]-e[0].e94_1[0],h=e[o].e94_1[1]-e[0].e94_1[1],a=e[o].e94_1[2]-e[0].e94_1[2];(o=o+1|0)0){if(u<0)return 2;d=1}else{if(u>0)return 2;d=-1}u=d}}else v>=0?(n[0]=n[0]+s[0],n[1]=n[1]+s[1],n[2]=n[2]+s[2]):(n[0]=n[0]-s[0],n[1]=n[1]-s[1],n[2]=n[2]-s[2])}return u},Pr(Ek).k96=function(t){t.c93_1,t.b93_1;var n=new Float64Array(3);if(t.b93_1<3)return!0;n[0]=t.o92_1[0],n[1]=t.o92_1[1],n[2]=t.o92_1[2],0===n[0]&&0===n[1]&&0===n[2]&&this.o99(t,n,!1);var i=this.o99(t,n,!0);return 2!==i&&(0===i||!1)},Pr(Ak).q94=function(t,n,i){var e=se,r=n instanceof U$?n:Nr();return e.q99(this.p99_1,r,i instanceof U$?i:Nr())},Pr(Ik).q99=function(t,n,i){var e=us(t.w92_1),r=n.x93_1,s=i.x93_1,u=r.g95_1;if((null==u?null:u.j95_1)===e){var o,_=s.g95_1;if((null==_?null:_.j95_1)===e){var h;if(te.j97(us(r.j95_1),us(s.j95_1))){var a=te,l=s.g95_1;h=a.e97(us(null==l?null:l.j95_1),us(r.j95_1),us(s.j95_1))<=0}else{var c=te,f=r.g95_1;h=c.e97(us(null==f?null:f.j95_1),us(s.j95_1),us(r.j95_1))>=0}o=h}else{var v=te,d=s.g95_1;o=v.e97(us(null==d?null:d.j95_1),e,us(s.j95_1))<=0}return o}var w=s.g95_1;if((null==w?null:w.j95_1)===e){var p=te,m=r.g95_1;return p.e97(us(null==m?null:m.j95_1),e,us(r.j95_1))>=0}var g=te,y=r.g95_1,b=g.d97(us(null==y?null:y.j95_1),e,us(r.j95_1)),$=te,k=s.g95_1;return b>=$.d97(us(null==k?null:k.j95_1),e,us(s.j95_1))},Pr(Ik).r99=function(t){t.x93_1.l95_1=null,Zi.v94(us(t.y93_1))},Pr(Ik).s99=function(t,n){return!!ne.w97(t.x93_1)&&(t.d94_1=!1,t.x93_1=n,n.l95_1=t,!0)},Pr(Ik).t99=function(t){var n=t,i=n.x93_1.j95_1;do{n=us(Tk(0,n))}while(n.x93_1.j95_1===i);if(n.d94_1){var e=ne.y97(us(zk(0,n).x93_1.g95_1),us(n.x93_1.i95_1));if(!this.s99(n,e))return null;n=us(Tk(0,n))}return n},Pr(Ik).u99=function(t){var n=t,i=n.x93_1.g95_1,e=null==i?null:i.j95_1;do{var r=(n=us(Tk(0,n))).x93_1.g95_1}while((null==r?null:r.j95_1)===e);return n},Pr(Ik).v99=function(t,n,i){var e=new U$(i);return e.y93_1=Zi.m94(us(t.u92_1),us(n.y93_1),e),e.d94_1=!1,e.b94_1=!1,e.c94_1=!1,i.l95_1=e,e},Pr(Ik).w99=function(t,n){var i=t.s92_1;if(100130===i)return!(0==(1&n));if(100131===i)return!(0===n);if(100132===i)return n>0;if(100133===i)return n<0;if(100134===i)return n>=2||n<=-2;throw l_()},Pr(Ik).x99=function(t,n){n.z93_1=us(Tk(0,n)).z93_1+n.x93_1.m95_1|0,n.a94_1=this.w99(t,n.z93_1)},Pr(Ik).y99=function(t){var n=t.x93_1,i=us(n.k95_1);i.d95_1=t.a94_1,i.z94_1=n,this.r99(t)},Pr(Ik).z99=function(t,n){var i=t,e=t.x93_1;t:for(;i!==n;){i.d94_1=!1;var r=zk(0,i),s=r.x93_1;if(s.j95_1!==e.j95_1){if(!r.d94_1){this.y99(i);break t}var u=ne,o=e.h95_1;if(s=u.y97(us(null==o?null:o.g95_1),us(s.g95_1)),!this.s99(r,s))throw l_()}if(e.h95_1!==s){var _=ne,h=s.g95_1;if(!_.v95(us(null==h?null:h.i95_1),s))throw l_();if(!ne.v95(e,s))throw l_()}this.y99(i),e=r.x93_1,i=r}return e},Pr(Ik).a9a=function(t,n,i,e,r,s){var u=r,o=!0,_=i;do{this.v99(t,n,us(_.g95_1)),_=us(_.h95_1)}while(_!==e);if(null==u){var h=zk(0,n).x93_1.g95_1;u=null==h?null:h.h95_1}for(var a,l=n,c=us(u);a=zk(0,l),(_=us(a.x93_1.g95_1)).j95_1===c.j95_1;){if(_.h95_1!==c){var f=ne,v=_.g95_1;if(!f.v95(us(null==v?null:v.i95_1),_))throw l_();var d=ne,w=c.g95_1;if(!d.v95(us(null==w?null:w.i95_1),_))throw l_()}if(a.z93_1=l.z93_1-_.m95_1|0,a.a94_1=this.w99(t,a.z93_1),l.c94_1=!0,!o&&this.b9a(t,l)&&(jk(0,_,c),this.r99(l),!ne.w97(c)))throw l_();o=!1,l=a,c=_}l.c94_1=!0,s&&this.c9a(t,l)},Pr(Ik).d9a=function(t,n,i,e,r){var s=new Float64Array(3);s[0]=n.a96_1[0],s[1]=n.a96_1[1],s[2]=n.a96_1[2];var u=hs(Array(1),null);t.c97(s,i,e,u),n.z95_1=u[0],null==n.z95_1&&(r?t.t92_1||(t.s95(100156),t.t92_1=!0):n.z95_1=i[0])},Pr(Ik).e9a=function(t,n,i){var e=hs(Array(4),null),r=new Float32Array([.5,.5,0,0]),s=n.j95_1;e[0]=null==s?null:s.z95_1;var u=i.j95_1;if(e[1]=null==u?null:u.z95_1,this.d9a(t,us(n.j95_1),e,r,!1),!ne.v95(n,i))throw l_()},Pr(Ik).f9a=function(t,n,i,e){var r=te.o97(n,t),s=te.o97(i,t);e[0]=.5*s/(r+s),e[1]=.5*r/(r+s);var u=t.a96_1;u[0]=u[0]+(e[0]*n.a96_1[0]+e[1]*i.a96_1[0]);var o=t.a96_1;o[1]=o[1]+(e[0]*n.a96_1[1]+e[1]*i.a96_1[1]);var _=t.a96_1;_[2]=_[2]+(e[0]*n.a96_1[2]+e[1]*i.a96_1[2])},Pr(Ik).g9a=function(t,n,i,e,r,s){var u=hs(Array(4),null),o=new Float32Array(4),_=new Float32Array(2),h=new Float32Array(2);u[0]=i.z95_1,u[1]=e.z95_1,u[2]=r.z95_1,u[3]=s.z95_1,n.a96_1[2]=0,n.a96_1[1]=n.a96_1[2],n.a96_1[0]=n.a96_1[1],this.f9a(n,i,e,_),this.f9a(n,r,s,h);var a=_.length;ps(_,o,0,0,a);var l=h.length;ps(h,o,2,0,l),this.d9a(t,n,u,o,!0)},Pr(Ik).b9a=function(t,n){var i=zk(0,n),e=n.x93_1,r=i.x93_1;if(te.j97(us(e.j95_1),us(r.j95_1))){var s=te,u=r.g95_1;if(s.e97(us(null==u?null:u.j95_1),us(e.j95_1),us(r.j95_1))>0)return!1;if(te.l97(us(e.j95_1),us(r.j95_1))){if(e.j95_1!==r.j95_1){var o=t.v92_1;if(null==o);else{var _=e.j95_1;o.n98(us(null==_?null:_.d96_1))}var h=r.g95_1;this.e9a(t,us(null==h?null:h.i95_1),e)}}else{ne.t95(us(r.g95_1));var a=ne,l=r.g95_1;if(!a.v95(e,us(null==l?null:l.i95_1)))throw l_();i.c94_1=!0,n.c94_1=i.c94_1}}else{var c=te,f=e.g95_1;if(c.e97(us(null==f?null:f.j95_1),us(r.j95_1),us(e.j95_1))<0)return!1;n.c94_1=!0;var v=Tk(0,n);null!=v&&(v.c94_1=n.c94_1),ne.t95(us(e.g95_1));var d=ne,w=r.g95_1;if(!d.v95(us(null==w?null:w.i95_1),e))throw l_()}return!0},Pr(Ik).h9a=function(t){var n=zk(0,t),i=t.x93_1,e=n.x93_1,r=te,s=i.g95_1,u=us(null==s?null:s.j95_1),o=e.g95_1;if(r.j97(u,us(null==o?null:o.j95_1))){var _=te,h=i.g95_1,a=us(null==h?null:h.j95_1),l=e.g95_1;if(_.e97(a,us(null==l?null:l.j95_1),us(i.j95_1))<0)return!1;t.c94_1=!0;var c=Tk(0,t);null!=c&&(c.c94_1=t.c94_1);var f=ne.t95(i);if(!ne.v95(us(e.g95_1),f))throw l_();var v=f.k95_1;null!=v&&(v.d95_1=t.a94_1)}else{var d=te,w=e.g95_1,p=us(null==w?null:w.j95_1),m=i.g95_1;if(d.e97(p,us(null==m?null:m.j95_1),us(e.j95_1))>0)return!1;n.c94_1=!0,t.c94_1=n.c94_1;var g=ne.t95(e);if(!ne.v95(us(i.i95_1),us(e.g95_1)))throw l_();var y=g.g95_1,b=null==y?null:y.k95_1;null!=b&&(b.d95_1=t.a94_1)}return!0},Pr(Ik).i9a=function(t,n){var i=n,e=zk(0,i),r=i.x93_1,s=e.x93_1,u=us(r.j95_1),o=us(s.j95_1),_=r.g95_1,h=us(null==_?null:_.j95_1),a=s.g95_1,l=us(null==a?null:a.j95_1),c=new ek;if(u===o)return!1;if(zu(u.c96_1,h.c96_1)>yu(o.c96_1,l.c96_1))return!1;if(te.j97(u,o)){if(te.e97(l,u,o)>0)return!1}else if(te.e97(h,o,u)<0)return!1;te.i97(h,u,l,o,c),te.j97(c,us(t.w92_1))&&(c.b96_1=us(t.w92_1).b96_1,c.c96_1=us(t.w92_1).c96_1);var f=te.j97(u,o)?u:o;if(te.j97(f,c)&&(c.b96_1=f.b96_1,c.c96_1=f.c96_1),te.l97(c,u)||te.l97(c,o))return this.b9a(t,i),!1;if(!te.l97(h,us(t.w92_1))&&te.e97(h,us(t.w92_1),c)>=0||!te.l97(l,us(t.w92_1))&&te.e97(l,us(t.w92_1),c)<=0){if(l===t.w92_1){if(ne.t95(us(r.g95_1)),!ne.v95(us(s.g95_1),r))throw l_();r=zk(0,i=us(this.t99(i))).x93_1,this.z99(zk(0,i),e);var v=i,d=r.g95_1;return this.a9a(t,v,us(null==d?null:d.i95_1),r,r,!0),!0}if(h===t.w92_1){ne.t95(us(s.g95_1));var w=ne,p=us(r.i95_1),m=s.g95_1;if(!w.v95(p,us(null==m?null:m.i95_1)))throw l_();e=i;var g=zk(0,i=this.u99(i)).x93_1.g95_1,y=null==g?null:g.h95_1,b=e,$=s.g95_1;b.x93_1=us(null==$?null:$.i95_1),s=this.z99(e,null);var k=i,x=us(s.h95_1),q=r.g95_1;return this.a9a(t,k,x,null==q?null:q.h95_1,y,!0),!0}if(te.e97(h,us(t.w92_1),c)>=0){i.c94_1=!0;var S=Tk(0,i);null!=S&&(S.c94_1=i.c94_1),ne.t95(us(r.g95_1));var C=r.j95_1;null!=C&&(C.b96_1=us(t.w92_1).b96_1);var E=r.j95_1;null!=E&&(E.c96_1=us(t.w92_1).c96_1)}if(te.e97(l,us(t.w92_1),c)<=0){e.c94_1=!0,i.c94_1=e.c94_1,ne.t95(us(s.g95_1));var O=s.j95_1;null!=O&&(O.b96_1=us(t.w92_1).b96_1);var j=s.j95_1;null!=j&&(j.c96_1=us(t.w92_1).c96_1)}return!1}ne.t95(us(r.g95_1)),ne.t95(us(s.g95_1));var z=ne,T=s.g95_1;if(!z.v95(us(null==T?null:T.i95_1),r))throw l_();var A=r.j95_1;null!=A&&(A.b96_1=c.b96_1);var I=r.j95_1;null!=I&&(I.c96_1=c.c96_1);var D=r.j95_1;null!=D&&(D.d96_1=us(t.v92_1).l98(r.j95_1)),this.g9a(t,us(r.j95_1),u,h,o,l),e.c94_1=!0,i.c94_1=e.c94_1;var M=Tk(0,i);return null!=M&&(M.c94_1=i.c94_1),!1},Pr(Ik).c9a=function(t,n){for(var i=n,e=zk(0,i);;){for(;e.c94_1;)i=e,e=zk(0,e);if(!i.c94_1){e=i;var r=Tk(0,i);if(null==r)return Xr;if(!(i=r).c94_1)return Xr}i.c94_1=!1;var s,u=i.x93_1,o=e.x93_1,_=u.g95_1,h=null==_?null:_.j95_1,a=o.g95_1;if(h!==(null==a?null:a.j95_1)&&this.h9a(i))if(e.d94_1){if(this.r99(e),!ne.w97(o))throw l_();o=(e=zk(0,i)).x93_1}else if(i.d94_1){if(this.r99(i),!ne.w97(u))throw l_();u=(i=us(Tk(0,e))).x93_1}if(u.j95_1!==o.j95_1){var l,c=u.g95_1,f=null==c?null:c.j95_1,v=o.g95_1;if(f===(null==v?null:v.j95_1)||i.d94_1||e.d94_1)l=!1;else{var d,w=u.g95_1;if((null==w?null:w.j95_1)===t.w92_1)d=!0;else{var p=o.g95_1;d=(null==p?null:p.j95_1)===t.w92_1}l=d}if(l){if(this.i9a(t,i))return Xr}else this.b9a(t,i)}if(u.j95_1===o.j95_1){var m=u.g95_1,g=null==m?null:m.j95_1,y=o.g95_1;s=g===(null==y?null:y.j95_1)}else s=!1;if(s){if(jk(0,o,u),this.r99(i),!ne.w97(u))throw l_();i=us(Tk(0,e))}}},Pr(Ik).j9a=function(t,n,i){var e,r=n,s=i,u=us(s.h95_1),o=zk(0,r),_=r.x93_1,h=o.x93_1,a=!1,l=_.g95_1,c=null==l?null:l.j95_1,f=h.g95_1;if(c!==(null==f?null:f.j95_1)&&this.i9a(t,r),te.l97(us(_.j95_1),us(t.w92_1))){var v=ne,d=u.g95_1;if(!v.v95(us(null==d?null:d.i95_1),_))throw l_();u=zk(0,r=us(this.t99(r))).x93_1,this.z99(zk(0,r),o),a=!0}if(te.l97(us(h.j95_1),us(t.w92_1))){var w=ne,p=s,m=h.g95_1;if(!w.v95(p,us(null==m?null:m.i95_1)))throw l_();s=this.z99(o,null),a=!0}if(a)return this.a9a(t,r,us(s.h95_1),u,u,!0),Xr;if(te.j97(us(h.j95_1),us(_.j95_1))){var g=h.g95_1;e=us(null==g?null:g.i95_1)}else e=_;var y=e,b=ne,$=s.h95_1;y=b.y97(us(null==$?null:$.g95_1),y),this.a9a(t,r,y,y.h95_1,y.h95_1,!1);var k=y.g95_1,x=null==k?null:k.l95_1;null!=x&&(x.d94_1=!0),this.c9a(t,r)},Pr(Ik).k9a=function(t,n,i){var e=n,r=e.x93_1;if(te.l97(us(r.j95_1),i))return this.e9a(t,r,us(i.y95_1)),Xr;var s=te,u=r.g95_1;if(!s.l97(us(null==u?null:u.j95_1),i)){if(ne.t95(us(r.g95_1)),e.d94_1){if(!ne.w97(us(r.h95_1)))throw l_();e.d94_1=!1}if(!ne.v95(us(i.y95_1),r))throw l_();return this.l9a(t,i),Xr}var o=zk(0,e=this.u99(e)),_=us(o.x93_1.g95_1),h=_.h95_1,a=h;if(o.d94_1){if(this.r99(o),!ne.w97(_))throw l_();var l=null==a?null:a.g95_1;_=us(null==l?null:l.i95_1)}if(!ne.v95(us(i.y95_1),_))throw l_();te.m97(us(a))||(a=null),this.a9a(t,e,us(_.h95_1),h,a,!0)},Pr(Ik).m9a=function(t,n){var i=n.y95_1,e=new U$(us(null==i?null:i.g95_1)),r=Zi.r94(Zi.w94(us(t.u92_1),e)),s=r instanceof U$?r:Nr(),u=zk(0,s),o=s.x93_1,_=u.x93_1,h=te,a=o.g95_1;if(0===h.e97(us(null==a?null:a.j95_1),n,us(o.j95_1)))return this.k9a(t,s,n),Xr;var l=te,c=_.g95_1,f=us(null==c?null:c.j95_1),v=o.g95_1,d=l.j97(f,us(null==v?null:v.j95_1))?s:u;if(s.a94_1||d.d94_1){var w;if(d===s){var p=ne,m=n.y95_1;w=p.y97(us(null==m?null:m.g95_1),us(o.i95_1))}else{var g=ne,y=_.g95_1,b=null==y?null:y.h95_1,$=g.y97(us(null==b?null:b.g95_1),us(n.y95_1));w=us($.g95_1)}var k=w;if(d.d94_1){if(!this.s99(d,k))throw l_()}else this.x99(t,this.v99(t,s,k));this.l9a(t,n)}else this.a9a(t,s,us(n.y95_1),n.y95_1,null,!0)},Pr(Ik).l9a=function(t,n){t.w92_1=n;for(var i=us(n.y95_1);null==i.l95_1;)if((i=us(i.h95_1))===n.y95_1)return this.m9a(t,n),Xr;var e=us(this.t99(us(i.l95_1))),r=zk(0,e),s=r.x93_1,u=this.z99(r,null);u.h95_1===s?this.j9a(t,e,u):this.a9a(t,e,us(u.h95_1),s,s,!0)},Pr(Ik).n9a=function(t,n){var i=ne.u95(us(t.n92_1)),e=i.j95_1;null!=e&&(e.b96_1=4e150);var r=i.j95_1;null!=r&&(r.c96_1=n);var s=i.g95_1,u=null==s?null:s.j95_1;null!=u&&(u.b96_1=-4e150);var o=i.g95_1,_=null==o?null:o.j95_1;null!=_&&(_.c96_1=n);var h=t,a=i.g95_1;h.w92_1=null==a?null:a.j95_1;var l=new U$(i);l.z93_1=0,l.a94_1=!1,l.d94_1=!1,l.b94_1=!0,l.c94_1=!1,l.y93_1=Zi.i94(us(t.u92_1),l)},Pr(Ik).o9a=function(t){var n=Zi;t.u92_1=n.g94(t,new Ak(t)),this.n9a(t,-4e150),this.n9a(t,4e150)},Pr(Ik).p9a=function(t){t:for(;;){var n=Zi.r94(Zi.u94(us(t.u92_1))),i=null==n||n instanceof U$?n:Nr();if(null==i)break t;var e=i;this.r99(e)}Zi.h94(us(t.u92_1))},Pr(Ik).q9a=function(t){for(var n=t.n92_1,i=us(null==n?null:n.p95_1),e=us(i.f95_1);e!==i;){var r,s=us(e.f95_1),u=us(e.i95_1),o=te,_=us(e.j95_1),h=e.g95_1;if(o.l97(_,us(null==h?null:h.j95_1))){var a=e.i95_1;r=!((null==a?null:a.i95_1)===e)}else r=!1;if(r){if(this.e9a(t,u,e),!ne.w97(e))throw l_();u=us((e=u).i95_1)}if(u.i95_1===e){if(u!==e&&(u!==s&&u!==s.g95_1||(s=us(s.f95_1)),!ne.w97(u)))throw l_();if(e!==s&&e!==s.g95_1||(s=us(s.f95_1)),!ne.w97(e))throw l_()}e=s}},Pr(Ik).r9a=function(t){t.v92_1=ee.i98();for(var n=us(t.v92_1),i=t.n92_1,e=us(null==i?null:i.n95_1),r=us(e.w95_1);r!==e;)r.d96_1=n.l98(r),r=us(r.w95_1);if(!n.k98()){var s=t.v92_1;return null==s||s.j98(),t.v92_1=null,!1}return!0},Pr(Ik).s9a=function(t){var n=t.v92_1;null==n||n.j98()},Pr(Ik).t9a=function(t){for(var n=us(t.o95_1.x94_1);n!==t.o95_1;){var i=us(n.x94_1),e=us(n.z94_1),r=e.i95_1;if((null==r?null:r.i95_1)===e&&(jk(0,us(e.h95_1),e),!ne.w97(e)))return!1;n=i}return!0},Pr(Ik).s96=function(t){if(t.t92_1=!1,this.q9a(t),!this.r9a(t))return!1;this.o9a(t);t:for(;;){var n=t.v92_1,i=null==n?null:n.m98(),e=null==i||i instanceof ek?i:Nr();if(null==e)break t;var r=e;n:for(;;){var s=t.v92_1,u=null==s?null:s.o98(),o=null==u||u instanceof ek?u:Nr();if(null==o||!te.l97(o,r))break n;var _=t.v92_1,h=null==_?null:_.m98();o=h instanceof ek?h:Nr(),this.e9a(t,us(r.y95_1),us(o.y95_1))}this.l9a(t,r)}var a=t,l=Zi.r94(Zi.u94(us(t.u92_1)));return a.w92_1=(l instanceof U$?l:Nr()).x93_1.j95_1,this.p9a(t),this.s9a(t),!!this.t9a(us(t.n92_1))&&(ne.v96(us(t.n92_1)),!0)},Pr(Dk).u9a=function(t){var n=us(t.z94_1);t:for(;;){var i=te,e=n.g95_1;if(!i.j97(us(null==e?null:e.j95_1),us(n.j95_1)))break t;var r=n.h95_1;n=us(null==r?null:r.g95_1)}t:for(;;){var s=te,u=us(n.j95_1),o=n.g95_1;if(!s.j97(u,us(null==o?null:o.j95_1)))break t;n=us(n.i95_1)}for(var _=n.h95_1,h=us(null==_?null:_.g95_1);n.i95_1!==h;){var a=te,l=n.g95_1;if(a.j97(us(null==l?null:l.j95_1),us(h.j95_1))){t:for(;;){var c;if(h.i95_1!==n){var f;if(te.m97(us(h.i95_1)))f=!0;else{var v=te,d=us(h.j95_1),w=h.g95_1,p=us(null==w?null:w.j95_1),m=h.i95_1,g=null==m?null:m.g95_1;f=v.e97(d,p,us(null==g?null:g.j95_1))<=0}c=f}else c=!1;if(!c)break t;var y=ne.y97(us(h.i95_1),h);h=us(y.g95_1)}var b=h.h95_1;h=us(null==b?null:b.g95_1)}else{t:for(;;){var $;if(h.i95_1!==n){var k,x=te,q=n.h95_1;if(x.n97(us(null==q?null:q.g95_1)))k=!0;else{var S=te,C=n.g95_1,E=us(null==C?null:C.j95_1),O=us(n.j95_1),j=n.h95_1,z=null==j?null:j.g95_1;k=S.e97(E,O,us(null==z?null:z.j95_1))>=0}$=k}else $=!1;if(!$)break t;var T=ne,A=n,I=n.h95_1,D=T.y97(A,us(null==I?null:I.g95_1));n=us(D.g95_1)}n=us(n.i95_1)}}t:for(;;){var M=h.i95_1;if((null==M?null:M.i95_1)===n)break t;var N=ne.y97(us(h.i95_1),h);h=us(N.g95_1)}},Pr(Dk).t96=function(t){for(var n=us(t.o95_1.x94_1);n!==t.o95_1;){var i=us(n.x94_1);n.d95_1&&this.u9a(n),n=i}return!0},Pr(Dk).u96=function(t,n,i){for(var e=us(t.p95_1.f95_1);e!==t.p95_1;){var r=us(e.f95_1),s=e.g95_1,u=null==s?null:s.k95_1,o=null==u?null:u.d95_1,_=e.k95_1;if(o!=(null==_?null:_.d95_1))e.m95_1=us(e.k95_1).d95_1?n:0|-n;else if(i){if(!ne.w97(e))return!1}else e.m95_1=0;e=r}return!0},Pr(Sx).sl=function(t){if(Pr(Rx).sl.call(this,t),!t.defaultPrevented)if("wheel"===t.type)t.preventDefault(),this.y9d(t instanceof WheelEvent?t:Nr());else for(var n=nq().x9d_1.v();n.w();){var i=n.y();qs(i.n9b_1,this.v9d_1.c9b_1)&&i.sl(t)}},Pr(Sx).handleEvent=function(t){return this.sl(t)},Pr(Sx).z9d=function(t){qs(t,this.k9c_1)||qs(t,this.m9c_1)?this.e9e(t):qs(t,this.l9c_1)?this.d9e(t):qs(t,this.n9c_1)?this.c9e(t):qs(t,this.o9c_1)?this.b9e(t):qs(t,this.p9c_1)&&this.a9e(t)},Pr(Sx).e9e=function(t){this.v9d_1.h9e().j5h_1.q5m()?this.g9e(t):this.f9e(t)},Pr(Sx).f9e=function(t){var n=t.p9b_1,i=t.s9b_1,e=t.t9b_1;switch(n.y9_1){case 3:this.i9e(),this.t9c_1.a6d(0,0);break;case 4:var r=this.v9d_1.h9e().j5h_1,s=r.h5o(),u=r.e6p(),o=Math.max(s,u),_=this.s9c_1.z5l_1,h=Math.max(1,_),a=this.v9d_1.h9e().g5o(h)*this.v9d_1.h9e().s5h_1,l=(e-this.t9c_1.t5l_1)*a/o,c=-(i-this.t9c_1.s5l_1)*a/o,f=Ph(this.s9c_1.a5m_1),v=Math.sin(f),d=Ph(this.s9c_1.a5m_1),w=Math.cos(d),p=this.s9c_1.x5l_1;p.m5i_1=Vh(p.m5i_1,l*w-c*v),p.n5i_1=Vh(p.n5i_1,l*v+c*w),this.t9c_1.a6d(i,e),this.j9e();break;case 6:case 5:this.k9e()}},Pr(Sx).g9e=function(t){var n=t.p9b_1,i=t.s9b_1,e=t.t9b_1;switch(n.y9_1){case 3:this.i9e(),this.v9d_1.h9e().j5h_1.f5m(this.q9c_1.x5l_1.m5i_1,this.q9c_1.x5l_1.n5i_1,this.q9c_1.x5l_1.q5i_1,this.r9c_1);break;case 4:var r=this.v9d_1.h9e().g5o(this.s9c_1.z5l_1)*this.v9d_1.h9e().s5h_1,s=e*r,u=-i*r,o=this.s9c_1.a5m_1,_=Ph(o),h=Math.sin(_),a=Ph(o),l=Math.cos(a),c=this.r9c_1.s5l_1+s*h+u*l,f=this.r9c_1.t5l_1+s*l-u*h;this.v9d_1.h9e().j5h_1.d5m(c,f,this.r9c_1.w5l_1,this.s9c_1.x5l_1),this.j9e();break;case 6:case 5:this.k9e()}},Pr(Sx).d9e=function(t){var n=t.p9b_1,i=t.s9b_1,e=t.t9b_1;switch(n.y9_1){case 3:this.i9e();break;case 4:var r=180*i/this.v9d_1.c9b_1.clientWidth,s=90*e/this.v9d_1.c9b_1.clientHeight;this.s9c_1.a5m_1=Hh(this.q9c_1.a5m_1,r),this.s9c_1.b5m_1=Hh(this.q9c_1.b5m_1,s),this.j9e();break;case 6:case 5:this.k9e()}},Pr(Sx).c9e=function(t){var n=t.p9b_1,i=(t instanceof sq?t:Nr()).l9f();switch(n.y9_1){case 3:this.i9e();break;case 4:0!==i&&(this.s9c_1.z5l_1=this.q9c_1.z5l_1/i,this.j9e());break;case 6:case 5:this.k9e()}},Pr(Sx).b9e=function(t){var n=t.p9b_1,i=(t instanceof uq?t:Nr()).m9g();switch(n.y9_1){case 3:this.i9e(),this.u9c_1=0;break;case 4:this.s9c_1.a5m_1=Wh(this.s9c_1.a5m_1,i-this.u9c_1),this.u9c_1=i,this.j9e();break;case 6:case 5:this.k9e()}},Pr(Sx).a9e=function(t){var n=t.p9b_1,i=t.t9b_1;switch(n.y9_1){case 3:this.i9e();break;case 4:var e=-90*i/this.v9d_1.c9b_1.clientHeight;this.s9c_1.b5m_1=Hh(this.q9c_1.b5m_1,e),this.j9e();break;case 6:case 5:this.k9e()}},Pr(Sx).y9d=function(t){var n=ks(t.timeStamp);(n-this.v9c_1|0)>500&&(this.v9d_1.h9e().l5m(this.s9c_1),this.v9c_1=n);var i=t.deltaMode,e=1+(i===WheelEvent.DOM_DELTA_PIXEL?t.deltaY:i===WheelEvent.DOM_DELTA_LINE?20*t.deltaY:i===WheelEvent.DOM_DELTA_PAGE?200*t.deltaY:t.deltaY)/1e3,r=this.s9c_1;r.z5l_1=r.z5l_1*e,this.j9e()},Pr(Sx).j9e=function(){this.v9d_1.h9e().m5m(this.s9c_1),this.v9d_1.h5h()},Pr(Sx).i9e=function(){var t=this.w9c_1;this.w9c_1=t+1|0,0===t&&(this.v9d_1.h9e().l5m(this.q9c_1),this.s9c_1.x6b(this.q9c_1))},Pr(Sx).k9e=function(){this.w9c_1>0&&(this.w9c_1=this.w9c_1-1|0)},Pr(Cx).z9g=function(){this.s9g_1.a5m_1=Fh().v5m_1,this.n9g_1.h9e().m5m(this.s9g_1),this.n9g_1.h5h()},Pr(Cx).a9h=function(){this.s9g_1.a5m_1=Fh().v5m_1,this.s9g_1.b5m_1=Fh().v5m_1,this.n9g_1.h9e().m5m(this.s9g_1),this.n9g_1.h5h()},Pr(Cx).y9g=function(t){if(this.t9g_1){var n=this.s9g_1.a5m_1,i=this.q9g_1*this.s9g_1.z5l_1;switch(t){case"panDown":n=Bh(n,Fh().y5m_1);break;case"panLeft":n=Bh(n,Fh().w5m_1);break;case"panRight":n=Uh(n,Fh().w5m_1)}this.s9g_1.x5l_1.s6b(n,i,this.s9g_1.x5l_1),this.n9g_1.h9e().m5m(this.s9g_1),this.n9g_1.h5h(),window.setTimeout((e=this,(r=function(t){return e.y9g(t),Xr}).callableName="handlePan",r),50,t)}var e,r},Pr(Cx).w9g=function(t){if(this.t9g_1){if("zoomIn"===t){var n=this.s9g_1;n.z5l_1=n.z5l_1*(1-this.p9g_1)}else if("zoomOut"===t){var i=this.s9g_1;i.z5l_1=i.z5l_1*(1+this.p9g_1)}this.n9g_1.h9e().m5m(this.s9g_1),this.n9g_1.h5h(),window.setTimeout((e=this,(r=function(t){return e.w9g(t),Xr}).callableName="handleZoom",r),50,t)}var e,r},Pr(Cx).x9g=function(t){var n,i;this.t9g_1&&("tiltUp"===t?this.s9g_1.b5m_1=Wh(this.s9g_1.b5m_1,this.r9g_1):"tiltDown"===t&&(this.s9g_1.b5m_1=Hh(this.s9g_1.b5m_1,this.r9g_1)),this.n9g_1.h9e().m5m(this.s9g_1),this.n9g_1.h5h(),window.setTimeout((n=this,(i=function(t){return n.x9g(t),Xr}).callableName="handleTilt",i),50,t))},Pr(Ox).m9h=function(t,n){var i=this.n9h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(Ox).cd=function(t,n){return this.m9h(null!=t&&ss(t,B_)?t:Nr(),n)},Pr(Ox).pc=function(){for(this.ec_1;;)try{var t=this.cc_1;if(0===t){this.dc_1=1;var n=this.l9h_1;return n instanceof F_?this.k9h_1.h5h():n instanceof U_&&this.k9h_1.h9e().i5h_1.i5j_1.n6s(this.l9h_1.o9h_1),Xr}if(1===t)throw this.fc_1}catch(t){throw t}},Pr(Ox).n9h=function(t,n){var i=new Ox(this.k9h_1,n);return i.l9h_1=t,i},Pr(Tx).r9h=function(t){var n={alpha:!0,depth:!0,stencil:!1,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,preferLowPowerToHighPerformance:!1,failIfMajorPerformanceCaveat:!1},i=t.getContext("webgl",n),e=null==i?t.getContext("experimental-webgl",n):i;if(!(e instanceof WebGLRenderingContext)){var r=kr.y5i(kr.t5i_1,"WorldWindow","createContext","webglNotSupported");throw is(Gr(r))}return e},Pr(Ix).l14=function(t,n){return this.s9h_1(t,n)},Pr(Mx).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(Mx).cd=function(t,n){return this.a1h(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(Mx).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2,this.cc_1=1;var n=V_().g5h_1,i=jx(this.c9i_1,null);if((t=n.o14(new Ix(i),this))===Js())return t;continue t;case 1:w_();break;case 2:throw this.fc_1}}catch(t){var e=t;if(2===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},Pr(Mx).b1h=function(t,n){var i=new Mx(this.c9i_1,n);return i.d9i_1=t,i},Pr(Nx).g9i=function(){return this.h9e().i5h_1.h5j_1},Pr(Nx).h9e=function(){return this.e9b_1},Pr(Nx).h9i=function(){return this.i9b_1},Pr(Nx).b9h=function(t,n){var i,e,r={_v:this.f9b_1.q2(t)};if(null==r._v){var s=new zx((i=this,e=r,function(t){t.worldWindow=i;var n=e._v,r=null==n?null:n.q9h_1;if(null==r);else for(var s=r.v();s.w();)s.y().handleEvent(t);return Xr}));this.f9b_1.g2(t,s),r._v=s}r._v.q9h_1.r(n)||(r._v.q9h_1.r1(0,n),1===r._v.q9h_1.n()&&this.c9b_1.addEventListener(t,r._v.p9h_1,!1))},Pr(Nx).h5h=function(){this.m9b_1=!0},Pr(Nx).i9i=function(t,n){var i=this.c9b_1.getBoundingClientRect();return new Qa(xs(t)-(i.left+this.c9b_1.clientLeft),xs(n)-(i.top+this.c9b_1.clientTop))},Pr(Nx).j9i=function(t){return this.k9i(t.s5l_1,t.t5l_1)},Pr(Nx).l9i=function(t,n,i,e,r){var s,u=new L_,o=this.h9e().q5h_1;if(o.t19())return u;if(0!==i&&0!==e){var _=Math.floor(t),h=ks(_),a=o.u5j_1,l=n+e,c=Math.ceil(l),f=a-ks(c)|0,v=Math.ceil(i),d=ks(v),w=Math.ceil(e);s=new el(h,f,d,ks(w))}else s=new el(Yr(t)-1|0,(o.u5j_1-Yr(n)|0)-1|0,3,3);var p=s;if(!p.v6e(o))return u;if(this.k9b_1.o5o_1=u,this.k9b_1.q5o_1=p,r){var m=p.r5j_1+p.t5j_1/2,g=p.s5j_1+p.u5j_1/2;if(o.w6e(m,g)){var y=da();this.h9e().x5n(m,o.u5j_1-g,y)&&(this.k9b_1.r5o_1=new Qa(m,g),this.k9b_1.s5o_1=y)}}return this.k9b_1.t5o_1=!0,this.m9i(),u},Pr(Nx).k9i=function(t,n,i,e,r,s){return i=i===Wr?0:i,e=e===Wr?0:e,r=r===Wr||r,s===Wr?this.l9i(t,n,i,e,r):s.l9i.call(this,t,n,i,e,r)},Pr(Nx).c5l=function(){window.cancelAnimationFrame(this.l9b_1),iu(this.g9i().gm()),this.h9e().w1h()},Pr(Nx).t9h=function(){this.h9e().i5h_1.b1(),this.h9e().w5j(),this.h9e().s5i(window.devicePixelRatio),this.d9b_1.getExtension("WEBGL_depth_texture"),this.d9b_1.getExtension("OES_element_index_uint");var t,n,i=this.g9i();ru(i,Wr,Wr,(t=new Mx(this,null),(n=function(n,i){return t.a1h(n,i)}).$arity=1,n)),this.h5h(),this.e9i()},Pr(Nx).e9i=function(){this.n9i();var t,n=window;this.l9b_1=n.requestAnimationFrame((t=this,function(n){return t.e9i(),Xr}))},Pr(Nx).n9i=function(){if(this.o9i(),!this.m9b_1)return Xr;this.m9b_1=!1,this.m9i()},Pr(Nx).m9i=function(){var t=this.k9b_1.t5o_1;try{t||this.p9i((Ex(),vr)),(this.h9e().i5o(this.k9b_1)||t)&&this.h5h(),this.h9e().c5r(this.k9b_1)}catch(t){if(!(t instanceof bs))throw t;var n=t;kr.y5i(kr.t5i_1,"WorldWindow","drawFrame","Exception occurred during redrawing.\n"+n)}finally{this.k9b_1.g5s(),t||this.p9i((Ex(),fr))}},Pr(Nx).o9i=function(){var t=this.d9b_1.canvas.clientWidth*this.h9e().s5h_1,n=Yr(t),i=this.d9b_1.canvas.clientHeight*this.h9e().s5h_1,e=Yr(i);(this.d9b_1.canvas.width!==n||this.d9b_1.canvas.height!==e||this.h9e().q5h_1.t19())&&(this.d9b_1.canvas.width=n,this.d9b_1.canvas.height=e,this.h9e().e5l(this.d9b_1.drawingBufferWidth,this.d9b_1.drawingBufferHeight),this.h5h())},Pr(Nx).p9i=function(t){for(var n=this.j9b_1.v();n.w();){var i=n.y();try{i(this,t)}catch(t){if(!(t instanceof bs))throw t;var e=t;kr.t64(kr.t5i_1,"Exception calling redraw callback.\n"+e)}}return Xr},Pr(Rx).sl=function(t){var n=0,i=this.w9d_1.n()-1|0;if(n<=i)t:do{var e=n;if(n=n+1|0,this.w9d_1.h1(e).handleEvent(t),t.defaultPrevented)break t}while(n<=i)},Pr(Rx).handleEvent=function(t){return this.sl(t)},Pr(Lx).v9k=function(t){var n,i=this.s9k_1;if(0===i)n=this.u9k_1;else{if(34737===i){var e=kr.y5i(kr.t5i_1,"GeoTiffKeyEntry","getGeoKeyValue","Invalid key type");throw fs(Gr(e))}n=34736===i?t.h1(this.u9k_1):null}return n},Pr(Lx).w9k=function(t){if(34737!==this.s9k_1){var n=kr.y5i(kr.t5i_1,"GeoTiffKeyEntry","getAsciiGeoKeyValue","Invalid key type");throw is(Gr(n))}var i;if(null==t)i=null;else{var e=Au(),r=this.u9k_1,s=this.t9k_1-1|0;if(r>>8|0:t.getUint32(n,e)>>>8|0;else if(i<=4)s=r?t.getInt32(n,e):t.getUint32(n,e);else{if(!(i<=8)){var o=kr.y5i(kr.t5i_1,"GeoTiffUtil","getBytes","Too many bytes requested");throw fs(Gr(o))}s=t.getFloat64(n,e)}return s},Pr(Wx).u9m=function(t,n,i,e,r,s){return r=r!==Wr&&r,s===Wr?this.f9n(t,n,i,e,r):s.f9n.call(this,t,n,i,e,r)},Pr(Wx).v9m=function(t,n,i,e,r){var s;if(1===e)s=this.f9n(t,n,i,r,!1);else if(2===e)s=this.f9n(t,n,i,r,!0);else if(3===e){var u;switch(i){case 3:u=ks(t.getFloat32(n,r))>>>8|0;break;case 4:u=t.getFloat32(n,r);break;case 8:u=t.getFloat64(n,r);break;default:var o=kr.y5i(kr.t5i_1,"GeoTiffUtil","getSampleBytes","Do not attempt to parse the data not handled: "+i);throw fs(Gr(o))}s=u}else s=this.f9n(t,n,i,r,!1);return s},Pr(Jx).z9q=function(t){if(!t&&2===this.x9m_1){var n=kr.y5i(kr.t5i_1,"TiffIFDEntry","getIFDEntryValue","Invalid Key Type - ASCII not allowed.");throw is(Gr(n))}var i,e=1!==(i=this.x9m_1)&&2!==i&&6!==i&&7!==i?3===i||8===i?2:4===i||9===i||11===i?4:5===i||10===i||12===i?8:-1:1;return Tr(e,this.y9m_1)<=4?zo(this.b9n_1?this.z9m_1:this.z9m_1>>Tr(4-e|0,8)):function(t,n){var i=as(),e=0,r=t.y9m_1;if(e=8){var o=t.x9m_1;if(5===o||10===o)i.s(pr.u9m(t.a9n_1,t.z9m_1+u|0,4,t.b9n_1)),i.s(pr.u9m(t.a9n_1,4+(t.z9m_1+u|0)|0,4,t.b9n_1));else{if(12!==o){var _=kr.y5i(kr.t5i_1,"TiffIFDEntry","getIFDEntryValue","Invalid Type of IFD");throw fs(Gr(_))}i.s(pr.u9m(t.a9n_1,t.z9m_1+u|0,8,t.b9n_1))}}else i.s(pr.u9m(t.a9n_1,t.z9m_1+u|0,n,t.b9n_1))}while(ethis.w9r_1*window.devicePixelRatio&&this.b9s(Fl())},Pr(Zx).g9s=function(t){return this.p9b_1.equals(Ll())?0!==this.u9b_1?Xr:void(this.z9r_1.n()===this.u9r_1?(this.q9b_1=this.z9r_1.h1(0).h9s_1,this.r9b_1=this.z9r_1.h1(0).i9s_1,this.b9s(Ul())):this.e9s(this.y9r_1)):Xr},Pr(Zx).j9s=function(t){if(!this.p9b_1.equals(Ll()))return Xr;this.b9s(Fl())},Pr(Zx).e9s=function(t){var n=this.a9s_1;null==n||window.clearTimeout(n);var i,e=window;this.a9s_1=e.setTimeout((i=this,function(){return i.a9s_1=null,i.p9b_1.equals(Ll())&&i.b9s(Fl()),Xr}),t)},Pr(Zx).c9s=function(){var t=this.a9s_1;null==t||window.clearTimeout(t),this.a9s_1=null},Pr(Qx).f9s=function(t){var n;this.p9b_1.equals(Ll())?this.o9t()&&(this.n9t()?(this.m9t(),n=Hl()):n=Fl(),this.b9s(n)):(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl()))&&this.b9s(Vl())},Pr(Qx).g9s=function(t){0===this.u9b_1&&(this.p9b_1.equals(Ll())?this.b9s(Fl()):(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl()))&&this.b9s(Wl()))},Pr(Qx).j9s=function(t){this.p9b_1.equals(Ll())&&this.b9s(Fl())},Pr(Qx).o9t=function(){var t=this.s9b_1,n=this.t9b_1,i=t*t+n*n;return Math.sqrt(i)>this.s9d_1*window.devicePixelRatio},Pr(Qx).n9t=function(){return 1<0)return Xr;var n=1<this.s9u_1*window.devicePixelRatio},Pr(rq).n9t=function(){var t=this.q9u_1,n=this.r9u_1,i=this.p9t();return t<=i&&i<=n},Pr(sq).l9f=function(){return this.i9f_1*this.j9f_1},Pr(sq).w1h=function(){Pr(eq).w1h.call(this),this.i9f_1=1,this.j9f_1=1,this.f9f_1=0,this.k9f_1.b1()},Pr(sq).d9s=function(t){this.p9b_1.equals(Ll())&&this.b9s(Fl())},Pr(sq).j9s=function(t){this.k9f_1.n()<2&&(this.k9f_1.s(t),2===this.k9f_1.n()&&(this.f9f_1=this.t9u(),this.j9f_1=this.j9f_1*this.i9f_1,this.i9f_1=1))},Pr(sq).o9s=function(t){if(2===this.k9f_1.n())if(this.p9b_1.equals(Ll()))this.n9t()&&this.b9s(Hl());else if(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl())){var n=this.t9u()/this.f9f_1,i=Math.abs(n),e=this.h9f_1;this.i9f_1=this.i9f_1*(1-e)+i*e,this.b9s(Vl())}},Pr(sq).q9s=function(t){this.k9f_1.t(t),0===this.p9t()&&(this.p9b_1.equals(Ll())?this.b9s(Fl()):(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl()))&&this.b9s(Wl()))},Pr(sq).p9s=function(t){this.k9f_1.t(t),0===this.p9t()&&(this.p9b_1.equals(Ll())?this.b9s(Fl()):(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl()))&&this.b9s(Bl()))},Pr(sq).n9s=function(){this.f9f_1=this.t9u(),this.i9f_1=1},Pr(sq).n9t=function(){var t=this.t9u()-this.f9f_1;return Math.abs(t)>this.g9f_1*window.devicePixelRatio},Pr(sq).t9u=function(){var t=this.k9f_1.h1(0),n=this.k9f_1.h1(1),i=t.s9t_1-n.s9t_1|0,e=t.t9t_1-n.t9t_1|0,r=Tr(i,i)+Tr(e,e)|0;return Math.sqrt(r)},Pr(uq).m9g=function(){return this.j9g_1+this.k9g_1},Pr(uq).w1h=function(){Pr(eq).w1h.call(this),this.j9g_1=0,this.k9g_1=0,this.g9g_1=0,this.l9g_1.b1()},Pr(uq).d9s=function(t){this.p9b_1.equals(Ll())&&this.b9s(Fl())},Pr(uq).j9s=function(t){this.l9g_1.n()<2&&(this.l9g_1.s(t),2===this.l9g_1.n()&&(this.g9g_1=this.u9u(),this.k9g_1=this.k9g_1+this.j9g_1,this.j9g_1=0))},Pr(uq).o9s=function(t){if(2===this.l9g_1.n())if(this.p9b_1.equals(Ll()))this.n9t()&&this.b9s(Hl());else if(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl())){var n=this.u9u(),i=Fh().m69(n-this.g9g_1),e=this.i9g_1;this.j9g_1=this.j9g_1*(1-e)+i*e,this.b9s(Vl())}},Pr(uq).q9s=function(t){this.l9g_1.t(t),0===this.p9t()&&(this.p9b_1.equals(Ll())?this.b9s(Fl()):(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl()))&&this.b9s(Wl()))},Pr(uq).p9s=function(t){this.l9g_1.t(t),0===this.p9t()&&(this.p9b_1.equals(Ll())?this.b9s(Fl()):(this.p9b_1.equals(Hl())||this.p9b_1.equals(Vl()))&&this.b9s(Bl()))},Pr(uq).n9s=function(){this.g9g_1=this.u9u(),this.j9g_1=0},Pr(uq).n9t=function(){this.j9g_1=Fh().m69(this.u9u()-this.g9g_1);var t=this.j9g_1;return Math.abs(t)>this.h9g_1},Pr(uq).u9u=function(){var t=this.l9g_1.h1(0),n=this.l9g_1.h1(1),i=t.s9t_1-n.s9t_1|0,e=t.t9t_1-n.t9t_1|0,r=Fh(),s=Math.atan2(e,i);return r.k69(s)},Pr(_q).n9t=function(){return!!Pr(Qx).n9t.call(this)&&this.p9w_1.f9v_1},Pr(hq).n9t=function(){return!!Pr(rq).n9t.call(this)&&this.n9x_1.f9v_1},Pr(aq).s9v=function(){this.e9v_1=!1,this.f9v_1=!1},Pr(lq).w1h=function(){Pr(eq).w1h.call(this),this.n9y_1.b1(),this.p9y()},Pr(lq).d9s=function(t){if(!this.p9b_1.equals(Ll()))return Xr;this.b9s(Fl())},Pr(lq).j9s=function(t){if(!this.p9b_1.equals(Ll()))return Xr;if(this.p9t()>this.j9y_1)this.b9s(Fl());else if(1===this.p9t())this.n9y_1.s(new vq(this.p9t(),this.q9b_1,this.r9b_1)),this.e9s(this.l9y_1);else{var n=this.n9y_1.h1(this.n9y_1.n()-1|0);n.r9t_1=this.p9t(),n.s9t_1=this.q9b_1,n.t9t_1=this.r9b_1}},Pr(lq).o9s=function(t){if(!this.p9b_1.equals(Ll()))return Xr;var n=this.s9b_1,i=this.t9b_1,e=n*n+i*i;Math.sqrt(e)>this.k9y_1*window.devicePixelRatio&&this.b9s(Fl())},Pr(lq).q9s=function(t){if(!this.p9b_1.equals(Ll()))return Xr;if(0!==this.p9t())return Xr;var n=this.n9y_1.n();this.n9y_1.h1(n-1|0).r9t_1!==this.j9y_1?this.b9s(Fl()):n===this.i9y_1?(this.q9b_1=this.n9y_1.h1(0).s9t_1,this.r9b_1=this.n9y_1.h1(0).t9t_1,this.b9s(Ul())):this.e9s(this.m9y_1)},Pr(lq).p9s=function(t){if(!this.p9b_1.equals(Ll()))return Xr;this.b9s(Fl())},Pr(lq).e9s=function(t){var n=this.o9y_1;null==n||window.clearTimeout(n);var i,e=window;this.o9y_1=e.setTimeout((i=this,function(){return i.o9y_1=null,i.p9b_1.equals(Ll())&&i.b9s(Fl()),Xr}),t)},Pr(lq).p9y=function(){var t,n=this.o9y_1;null==n?t=null:(window.clearTimeout(n),t=Xr);var i=t;return this.o9y_1=null,i},Pr(fq).o9t=function(){var t=0,n=this.p9t();if(tthis.s9u_1)return!0}while(tthis.r9z_1*window.devicePixelRatio)return!1;var s=t.t9z()-n.t9z()|0,u=t.u9z()-n.u9z()|0,o=Tr(s,s)+Tr(u,u)|0;if(Math.sqrt(o)>this.s9z_1*window.devicePixelRatio)return!1;return!(0==(12&this.v9z(t)&this.v9z(n)&12))},Pr(fq).v9z=function(t){var n=t.t9z(),i=t.u9z(),e=0;return Fs(n)>Fs(i)?(e|=n<0?1:0,e|=n>0?2:0):(e|=i<0?4:0,e|=i>0?8:0),e},Pr(vq).t9z=function(){return this.s9t_1-this.u9t_1|0},Pr(vq).u9z=function(){return this.t9t_1-this.v9t_1|0},Pr(dq).w9z=function(t){return new wq(t.href)},Pr(dq).b7v=function(t){var n;try{n=this.w9z(new URL(t))}catch(t){if(t instanceof bs){var i=t;throw kr.i69(kr.t5i_1,"ElevationSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(wq).z9z=function(){return"string"==typeof this.k7s_1},Pr(wq).aa0=function(){var t=this.k7s_1;return"string"==typeof t?t:Nr()},Pr(wq).toString=function(){return"string"==typeof this.k7s_1?"URL: "+Gr(this.k7s_1):Pr(Nb).toString.call(this)},Pr(mq).la0=function(t,n){var i=this.b1h(t,n);return i.ec_1=Xr,i.fc_1=null,i.pc()},Pr(mq).cd=function(t,n){return this.la0(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(mq).pc=function(){for(this.ec_1;;)try{var t=this.cc_1;if(0===t)return this.dc_1=1,new Bx(this.ja0_1).e9n();if(1===t)throw this.fc_1}catch(t){throw t}},Pr(mq).b1h=function(t,n){var i=new mq(this.ja0_1,n);return i.ka0_1=t,i},Pr(gq).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=12,this.za0_1=this.ua0_1.u6r_1.d7y(this.wa0_1,this.xa0_1,this.ya0_1),this.za0_1.z9z()){if(this.aa1_1=this.za0_1.aa0(),this.dc_1=9,this.cc_1=1,(t=q_(fetch(this.aa1_1),this))===Js())return t;continue t}this.ua0_1.g6t(this.va0_1,"Unsupported elevation source type"),this.cc_1=11;continue t;case 1:if(this.ba1_1=t,this.ba1_1.ok){if(this.cc_1=2,(t=q_(this.ba1_1.arrayBuffer(),this))===Js())return t;continue t}this.ua0_1.g6t(this.va0_1,"Elevations retrieval failed ("+this.ba1_1.statusText+"): "+this.aa1_1),this.cc_1=8;continue t;case 2:if(this.ca1_1=t,this.da1_1=this.ba1_1.headers.get("Content-Type"),this.ea1_1=null,C_(this.da1_1,"image/bil",!0)||C_(this.da1_1,"application/bil",!0)||C_(this.da1_1,"application/bil16",!0)){this.fa1_1=new Int16Array(this.ca1_1),this.cc_1=4;continue t}if(C_(this.da1_1,"application/bil32",!0)){this.fa1_1=new Float32Array(this.ca1_1),this.cc_1=4;continue t}if(C_(this.da1_1,"image/tiff",!0)){if(this.cc_1=3,(t=pq(this.ua0_1,this.ca1_1,this))===Js())return t;continue t}if(C_(this.da1_1,"text/xml",!0)){this.ea1_1="Elevations retrieval failed ("+this.ba1_1.statusText+"): "+this.aa1_1+".\n",S_.fromCharCode.apply(null,new Uint8Array(this.ca1_1)),this.fa1_1=null,this.cc_1=4;continue t}this.ea1_1="Elevations retrieval failed (Unexpected content type "+this.da1_1+"): "+this.aa1_1,this.fa1_1=null,this.cc_1=4;continue t;case 3:this.fa1_1=t,this.cc_1=4;continue t;case 4:if(this.ga1_1=this.fa1_1,null==this.ga1_1){this.ha1_1=null,this.cc_1=7;continue t}if(this.ia1_1=this.ga1_1,this.ja1_1=this.ia1_1,this.ka1_1=this.za0_1.l7s_1,null==this.ka1_1){this.la1_1=null,this.cc_1=6;continue t}if(this.cc_1=5,(t=this.ka1_1.h7s(this.ja1_1,this))===Js())return t;continue t;case 5:this.la1_1=t,this.cc_1=6;continue t;case 6:var n=this.la1_1;this.ha1_1=null==n?this.ja1_1:n,this.cc_1=7;continue t;case 7:var i,e=this.ha1_1,r=this.ua0_1.e6t(e);if(null==r?i=null:(this.ua0_1.f6t(this.va0_1,r,"Elevation retrieval succeeded: "+this.aa1_1),i=Xr),null==i){var s=this.ea1_1;this.ua0_1.g6t(this.va0_1,null==s?"Elevations retrieval failed: "+this.aa1_1:s)}this.cc_1=8;continue t;case 8:this.dc_1=12,this.cc_1=10;continue t;case 9:if(this.dc_1=12,this.fc_1 instanceof Error){var u=this.fc_1;this.ua0_1.g6t(this.va0_1,"Elevations retrieval failed ("+u.message+"): "+this.aa1_1),this.cc_1=10;continue t}throw this.fc_1;case 10:this.dc_1=12,this.cc_1=11;continue t;case 11:return Xr;case 12:throw this.fc_1}}catch(t){var o=t;if(12===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},Pr(yq).b6s=function(t,n,i,e,r){var s=new gq(this,t,n,i,e,r);return s.ec_1=Xr,s.fc_1=null,s.pc()},Pr(yq).e6t=function(t){var n;if(t instanceof Int16Array){for(var i=0,e=t.length,r=new Int16Array(e);i=this.g5j_1||this.j5j_1.r(t)||this.i5j_1.l6s(t.hashCode())||(t.na4()?this.la4(t,n,t.ma4().w40_1):t.z9z()?this.la4(t,n,t.aa0()):t.ia4()&&(this.j5j_1.s(t),ru(this.h5j_1,Wr,Wr,(h=new Tq(t,this,n,null),(a=function(t,n){return h.a1h(t,n)}).$arity=1,a)))),null;var h,a},Pr(Mq).c7x=function(t,n){var i,e;ru(this.h5j_1,Wr,Wr,(i=new Aq(n,t,null),(e=function(t,n){return i.a1h(t,n)}).$arity=1,e))},Pr(Mq).la4=function(t,n,i){var e,r,s=new Image;s.onload=Dq(t,{_v:!1},this,n,s),s.onerror=(e=this,r=t,function(t,n,i,s,u){return e.ia3(r),Xr}),this.j5j_1.s(t),s.crossOrigin="anonymous",s.src=i},Pr(Mq).ga4=function(t,n){var i;if(n instanceof HTMLImageElement)i=As(n.width,n.height);else{if(!(n instanceof HTMLCanvasElement))return null;i=As(n.width,n.height)}var e=i,r=e.ue(),s=e.ve();if(0===r||0===s){var u=null!=t&&t.a8n_1>0?r/t.a8n_1|0:0,o=null!=t&&t.b8n_1>0?s/t.b8n_1|0:0,_=o>u?o:u;_>0&&(r=r/_|0,s=s/_|0)}else null!=t&&t.a8n_1>0&&t.b8n_1>0&&(r=t.a8n_1,s=t.b8n_1);var h=new Vq(n,r,s);return qs(null==t?null:t.y8m_1,Ry())&&(h.b5u(Xk(),Jk()),h.b5u(Zk(),Jk())),qs(null==t?null:t.z8m_1,Fy())&&(h.b5u(Qk(),tx()),h.b5u(nx(),tx())),h},Pr(Mq).ha3=function(t,n,i){var e=this.ga4(n,i);null==e||this.d69(t,e,e.w8l()),this.j5j_1.t(t),this.i5j_1.n6s(t.hashCode()),V_().h5h(),kr.ma1(kr.w5i_1)&&kr.t64(kr.w5i_1,"Image retrieval succeeded: "+t)},Pr(Mq).ia3=function(t){this.j5j_1.t(t),this.i5j_1.p6s(t.hashCode()),kr.t64(kr.u5i_1,"Image retrieval failed: "+t)},Pr(Nq).v8l=function(t,n){return!0===(null==t?null:xu(t)>0)?Hq(this.oa4(t,n)):null},Pr(Nq).oa4=function(t,n){var i=document.createElement("canvas"),e=i instanceof HTMLCanvasElement?i:Nr(),r=e.getContext("2d"),s=r instanceof CanvasRenderingContext2D?r:Nr(),u=this.pa4(s,t,n),o=Ru(t,["\n"]),_=n.z7a_1?n.y7a_1/2:0,h=u.s5l_1*this.t8l_1.d5p_1,a=Math.ceil(h);e.width=ks(a);var l=u.t5l_1*this.t8l_1.d5p_1,c=Math.ceil(l);e.height=ks(c),s.scale(this.t8l_1.d5p_1,this.t8l_1.d5p_1),s.font=n.c7b_1.toString(),s.textBaseline="bottom",s.textAlign=n.c7b_1.t8z_1,s.fillStyle=n.d7b_1.b8j(),s.strokeStyle=n.f7b_1.b8j(),s.lineWidth=n.y7a_1,s.lineCap="round",s.lineJoin="round";var f=n.c7b_1.t8z_1;qs(f,"left")?s.translate(_,0):qs(f,"right")?s.translate(u.s5l_1-_,0):s.translate(u.s5l_1/2,0);var v=0,d=o.n()-1|0;if(v<=d)do{var w=v;v=v+1|0;var p=o.h1(w);s.translate(0,n.c7b_1.o8z_1*(1+this.u8l_1)+_),n.z7a_1&&s.strokeText(p,0,0),s.fillText(p,0,0)}while(v<=d);return e},Pr(Nq).pa4=function(t,n,i){0===xu(n)&&Za(),t.font=i.c7b_1.toString();var e=Ru(n,["\n"]),r=e.n()*(i.c7b_1.o8z_1*(1+this.u8l_1)),s=0,u=0,o=e.n()-1|0;if(u<=o)do{var _=u;u=u+1|0,s=yu(s,t.measureText(e.h1(_)).width)}while(u<=o);return i.z7a_1&&(s+=i.y7a_1,r+=i.y7a_1),new Qa(s,r)},Pr(Rq).p6z=function(t){return new Uq(t)},Pr(Rq).w9z=function(t){return new Uq(t.href)},Pr(Rq).b7v=function(t){var n;try{n=this.w9z(new URL(t))}catch(t){if(t instanceof bs){var i=t;throw kr.i69(kr.t5i_1,"ImageSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(Rq).z7b=function(t,n){var i,e=Ps(t).qb(new Hr(-1,0)),r=Ps(n).qb(new Hr(65535,0)),s=e.nb(32).rb(r),u=this.o6z_1.q2(s);if(null==u){var o=new Fq(t,n);Pq().o6z_1.g2(s,o),i=o}else i=u;return new Uq(i)},Pr(Fq).ga3=function(){var t=document.createElement("canvas"),n=t instanceof HTMLCanvasElement?t:Nr();n.width=this.qa4_1<=0?16:Tr(this.qa4_1,16),n.height=1;var i=n.getContext("2d"),e=i instanceof CanvasRenderingContext2D?i:Nr();if(e.strokeStyle="white",e.beginPath(),this.qa4_1<=0)e.moveTo(0,.5),e.lineTo(n.width,.5);else{var r=0,s=0;if(s<=15)do{var u=s;s=s+1|0,0!=(this.ra4_1&1<>>0,e=arguments[1]>>0,r=e<0?Math.max(i+e,0):Math.min(e,i),s=arguments[2],u=void 0===s?i:s>>0,o=u<0?Math.max(i+u,0):Math.min(u,i);r0?1:-1}),void 0===Math.clz32&&(Math.clz32=(r=Math.log,s=Math.LN2,function(t){var n=t>>>0;return 0===n?32:31-(r(n)/s|0)|0})),void 0===Math.log10&&(Math.log10=function(t){return Math.log(t)*Math.LOG10E}),void 0===Math.sinh){var u=Math.sqrt(2220446049250313e-31),o=Math.sqrt(u);Math.sinh=function(t){if(Math.abs(t)u&&(n+=t*t*t/6),n}var i=Math.exp(t),e=1/i;return isFinite(i)?isFinite(e)?(i-e)/2:-Math.exp(-t-Math.LN2):Math.exp(t-Math.LN2)}}void 0===String.prototype.startsWith&&Object.defineProperty(String.prototype,"startsWith",{value:function(t,n){return n=n||0,this.lastIndexOf(t,n)===n}}),void 0===String.prototype.endsWith&&Object.defineProperty(String.prototype,"endsWith",{value:function(t,n){var i=this.toString();(void 0===n||n>i.length)&&(n=i.length),n-=t.length;var e=i.indexOf(t,n);return-1!==e&&e===n}}),void 0===Math.imul&&(Math.imul=function(t,n){return(4294901760&t)*(65535&n)+(65535&t)*(0|n)|0}),void 0===(e="function"==typeof(i=function(t){"use strict";var n,i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt,ct,ft,vt,dt,wt,pt,mt,gt,yt,bt,$t,kt,xt,qt,St,Ct,Et,Ot,jt=Math.clz32,zt=ArrayBuffer.isView,Tt=Math.imul;function At(t){return t===ga()?this:t.og(this,wa)}function It(t){return eu(this.i2(),t)?so(this,da)?this:fu():null}function Dt(t,n){return n(t,this)}function Mt(t){return eu(this.i2(),t)?ga():this}function Nt(){}function Rt(){}function Pt(){}function Lt(){}function Ft(){this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1,this.SIZE_BITS=8}function Ut(){this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYTES=2,this.SIZE_BITS=16}function Ht(){this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Vt(){this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Bt(){this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e292,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=8,this.SIZE_BITS=64}function Wt(){}function Yt(){}function Gt(t){return!(t==t)}function Kt(t){return 32-jt(~(0|t|-t))|0}function Xt(t){return function(t){if(t.d1())return[];for(var n=t.n(),i=zs(Array(n),null),e=t.v(),r=0;e.w();){var s=r;r=s+1|0,i[s]=e.y()}return i}(t)}function Jt(t){return 0===(n=[t]).length?mn():yn(new $h(n,!0));var n}function Zt(t){return gr(n=[t],Yn(n.length));var n}function Qt(t){return Th(i=zn((n=[t]).length),n),i;var n,i}function tn(t){return t}function nn(t){return t<0&&function(){throw O_("Index overflow has happened.")}(),t}function en(t,i){!function(t,i){if(t.n()<=1)return n;var e=rn(t);kn(e,i);var r=0,s=e.length;if(r=0))throw Jo(iu("capacity must be non-negative."));return zs(Array(t),null)}function fn(t,n){t[n]=null}function vn(t,n,i){t.fill(null,n,i)}function dn(t,n){return Co(t,n)}function wn(){h=this;var t=gn(0);t.v2_1=!0,this.w2_1=t}function pn(){return null==h&&new wn,h}function mn(){return t=au(hu($n)),$n.call(t,[]),t;var t}function gn(t){return function(t,n){if($n.call(n,[]),!(t>=0))throw Jo(iu("Negative initial capacity: "+t));return n}(t,au(hu($n)))}function yn(t){return function(t,n){var i=rn(t);return $n.call(n,i),n}(t,au(hu($n)))}function bn(t,n){return tt.x2(n,t.n()),n}function $n(t){pn(),hn.call(this),this.u2_1=t,this.v2_1=!1}function kn(t,n){if(function(){if(null!=a)return a;a=!1;var t=[],n=0;if(n<600)do{var i=n;n=n+1|0,t.push(i)}while(n<600);var e=Sn;t.sort(e);var r=1,s=t.length;if(r=_)return!1}while(r0))throw Jo(iu("Non-positive load factor: "+n));return i}(t,n,au(hu(gi)))}function ti(t){return t.g4_1.length}function ni(t){return t.j4_1.length}function ii(t){t.n4_1=t.n4_1+1|0}function ei(t,n){!function(t,n){var i=ti(t)-t.l4_1|0,e=t.l4_1-t.n()|0;return i=n&&e>=(ti(t)/4|0)}(t,n)?function(t,n){if(n<0)throw p_("too many elements");if(n>ti(t)){var i=tt.q4(ti(t),n);t.g4_1=dn(t.g4_1,i);var e=t,r=t.h4_1;e.h4_1=null==r?null:dn(r,i),t.i4_1=xo(t.i4_1,i);var s=Kn(0,i);s>ni(t)&&ui(t,s)}}(t,t.l4_1+n|0):ui(t,ni(t))}function ri(t){var n=t.h4_1;if(null!=n)return n;var i=cn(ti(t));return t.h4_1=i,i}function si(t,n){return null==n?0:Tt(ru(n),-1640531527)>>>t.m4_1|0}function ui(t,n){var i,e,r,s;ii(t),t.l4_1>t.o4_1&&function(t){for(var n=0,i=0,e=t.h4_1;n=0&&(t.g4_1[i]=t.g4_1[n],null!=e&&(e[i]=e[n]),i=i+1|0),n=n+1|0;vn(t.g4_1,i,t.l4_1),null==e||vn(e,i,t.l4_1),t.l4_1=i}(t),n!==ni(t)?(t.j4_1=new Int32Array(n),t.m4_1=Xn(0,n)):(i=t.j4_1,e=0,r=0,s=ni(t),r=r===K?0:r,s=s===K?i.length:s,tt.q(r,s,i.length),i.fill(e,r,s));for(var u=0;u0&&eu(t.g4_1[r-1|0],n))return r-1|0;if((e=e-1|0)<0)return-1;var s=i;i=s-1|0,0===s&&(i=ni(t)-1|0)}}function hi(t,n){for(var i=t.l4_1;(i=i-1|0)>=0;)if(t.i4_1[i]>=0&&eu(cu(t.h4_1)[i],n))return i;return-1}function ai(t,n){t.u();t:for(;;)for(var i=si(t,n),e=Xr(Tt(t.k4_1,2),ni(t)/2|0),r=0;;){var s=t.j4_1[i];if(s<=0){if(t.l4_1>=ti(t)){ei(t,1);continue t}var u=t.l4_1;t.l4_1=u+1|0;var o=u;return t.g4_1[o]=n,t.i4_1[o]=i,t.j4_1[i]=o+1|0,t.o4_1=t.o4_1+1|0,ii(t),r>t.k4_1&&(t.k4_1=r),o}if(eu(t.g4_1[s-1|0],n))return 0|-s;if((r=r+1|0)>e){ui(t,Tt(ni(t),2));continue t}var _=i;i=_-1|0,0===_&&(i=ni(t)-1|0)}}function li(t,i){fn(t.g4_1,i),function(t,i){for(var e=i,r=i,s=0,u=Xr(Tt(t.k4_1,2),ni(t)/2|0);;){var o=e;if(e=o-1|0,0===o&&(e=ni(t)-1|0),(s=s+1|0)>t.k4_1)return t.j4_1[r]=0,n;var _=t.j4_1[e];if(0===_)return t.j4_1[r]=0,n;if(_<0?(t.j4_1[r]=-1,r=e,s=0):((si(t,t.g4_1[_-1|0])-e|0)&(ni(t)-1|0))>=s&&(t.j4_1[r]=_,t.i4_1[_-1|0]=r,r=e,s=0),(u=u-1|0)<0)return t.j4_1[r]=-1,n}}(t,t.i4_1[i]),t.i4_1[i]=-1,t.o4_1=t.o4_1-1|0,ii(t)}function ci(t,n){var i=ai(t,n.i2()),e=ri(t);if(i>=0)return e[i]=n.j2(),!0;var r=e[(0|-i)-1|0];return!eu(n.j2(),r)&&(e[(0|-i)-1|0]=n.j2(),!0)}function fi(){this.r4_1=-1640531527,this.s4_1=8,this.t4_1=2,this.u4_1=-1}function vi(t){this.v4_1=t,this.w4_1=0,this.x4_1=-1,this.y4_1=this.v4_1.n4_1,this.z4()}function di(t){vi.call(this,t)}function wi(t){vi.call(this,t)}function pi(t){vi.call(this,t)}function mi(t,n){this.t5_1=t,this.u5_1=n}function gi(t,n,i,e,r,s){this.g4_1=t,this.h4_1=n,this.i4_1=i,this.j4_1=e,this.k4_1=r,this.l4_1=s,this.m4_1=Xn(0,ni(this)),this.n4_1=0,this.o4_1=0,this.p4_1=!1}function yi(){}function bi(){return En(t=au(hu(ki))),ki.call(t),t;var t}function $i(t){return function(t,n){return jn(t,n),ki.call(n),n}(t,au(hu(ki)))}function ki(){}function xi(){return Hn(t=au(hu(Ei))),Ei.call(t),t;var t}function qi(t){return function(t,n){return Bn(t,n),Ei.call(n),n}(t,au(hu(Ei)))}function Si(t,n){return function(t,n,i){Wn(t,n,i),Ei.call(i)}(t,1,n),n}function Ci(t){return Si(t,au(hu(Ei)))}function Ei(){}function Oi(){}function ji(t,n){return u_(t,n),Ti.call(n),n}function zi(t,n,i){return __(t,n,i),Ti.call(i),i}function Ti(){_u(this,Ti)}function Ai(t){var n;if(Gt(t))throw Jo("Cannot round NaN value.");return pu(),t>new mu(-1,2147483647).f6()?(pu(),n=new mu(-1,2147483647)):(pu(),t>>4|0)),i}(t,t>>31,au(hu(Na)));var t}function Di(){}function Mi(t){this.g6_1=t}function Ni(){c=this,Mi.call(this,Object),this.l6_1="Nothing"}function Ri(){return null==c&&new Ni,c}function Pi(){}function Li(t,n,i){Mi.call(this,t),this.n6_1=n,this.o6_1=i}function Fi(t){Mi.call(this,t);var n=t.$metadata$;this.q6_1=null==n?null:n.simpleName}function Ui(){}function Hi(){}function Vi(){}function Bi(){}function Wi(t,n,i){this.r6_1=t,this.s6_1=n,this.t6_1=i}function Yi(){return d||(d=!0,f=zs(Array(0),null)),f}function Gi(t){return!(null==t)}function Ki(t){return ho(t)}function Xi(t){return null!=t&&"boolean"==typeof t}function Ji(t){return null!=t&&"number"==typeof t}function Zi(t){return null!=t&&"number"==typeof t}function Qi(t){return null!=t&&"number"==typeof t}function te(t){return null!=t&&"number"==typeof t}function ne(t){return null!=t&&"number"==typeof t}function ie(t){return null!=t&&oo(t)}function ee(t){return null!=t&&"string"==typeof t}function re(t){return t instanceof Error}function se(t){return null!=t&&lo(t)}function ue(t){return null!=t&&vo(t)}function oe(t){return null!=t&&co(t)}function _e(t){return null!=t&&fo(t)}function he(t){return null!=t&&wo(t)}function ae(t){return null!=t&&mo(t)}function le(t){return null!=t&&po(t)}function ce(t){return null!=t&&go(t)}function fe(){v=this;var t=Object;this.anyClass=new Li(t,"Any",Gi);var n=Number;this.numberClass=new Li(n,"Number",Ki),this.nothingClass=Ri();var i=Boolean;this.booleanClass=new Li(i,"Boolean",Xi);var e=Number;this.byteClass=new Li(e,"Byte",Ji);var r=Number;this.shortClass=new Li(r,"Short",Zi);var s=Number;this.intClass=new Li(s,"Int",Qi);var u=Number;this.floatClass=new Li(u,"Float",te);var o=Number;this.doubleClass=new Li(o,"Double",ne);var _=Array;this.arrayClass=new Li(_,"Array",ie);var h=String;this.stringClass=new Li(h,"String",ee);var a=Error;this.throwableClass=new Li(a,"Throwable",re);var l=Array;this.booleanArrayClass=new Li(l,"BooleanArray",se);var c=Uint16Array;this.charArrayClass=new Li(c,"CharArray",ue);var f=Int8Array;this.byteArrayClass=new Li(f,"ByteArray",oe);var d=Int16Array;this.shortArrayClass=new Li(d,"ShortArray",_e);var w=Int32Array;this.intArrayClass=new Li(w,"IntArray",he);var p=Array;this.longArrayClass=new Li(p,"LongArray",ae);var m=Float32Array;this.floatArrayClass=new Li(m,"FloatArray",le);var g=Float64Array;this.doubleArrayClass=new Li(g,"DoubleArray",ce)}function ve(){return null==v&&new fe,v}function de(t){return Array.isArray(t)?function(t){var n;switch(t.length){case 1:n=we(t[0]);break;case 0:n=Ri();break;default:n=new Pi}return n}(t):we(t)}function we(t){if(t===String)return ve().stringClass;var n,i=t.$metadata$;if(null!=i){var e;if(null==i.$kClass$){var r=new Fi(t);i.$kClass$=r,e=r}else e=i.$kClass$;n=e}else n=new Fi(t);return n}function pe(t){this.r7_1=t}function me(t){Vo(t,this),_u(this,me)}function ge(t){return ye(n=au(hu($e))),n;var n}function ye(t){return $e.call(t,""),t}function be(){return ye(au(hu($e)))}function $e(t){this.p5_1=void 0!==t?t:""}function ke(t){var n=fs(t).toUpperCase();return n.length>1?t:Vs(n,0)}function xe(t){return function(t){var n=cs(t);return 9<=n&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(t)}function qe(t){return function(t){var n=cs(t);return 452<=n&&n<=460||497<=n&&n<=499?Zu(Tt(3,(n+1|0)/3|0)):4304<=n&&n<=4346||4349<=n&&n<=4351?t:ke(t)}(t)}function Se(t){if(!(2<=t&&t<=36))throw Jo("radix "+t+" was not in valid range 2..36");return t}function Ce(t){var n,i=il(t);return null==i?sl(t):n=i,n}function Ee(t){var n=+t;return(Gt(n)&&!je(t)||0===n&&He(t))&&sl(t),n}function Oe(t,n){var i=as(t,48)>=0&&as(t,57)<=0?ls(t,48):as(t,65)>=0&&as(t,90)<=0?ls(t,65)+10|0:as(t,97)>=0&&as(t,122)<=0?ls(t,97)+10|0:as(t,128)<0?-1:as(t,65313)>=0&&as(t,65338)<=0?ls(t,65313)+10|0:as(t,65345)>=0&&as(t,65370)<=0?ls(t,65345)+10|0:Oo(t);return i>=n?-1:i}function je(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":return!0;default:return!1}}function ze(){w=this,this.g8_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.h8_1=new RegExp("[\\\\$]","g"),this.i8_1=new RegExp("\\$","g")}function Te(){return null==w&&new ze,w}function Ae(t){return t.y()}function Ie(t,n){Te(),this.l8_1=t,this.m8_1=zr(n),this.n8_1=new RegExp(t,Or(n,"","gu",K,K,K,Ne)),this.o8_1=null,this.p8_1=null}function De(t){this.a9_1=t}function Me(t,n,i,e){t.lastIndex=i;var r=t.exec(n);return null==r?null:new Pe(to(r.index,t.lastIndex-1|0),r,e,n)}function Ne(t){return t.d9_1}function Re(t,n){this.e9_1=t,this.f9_1=n,W_.call(this)}function Pe(t,n,i,e){this.j9_1=t,this.k9_1=n,this.l9_1=i,this.m9_1=e,this.g9_1=t,this.h9_1=new Re(n,this),this.i9_1=null}function Le(t){this.n9_1=t}function Fe(t,n){return Ue(),function(t,n,i){if(i=i!==K&&i,Ue(),i){var e=t.length,r=n.length,s=Math.min(e,r);if(0===s)return e-r|0;var u=0;if(u=0&&i<=t.length&&n<=i))throw Jo(iu("Failed requirement."));for(var r=n,s=be();r=0)s.s5(Zu(o));else if(o>>5==-2){var _=Je(t,o,r,i,e);_<=0?(s.s5(65533),r=r+(0|-_)|0):(s.s5(Zu(_)),r=r+1|0)}else if(o>>4==-2){var h=Ze(t,o,r,i,e);h<=0?(s.s5(65533),r=r+(0|-h)|0):(s.s5(Zu(h)),r=r+2|0)}else if(o>>3==-2){var a=Qe(t,o,r,i,e);if(a<=0)s.s5(65533),r=r+(0|-a)|0;else{var l=(a-65536|0)>>10|55296,c=1023&a|56320;s.s5(Zu(l)),s.s5(Zu(c)),r=r+3|0}}else tr(0,r,e),s.s5(65533)}return s.toString()}function Xe(t,n,i,e,r){if(nr(),!(55296<=n&&n<=56319)||i>=e)return tr(0,i,r);var s=cs(Vs(t,i));return 56320<=s&&s<=57343?65536+((1023&n)<<10)|0|1023&s:tr(0,i,r)}function Je(t,n,i,e,r){if(nr(),0==(30&n)||i>=e)return tr(0,i,r);var s=t[i];return 128!=(192&s)?tr(0,i,r):n<<6^s^3968}function Ze(t,n,i,e,r){if(nr(),i>=e)return tr(0,i,r);var s=t[i];if(0==(15&n)){if(160!=(224&s))return tr(0,i,r)}else if(13==(15&n)){if(128!=(224&s))return tr(0,i,r)}else if(128!=(192&s))return tr(0,i,r);if((i+1|0)===e)return tr(1,i,r);var u=t[i+1|0];return 128!=(192&u)?tr(1,i,r):n<<12^s<<6^u^-123008}function Qe(t,n,i,e,r){nr(),i>=e&&tr(0,i,r);var s=t[i];if(0==(15&n)){if((240&s)<=128)return tr(0,i,r)}else if(4==(15&n)){if(128!=(240&s))return tr(0,i,r)}else{if((15&n)>4)return tr(0,i,r);if(128!=(192&s))return tr(0,i,r)}if((i+1|0)===e)return tr(1,i,r);var u=t[i+1|0];if(128!=(192&u))return tr(1,i,r);if((i+2|0)===e)return tr(2,i,r);var o=t[i+2|0];return 128!=(192&o)?tr(2,i,r):n<<18^s<<12^u<<6^o^3678080}function tr(t,n,i){if(nr(),i)throw new me("Malformed sequence starting at "+(n-1|0));return 0|-t}function nr(){g||(g=!0,m=new Int8Array([-17,-65,-67]))}function ir(t){return(new sr).t9(t)}function er(t,i,e,r){if(!rr(t,i,e,r))return n;for(var s=t.cause;null!=s;){if(!rr(s,i,e,"Caused by: "))return n;s=s.cause}}function rr(t,n,i,e){n.p9_1.r5(i).r5(e);var r=t.toString();if(function(t,n){var i;t:{for(var e=t.q9_1,r=0,s=e.length;r0&&32===Vs(n,ul(n)-(s-1|0)|0);)s=s-1|0;return es(n,s)+"... and "+(e-1|0)+" more common stack frames skipped"}(n,u,_),Ws(i)>0){var h;if(0===_)h=0;else{for(var a=0,l=0;l=f&&n.p9_1.r5(i),n.p9_1.r5(w).r5("\n")}}else n.p9_1.r5(u).r5("\n")}else n.p9_1.r5(r).r5("\n");var m=function(t){var n=t._suppressed,i=null==n?null:n;return null==i?dh():i}(t);if(!m.d1())for(var g=i+" ",y=m.v();y.w();)er(y.y(),n,g,"Suppressed: ");return!0}function sr(){this.p9_1=be(),this.q9_1=[],this.r9_1="",this.s9_1=0}function ur(){if(C)return n;C=!0,y=new or("NANOSECONDS",0,1),b=new or("MICROSECONDS",1,1e3),$=new or("MILLISECONDS",2,1e6),k=new or("SECONDS",3,1e9),x=new or("MINUTES",4,6e10),q=new or("HOURS",5,36e11),S=new or("DAYS",6,864e11)}function or(t,n,i){Cs.call(this,t,n),this.w9_1=i}function _r(t,n,i){var e=Js(n.w9_1,i.w9_1);return e>0?t*(n.w9_1/i.w9_1):e<0?t/(i.w9_1/n.w9_1):t}function hr(t,n,i){var e,r=Js(n.w9_1,i.w9_1);if(r>0){var s,u=Ju(n.w9_1/i.w9_1),o=t.ba(u);o.aa(u).equals(t)?s=o:t.ca(new mu(0,0))>0?(pu(),s=new mu(-1,2147483647)):(pu(),s=new mu(0,-2147483648)),e=s}else e=r<0?t.aa(Ju(i.w9_1/n.w9_1)):t;return e}function ar(t,n,i){var e=Js(n.w9_1,i.w9_1);return e>0?t.ba(Ju(n.w9_1/i.w9_1)):e<0?t.aa(Ju(i.w9_1/n.w9_1)):t}function lr(){return ur(),y}function cr(){return ur(),$}function fr(){return ur(),k}function vr(){return ur(),x}function dr(){return ur(),q}function wr(){return ur(),S}function pr(t,n){return mr(t,n)>=0}function mr(t,n){if(null==n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,null==t[r])return r}while(i<=e)}else{var s=0,u=t.length-1|0;if(s<=u)do{var o=s;if(s=s+1|0,eu(n,t[o]))return o}while(s<=u)}return-1}function gr(t,n){for(var i=0,e=t.length;i=0}function kr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function xr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function qr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Sr(t,n,i,e,r,s,u){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,u=u===K?null:u,function(t,n,i,e,r,s,u,o){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,u=u===K?"...":u,o=o===K?null:o,n.s7(e);var _=0,h=0,a=t.length;t:for(;h1&&n.s7(i),!(s<0||_<=s))break t;Ja(n,l,o)}return s>=0&&_>s&&n.s7(u),n.s7(r),n}(t,be(),n,i,e,r,s,u).toString()}function Cr(t,n){return n>=0&&n<=yr(t)?t[n]:null}function Er(t){this.da_1=t}function Or(t,n,i,e,r,s,u){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,u=u===K?null:u,jr(t,be(),n,i,e,r,s,u).toString()}function jr(t,n,i,e,r,s,u,o){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,u=u===K?"...":u,o=o===K?null:o,n.s7(e);var _=0,h=t.v();t:for(;h.w();){var a=h.y();if((_=_+1|0)>1&&n.s7(i),!(s<0||_<=s))break t;Ja(n,a,o)}return s>=0&&_>s&&n.s7(u),n.s7(r),n}function zr(t){if(so(t,ms)){var n;switch(t.n()){case 0:n=ha();break;case 1:n=Zt(so(t,ps)?t.h1(0):t.v().y());break;default:n=Lr(t,Ci(t.n()))}return n}return function(t){switch(t.n()){case 0:return ha();case 1:return Zt(t.v().y());default:return t}}(Lr(t,xi()))}function Tr(t,n){if(so(n,ms)){var i=gn(t.n()+n.n()|0);return i.z(t),i.z(n),i}var e=yn(t);return Ah(e,n),e}function Ar(t){return new Br(t)}function Ir(t){if(t.d1())throw k_("List is empty.");return t.h1(wh(t))}function Dr(t){var n;switch(t.n()){case 0:throw k_("List is empty.");case 1:n=t.h1(0);break;default:throw Jo("List has more than one element.")}return n}function Mr(t){return yn(t)}function Nr(t){if(so(t,ms)){var n;switch(t.n()){case 0:n=dh();break;case 1:n=Jt(so(t,ps)?t.h1(0):t.v().y());break;default:n=Mr(t)}return n}return gh(Fr(t))}function Rr(t){if(so(t,ps))return Dr(t);var n=t.v();if(!n.w())throw k_("Collection is empty.");var i=n.y();if(n.w())throw Jo("Collection has more than one element.");return i}function Pr(t){if(so(t,ps))return Vr(t);var n=t.v();if(!n.w())throw k_("Collection is empty.");return n.y()}function Lr(t,n){for(var i=t.v();i.w();){var e=i.y();n.s(e)}return n}function Fr(t){return so(t,ms)?Mr(t):Lr(t,mn())}function Ur(t){return so(t,ms)?qi(t):Lr(t,xi())}function Hr(t){if(so(t,ps))return Ir(t);var n=t.v();if(!n.w())throw k_("Collection is empty.");for(var i=n.y();n.w();)i=n.y();return i}function Vr(t){if(t.d1())throw k_("List is empty.");return t.h1(0)}function Br(t){this.ea_1=t}function Wr(t,n){return n<=r.MIN_VALUE?Pa().fa_1:to(t,n-1|0)}function Yr(t,n){return wt.ga(t,n,-1)}function Gr(t,n,i){if(n.ca(i)>0)throw Jo("Cannot coerce value to an empty range: maximum "+i.toString()+" is less than minimum "+n.toString()+".");return t.ca(n)<0?n:t.ca(i)>0?i:t}function Kr(t,n){return tn?n:t}function Jr(t,n,i){if(n>i)throw Jo("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t}function Zr(t,n){return new Hh(t,n)}function Qr(t){var n=t.v();if(!n.w())return dh();var i=n.y();if(!n.w())return Jt(i);var e=mn();for(e.s(i);n.w();)e.s(n.y());return e}function ts(t){return new ns(t)}function ns(t){this.na_1=t}function is(t){if(0===Ws(t))throw k_("Char sequence is empty.");return Vs(t,ul(t))}function es(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));return rs(t,Kr(t.length-n|0,0))}function rs(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));var i=Xr(n,t.length);return t.substring(0,i)}function ss(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));var i=Xr(n,t.length);return t.substring(i)}function us(){var t,n=(v_(t=au(hu(os))),os.call(t),t);return _u(n,us),n}function os(){_u(this,os)}function _s(t){return t}function hs(t){return 65535&t}function as(t,n){return t-n|0}function ls(t,n){return t-n|0}function cs(t){return t}function fs(t){return String.fromCharCode(t)}function vs(){O=this,this.pa_1=0,this.qa_1=65535,this.ra_1=55296,this.sa_1=56319,this.ta_1=56320,this.ua_1=57343,this.va_1=55296,this.wa_1=57343,this.xa_1=2,this.ya_1=16}function ds(){return null==O&&new vs,O}function ws(t){ds(),this.oa_1=t}function ps(){}function ms(){}function gs(){}function ys(){}function bs(){}function $s(){}function ks(){}function xs(){}function qs(){}function Ss(){}function Cs(t,n){this.x9_1=t,this.y9_1=n}function Es(t){var n=null==t?null:iu(t);return null==n?"null":n}function Os(t,n){var i=null==t?null:iu(t),e=null==i?"null":i,r=null==n?null:iu(n);return e+(null==r?"null":r)}function js(t){for(var n=1,i=[],e=0,r=t.length;e>5,f=new Int32Array(c+1|0),v=1<<(31&l),f[c]=f[c]|v,f);null!=a&&(i.push(a),u=Math.max(u,a.length)),u>n&&(n=u)}var l,c,f,v;return function(t,n){for(var i=0,e=new Int32Array(t);i65535),e)throw Jo("Invalid Char code: "+r);i=Zu(r)}else i=t.b(n);return i}function Bs(t){return"string"==typeof t}function Ws(t){return Bs(t)?t.length:t.a()}function Ys(t,n,i){return Bs(t)?t.substring(n,i):t.c(n,i)}function Gs(t,n){var i=t,e=n;if(i===e)return!0;if(null==i||null==e||!eo(e)||i.length!=e.length)return!1;var r=0,s=i.length;if(rn)i=1;else if(t===n){var e;if(0!==t)e=0;else{var r=1/t;e=r===1/n?0:r<0?-1:1}i=e}else i=t!=t?n!=n?0:1:-1;return i}function Qs(t,n){return tn?1:0}function tu(t){if(!("kotlinHashCodeValue$"in t)){var n=nu(),i=new Object;i.value=n,i.enumerable=!1,Object.defineProperty(t,"kotlinHashCodeValue$",i)}return t.kotlinHashCodeValue$}function nu(){return 4294967296*Math.random()|0}function iu(t){return null==t?"null":eo(t)?"[...]":"function"!=typeof t.toString?su(t):t.toString()}function eu(t,n){return null==t?null==n:null!=n&&("object"==typeof t&&"function"==typeof t.equals?t.equals(n):t!=t?n!=n:"number"==typeof t&&"number"==typeof n?t===n&&(0!==t||1/t==1/n):t===n)}function ru(t){if(null==t)return 0;var n,i=typeof t;switch(i){case"object":n="function"==typeof t.hashCode?t.hashCode():tu(t);break;case"function":n=tu(t);break;case"number":n=Us(t);break;case"boolean":n=uu(t);break;case"string":n=ou(String(t));break;case"bigint":n=function(t){for(var n=BigInt(32),i=BigInt(4294967295),e=t<0?-t:t,r=0,s=t<0?-1:1;0!=e;){var u=Number(e&i);r=Tt(31,r)+u|0,e>>=n}return Tt(r,s)}(t);break;case"symbol":n=function(t){var n=(e=t,Symbol.keyFor(e)!=K?(M===K&&(M=new Map),M):(N===K&&(N=new WeakMap),N)),i=n.get(t);var e;if(i!==K)return i;var r=nu();return n.set(t,r),r}(t);break;default:n=function(){throw new Error("Unexpected typeof `"+i+"`")}()}return n}function su(t){return Object.prototype.toString.call(t)}function uu(t){return t?1231:1237}function ou(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=t.charCodeAt(r);n=Tt(n,31)+s|0}while(r!==e);return n}function _u(t,n){null!=Error.captureStackTrace?Error.captureStackTrace(t,n):t.stack=(new Error).stack}function hu(t){return t.prototype}function au(t){return Object.create(t)}function lu(t,n,i){Error.call(t),function(t,n,i){var e=bo(Object.getPrototypeOf(t));if(0==(1&e)){var r;if(null==n){var s;if(null!==n){var u=null==i?null:i.toString();s=null==u?K:u}else s=K;r=s}else r=n;t.message=r}0==(2&e)&&(t.cause=i),t.name=Object.getPrototypeOf(t).constructor.name}(t,n,i)}function cu(t){var n;return null==t?function(){throw N_()}():n=t,n}function fu(){throw F_()}function vu(t,n){for(var i=t.length,e=n.length,r=0,s=n;rr)for(e.length=n;r>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,u=n.m_1>>>16|0,o=65535&n.m_1,_=n.l_1>>>16|0,h=0,a=0,l=0,c=0;return h=(h=h+((a=(a=a+((l=(l=l+((c=c+(s+(65535&n.l_1)|0)|0)>>>16|0)|0)+(r+_|0)|0)>>>16|0)|0)+(e+o|0)|0)>>>16|0)|0)+(i+u|0)|0,new mu((l&=65535)<<16|(c&=65535),(h&=65535)<<16|(a&=65535))}function Su(t,n){return Uu(),qu(t,n.lb())}function Cu(t,n){if(Uu(),Du(t))return gu();if(Du(n))return gu();if(zu(t,$u()))return Mu(n)?$u():gu();if(zu(n,$u()))return Mu(t)?$u():gu();if(Iu(t))return Iu(n)?Cu(Nu(t),Nu(n)):Nu(Cu(Nu(t),n));if(Iu(n))return Nu(Cu(t,Nu(n)));if(Ru(t,ku())&&Ru(n,ku()))return Pu(ju(t)*ju(n));var i=t.m_1>>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,u=n.m_1>>>16|0,o=65535&n.m_1,_=n.l_1>>>16|0,h=65535&n.l_1,a=0,l=0,c=0,f=0;return c=c+((f=f+Tt(s,h)|0)>>>16|0)|0,f&=65535,l=(l=l+((c=c+Tt(r,h)|0)>>>16|0)|0)+((c=(c&=65535)+Tt(s,_)|0)>>>16|0)|0,c&=65535,a=(a=(a=a+((l=l+Tt(e,h)|0)>>>16|0)|0)+((l=(l&=65535)+Tt(r,_)|0)>>>16|0)|0)+((l=(l&=65535)+Tt(s,o)|0)>>>16|0)|0,l&=65535,a=a+(((Tt(i,h)+Tt(e,_)|0)+Tt(r,o)|0)+Tt(s,u)|0)|0,new mu(c<<16|f,(a&=65535)<<16|l)}function Eu(t,n){Uu();var i=63&n;return 0===i?t:i<32?new mu(t.l_1<>>(32-i|0)|0):new mu(0,t.l_1<<(i-32|0))}function Ou(t,n){Uu();var i=63&n;return 0===i?t:i<32?new mu(t.l_1>>>i|0|t.m_1<<(32-i|0),t.m_1>>i):new mu(t.m_1>>(i-32|0),t.m_1>=0?0:-1)}function ju(t){return Uu(),4294967296*t.m_1+function(t){return Uu(),t.l_1>=0?t.l_1:4294967296+t.l_1}(t)}function zu(t,n){return Uu(),t.m_1===n.m_1&&t.l_1===n.l_1}function Tu(t,n){if(Uu(),n<2||36=0x8000000000000000)return Uu(),U;if(t<0)return Nu(Pu(-t));var n=4294967296;return new mu(t%n|0,t/n|0)}function Lu(t,n){return Uu(),xu(t,n)>0}function Fu(t,n){return Uu(),xu(t,n)>=0}function Uu(){B||(B=!0,P=Au(0),L=Au(1),F=Au(-1),U=new mu(-1,2147483647),H=new mu(0,-2147483648),V=Au(16777216))}function Hu(t,n,i,e,r){return Vu("class",t,n,i,e,r,null)}function Vu(t,n,i,e,r,s,u){return{kind:t,simpleName:n,associatedObjectKey:e,associatedObjects:r,suspendArity:s,$kClass$:K,defaultConstructor:i,iid:u}}function Bu(t,n,i,e,r,s,u,o,_){null!=e&&(t.prototype=Object.create(e.prototype),t.prototype.constructor=t);var h=i(n,s,u,o,null==_?[]:_);t.$metadata$=h,null!=r&&((null!=h.iid?t:t.prototype).$imask$=js(r))}function Wu(t,n,i,e,r){return Vu("interface",t,n,i,e,r,(W===K&&(W=0),W=W+1|0))}function Yu(t,n,i,e,r){return Vu("object",t,n,i,e,r,null)}function Gu(t){return t<<24>>24}function Ku(t){return t instanceof mu?t.la():function(t){return t>2147483647?2147483647:t<-2147483648?-2147483648:0|t}(t)}function Xu(t){return t<<16>>16}function Ju(t){return t instanceof mu?t:Pu(t)}function Zu(t){return hs(Xu(Ku(t)))}function Qu(t){return Au(t)}function to(t,n){return new La(t,n)}function no(){return io(),Hu(K,K,K,K,K)}function io(){if(!G){G=!0;var t=[no(),no()],n=[no(),no()];Y=[t,n,[no(),no()]]}}function eo(t){return!!ro(t)||zt(t)}function ro(t){return Array.isArray(t)}function so(t,n){return uo(t,n.$metadata$.iid)}function uo(t,n){var i=t.$imask$;return null!=i&&function(t,n){var i=n>>5;if(i>t.length)return!1;var e=1<<(31&n);return!(0==(t[i]&e))}(i,n)}function oo(t){return!!ro(t)&&!t.$type$}function _o(t,n){if("function"==typeof t)return t.$arity===n;var i=null==t?null:t.constructor,e=null==i?null:i.$metadata$,r=null==e?null:e.suspendArity;if(null==r)return!1;var s=r,u=!1,o=0,_=s.length;t:for(;o<_;){var h=s[o];if(o=o+1|0,n===h){u=!0;break t}}return u}function ho(t){return"number"==typeof t||t instanceof mu}function ao(t){return"string"==typeof t||so(t,Nt)}function lo(t){return!!ro(t)&&"BooleanArray"===t.$type$}function co(t){return t instanceof Int8Array}function fo(t){return t instanceof Int16Array}function vo(t){return t instanceof Uint16Array&&"CharArray"===t.$type$}function wo(t){return t instanceof Int32Array}function po(t){return t instanceof Float32Array}function mo(t){return!!ro(t)&&"LongArray"===t.$type$}function go(t){return t instanceof Float64Array}function yo(t,n){if(n===Object)return null!=t;var i=typeof t;if(null==t||null==n||"object"!==i&&"function"!==i)return!1;var e="object"==typeof n?function(t){return Object.getPrototypeOf(t)}(n):n,r=e.$metadata$;if("interface"===(null==r?null:r.kind)){var s=r.iid;return null!=s&&uo(t,s)}return t instanceof e}function bo(t){var n=t.constructor,i=null==n?null:n.$metadata$,e=null==i?null:i.errorInfo;if(null!=e)return e;var r,s=0;if($o(t,"message")&&(s|=1),$o(t,"cause")&&(s|=2),3!==s){var u=(r=t,Object.getPrototypeOf(r));u!=Error.prototype&&(s|=bo(u))}return null!=i&&(i.errorInfo=s),s}function $o(t,n){return t.hasOwnProperty(n)}function ko(t){return new $n(t)}function xo(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Int32Array(n))}function qo(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Int8Array(n))}function So(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)}function Co(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return du(t,n,null)}function Eo(t,n,i){for(var e=new Int32Array(i),r=0,s=0,u=0,o=0,_=t.length;o<_;){var h=Vs(t,o);o=o+1|0;var a=n[h];if(s|=(31&a)<(s=t[r=(i+e|0)/2|0]))i=r+1|0;else{if(n===s)return r;e=r-1|0}return r-(n=t.pd_1.length?n-t.pd_1.length|0:n}function ah(t,n){return n===yr(t.pd_1)?0:n+1|0}function lh(t,n){return 0===n?yr(t.pd_1):n-1|0}function ch(){it=this,this.rd_1=[],this.sd_1=10}function fh(){return null==it&&new ch,it}function vh(){fh(),this.od_1=0,this.qd_1=0}function dh(){return bh()}function wh(t){return t.n()-1|0}function ph(t){return to(0,t.n()-1|0)}function mh(t){return 0===t.length?mn():yn(new $h(t,!0))}function gh(t){switch(t.n()){case 0:return dh();case 1:return Jt(t.h1(0));default:return t}}function yh(){et=this,this.be_1=new mu(-1478467534,-1720727600)}function bh(){return null==et&&new yh,et}function $h(t,n){this.fe_1=t,this.ge_1=n}function kh(){}function xh(t,n){this.je_1=t,this.ke_1=n}function qh(t,n){return so(t,ms)?t.n():n}function Sh(t){this.le_1=t}function Ch(t){this.me_1=t,this.ne_1=0}function Eh(){}function Oh(){var t=(null==st&&new jh,st);return so(t,ks)?t:fu()}function jh(){st=this,this.pe_1=new mu(-888910638,1920087921)}function zh(t,n){return function(t,n){for(var i=n.v();i.w();){var e=i.y(),r=e.ue(),s=e.ve();t.g2(r,s)}}(n,t),n}function Th(t,n){for(var i=0,e=n.length;i=0))throw Jo(iu("count must be non-negative, but was "+this.bg_1+"."))}function ia(t){t.cg_1=-2===t.dg_1?t.eg_1.fg_1():t.eg_1.gg_1(cu(t.cg_1)),t.dg_1=null==t.cg_1?0:1}function ea(t){this.eg_1=t,this.cg_1=null,this.dg_1=-2}function ra(t,n){this.fg_1=t,this.gg_1=n}function sa(){}function ua(t){this.hg_1=t}function oa(t){return t.v()}function _a(t){return t}function ha(){return la()}function aa(){ot=this,this.ig_1=new mu(1993859828,793161749)}function la(){return null==ot&&new aa,ot}function ca(){}function fa(){}function va(){}function da(){}function wa(t,n){var i,e=t.ng(n.i2());if(e===ga())i=n;else{var r,s=e.kc(_t);if(null==s)r=new ka(e,n);else{var u=e.ng(_t);r=u===ga()?new ka(n,s):new ka(new ka(u,n),s)}i=r}return i}function pa(){}function ma(){ht=this,this.qg_1=new mu(0,0)}function ga(){return null==ht&&new ma,ht}function ya(t){for(var n=t,i=2;;){var e=n.rg_1,r=e instanceof ka?e:null;if(null==r)return i;n=r,i=i+1|0}}function ba(t,n){return eu(t.kc(n.i2()),n)}function $a(t,n){return 0===Ws(t)?iu(n):t+", "+n}function ka(t,n){this.rg_1=t,this.sg_1=n}function xa(t,n){this.jg_1=n;var i;i=t instanceof xa?t.kg_1:t,this.kg_1=i}function qa(t){this.tg_1=t}function Sa(){return function(){if(lt)return n;lt=!0,at=new Ca("COROUTINE_SUSPENDED",0),new Ca("UNDECIDED",1),new Ca("RESUMED",2)}(),at}function Ca(t,n){Cs.call(this,t,n)}function Ea(t){X_.call(this),this.ug_1=t}function Oa(t,n,i){var e;if(i>0)e=t>=n?n:n-ja(n,t,i)|0;else{if(!(i<0))throw Jo("Step is zero.");e=t<=n?n:n+ja(t,n,0|-i)|0}return e}function ja(t,n,i){return za(za(t,i)-za(n,i)|0,i)}function za(t,n){var i=t%n|0;return i>=0?i:i+n|0}function Ta(){ct=this,Ia.call(this),this.xg_1=Ii()}function Aa(){return null==ct&&new Ta,ct}function Ia(){Aa()}function Da(t,n){if(!(n>t))throw Jo(iu(function(t,n){return"Random range is empty: ["+iu(t)+", "+iu(n)+")."}(t,n)))}function Ma(){ft=this,this.bh_1=new mu(0,0)}function Na(t,n,i,e,r,s){if(null==ft&&new Ma,Ia.call(this),this.ch_1=t,this.dh_1=n,this.eh_1=i,this.fh_1=e,this.gh_1=r,this.hh_1=s,0==(this.ch_1|this.dh_1|this.eh_1|this.fh_1|this.gh_1))throw Jo(iu("Initial state must have at least one non-zero element."));var u=0;if(u<64)do{u=u+1|0,this.we()}while(u<64)}function Ra(){vt=this,this.fa_1=new La(1,0)}function Pa(){return null==vt&&new Ra,vt}function La(t,n){Pa(),Wa.call(this,t,n,1)}function Fa(){dt=this,this.jh_1=new Ua(1,0)}function Ua(t,n){null==dt&&new Fa,Ga.call(this,t,n,1)}function Ha(t,n,i){Dh.call(this),this.th_1=i,this.uh_1=n,this.vh_1=this.th_1>0?t<=n:t>=n,this.wh_1=this.vh_1?t:this.uh_1}function Va(t,n,i){Mh.call(this),this.xh_1=i,this.yh_1=n,this.zh_1=this.xh_1>0?as(t,n)<=0:as(t,n)>=0;var e;e=this.zh_1?t:this.yh_1,this.ai_1=e}function Ba(){}function Wa(t,n,i){if(0===i)throw Jo("Step must be non-zero.");if(i===r.MIN_VALUE)throw Jo("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.ha_1=t,this.ia_1=Oa(t,n,i),this.ja_1=i}function Ya(){}function Ga(t,n,i){if(0===i)throw Jo("Step must be non-zero.");if(i===r.MIN_VALUE)throw Jo("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.oh_1=t;var e=t,s=n;this.ph_1=Zu(Oa(e,s,i)),this.qh_1=i}function Ka(){}function Xa(){}function Ja(t,n,i){null!=i?t.s7(i(n)):null==n||ao(n)?t.s7(n):n instanceof ws?t.s5(n.oa_1):t.s7(Es(n))}function Za(t,n,i){if(t===n)return!0;if(!(i=i!==K&&i))return!1;var e=ke(t),r=ke(n);return e===r||Vs(fs(e).toLowerCase(),0)===Vs(fs(r).toLowerCase(),0)}function Qa(t){return 0===Ws(t)?nl:(n=t,function(t){return n+t});var n}function tl(t){var n;t:{var i=0,e=Ws(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!xe(Vs(t,r))){n=r;break t}}while(i<=e);n=-1}var s=n;return-1===s?t.length:s}function nl(t){return t}function il(t){return function(t,n){Se(n);var i,e,r,s=t.length;if(0===s)return null;var u=Vs(t,0);if(as(u,48)<0){if(1===s)return null;if(i=1,45===u)e=!0,pu(),r=new mu(0,-2147483648);else{if(43!==u)return null;e=!1,pu(),r=new mu(-1,2147483647).lb()}}else i=0,e=!1,pu(),r=new mu(-1,2147483647).lb();pu();var o=new mu(-1,2147483647).lb().aa(Qu(36)),_=o,h=new mu(0,0),a=i;if(a=0}function al(t,n,i){return i=i===K?32:i,iu(function(t,n,i){if(i=i===K?32:i,n<0)throw Jo("Desired length "+n+" is less than zero.");if(n<=Ws(t))return Ys(t,0,Ws(t));var e=ge(),r=1,s=n-Ws(t)|0;if(r<=s)do{var u=r;r=r+1|0,e.s5(i)}while(u!==s);return e.s7(t),e}(ao(t)?t:fu(),n,i))}function ll(t,n,i,e){var r;if(i=i===K?ul(t):i,(e=e!==K&&e)||"string"!=typeof t)r=function(t,n,i,e){if(i=i===K?ul(t):i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=fs(br(n));return t.lastIndexOf(r,i)}var s=Xr(i,ul(t));if(0<=s)do{var u=s;s=s+-1|0;var o,_=Vs(t,u);t:{for(var h=0,a=n.length;h0&&Za(Vs(t,0),n,i)}function fl(t,n,i,e){return i=i===K?0:i,(e=e!==K&&e)||"string"!=typeof t?yl(t,n,i,Ws(t),e):t.indexOf(n,i)}function vl(t,n,i,e){if(i=i===K?0:i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=fs(br(n));return t.indexOf(r,i)}var s=Kr(i,0),u=ul(t);if(s<=u)do{var o=s;s=s+1|0;var _,h=Vs(t,o);t:{for(var a=0,l=n.length;a(Ws(t)-r|0)||e>(Ws(i)-r|0))return!1;var u=0;if(u0,o=gn(u?Xr(e,10):10);t:do{var _=iu(Ys(t,r,s));if(o.s(_),r=s+n.length|0,u&&o.n()===(e-1|0))break t;s=fl(t,n,r,i)}while(-1!==s);var h=iu(Ys(t,r,Ws(t)));return o.s(h),o}function ml(t,n){return iu(Ys(t,n.y8(),n.z8()+1|0))}function gl(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,bl(r=r===K?0:r),new xl(t,i,r,(s=ko(n),u=e,function(t,n){var i=function(t,n,i,e,r){if(!e&&1===n.n()){var s=Rr(n),u=r?ql(t,s,i):fl(t,s,i);return u<0?null:kc(u,s)}var o=r?Yr(Xr(i,ul(t)),0):to(Kr(i,0),Ws(t));if("string"==typeof t){var _=o.ha_1,h=o.ia_1,a=o.ja_1;if(a>0&&_<=h||a<0&&h<=_)do{var l,c=_;_=_+a|0;t:{for(var f=n.v();f.w();){var v=f.y();if(We(v,0,t,c,v.length,e)){l=v;break t}}l=null}if(null!=l)return kc(c,l)}while(c!==h)}else{var d=o.ha_1,w=o.ia_1,p=o.ja_1;if(p>0&&d<=w||p<0&&w<=d)do{var m,g=d;d=d+p|0;t:{for(var y=n.v();y.w();){var b=y.y();if(wl(b,0,t,g,b.length,e)){m=b;break t}}m=null}if(null!=m)return kc(g,m)}while(g!==w)}return null}(t,s,n,u,!1);return null==i?null:kc(i.se_1,i.te_1.length)}));var s,u}function yl(t,n,i,e,r,s){var u=(s=s!==K&&s)?Yr(Xr(i,ul(t)),Kr(e,0)):to(Kr(i,0),Xr(e,Ws(t)));if("string"==typeof t&&"string"==typeof n){var o=u.ha_1,_=u.ia_1,h=u.ja_1;if(h>0&&o<=_||h<0&&_<=o)do{var a=o;if(o=o+h|0,We(n,0,t,a,Ws(n),r))return a}while(a!==_)}else{var l=u.ha_1,c=u.ia_1,f=u.ja_1;if(f>0&&l<=c||f<0&&c<=l)do{var v=l;if(l=l+f|0,wl(n,0,t,v,Ws(n),r))return v}while(v!==c)}return-1}function bl(t){if(!(t>=0))throw Jo(iu("Limit must be non-negative, but was "+t))}function $l(t){if(t.di_1<0)t.bi_1=0,t.ei_1=null;else{var n;if(t.gi_1.ji_1>0?(t.fi_1=t.fi_1+1|0,n=t.fi_1>=t.gi_1.ji_1):n=!1,n||t.di_1>Ws(t.gi_1.hi_1))t.ei_1=to(t.ci_1,ul(t.gi_1.hi_1)),t.di_1=-1;else{var i=t.gi_1.ki_1(t.gi_1.hi_1,t.di_1);if(null==i)t.ei_1=to(t.ci_1,ul(t.gi_1.hi_1)),t.di_1=-1;else{var e=i.ue(),r=i.ve();t.ei_1=Wr(t.ci_1,e),t.ci_1=e+r|0,t.di_1=t.ci_1+(0===r?1:0)|0}}t.bi_1=1}}function kl(t){this.gi_1=t,this.bi_1=-1,this.ci_1=Jr(t.ii_1,0,Ws(t.hi_1)),this.di_1=this.ci_1,this.ei_1=null,this.fi_1=0}function xl(t,n,i,e){this.hi_1=t,this.ii_1=n,this.ji_1=i,this.ki_1=e}function ql(t,n,i,e){return i=i===K?ul(t):i,(e=e!==K&&e)||"string"!=typeof t?yl(t,n,i,0,e,!0):t.lastIndexOf(n,i)}function Sl(t){return Qr(_l(t))}function Cl(t,n,i){return(i=i!==K&&i)||"string"!=typeof t||"string"!=typeof n?wl(t,Ws(t)-Ws(n)|0,n,0,Ws(n),i):Ye(t,n)}function El(t){if(jl(t)){var n=Ol(t);if(!(new mu(387905,-1073741824).ca(n)<=0&&n.ca(new mu(-387905,1073741823))<=0))throw z_(Ol(t).toString()+" ns is out of nanoseconds range")}else{var i=Ol(t);if(!(new mu(1,-1073741824).ca(i)<=0&&i.ca(new mu(-1,1073741823))<=0))throw z_(Ol(t).toString()+" ms is out of milliseconds range");var e=Ol(t);if(new mu(1108857478,-1074).ca(e)<=0&&e.ca(new mu(-1108857478,1073))<=0)throw z_(Ol(t).toString()+" ms is denormalized")}return t}function Ol(t){return t.ob(1)}function jl(t){return 0==(1&t.la())}function zl(t){return 1==(1&t.la())}function Tl(){pt=this,this.li_1=El(new mu(0,0)),this.mi_1=Yl(new mu(-1,1073741823)),this.ni_1=Yl(new mu(1,-1073741824))}function Al(){return null==pt&&new Tl,pt}function Il(t){return n=Ol(t).lb(),i=1&t.la(),El(n.nb(1).gb(Qu(i)));var n,i}function Dl(t,n){if(Rl(t)){if(function(t){return!Rl(t)}(n)||t.sb(n).ca(new mu(0,0))>=0)return t;throw Jo("Summing infinite durations of different signs yields an undefined result.")}if(Rl(n))return n;var i,e;if((1&t.la())==(1&n.la())){var r=Ol(t).gb(Ol(n));i=jl(t)?(e=r,new mu(387905,-1073741824).ca(e)<=0&&e.ca(new mu(-387905,1073741823))<=0?Ql(e):Yl(Jl(e))):Xl(r)}else i=zl(t)?Ml(0,Ol(t),Ol(n)):Ml(0,Ol(n),Ol(t));return i}function Ml(t,n,i){var e,r=Jl(i),s=n.gb(r);if(new mu(1108857478,-1074).ca(s)<=0&&s.ca(new mu(-1108857478,1073))<=0){var u=i.hb(Zl(r));e=Ql(Zl(s).gb(u))}else e=Yl(Gr(s,new mu(1,-1073741824),new mu(-1,1073741823)));return e}function Nl(t){return t.ca(new mu(0,0))<0}function Rl(t){return!!t.equals(Al().mi_1)||t.equals(Al().ni_1)}function Pl(t,n){var i=t.sb(n);if(i.ca(new mu(0,0))<0||0==(1&i.la()))return t.ca(n);var e=(1&t.la())-(1&n.la())|0;return Nl(t)?0|-e:e}function Ll(t){return Rl(t)?0:function(t){return Hl(t,dr())}(t).ib(Qu(24)).la()}function Fl(t){return Rl(t)?0:function(t){return Hl(t,vr())}(t).ib(Qu(60)).la()}function Ul(t){return Rl(t)?0:function(t){return Hl(t,fr())}(t).ib(Qu(60)).la()}function Hl(t,n){var i,e=t;return e.equals(Al().mi_1)?(pu(),i=new mu(-1,2147483647)):e.equals(Al().ni_1)?(pu(),i=new mu(0,-2147483648)):i=hr(Ol(t),function(t){return jl(t)?lr():cr()}(t),n),i}function Vl(t){var n,i=t;if(i.equals(new mu(0,0)))n="0s";else if(i.equals(Al().mi_1))n="Infinity";else if(i.equals(Al().ni_1))n="-Infinity";else{var e=Nl(t),r=be();e&&r.s5(45);var s=function(t){return Nl(t)?Il(t):t}(t),u=function(t){return Hl(t,wr())}(s),o=Ll(s),_=Fl(s),h=Ul(s),a=function(t){var n;n=Rl(t)?0:zl(t)?Zl(Ol(t).ib(Qu(1e3))).la():Ol(t).ib(Qu(1e9)).la();return n}(s),l=!u.equals(new mu(0,0)),c=!(0===o),f=!(0===_),v=0!==h||!(0===a),d=0;if(l&&(r.w7(u).s5(100),d=d+1|0),c||l&&(f||v)){var w=d;d=w+1|0,w>0&&r.s5(32),r.v7(o).s5(104)}if(f||v&&(c||l)){var p=d;d=p+1|0,p>0&&r.s5(32),r.v7(_).s5(109)}if(v){var m=d;d=m+1|0,m>0&&r.s5(32),0!==h||l||c||f?Bl(r,0,h,a,9,"s",!1):a>=1e6?Bl(r,0,a/1e6|0,a%1e6|0,6,"ms",!1):a>=1e3?Bl(r,0,a/1e3|0,a%1e3|0,3,"us",!1):r.v7(a).r5("ns")}e&&d>1&&r.y7(1,40).s5(41),n=r.toString()}return n}function Bl(t,n,i,e,r,s,u){if(t.v7(i),0!==e){t.s5(46);var o,_=al(e.toString(),r,48);t:{var h=Ws(_)-1|0;if(0<=h)do{var a=h;if(h=h+-1|0,48!==Vs(_,a)){o=a;break t}}while(0<=h);o=-1}var l=o+1|0;!u&&l<3?t.u7(_,0,l):t.u7(_,0,Tt((l+2|0)/3|0,3))}t.r5(s)}function Wl(t){Al(),this.pi_1=t}function Yl(t){return El(t.nb(1).gb(Qu(1)))}function Gl(t,n){var i=ar(new mu(-387905,1073741823),lr(),n);return i.lb().ca(t)<=0&&t.ca(i)<=0?Ql(ar(t,n,lr())):Yl(Gr(hr(t,n,cr()),new mu(1,-1073741824),new mu(-1,1073741823)))}function Kl(t,n){var i=_r(t,n,lr());if(Gt(i))throw Jo(iu("Duration value cannot be NaN."));var e=Ai(i);return new mu(387905,-1073741824).ca(e)<=0&&e.ca(new mu(-387905,1073741823))<=0?Ql(e):Xl(Ai(_r(t,n,cr())))}function Xl(t){return new mu(1108857478,-1074).ca(t)<=0&&t.ca(new mu(-1108857478,1073))<=0?Ql(Zl(t)):Yl(Gr(t,new mu(1,-1073741824),new mu(-1,1073741823)))}function Jl(t){return t.aa(Qu(1e6))}function Zl(t){return t.ba(Qu(1e6))}function Ql(t){return El(t.nb(1))}function tc(t){var n,i,e=t.length,r=0;if(e>0&&hl("+-",Vs(t,0))&&(r=r+1|0),(e-r|0)>16){var s;t:{var u=to(r,ul(t));if(so(u,ms)&&u.d1())s=!0;else{for(var o=u.v();o.w();){var _=Vs(t,o.y());if(!(48<=_&&_<=57)){s=!1;break t}}s=!0}}n=s}else n=!1;return n?(45===Vs(t,0)?(pu(),i=new mu(0,-2147483648)):(pu(),i=new mu(-1,2147483647)),i):Ve(t,"+")?Ce(ss(t,1)):Ce(t)}function nc(t,n){var i;if(n){var e;if(72===t)e=dr();else if(77===t)e=vr();else{if(83!==t)throw Jo("Invalid duration ISO time unit: "+fs(t));e=fr()}i=e}else{if(68!==t)throw Jo("Invalid or unsupported duration ISO non-time unit: "+fs(t));i=wr()}return i}function ic(t){var n;switch(t){case"ns":n=lr();break;case"us":ur(),n=b;break;case"ms":n=cr();break;case"s":n=fr();break;case"m":n=vr();break;case"h":n=dr();break;case"d":n=wr();break;default:throw Jo("Unknown duration unit short name: "+t)}return n}function ec(){return oc(),mt}function rc(){}function sc(t){this.si_1=t}function uc(t,n){rc.call(this),this.ti_1=_o(t,2)?t:fu(),this.ui_1=n,this.vi_1=so(this,ca)?this:fu(),this.wi_1=ec()}function oc(){if(!gt){gt=!0;var t=Sa();mt=t}}function _c(){if($t)return n;$t=!0,new hc("SYNCHRONIZED",0),yt=new hc("PUBLICATION",1),bt=new hc("NONE",2)}function hc(t,n){Cs.call(this,t,n)}function ac(t){this.aj_1=t,this.bj_1=kt}function lc(){}function cc(t){return t}function fc(t){return t}function vc(t){return t instanceof pc}function dc(t){return t instanceof pc?t.dj_1:null}function wc(){}function pc(t){this.dj_1=t}function mc(t){this.ej_1=t}function gc(t){return new pc(t)}function yc(t){if(t instanceof pc)throw t.dj_1}function bc(t){S_(t=t===K?"An operation is not implemented.":t,this),_u(this,bc)}function $c(t,n){this.se_1=t,this.te_1=n}function kc(t,n){return new $c(t,n)}function xc(t,n,i){this.fj_1=t,this.gj_1=n,this.hj_1=i}function qc(t){return t}function Sc(t){return t}function Cc(){qt=this,this.ij_1=0,this.jj_1=-1,this.kj_1=1,this.lj_1=8}function Ec(){return null==qt&&new Cc,qt}function Oc(t,n){return Js(255&t,255&n)}function jc(t){Ec(),this.mj_1=t}function zc(t){return t}function Tc(t){return t}function Ac(t){return t.length}function Ic(t){this.oj_1=t,this.pj_1=0}function Dc(t,n){return(null!=new jc(n)?new jc(n):fu())instanceof jc&&qr(t,n)}function Mc(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof jc&&qr(t,s.mj_1))){i=!1;break t}}i=!0}}return i}function Nc(t){this.rj_1=t}function Rc(t){return t}function Pc(t){return t}function Lc(){St=this,this.uj_1=0,this.vj_1=-1,this.wj_1=4,this.xj_1=32}function Fc(){return null==St&&new Lc,St}function Uc(t,n){return Tf(t,n)}function Hc(t){Fc(),this.yj_1=t}function Vc(t){return t}function Bc(t){return t}function Wc(t){return t.length}function Yc(t){this.ak_1=t,this.bk_1=0}function Gc(t,n){return(null!=new Hc(n)?new Hc(n):fu())instanceof Hc&&kr(t,n)}function Kc(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof Hc&&kr(t,s.yj_1))){i=!1;break t}}i=!0}}return i}function Xc(t){this.dk_1=t}function Jc(){Ct=this;Fc();Fc(),this.gk_1=new Zc(-1,0)}function Zc(t,n){null==Ct&&new Jc,tf.call(this,t,n,1)}function Qc(){}function tf(t,n,i){if(0===i)throw Jo("Step must be non-zero.");if(i===r.MIN_VALUE)throw Jo("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.lk_1=t,this.mk_1=function(t,n,i){var e;if(i>0){var r;if(Tf(t,n)>=0)r=n;else r=n-pf(n,t,i)|0;e=r}else{if(!(i<0))throw Jo("Step is zero.");var s;if(Tf(t,n)<=0)s=n;else s=n+pf(t,n,0|-i)|0;e=s}return e}(t,n,i),this.nk_1=i}function nf(t,n,i){this.pk_1=n;var e;e=i>0?Tf(t,n)<=0:Tf(t,n)>=0,this.qk_1=e,this.rk_1=i,this.sk_1=this.qk_1?t:this.pk_1}function ef(t){return t}function rf(t){return t}function sf(){Et=this,this.tk_1=new mu(0,0),this.uk_1=new mu(-1,-1),this.vk_1=8,this.wk_1=64}function uf(){return null==Et&&new sf,Et}function of(t,n){return If(t,n)}function _f(t){return function(t,n){if(t.ca(new mu(0,0))>=0)return B_(t,n);var i=t.pb(1).aa(Qu(n)).nb(1),e=i.ba(Qu(n)),r=t.hb(e);return r.ca(Qu(n))>=0&&(r=r.hb(Qu(n)),i=i.gb(Qu(1))),B_(i,n)+B_(r,n)}(t,10)}function hf(t){uf(),this.xk_1=t}function af(t){return t}function lf(t){return t}function cf(t){return t.length}function ff(t){this.zk_1=t,this.al_1=0}function vf(t,n){return(null!=new hf(n)?new hf(n):fu())instanceof hf&&$r(t,n)}function df(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof hf&&$r(t,s.xk_1))){i=!1;break t}}i=!0}}return i}function wf(t){this.cl_1=t}function pf(t,n,i){var e,r=Af(t,i),s=Af(n,i);Tf(r,s)>=0?e=r-s|0:e=(r-s|0)+i|0;return e}function mf(t){return t}function gf(t){return t}function yf(){Ot=this,this.fl_1=0,this.gl_1=-1,this.hl_1=2,this.il_1=16}function bf(){return null==Ot&&new yf,Ot}function $f(t,n){return Js(65535&t,65535&n)}function kf(t){bf(),this.jl_1=t}function xf(t){return t}function qf(t){return t}function Sf(t){return t.length}function Cf(t){this.ll_1=t,this.ml_1=0}function Ef(t,n){return(null!=new kf(n)?new kf(n):fu())instanceof kf&&xr(t,n)}function Of(t,n){var i;t:{var e=so(n,ms)?n:fu();if(so(e,ms)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof kf&&xr(t,s.jl_1))){i=!1;break t}}i=!0}}return i}function jf(t){this.ol_1=t}function zf(t,n){Se(n);var i=t.length;if(0===i)return null;Fc();var e,r=Vs(t,0);if(as(r,48)<0){if(1===i||43!==r)return null;e=1}else e=0;var s,u,o,_=119304647,h=_,a=n,l=0,c=e;if(c0){if(h!==_)return null;if(Tf(l,(s=a,u=void 0,o=void 0,u=Qu(-1).qb(new mu(-1,0)),o=Qu(s).qb(new mu(-1,0)),h=u.aa(o).la()))>0)return null}var d=l=Tt(l,a);if(Tf(l=l+v|0,d)<0)return null}while(c=0)return i.aa(e);var r=i.pb(1).aa(e).nb(1),s=If(i.hb(r.ba(e)),e)>=0?1:0;return r.gb(Qu(s))}return Bu(Nt,"CharSequence",Wu),Bu(Rt,"Comparable",Wu),Bu(Pt,"Number",Hu),Bu(Lt,"Unit",Yu),Bu(Ft,"ByteCompanionObject",Yu),Bu(Ut,"ShortCompanionObject",Yu),Bu(Ht,"IntCompanionObject",Yu),Bu(Vt,"FloatCompanionObject",Yu),Bu(Bt,"DoubleCompanionObject",Yu),Bu(Wt,"StringCompanionObject",Yu),Bu(Yt,"BooleanCompanionObject",Yu),Bu(ms,"Collection",Wu),Bu(W_,"AbstractCollection",Hu,K,[ms]),Bu(qs,"MutableIterable",Wu),Bu(un,"AbstractMutableCollection",Hu,W_,[W_,qs,ms]),Bu(on,"IteratorImpl",Hu),Bu(_n,"ListIteratorImpl",Hu,on),Bu(ps,"List",Wu,K,[ms]),Bu(ys,"MutableList",Wu,K,[ps,qs,ms]),Bu(hn,"AbstractMutableList",Hu,un,[un,ys]),Bu(ks,"Map",Wu),Bu(rh,"AbstractMap",Hu,K,[ks]),Bu(xs,"MutableMap",Wu,K,[ks]),Bu(an,"AbstractMutableMap",Hu,rh,[rh,xs]),Bu(bs,"Set",Wu,K,[ms]),Bu(gs,"MutableSet",Wu,K,[bs,qs,ms]),Bu(ln,"AbstractMutableSet",Hu,un,[un,gs]),Bu(wn,"Companion",Yu),Bu(Oi,"RandomAccess",Wu),Bu($n,"ArrayList",Hu,hn,[hn,ys,Oi],mn),Bu(An,"HashMap",Hu,an,[an,xs],On),Bu(In,"HashMapKeys",Hu,ln,[gs,ln]),Bu(Dn,"HashMapValues",Hu,un,[qs,ms,un]),Bu(Nn,"HashMapEntrySetBase",Hu,ln,[gs,ln]),Bu(Mn,"HashMapEntrySet",Hu,Nn),Bu(Rn,K,Hu),Bu(Pn,"HashMapKeysDefault",Hu,ln),Bu(Ln,K,Hu),Bu(Fn,"HashMapValuesDefault",Hu,un),Bu(Gn,"HashSet",Hu,ln,[ln,gs],Vn),Bu(fi,"Companion",Yu),Bu(vi,"Itr",Hu),Bu(di,"KeysItr",Hu,vi),Bu(wi,"ValuesItr",Hu,vi),Bu(pi,"EntriesItr",Hu,vi),Bu($s,"Entry",Wu),Bu(mi,"EntryRef",Hu,K,[$s]),Bu(yi,"InternalMap",Wu),Bu(gi,"InternalHashMap",Hu,K,[yi],Jn),Bu(ki,"LinkedHashMap",Hu,An,[An,xs],bi),Bu(Ei,"LinkedHashSet",Hu,Gn,[Gn,gs],xi),Bu(Yo,"Exception",Hu,Error,K,(function t(){var n=Ho(au(hu(Yo)));return _u(n,t),n})),Bu(y_,"RuntimeException",Hu,Yo,K,d_),Bu(h_,"IllegalStateException",Hu,y_,K,(function t(){var n=s_(au(hu(h_)));return _u(n,t),n})),Bu(Ti,"CancellationException",Hu,h_,K,(function t(){var n,i=(s_(n=au(hu(Ti))),Ti.call(n),n);return _u(i,t),i})),Bu(Di,"KClass",Wu),Bu(Mi,"KClassImpl",Hu,K,[Di]),Bu(Ni,"NothingKClassImpl",Yu,Mi),Bu(Pi,"ErrorKClass",Hu,K,[Di],Pi),Bu(Li,"PrimitiveKClassImpl",Hu,Mi),Bu(Fi,"SimpleKClassImpl",Hu,Mi),Bu(Ui,"KProperty0",Wu),Bu(Hi,"KProperty1",Wu),Bu(Vi,"KMutableProperty1",Wu,K,[Hi]),Bu(Bi,"KMutableProperty0",Wu,K,[Ui]),Bu(Wi,"KTypeImpl",Hu),Bu(fe,"PrimitiveClasses",Yu),Bu(Nh,"Sequence",Wu),Bu(pe,"ConstrainedOnceSequence",Hu,K,[Nh]),Bu(me,"CharacterCodingException",Hu,Yo,K,(function t(){var n,i=(n=au(hu(me)),me.call(n,null),n);return _u(i,t),i})),Bu($e,"StringBuilder",Hu,K,[Nt],be),Bu(ze,"Companion",Yu),Bu(Ie,"Regex",Hu),Bu(De,"MatchGroup",Hu),Bu(Re,K,Hu,W_,[ms,W_]),Bu(Pe,K,Hu),Bu(Le,"sam$kotlin_Comparator$0",Hu),Bu(sr,"ExceptionTraceBuilder",Hu,K,K,sr),Bu(Cs,"Enum",Hu,K,[Rt]),Bu(or,"DurationUnit",Hu,Cs),Bu(Er,K,Hu,K,[Nh]),Bu(Br,K,Hu,K,[Nh]),Bu(ns,K,Hu),Bu(os,"KotlinNothingValueException",Hu,y_,K,us),Bu(vs,"Companion",Yu),Bu(ws,"Char",Hu,K,[Rt]),Bu(Ss,"Companion",Yu),Bu(Ns,K,Hu),Bu(wu,"Companion",Yu),Bu(mu,"Long",Hu,Pt,[Pt,Rt]),Bu(zo,"Digit",Yu),Bu(Ao,"Letter",Yu),Bu(Do,"OtherLowercase",Yu),Bu(ca,"Continuation",Wu),Bu(Ro,"CoroutineImpl",Hu,K,[ca]),Bu(Po,"CompletedContinuation",Yu,K,[ca]),Bu(Uo,K,Hu,Ro),Bu(n_,"IllegalArgumentException",Hu,y_,K,Ko),Bu(r_,"IndexOutOfBoundsException",Hu,y_,K,i_),Bu(f_,"UnsupportedOperationException",Hu,y_,K,l_),Bu(x_,"NoSuchElementException",Hu,y_,K,b_),Bu(E_,"Error",Hu,Error,K,(function t(){var n=q_(au(hu(E_)));return _u(n,t),n})),Bu(j_,"ArithmeticException",Hu,y_,K,(function t(){var n,i=(v_(n=au(hu(j_))),j_.call(n),n);return _u(i,t),i})),Bu(T_,"AssertionError",Hu,E_,K,(function t(){var n,i=(q_(n=au(hu(T_))),T_.call(n),n);return _u(i,t),i})),Bu(I_,"NumberFormatException",Hu,n_,K,(function t(){var n,i=(Go(n=au(hu(I_))),I_.call(n),n);return _u(i,t),i})),Bu(M_,"ConcurrentModificationException",Hu,y_,K,D_),Bu(R_,"NullPointerException",Hu,y_,K,N_),Bu(L_,"NoWhenBranchMatchedException",Hu,y_,K,P_),Bu(U_,"ClassCastException",Hu,y_,K,F_),Bu(V_,"UninitializedPropertyAccessException",Hu,y_,K,(function t(){var n,i=(v_(n=au(hu(V_))),V_.call(n),n);return _u(i,t),i})),Bu(Y_,"IteratorImpl",Hu),Bu(G_,"ListIteratorImpl",Hu,Y_),Bu(K_,"Companion",Yu),Bu(X_,"AbstractList",Hu,W_,[W_,ps]),Bu(J_,K,Hu),Bu(Z_,K,Hu),Bu(nh,"Companion",Yu),Bu(uh,"AbstractSet",Hu,W_,[W_,bs]),Bu(ih,K,Hu,uh),Bu(eh,K,Hu,W_),Bu(sh,"Companion",Yu),Bu(ch,"Companion",Yu),Bu(vh,"ArrayDeque",Hu,hn,K,oh),Bu(yh,"EmptyList",Yu,K,[ps,Oi]),Bu($h,"ArrayAsCollection",Hu,K,[ms]),Bu(kh,"EmptyIterator",Yu),Bu(xh,"IndexedValue",Hu),Bu(Sh,"IndexingIterable",Hu),Bu(Ch,"IndexingIterator",Hu),Bu(Eh,"MapWithDefault",Wu,K,[ks]),Bu(jh,"EmptyMap",Yu,K,[ks]),Bu(Dh,"IntIterator",Hu),Bu(Mh,"CharIterator",Hu),Bu(Rh,"SequenceScope",Hu,K,K,K,K,K,[1]),Bu(Lh,"SequenceBuilderIterator",Hu,Rh,[Rh,ca],Lh,K,K,[1]),Bu(Fh,K,Hu,K,[Nh]),Bu(Uh,K,Hu),Bu(Hh,"TransformingSequence",Hu,K,[Nh]),Bu(Bh,K,Hu),Bu(Wh,"FilteringSequence",Hu,K,[Nh]),Bu(Xh,K,Hu),Bu(Jh,"FlatteningSequence",Hu,K,[Nh]),Bu(Qh,"DropTakeSequence",Wu,K,[Nh]),Bu(ta,K,Hu),Bu(na,"TakeSequence",Hu,K,[Nh,Qh]),Bu(ea,K,Hu),Bu(ra,"GeneratorSequence",Hu,K,[Nh]),Bu(sa,"EmptySequence",Yu,K,[Nh,Qh]),Bu(ua,K,Hu,K,[Nh]),Bu(aa,"EmptySet",Yu,K,[bs]),Bu(fa,"Key",Yu),Bu(pa,"CoroutineContext",Wu),Bu(da,"Element",Wu,K,[pa]),Bu(va,"ContinuationInterceptor",Wu,K,[da]),Bu(ma,"EmptyCoroutineContext",Yu,K,[pa]),Bu(ka,"CombinedContext",Hu,K,[pa]),Bu(xa,"AbstractCoroutineContextKey",Hu),Bu(qa,"AbstractCoroutineContextElement",Hu,K,[da]),Bu(Ca,"CoroutineSingletons",Hu,Cs),Bu(Ea,"EnumEntriesList",Hu,X_,[ps,X_]),Bu(Ia,"Random",Hu),Bu(Ta,"Default",Yu,Ia),Bu(Ma,"Companion",Yu),Bu(Na,"XorWowRandom",Hu,Ia),Bu(Ra,"Companion",Yu),Bu(Wa,"IntProgression",Hu),Bu(Ka,"ClosedRange",Wu),Bu(La,"IntRange",Hu,Wa,[Wa,Ka]),Bu(Fa,"Companion",Yu),Bu(Ga,"CharProgression",Hu),Bu(Ua,"CharRange",Hu,Ga,[Ga,Ka]),Bu(Ha,"IntProgressionIterator",Hu,Dh),Bu(Va,"CharProgressionIterator",Hu,Mh),Bu(Ba,"Companion",Yu),Bu(Ya,"Companion",Yu),Bu(Xa,"KTypeParameter",Wu),Bu(kl,K,Hu),Bu(xl,"DelimitedRangesSequence",Hu,K,[Nh]),Bu(Tl,"Companion",Yu),Bu(Wl,"Duration",Hu,K,[Rt]),Bu(rc,"DeepRecursiveScope",Hu,K,K,K,K,K,[1]),Bu(sc,"DeepRecursiveFunction",Hu),Bu(uc,"DeepRecursiveScopeImpl",Hu,rc,[rc,ca],K,K,K,[1]),Bu(hc,"LazyThreadSafetyMode",Hu,Cs),Bu(ac,"UnsafeLazyImpl",Hu),Bu(lc,"UNINITIALIZED_VALUE",Yu),Bu(wc,"Companion",Yu),Bu(pc,"Failure",Hu),Bu(mc,"Result",Hu),Bu(bc,"NotImplementedError",Hu,E_,K,bc),Bu($c,"Pair",Hu),Bu(xc,"Triple",Hu),Bu(Cc,"Companion",Yu),Bu(jc,"UByte",Hu,K,[Rt]),Bu(Ic,"Iterator",Hu),Bu(Nc,"UByteArray",Hu,K,[ms]),Bu(Lc,"Companion",Yu),Bu(Hc,"UInt",Hu,K,[Rt]),Bu(Yc,"Iterator",Hu),Bu(Xc,"UIntArray",Hu,K,[ms]),Bu(Jc,"Companion",Yu),Bu(tf,"UIntProgression",Hu),Bu(Zc,"UIntRange",Hu,tf,[tf,Ka]),Bu(Qc,"Companion",Yu),Bu(nf,"UIntProgressionIterator",Hu),Bu(sf,"Companion",Yu),Bu(hf,"ULong",Hu,K,[Rt]),Bu(ff,"Iterator",Hu),Bu(wf,"ULongArray",Hu,K,[ms]),Bu(yf,"Companion",Yu),Bu(kf,"UShort",Hu,K,[Rt]),Bu(Cf,"Iterator",Hu),Bu(jf,"UShortArray",Hu,K,[ms]),hu(Lt).toString=function(){return"kotlin.Unit"},hu(Ft).e=function(){return this.MIN_VALUE},hu(Ft).f=function(){return this.MAX_VALUE},hu(Ft).g=function(){return this.SIZE_BYTES},hu(Ft).h=function(){return this.SIZE_BITS},hu(Ut).e=function(){return this.MIN_VALUE},hu(Ut).f=function(){return this.MAX_VALUE},hu(Ut).g=function(){return this.SIZE_BYTES},hu(Ut).h=function(){return this.SIZE_BITS},hu(Ht).e=function(){return this.MIN_VALUE},hu(Ht).f=function(){return this.MAX_VALUE},hu(Ht).g=function(){return this.SIZE_BYTES},hu(Ht).h=function(){return this.SIZE_BITS},hu(Vt).e=function(){return this.MIN_VALUE},hu(Vt).f=function(){return this.MAX_VALUE},hu(Vt).i=function(){return this.POSITIVE_INFINITY},hu(Vt).j=function(){return this.NEGATIVE_INFINITY},hu(Vt).k=function(){return this.NaN},hu(Vt).g=function(){return this.SIZE_BYTES},hu(Vt).h=function(){return this.SIZE_BITS},hu(Bt).e=function(){return this.MIN_VALUE},hu(Bt).f=function(){return this.MAX_VALUE},hu(Bt).i=function(){return this.POSITIVE_INFINITY},hu(Bt).j=function(){return this.NEGATIVE_INFINITY},hu(Bt).k=function(){return this.NaN},hu(Bt).g=function(){return this.SIZE_BYTES},hu(Bt).h=function(){return this.SIZE_BITS},hu(un).t=function(t){this.u();for(var n=this.v();n.w();)if(eu(n.y(),t))return n.x(),!0;return!1},hu(un).z=function(t){this.u();for(var n=!1,i=t.v();i.w();){var e=i.y();this.s(e)&&(n=!0)}return n},hu(un).a1=function(t){return this.u(),n=so(this,qs)?this:fu(),i=t,function(t,n,i){for(var e=!1,r=t.v();r.w();)n(r.y())===i&&(r.x(),e=!0);return e}(n,(function(t){return!i.r(t)}),!0);var n,i},hu(un).b1=function(){this.u();for(var t=this.v();t.w();)t.y(),t.x()},hu(un).toJSON=function(){return this.toArray()},hu(un).u=function(){},hu(on).w=function(){return this.e1_10},hu(_n).q1=function(){if(!this.p1())throw b_();return this.e1_1=this.e1_1-1|0,this.f1_1=this.e1_1,this.n1_1.h1(this.f1_1)},hu(hn).s=function(t){return this.u(),this.r1(this.n(),t),!0},hu(hn).b1=function(){this.u(),this.s1(0,this.n())},hu(hn).v=function(){return new on(this)},hu(hn).r=function(t){return this.t1(t)>=0},hu(hn).t1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(eu(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},hu(hn).u1=function(t){return new _n(this,t)},hu(hn).s1=function(t,n){var i=this.u1(t),e=n-t|0,r=0;if(r0?this:pn().w2_1},hu($n).z2=function(t){},hu($n).n=function(){return this.u2_1.length},hu($n).h1=function(t){var n=this.u2_1[bn(this,t)];return null==n||null!=n?n:fu()},hu($n).o=function(t,n){this.u(),bn(this,t);var i=this.u2_1[t];return this.u2_1[t]=n,null==i||null!=i?i:fu()},hu($n).s=function(t){return this.u(),this.u2_1.push(t),this.i1_1=this.i1_1+1|0,!0},hu($n).r1=function(t,n){this.u(),this.u2_1.splice(function(t,n){return tt.o1(n,t.n()),n}(this,t),0,n),this.i1_1=this.i1_1+1|0},hu($n).z=function(t){if(this.u(),t.d1())return!1;for(var n=(o=this,_=t.n(),h=void 0,h=o.n(),o.u2_1.length=o.n()+_|0,h),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0;var u=nn(s);this.u2_1[n+u|0]=r}var o,_,h;return this.i1_1=this.i1_1+1|0,!0},hu($n).j1=function(t){return this.u(),bn(this,t),this.i1_1=this.i1_1+1|0,t===wh(this)?this.u2_1.pop():this.u2_1.splice(t,1)[0]},hu($n).t=function(t){this.u();var n=0,i=this.u2_1.length-1|0;if(n<=i)do{var e=n;if(n=n+1|0,eu(this.u2_1[e],t))return this.u2_1.splice(e,1),this.i1_1=this.i1_1+1|0,!0}while(n<=i);return!1},hu($n).s1=function(t,n){this.u(),this.i1_1=this.i1_1+1|0,this.u2_1.splice(t,n-t|0)},hu($n).b1=function(){this.u(),this.u2_1=[],this.i1_1=this.i1_1+1|0},hu($n).t1=function(t){return mr(this.u2_1,t)},hu($n).toString=function(){return Sr(this.u2_1,", ","[","]",K,K,Xs)},hu($n).a3=function(){return[].slice.call(this.u2_1)},hu($n).toArray=function(){return this.a3()},hu($n).u=function(){if(this.v2_1)throw l_()},hu(An).b1=function(){this.f3_1.b1()},hu(An).n2=function(t){return this.f3_1.h3(t)},hu(An).o2=function(t){return this.f3_1.o2(t)},hu(An).b2=function(){return new In(this.f3_1)},hu(An).c2=function(){return new Dn(this.f3_1)},hu(An).f2=function(){var t,n=this.g3_1;if(null==n){var i=new Mn(this.f3_1);this.g3_1=i,t=i}else t=n;return t},hu(An).q2=function(t){return this.f3_1.q2(t)},hu(An).g2=function(t,n){return this.f3_1.g2(t,n)},hu(An).k2=function(t){return this.f3_1.k2(t)},hu(An).n=function(){return this.f3_1.n()},hu(An).h2=function(t){return this.f3_1.h2(t)},hu(In).n=function(){return this.i3_1.n()},hu(In).d1=function(){return 0===this.i3_1.n()},hu(In).r=function(t){return this.i3_1.h3(t)},hu(In).b1=function(){return this.i3_1.b1()},hu(In).s=function(t){throw l_()},hu(In).z=function(t){throw l_()},hu(In).t=function(t){return!(null==this.i3_1.k2(t))},hu(In).v=function(){return this.i3_1.j3()},hu(In).u=function(){return this.i3_1.u()},hu(Dn).n=function(){return this.k3_1.n()},hu(Dn).d1=function(){return 0===this.k3_1.n()},hu(Dn).l3=function(t){return this.k3_1.o2(t)},hu(Dn).r=function(t){return(null==t||null!=t)&&this.l3(null==t||null!=t?t:fu())},hu(Dn).m3=function(t){throw l_()},hu(Dn).s=function(t){return this.m3(null==t||null!=t?t:fu())},hu(Dn).n3=function(t){throw l_()},hu(Dn).z=function(t){return this.n3(t)},hu(Dn).v=function(){return this.k3_1.o3()},hu(Dn).p3=function(t){return this.k3_1.q3(t)},hu(Dn).t=function(t){return(null==t||null!=t)&&this.p3(null==t||null!=t?t:fu())},hu(Dn).u=function(){return this.k3_1.u()},hu(Mn).v=function(){return this.s3_1.t3()},hu(Nn).n=function(){return this.s3_1.n()},hu(Nn).d1=function(){return 0===this.s3_1.n()},hu(Nn).u3=function(t){return this.s3_1.x3(t)},hu(Nn).r=function(t){return!(null==t||!so(t,$s))&&this.u3(null!=t&&so(t,$s)?t:fu())},hu(Nn).b1=function(){return this.s3_1.b1()},hu(Nn).v3=function(t){throw l_()},hu(Nn).s=function(t){return this.v3(null!=t&&so(t,$s)?t:fu())},hu(Nn).z=function(t){throw l_()},hu(Nn).w3=function(t){return this.s3_1.y3(t)},hu(Nn).t=function(t){return!(null==t||!so(t,$s))&&this.w3(null!=t&&so(t,$s)?t:fu())},hu(Nn).c1=function(t){return this.s3_1.z3(t)},hu(Nn).u=function(){return this.s3_1.u()},hu(Rn).w=function(){return this.a4_1.w()},hu(Rn).y=function(){return this.a4_1.y().i2()},hu(Rn).x=function(){return this.a4_1.x()},hu(Pn).c4=function(t){throw c_("Add is not supported on keys")},hu(Pn).s=function(t){return this.c4(null==t||null!=t?t:fu())},hu(Pn).b1=function(){return this.b4_1.b1()},hu(Pn).h3=function(t){return this.b4_1.n2(t)},hu(Pn).r=function(t){return(null==t||null!=t)&&this.h3(null==t||null!=t?t:fu())},hu(Pn).v=function(){return new Rn(this.b4_1.f2().v())},hu(Pn).k2=function(t){return this.u(),!!this.b4_1.n2(t)&&(this.b4_1.k2(t),!0)},hu(Pn).t=function(t){return(null==t||null!=t)&&this.k2(null==t||null!=t?t:fu())},hu(Pn).n=function(){return this.b4_1.n()},hu(Pn).u=function(){return this.b4_1.u()},hu(Ln).w=function(){return this.d4_1.w()},hu(Ln).y=function(){return this.d4_1.y().j2()},hu(Ln).x=function(){return this.d4_1.x()},hu(Fn).m3=function(t){throw c_("Add is not supported on values")},hu(Fn).s=function(t){return this.m3(null==t||null!=t?t:fu())},hu(Fn).l3=function(t){return this.e4_1.o2(t)},hu(Fn).r=function(t){return(null==t||null!=t)&&this.l3(null==t||null!=t?t:fu())},hu(Fn).v=function(){return new Ln(this.e4_1.f2().v())},hu(Fn).n=function(){return this.e4_1.n()},hu(Fn).u=function(){return this.e4_1.u()},hu(Gn).s=function(t){return null==this.f4_1.g2(t,!0)},hu(Gn).b1=function(){this.f4_1.b1()},hu(Gn).r=function(t){return this.f4_1.h3(t)},hu(Gn).d1=function(){return 0===this.f4_1.n()},hu(Gn).v=function(){return this.f4_1.j3()},hu(Gn).t=function(t){return!(null==this.f4_1.k2(t))},hu(Gn).n=function(){return this.f4_1.n()},hu(vi).z4=function(){for(;this.w4_1=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=this.v4_1.g4_1[this.x4_1];return this.z4(),n},hu(wi).y=function(){if(this.a5(),this.w4_1>=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=cu(this.v4_1.h4_1)[this.x4_1];return this.z4(),n},hu(pi).y=function(){if(this.a5(),this.w4_1>=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=new mi(this.v4_1,this.x4_1);return this.z4(),n},hu(pi).n5=function(){if(this.w4_1>=this.v4_1.l4_1)throw b_();var t=this.w4_1;this.w4_1=t+1|0,this.x4_1=t;var n=this.v4_1.g4_1[this.x4_1],i=null==n?null:ru(n),e=null==i?0:i,r=cu(this.v4_1.h4_1)[this.x4_1],s=null==r?null:ru(r),u=e^(null==s?0:s);return this.z4(),u},hu(pi).o5=function(t){if(this.w4_1>=this.v4_1.l4_1)throw b_();var n=this.w4_1;this.w4_1=n+1|0,this.x4_1=n;var i=this.v4_1.g4_1[this.x4_1];eu(i,this.v4_1)?t.r5("(this Map)"):t.q5(i),t.s5(61);var e=cu(this.v4_1.h4_1)[this.x4_1];eu(e,this.v4_1)?t.r5("(this Map)"):t.q5(e),this.z4()},hu(mi).i2=function(){return this.t5_1.g4_1[this.u5_1]},hu(mi).j2=function(){return cu(this.t5_1.h4_1)[this.u5_1]},hu(mi).equals=function(t){return!(null==t||!so(t,$s)||!eu(t.i2(),this.i2()))&&eu(t.j2(),this.j2())},hu(mi).hashCode=function(){var t=this.i2(),n=null==t?null:ru(t),i=null==n?0:n,e=this.j2(),r=null==e?null:ru(e);return i^(null==r?0:r)},hu(mi).toString=function(){return this.i2()+"="+this.j2()},hu(gi).n=function(){return this.o4_1},hu(gi).o2=function(t){return hi(this,t)>=0},hu(gi).q2=function(t){var n=_i(this,t);return n<0?null:cu(this.h4_1)[n]},hu(gi).h3=function(t){return _i(this,t)>=0},hu(gi).g2=function(t,n){var i=ai(this,t),e=ri(this);if(i<0){var r=e[(0|-i)-1|0];return e[(0|-i)-1|0]=n,r}return e[i]=n,null},hu(gi).h2=function(t){this.u(),function(t,n){if(n.d1())return!1;ei(t,n.n());for(var i=n.v(),e=!1;i.w();)ci(t,i.y())&&(e=!0)}(this,t.f2())},hu(gi).k2=function(t){var n=function(t,n){t.u();var i=_i(t,n);return i<0?-1:(li(t,i),i)}(this,t);if(n<0)return null;var i=cu(this.h4_1),e=i[n];return fn(i,n),e},hu(gi).b1=function(){this.u();var t=0,n=this.l4_1-1|0;if(t<=n)do{var i=t;t=t+1|0;var e=this.i4_1[i];e>=0&&(this.j4_1[e]=0,this.i4_1[i]=-1)}while(i!==n);vn(this.g4_1,0,this.l4_1);var r=this.h4_1;null==r||vn(r,0,this.l4_1),this.o4_1=0,this.l4_1=0,ii(this)},hu(gi).equals=function(t){return t===this||!(null==t||!so(t,ks))&&function(t,n){return t.o4_1===n.n()&&t.z3(n.f2())}(this,t)},hu(gi).hashCode=function(){for(var t=0,n=this.t3();n.w();)t=t+n.n5()|0;return t},hu(gi).toString=function(){var t=ge(Tt(this.o4_1,3));t.r5("{");for(var n=0,i=this.t3();i.w();)n>0&&t.r5(", "),i.o5(t),n=n+1|0;return t.r5("}"),t.toString()},hu(gi).u=function(){if(this.p4_1)throw l_()},hu(gi).x3=function(t){var n=_i(this,t.i2());return!(n<0)&&eu(cu(this.h4_1)[n],t.j2())},hu(gi).v5=function(t){return this.x3(so(t,$s)?t:fu())},hu(gi).y3=function(t){this.u();var n=_i(this,t.i2());return!(n<0||!eu(cu(this.h4_1)[n],t.j2())||(li(this,n),0))},hu(gi).q3=function(t){this.u();var n=hi(this,t);return!(n<0||(li(this,n),0))},hu(gi).j3=function(){return new di(this)},hu(gi).o3=function(){return new wi(this)},hu(gi).t3=function(){return new pi(this)},hu(ki).u=function(){return this.f3_1.u()},hu(Ei).u=function(){return this.f4_1.u()},hu(Mi).h6=function(){return this.g6_1},hu(Mi).equals=function(t){return!(t instanceof Ni)&&!(t instanceof Pi)&&t instanceof Mi&&eu(this.h6(),t.h6())},hu(Mi).hashCode=function(){var t=this.i6(),n=null==t?null:ou(t);return null==n?0:n},hu(Mi).toString=function(){return"class "+this.i6()},hu(Ni).i6=function(){return this.l6_1},hu(Ni).j6=function(t){return!1},hu(Ni).h6=function(){throw c_("There's no native JS class for Nothing type")},hu(Ni).equals=function(t){return t===this},hu(Ni).hashCode=function(){return 0},hu(Pi).i6=function(){throw o_(iu("Unknown simpleName for ErrorKClass"))},hu(Pi).j6=function(t){throw o_(iu("Can's check isInstance on ErrorKClass"))},hu(Pi).equals=function(t){return t===this},hu(Pi).hashCode=function(){return 0},hu(Li).equals=function(t){return t instanceof Li&&!!hu(Mi).equals.call(this,t)&&this.n6_1===t.n6_1},hu(Li).i6=function(){return this.n6_1},hu(Li).j6=function(t){return this.o6_1(t)},hu(Fi).i6=function(){return this.q6_1},hu(Fi).j6=function(t){return yo(t,this.h6())},hu(Wi).u6=function(){return this.r6_1},hu(Wi).v6=function(){return this.s6_1},hu(Wi).w6=function(){return this.t6_1},hu(Wi).equals=function(t){return!!(t instanceof Wi&&eu(this.r6_1,t.r6_1)&&eu(this.s6_1,t.s6_1))&&this.t6_1===t.t6_1},hu(Wi).hashCode=function(){return Tt(Tt(ru(this.r6_1),31)+ru(this.s6_1)|0,31)+uu(this.t6_1)|0},hu(Wi).toString=function(){var t=this.r6_1,n=so(t,Di)?t:null,i=null==n?iu(this.r6_1):null!=n.i6()?n.i6():"(non-denotable type)",e=this.s6_1.d1()?"":Or(this.s6_1,", ","<",">"),r=this.t6_1?"?":"";return Os(i,e)+r},hu(fe).x6=function(){return this.anyClass},hu(fe).y6=function(){return this.numberClass},hu(fe).z6=function(){return this.nothingClass},hu(fe).a7=function(){return this.booleanClass},hu(fe).b7=function(){return this.byteClass},hu(fe).c7=function(){return this.shortClass},hu(fe).d7=function(){return this.intClass},hu(fe).e7=function(){return this.floatClass},hu(fe).f7=function(){return this.doubleClass},hu(fe).g7=function(){return this.arrayClass},hu(fe).h7=function(){return this.stringClass},hu(fe).i7=function(){return this.throwableClass},hu(fe).j7=function(){return this.booleanArrayClass},hu(fe).k7=function(){return this.charArrayClass},hu(fe).l7=function(){return this.byteArrayClass},hu(fe).m7=function(){return this.shortArrayClass},hu(fe).n7=function(){return this.intArrayClass},hu(fe).o7=function(){return this.longArrayClass},hu(fe).p7=function(){return this.floatArrayClass},hu(fe).q7=function(){return this.doubleArrayClass},hu(fe).functionClass=function(t){var n,i,e=Yi()[t];if(null==e){var r=new Li(Function,"Function"+t,(i=t,function(t){return"function"==typeof t&&t.length===i}));Yi()[t]=r,n=r}else n=e;return n},hu(pe).v=function(){var t=this.r7_1;if(null==t)throw o_("This sequence can be consumed only once.");var n=t;return this.r7_1=null,n.v()},hu($e).a=function(){return this.p5_1.length},hu($e).b=function(t){var n=this.p5_1;if(!(t>=0&&t<=ul(n)))throw e_("index: "+t+", length: "+this.a()+"}");return Vs(n,t)},hu($e).c=function(t,n){return this.p5_1.substring(t,n)},hu($e).s5=function(t){return this.p5_1=this.p5_1+fs(t),this},hu($e).s7=function(t){return this.p5_1=this.p5_1+Es(t),this},hu($e).t7=function(t,n,i){return this.u7(null==t?"null":t,n,i)},hu($e).q5=function(t){return this.p5_1=this.p5_1+Es(t),this},hu($e).v7=function(t){return this.r5(t.toString())},hu($e).w7=function(t){return this.r5(t.toString())},hu($e).x7=function(t){return this.r5(t.toString())},hu($e).r5=function(t){var n=this.p5_1;return this.p5_1=n+(null==t?"null":t),this},hu($e).y7=function(t,n){tt.o1(t,this.a());var i=this.p5_1.substring(0,t)+fs(n);return this.p5_1=i+this.p5_1.substring(t),this},hu($e).z7=function(t,n){tt.o1(t,this.a());var i=null==n?"null":n,e=this.p5_1.substring(0,t)+i;return this.p5_1=e+this.p5_1.substring(t),this},hu($e).a8=function(t){if(t<0)throw Jo("Negative new length: "+t+".");if(t<=this.a())this.p5_1=this.p5_1.substring(0,t);else{var n=this.a();if(nWs(t))throw e_("Start index out of bounds: "+n+", input length: "+Ws(t));return Me(this.n8_1,iu(t),n,this.n8_1)},hu(Ie).r8=function(t,n){if(n<0||n>Ws(t))throw e_("Start index out of bounds: "+n+", input length: "+Ws(t));return i=this,e=t,r=n,new ra((function(){return i.q8(e,r)}),Ae);var i,e,r},hu(Ie).s8=function(t,n,i){return n=n===K?0:n,i===K?this.r8(t,n):i.r8.call(this,t,n)},hu(Ie).t8=function(t,n){bl(n);for(var i=this.s8(t),e=0===n?i:function(t,n){if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));return 0===n?Zh():so(t,Qh)?t.ma(n):new na(t,n)}(i,n-1|0),r=mn(),s=0,u=e.v();u.w();){var o=u.y();r.s(iu(Ys(t,s,o.u8().y8()))),s=o.u8().z8()+1|0}return r.s(iu(Ys(t,s,Ws(t)))),r},hu(Ie).toString=function(){return this.n8_1.toString()},hu(De).toString=function(){return"MatchGroup(value="+this.a9_1+")"},hu(De).hashCode=function(){return ou(this.a9_1)},hu(De).equals=function(t){if(this===t)return!0;if(!(t instanceof De))return!1;var n=t instanceof De?t:fu();return this.a9_1===n.a9_1},hu(Re).n=function(){return this.e9_1.length},hu(Re).v=function(){return Zr(Ar(ph(this)),(t=this,function(n){return t.h1(n)})).v();var t},hu(Re).h1=function(t){var n=this.e9_1[t];return null==n?null:new De(n)},hu(Pe).u8=function(){return this.g9_1},hu(Pe).y=function(){return Me(this.l9_1,this.m9_1,this.j9_1.d1()?function(t,n){if(n>>i|0|t.m_1<<(32-i|0),t.m_1>>>i|0):new mu(32===i?t.m_1:t.m_1>>>(i-32|0)|0,0)}(this,t)},hu(mu).qb=function(t){return new mu(this.l_1&t.l_1,this.m_1&t.m_1)},hu(mu).rb=function(t){return new mu(this.l_1|t.l_1,this.m_1|t.m_1)},hu(mu).sb=function(t){return new mu(this.l_1^t.l_1,this.m_1^t.m_1)},hu(mu).mb=function(){return new mu(~this.l_1,~this.m_1)},hu(mu).tb=function(){return Gu(this.l_1)},hu(mu).ub=function(){return Xu(this.l_1)},hu(mu).la=function(){return this.l_1},hu(mu).f6=function(){return ju(this)},hu(mu).valueOf=function(){return this.f6()},hu(mu).equals=function(t){return t instanceof mu&&zu(this,t)},hu(mu).hashCode=function(){return t=this,Uu(),t.l_1^t.m_1;var t},hu(mu).toString=function(){return Tu(this,10)},hu(Ro).jc=function(){return cu(this.hc_1)},hu(Ro).mc=function(){var t,n=this.ic_1;if(null==n){var i=this.jc().kc(_t),e=null==i?null:i.nc(this),r=null==e?this:e;this.ic_1=r,t=r}else t=n;return t},hu(Ro).oc=function(t){var i,e=this;if(vc(t))i=null;else{i=null==t||null!=t?t:fu()}for(var r=i,s=dc(t);;){var u=e;null==s?u.ec_1=r:(u.cc_1=u.dc_1,u.fc_1=s);try{var o=u.pc();if(o===Sa())return n;r=o,s=null}catch(t){r=null,s=t}No(u);var _=cu(u.bc_1);if(!(_ instanceof Ro)){if(null!=s){var h=gc(cu(s));_.qc(h)}else{var a=r;_.qc(a)}return n}e=_}},hu(Ro).qc=function(t){return this.oc(t)},hu(Po).jc=function(){throw o_(iu("This continuation is already complete"))},hu(Po).oc=function(t){throw o_(iu("This continuation is already complete"))},hu(Po).qc=function(t){return this.oc(t)},hu(Po).toString=function(){return"This continuation is already complete"},hu(Uo).pc=function(){if(null!=this.fc_1)throw this.fc_1;var t=this.zc_1;return"function"==typeof t?t(this.ad_1,this.bd_1):this.zc_1.cd(this.ad_1,this.bd_1)},hu(W_).r=function(t){var n;t:if(so(this,ms)&&this.d1())n=!1;else{for(var i=this.v();i.w();)if(eu(i.y(),t)){n=!0;break t}n=!1}return n},hu(W_).c1=function(t){var n;t:if(so(t,ms)&&t.d1())n=!0;else{for(var i=t.v();i.w();){var e=i.y();if(!this.r(e)){n=!1;break t}}n=!0}return n},hu(W_).d1=function(){return 0===this.n()},hu(W_).toString=function(){return Or(this,", ","[","]",K,K,(t=this,function(n){return n===t?"(this Collection)":Es(n)}));var t},hu(W_).toArray=function(){return Xt(this)},hu(Y_).w=function(){return this.dd_10},hu(G_).q1=function(){if(!this.p1())throw b_();return this.dd_1=this.dd_1-1|0,this.hd_1.h1(this.dd_1)},hu(K_).x2=function(t,n){if(t<0||t>=n)throw e_("index: "+t+", size: "+n)},hu(K_).o1=function(t,n){if(t<0||t>n)throw e_("index: "+t+", size: "+n)},hu(K_).q=function(t,n,i){if(t<0||n>i)throw e_("fromIndex: "+t+", toIndex: "+n+", size: "+i);if(t>n)throw Jo("fromIndex: "+t+" > toIndex: "+n)},hu(K_).c8=function(t,n,i){if(t<0||n>i)throw e_("startIndex: "+t+", endIndex: "+n+", size: "+i);if(t>n)throw Jo("startIndex: "+t+" > endIndex: "+n)},hu(K_).q4=function(t,n){var i=t+(t>>1)|0;return(i-n|0)<0&&(i=n),(i-2147483639|0)>0&&(i=n>2147483639?r.MAX_VALUE:2147483639),i},hu(K_).w1=function(t){for(var n=1,i=t.v();i.w();){var e=i.y(),r=Tt(31,n),s=null==e?null:ru(e);n=r+(null==s?0:s)|0}return n},hu(K_).v1=function(t,n){if(t.n()!==n.n())return!1;for(var i=n.v(),e=t.v();e.w();)if(!eu(e.y(),i.y()))return!1;return!0},hu(X_).v=function(){return new Y_(this)},hu(X_).t1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(eu(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},hu(X_).u1=function(t){return new G_(this,t)},hu(X_).equals=function(t){return t===this||!(null==t||!so(t,ps))&&tt.v1(this,t)},hu(X_).hashCode=function(){return tt.w1(this)},hu(J_).w=function(){return this.id_1.w()},hu(J_).y=function(){return this.id_1.y().i2()},hu(Z_).w=function(){return this.jd_1.w()},hu(Z_).y=function(){return this.jd_1.y().j2()},hu(ih).h3=function(t){return this.kd_1.n2(t)},hu(ih).r=function(t){return(null==t||null!=t)&&this.h3(null==t||null!=t?t:fu())},hu(ih).v=function(){return new J_(this.kd_1.f2().v())},hu(ih).n=function(){return this.kd_1.n()},hu(eh).l3=function(t){return this.md_1.o2(t)},hu(eh).r=function(t){return(null==t||null!=t)&&this.l3(null==t||null!=t?t:fu())},hu(eh).v=function(){return new Z_(this.md_1.f2().v())},hu(eh).n=function(){return this.md_1.n()},hu(rh).n2=function(t){return!(null==th(this,t))},hu(rh).o2=function(t){var n;t:{var i=this.f2();if(so(i,ms)&&i.d1())n=!1;else{for(var e=i.v();e.w();)if(eu(e.y().j2(),t)){n=!0;break t}n=!1}}return n},hu(rh).p2=function(t){if(null==t||!so(t,$s))return!1;var n=t.i2(),i=t.j2(),e=(so(this,ks)?this:fu()).q2(n);return!(!eu(i,e)||null==e&&!(so(this,ks)?this:fu()).n2(n))},hu(rh).equals=function(t){if(t===this)return!0;if(null==t||!so(t,ks))return!1;if(this.n()!==t.n())return!1;var n;t:{var i=t.f2();if(so(i,ms)&&i.d1())n=!0;else{for(var e=i.v();e.w();){var r=e.y();if(!this.p2(r)){n=!1;break t}}n=!0}}return n},hu(rh).q2=function(t){var n=th(this,t);return null==n?null:n.j2()},hu(rh).hashCode=function(){return ru(this.f2())},hu(rh).d1=function(){return 0===this.n()},hu(rh).n=function(){return this.f2().n()},hu(rh).d2=function(){return null==this.l2_1&&(this.l2_1=new ih(this)),cu(this.l2_1)},hu(rh).toString=function(){return Or(this.f2(),", ","{","}",K,K,(t=this,function(n){return t.ld(n)}));var t},hu(rh).ld=function(t){return Q_(this,t.i2())+"="+Q_(this,t.j2())},hu(rh).e2=function(){return null==this.m2_1&&(this.m2_1=new eh(this)),cu(this.m2_1)},hu(sh).s2=function(t){for(var n=0,i=t.v();i.w();){var e=i.y(),r=n,s=null==e?null:ru(e);n=r+(null==s?0:s)|0}return n},hu(sh).r2=function(t,n){return t.n()===n.n()&&t.c1(n)},hu(uh).equals=function(t){return t===this||!(null==t||!so(t,bs))&&nt.r2(this,t)},hu(uh).hashCode=function(){return nt.s2(this)},hu(vh).n=function(){return this.qd_1},hu(vh).d1=function(){return 0===this.qd_1},hu(vh).td=function(){if(this.d1())throw k_("ArrayDeque is empty.");var t=this.od_1,n=this.pd_1[t];return null==n||null!=n?n:fu()},hu(vh).ud=function(){var t;if(this.d1())t=null;else{var n=this.od_1,i=this.pd_1[n];t=null==i||null!=i?i:fu()}return t},hu(vh).vd=function(t){_h(this,this.qd_1+1|0),this.od_1=lh(this,this.od_1),this.pd_1[this.od_1]=t,this.qd_1=this.qd_1+1|0},hu(vh).wd=function(t){_h(this,this.qd_1+1|0);var n=this.pd_1,i=this.qd_1;n[hh(this,this.od_1+i|0)]=t,this.qd_1=this.qd_1+1|0},hu(vh).xd=function(){if(this.d1())throw k_("ArrayDeque is empty.");var t=this.od_1,n=this.pd_1[t],i=null==n||null!=n?n:fu();return this.pd_1[this.od_1]=null,this.od_1=ah(this,this.od_1),this.qd_1=this.qd_1-1|0,i},hu(vh).yd=function(){return this.d1()?null:this.xd()},hu(vh).zd=function(){if(this.d1())throw k_("ArrayDeque is empty.");var t=wh(this),n=hh(this,this.od_1+t|0),i=this.pd_1[n],e=null==i||null!=i?i:fu();return this.pd_1[n]=null,this.qd_1=this.qd_1-1|0,e},hu(vh).s=function(t){return this.wd(t),!0},hu(vh).r1=function(t,i){if(tt.o1(t,this.qd_1),t===this.qd_1)return this.wd(i),n;if(0===t)return this.vd(i),n;_h(this,this.qd_1+1|0);var e=hh(this,this.od_1+t|0);if(t<(this.qd_1+1|0)>>1){var r=lh(this,e),s=lh(this,this.od_1);r>=this.od_1?(this.pd_1[s]=this.pd_1[this.od_1],sn(this.pd_1,this.pd_1,this.od_1,this.od_1+1|0,r+1|0)):(sn(this.pd_1,this.pd_1,this.od_1-1|0,this.od_1,this.pd_1.length),this.pd_1[this.pd_1.length-1|0]=this.pd_1[0],sn(this.pd_1,this.pd_1,0,1,r+1|0)),this.pd_1[r]=i,this.od_1=s}else{var u=this.qd_1,o=hh(this,this.od_1+u|0);e=i){var s=this.od_1,u=this.pd_1.length;if(s>1)n>=this.od_1?sn(this.pd_1,this.pd_1,this.od_1+1|0,this.od_1,n):(sn(this.pd_1,this.pd_1,1,0,n),this.pd_1[0]=this.pd_1[this.pd_1.length-1|0],sn(this.pd_1,this.pd_1,this.od_1+1|0,this.od_1,this.pd_1.length-1|0)),this.pd_1[this.od_1]=null,this.od_1=ah(this,this.od_1);else{var r=wh(this),s=hh(this,this.od_1+r|0);n<=s?sn(this.pd_1,this.pd_1,n,n+1|0,s+1|0):(sn(this.pd_1,this.pd_1,n,n+1|0,this.pd_1.length),this.pd_1[this.pd_1.length-1|0]=this.pd_1[0],sn(this.pd_1,this.pd_1,0,1,s+1|0)),this.pd_1[s]=null}return this.qd_1=this.qd_1-1|0,e},hu(vh).b1=function(){var t=this.qd_1,n=hh(this,this.od_1+t|0);this.od_1=this.qd_1?t:function(t,n){return zs(Array(n),null)}(0,this.qd_1),i=oo(n)?n:fu(),e=this.qd_1,r=hh(this,this.od_1+e|0);this.od_10&&this.zf_1.w()},hu(na).ma=function(t){return t>=this.bg_1?this:new na(this.ag_1,t)},hu(na).v=function(){return new ta(this)},hu(ea).y=function(){if(this.dg_1<0&&ia(this),0===this.dg_1)throw b_();var t=this.cg_1,n=null!=t?t:fu();return this.dg_1=-1,n},hu(ea).w=function(){return this.dg_1<0&&ia(this),1===this.dg_1},hu(ra).v=function(){return new ea(this)},hu(sa).v=function(){return rt},hu(sa).ma=function(t){return ut},hu(ua).v=function(){return this.hg_1},hu(aa).equals=function(t){return!(null==t||!so(t,bs))&&t.d1()},hu(aa).hashCode=function(){return 0},hu(aa).toString=function(){return"[]"},hu(aa).n=function(){return 0},hu(aa).d1=function(){return!0},hu(aa).ce=function(t){return!1},hu(aa).r=function(t){return!1},hu(aa).de=function(t){return t.d1()},hu(aa).c1=function(t){return this.de(t)},hu(aa).v=function(){return rt},hu(ma).kc=function(t){return null},hu(ma).og=function(t,n){return t},hu(ma).pg=function(t){return t},hu(ma).ng=function(t){return this},hu(ma).hashCode=function(){return 0},hu(ma).toString=function(){return"EmptyCoroutineContext"},hu(ka).kc=function(t){for(var n=this;;){var i=n.sg_1.kc(t);if(null!=i)return i;var e=n.rg_1;if(!(e instanceof ka))return e.kc(t);n=e}},hu(ka).og=function(t,n){return n(this.rg_1.og(t,n),this.sg_1)},hu(ka).ng=function(t){if(null!=this.sg_1.kc(t))return this.rg_1;var n=this.rg_1.ng(t);return n===this.rg_1?this:n===ga()?this.sg_1:new ka(n,this.sg_1)},hu(ka).equals=function(t){return this===t||!!(t instanceof ka&&ya(t)===ya(this))&&function(t,n){for(var i=n;;){if(!ba(t,i.sg_1))return!1;var e=i.rg_1;if(!(e instanceof ka))return ba(t,so(e,da)?e:fu());i=e}}(t,this)},hu(ka).hashCode=function(){return ru(this.rg_1)+ru(this.sg_1)|0},hu(ka).toString=function(){return"["+this.og("",$a)+"]"},hu(xa).lg=function(t){return this.jg_1(t)},hu(xa).mg=function(t){return t===this||this.kg_1===t},hu(qa).i2=function(){return this.tg_1},hu(Ea).n=function(){return this.ug_1.length},hu(Ea).h1=function(t){return tt.x2(t,this.ug_1.length),this.ug_1[t]},hu(Ea).vg=function(t){return null!==t&&Cr(this.ug_1,t.y9_1)===t},hu(Ea).r=function(t){return t instanceof Cs&&this.vg(t instanceof Cs?t:fu())},hu(Ea).wg=function(t){if(null===t)return-1;var n=t.y9_1;return Cr(this.ug_1,n)===t?n:-1},hu(Ea).t1=function(t){return t instanceof Cs?this.wg(t instanceof Cs?t:fu()):-1},hu(Ta).yg=function(t){return this.xg_1.yg(t)},hu(Ta).we=function(){return this.xg_1.we()},hu(Ta).zg=function(t){return this.xg_1.zg(t)},hu(Ta).ah=function(t,n){return this.xg_1.ah(t,n)},hu(Ia).we=function(){return this.yg(32)},hu(Ia).zg=function(t){return this.ah(0,t)},hu(Ia).ah=function(t,n){Da(t,n);var i=n-t|0;if(i>0||i===r.MIN_VALUE){var e;if((i&(0|-i))===i){var s=31-jt(i)|0;e=this.yg(s)}else{var u;do{var o=this.we()>>>1|0;u=o%i|0}while(((o-u|0)+(i-1|0)|0)<0);e=u}return t+e|0}for(;;){var _=this.we();if(t<=_&&_>>2|0,this.ch_1=this.dh_1,this.dh_1=this.eh_1,this.eh_1=this.fh_1;var n=this.gh_1;return this.fh_1=n,t=t^t<<1^n^n<<4,this.gh_1=t,this.hh_1=this.hh_1+362437|0,t+this.hh_1|0},hu(Na).yg=function(t){return function(t,n){return(t>>>(32-n|0)|0)&(0|-n)>>31}(this.we(),t)},hu(La).y8=function(){return this.ha_1},hu(La).z8=function(){return this.ia_1},hu(La).ih=function(t){return this.ha_1<=t&&t<=this.ia_1},hu(La).ka=function(t){return this.ih("number"==typeof t?t:fu())},hu(La).d1=function(){return this.ha_1>this.ia_1},hu(La).equals=function(t){return t instanceof La&&(!(!this.d1()||!t.d1())||this.ha_1===t.ha_1&&this.ia_1===t.ia_1)},hu(La).hashCode=function(){return this.d1()?-1:Tt(31,this.ha_1)+this.ia_1|0},hu(La).toString=function(){return this.ha_1+".."+this.ia_1},hu(Ua).nh=function(){return this.oh_1},hu(Ua).y8=function(){return new ws(this.nh())},hu(Ua).rh=function(){return this.ph_1},hu(Ua).z8=function(){return new ws(this.rh())},hu(Ua).sh=function(t){return as(this.oh_1,t)<=0&&as(t,this.ph_1)<=0},hu(Ua).ka=function(t){return this.sh(t instanceof ws?t.oa_1:fu())},hu(Ua).d1=function(){return as(this.oh_1,this.ph_1)>0},hu(Ua).equals=function(t){return t instanceof Ua&&(!(!this.d1()||!t.d1())||this.oh_1===t.oh_1&&this.ph_1===t.ph_1)},hu(Ua).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.oh_1;t=Tt(31,n)+this.ph_1|0}return t},hu(Ua).toString=function(){return fs(this.oh_1)+".."+fs(this.ph_1)},hu(Ha).w=function(){return this.vh_1},hu(Ha).we=function(){var t=this.wh_1;if(t===this.uh_1){if(!this.vh_1)throw b_();this.vh_1=!1}else this.wh_1=this.wh_1+this.th_1|0;return t},hu(Va).w=function(){return this.zh_1},hu(Va).ye=function(){var t=this.ai_1;if(t===this.yh_1){if(!this.zh_1)throw b_();this.zh_1=!1}else this.ai_1=this.ai_1+this.xh_1|0;return Zu(t)},hu(Ba).ga=function(t,n,i){return new Wa(t,n,i)},hu(Wa).v=function(){return new Ha(this.ha_1,this.ia_1,this.ja_1)},hu(Wa).d1=function(){return this.ja_1>0?this.ha_1>this.ia_1:this.ha_10?this.ha_1+".."+this.ia_1+" step "+this.ja_1:this.ha_1+" downTo "+this.ia_1+" step "+(0|-this.ja_1)},hu(Ga).v=function(){return new Va(this.oh_1,this.ph_1,this.qh_1)},hu(Ga).d1=function(){return this.qh_1>0?as(this.oh_1,this.ph_1)>0:as(this.oh_1,this.ph_1)<0},hu(Ga).equals=function(t){return t instanceof Ga&&(!(!this.d1()||!t.d1())||this.oh_1===t.oh_1&&this.ph_1===t.ph_1&&this.qh_1===t.qh_1)},hu(Ga).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.oh_1,i=Tt(31,n),e=this.ph_1;t=Tt(31,i+e|0)+this.qh_1|0}return t},hu(Ga).toString=function(){return this.qh_1>0?fs(this.oh_1)+".."+fs(this.ph_1)+" step "+this.qh_1:fs(this.oh_1)+" downTo "+fs(this.ph_1)+" step "+(0|-this.qh_1)},hu(kl).y=function(){if(-1===this.bi_1&&$l(this),0===this.bi_1)throw b_();var t=this.ei_1,n=t instanceof La?t:fu();return this.ei_1=null,this.bi_1=-1,n},hu(kl).w=function(){return-1===this.bi_1&&$l(this),1===this.bi_1},hu(xl).v=function(){return new kl(this)},hu(Tl).oi=function(t){var n;try{n=function(t,n){var i=t.length;if(0===i)throw Jo("The string is empty");var e=0,r=Al().li_1,s="Infinity",u=Vs(t,e);43!==u&&45!==u||(e=e+1|0);var o=e>0,_=!!o&&cl(t,45);if(i<=e)throw Jo("No components");if(80===Vs(t,e)){if((e=e+1|0)===i)throw Ko();for(var h=!1,a=null;e=0&&p<=ul(t)))throw Jo("Missing unit for value "+w);e=e+1|0;var m=nc(Vs(t,p),h);if(null!=a&&a.z9(m)<=0)throw Jo("Unexpected order of duration components");a=m;var g=ol(w,46);m.equals(fr())&&g>0?(r=Dl(r,Gl(tc(w.substring(0,g)),m)),r=Dl(r,Kl(Ee(w.substring(g)),m))):r=Dl(r,Gl(tc(w),m))}else{if(h||(e=e+1|0)===i)throw Ko();h=!0}}else{if(n)throw Ko();var y=i-e|0;if(We(t,e,s,0,Math.max(y,8),!0))r=Al().mi_1;else{var b=null,$=!1,k=!o;if(o&&40===Vs(t,e)&&41===is(t)&&(k=!0,(e=e+1|0)==(i=i-1|0)))throw Jo("No components");for(;e0){if(r=Dl(r,Gl(Ce(j.substring(0,R)),N)),r=Dl(r,Kl(Ee(j.substring(R)),N)),e0},hu(Zc).equals=function(t){return t instanceof Zc&&(!(!this.d1()||!t.d1())||this.lk_1===t.lk_1&&this.mk_1===t.mk_1)},hu(Zc).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.lk_1;t=Tt(31,n)+this.mk_1|0}return t},hu(Zc).toString=function(){return new Hc(this.lk_1)+".."+new Hc(this.mk_1)},hu(tf).v=function(){return new nf(this.lk_1,this.mk_1,this.nk_1)},hu(tf).d1=function(){var t;this.nk_1>0?t=Tf(this.lk_1,this.mk_1)>0:t=Tf(this.lk_1,this.mk_1)<0;return t},hu(tf).equals=function(t){return t instanceof tf&&(!(!this.d1()||!t.d1())||this.lk_1===t.lk_1&&this.mk_1===t.mk_1&&this.nk_1===t.nk_1)},hu(tf).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.lk_1,i=Tt(31,n),e=this.mk_1;t=Tt(31,i+e|0)+this.nk_1|0}return t},hu(tf).toString=function(){return this.nk_1>0?new Hc(this.lk_1)+".."+new Hc(this.mk_1)+" step "+this.nk_1:new Hc(this.lk_1)+" downTo "+new Hc(this.mk_1)+" step "+(0|-this.nk_1)},hu(nf).w=function(){return this.qk_1},hu(nf).ck=function(){var t=this.sk_1;if(t===this.pk_1){if(!this.qk_1)throw b_();this.qk_1=!1}else{var n=this.sk_1,i=this.rk_1;this.sk_1=n+i|0}return t},hu(nf).y=function(){return new Hc(this.ck())},hu(hf).yk=function(t){return of(this.xk_1,t)},hu(hf).d=function(t){return function(t,n){return of(t.xk_1,n instanceof hf?n.xk_1:fu())}(this,t)},hu(hf).toString=function(){return _f(this.xk_1)},hu(hf).hashCode=function(){return this.xk_1.hashCode()},hu(hf).equals=function(t){return function(t,n){if(!(n instanceof hf))return!1;var i=n instanceof hf?n.xk_1:fu();return!!t.equals(i)}(this.xk_1,t)},hu(ff).w=function(){return this.al_1i)throw Jo("fromIndex ("+n+") is greater than toIndex ("+i+").");if(n<0)throw e_("fromIndex ("+n+") is less than zero.");if(i>t)throw e_("toIndex ("+i+") is greater than size ("+t+").")}(t.n(),n,i);for(var r=n,s=i-1|0;r<=s;){var u=(r+s|0)>>>1|0,o=e(t.h1(u));if(o<0)r=u+1|0;else{if(!(o>0))return u;s=u-1|0}}return 0|-(r+1|0)},t.$_$.w5=function(t){return t<0&&function(){throw O_("Count overflow has happened.")}(),t},t.$_$.x5=nn,t.$_$.y5=qh,t.$_$.z5=function(t,n){return so(t,ms)?t.r(n):function(t,n){if(so(t,ps))return t.t1(n);for(var i=0,e=t.v();e.w();){var r=e.y();if(nn(i),eu(n,r))return i;i=i+1|0}return-1}(t,n)>=0},t.$_$.a6=pr,t.$_$.b6=function(t,n){return Gs(t,n)},t.$_$.c6=function(t,n){return Gs(t,n)},t.$_$.d6=function(t){return Ks(t)},t.$_$.e6=function(t){return Ks(t)},t.$_$.f6=function(t){return Ks(t)},t.$_$.g6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Int16Array(n))},t.$_$.h6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));var i=du(t,n,new mu(0,0));return i.$type$="LongArray",i},t.$_$.i6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));var i=du(t,n,!1);return i.$type$="BooleanArray",i},t.$_$.j6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));var i=vu(t,Is(n));return i.$type$="CharArray",i},t.$_$.k6=qo,t.$_$.l6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Float64Array(n))},t.$_$.m6=function(t,n){if(!(n>=0))throw Jo(iu("Invalid new array size: "+n+"."));return vu(t,new Float32Array(n))},t.$_$.n6=Co,t.$_$.o6=xo,t.$_$.p6=rn,t.$_$.q6=function(t){return Nr(Ur(t))},t.$_$.r6=function(t,n){if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));return function(t,n){if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));if(0===n)return dh();if(so(t,ms)){if(n>=t.n())return Nr(t);if(1===n)return Jt(Pr(t))}var i=0,e=gn(n),r=t.v();t:for(;r.w();){var s=r.y();if(e.s(s),(i=i+1|0)===n)break t}return gh(e)}(t,Kr(t.n()-n|0,0))},t.$_$.s6=function(t,n){var i;if(!(n>=0))throw Jo(iu("Requested element count "+n+" is less than zero."));if(0===n)return Nr(t);if(so(t,ms)){var e=t.n()-n|0;if(e<=0)return dh();if(1===e)return Jt(Hr(t));if(i=gn(e),so(t,ps)){if(so(t,Oi)){var r=n,s=t.n();if(r=n?i.s(l):h=h+1|0}return gh(i)},t.$_$.t6=dh,t.$_$.u6=Oh,t.$_$.v6=ha,t.$_$.w6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.x6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.y6=So,t.$_$.z6=function(t){return t.d1()?null:t.h1(0)},t.$_$.a7=Vr,t.$_$.b7=Pr,t.$_$.c7=function(t){if(0===t.length)throw k_("Array is empty.");return t[0]},t.$_$.d7=function(t){for(var n=mn(),i=t.v();i.w();)Ah(n,i.y());return n},t.$_$.e7=function(t){for(var n=0,i=0,e=t.length;i=0&&n<=wh(t)?t.h1(n):null},t.$_$.g7=function(t,n){return function(t,n){if(so(t,Eh))return t.oe(n);var i=t.q2(n);if(null==i&&!t.n2(n))throw k_("Key "+n+" is missing in the map.");return null==i||null!=i?i:fu()}(t,n)},t.$_$.h7=function(t){return new La(0,function(t){return t.length-1|0}(t))},t.$_$.i7=function(t){return new La(0,yr(t))},t.$_$.j7=ph,t.$_$.k7=Or,t.$_$.l7=Sr,t.$_$.m7=jr,t.$_$.n7=function(t){return t.length-1|0},t.$_$.o7=wh,t.$_$.p7=yr,t.$_$.q7=function(t){return t.d1()?null:t.h1(t.n()-1|0)},t.$_$.r7=Ir,t.$_$.s7=Jt,t.$_$.t7=function(t){return t.length>0?ko(t):dh()},t.$_$.u7=tn,t.$_$.v7=function(t){return t.length>0?(n=t,Th(i=$i(t.length),n),i):Oh();var n,i},t.$_$.w7=mh,t.$_$.x7=function(t,n){var i=function(t){return so(t,ms)?t.n():null}(n),e=null==i?null:t.n()+i|0,r=Ci(null==e?Tt(t.n(),2):e);return r.z(t),Ah(r,n),r},t.$_$.y7=function(t,n){if(so(t,ms))return Tr(t,n);var i=mn();return Ah(i,t),Ah(i,n),i},t.$_$.z7=Tr,t.$_$.a8=function(t,n){var i=gn(t.n()+1|0);return i.z(t),i.s(n),i},t.$_$.b8=function(t){return t.d1()?null:t.j1(0)},t.$_$.c8=function(t){return t.d1()?null:t.j1(wh(t))},t.$_$.d8=function(t){if(t.d1())throw k_("List is empty.");return t.j1(wh(t))},t.$_$.e8=function(t){for(var n=0,i=t.length;n0?function(t){switch(t.length){case 0:return ha();case 1:return Zt(t[0]);default:return gr(t,Ci(t.length))}}(t):ha()},t.$_$.i8=function(t){return 1===t.n()?t.h1(0):null},t.$_$.j8=Dr,t.$_$.k8=Rr,t.$_$.l8=en,t.$_$.m8=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),function(t,n,i,e){n<(i-1|0)&&xn(t,n,i-1|0,e)}(t,i,e,n)},t.$_$.n8=function(t,n){if(so(t,ms)){if(t.n()<=1)return Nr(t);var i=rn(t),e=oo(i)?i:fu();return function(t,n){t.length>1&&kn(t,n)}(e,n),ko(e)}var r=Fr(t);return en(r,n),r},t.$_$.o8=function(t){for(var n=As(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.p8=function(t){return Lr(t,Yn(qh(t,12)))},t.$_$.q8=function(t){if(0===t.n())return dh();var n=t.f2().v();if(!n.w())return dh();var i=n.y();if(!n.w())return Jt(new $c(i.i2(),i.j2()));var e=gn(t.n()),r=new $c(i.i2(),i.j2());e.s(r);do{var s=n.y(),u=new $c(s.i2(),s.j2());e.s(u)}while(n.w());return e},t.$_$.r8=Nr,t.$_$.s8=function(t){switch(t.length){case 0:return dh();case 1:return Jt(t[0]);default:return function(t){return yn(function(t){return new $h(t,!1)}(t))}(t)}},t.$_$.t8=function(t){if(so(t,ms)){var n;switch(t.n()){case 0:n=Oh();break;case 1:n=Qt(so(t,ps)?t.h1(0):t.v().y());break;default:n=zh(t,$i(t.n()))}return n}return function(t){return 0===t.n()?Oh():t}(zh(t,bi()))},t.$_$.u8=Mr,t.$_$.v8=Ur,t.$_$.w8=zr,t.$_$.x8=function(t){for(var n=new Int16Array(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.y8=function(t){return[].slice.call(t)},t.$_$.z8=function(t){return new Sh((n=t,function(){return Ts(n)}));var n},t.$_$.a9=function(t,n){return t===n?0:null==t?-1:null==n?1:Js(null!=t&&("string"===(e=typeof(i=t))||"boolean"===e||ho(i)||so(i,Rt))?t:fu(),n);var i,e},t.$_$.b9=Ti,t.$_$.c9=Sa,t.$_$.d9=Fo,t.$_$.e9=Lo,t.$_$.f9=qa,t.$_$.g9=xa,t.$_$.h9=function(t){if(t instanceof xa){var n;if(t.mg(this.i2())){var i=t.lg(this);n=null!=i&&so(i,da)?i:null}else n=null;return n}return _t===t?so(this,da)?this:fu():null},t.$_$.i9=function(t){return t instanceof xa?t.mg(this.i2())&&null!=t.lg(this)?ga():this:_t===t?ga():this},t.$_$.j9=va,t.$_$.k9=ca,t.$_$.l9=Dt,t.$_$.m9=It,t.$_$.n9=Mt,t.$_$.o9=da,t.$_$.p9=At,t.$_$.q9=Ro,t.$_$.r9=function(t,i,e){var r=Lo(Fo(t,i,e)),s=n;r.qc(s)},t.$_$.s9=function(t){return new Ea(t)},t.$_$.t9=Oa,t.$_$.u9=su,t.$_$.v9=As,t.$_$.w9=_u,t.$_$.x9=Ms,t.$_$.y9=Is,t.$_$.z9=Vs,t.$_$.aa=Ws,t.$_$.ba=Ys,t.$_$.ca=Hu,t.$_$.da=Js,t.$_$.ea=function(t,n,i,e){return Object.defineProperty(t,n,{configurable:!0,get:i,set:e})},t.$_$.fa=eu,t.$_$.ga=lu,t.$_$.ha=zs,t.$_$.ia=uu,t.$_$.ja=Us,t.$_$.ka=function(t,n,i,e,r){return io(),e.get=e,e.set=r,e.callableName=t,s=e,u=function(t,n){return io(),(io(),Y)[t][null==n?0:1]}(n,r),o=function(t,n){io();var i=t.$imask$;return null==i?js([n]):i}(e,i),io(),s.$metadata$=u,s.constructor=s,s.$imask$=o,s;var s,u,o},t.$_$.la=ou,t.$_$.ma=ru,t.$_$.na=Wu,t.$_$.oa=oo,t.$_$.pa=lo,t.$_$.qa=co,t.$_$.ra=vo,t.$_$.sa=ao,t.$_$.ta=go,t.$_$.ua=po,t.$_$.va=wo,t.$_$.wa=so,t.$_$.xa=mo,t.$_$.ya=ho,t.$_$.za=fo,t.$_$.ab=_o,t.$_$.bb=function(t){return(t instanceof Mi?t:fu()).h6()},t.$_$.cb=Ds,t.$_$.db=to,t.$_$.eb=function(t){return Gu(Ku(t))},t.$_$.fb=Zu,t.$_$.gb=function(t){return+t},t.$_$.hb=Ku,t.$_$.ib=Ju,t.$_$.jb=function(t){return Xu(Ku(t))},t.$_$.kb=au,t.$_$.lb=Yu,t.$_$.mb=hu,t.$_$.nb=Bu,t.$_$.ob=Gu,t.$_$.pb=Qu,t.$_$.qb=Xu,t.$_$.rb=iu,t.$_$.sb=function(){return E},t.$_$.tb=function(t){return t<0?0|-t:t},t.$_$.ub=function(t){if(Gt(t))throw Jo("Cannot round NaN value.");return t>r.MAX_VALUE?r.MAX_VALUE:tn?n:t},t.$_$.cc=function(t,n){return t>n?n:t},t.$_$.dc=function(t,n){return t.ca(n)>0?n:t},t.$_$.ec=Xr,t.$_$.fc=function(t,n,i){if(n>i)throw Jo("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t},t.$_$.gc=Jr,t.$_$.hc=Gr,t.$_$.ic=function(t,n,i){if(null!==n&&null!==i){if(Js(n,i)>0)throw Jo("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");if(Js(t,n)<0)return n;if(Js(t,i)>0)return i}else{if(null!==n&&Js(t,n)<0)return n;if(null!==i&&Js(t,i)>0)return i}return t},t.$_$.jc=function(t,n){return t.ka(n)},t.$_$.kc=function(t,n){var i=function(t){var n=Qu(r.MIN_VALUE);return t.ca(Qu(r.MAX_VALUE))<=0&&n.ca(t)<=0?t.la():null}(n);return null!=i&&t.ka(i)},t.$_$.lc=Yr,t.$_$.mc=function(t){return wt.ga(t.ia_1,t.ha_1,0|-t.ja_1)},t.$_$.nc=function(t,n){return function(t,n){if(!t)throw Jo("Step must be positive, was: "+iu(n)+".")}(n>0,n),wt.ga(t.ha_1,t.ia_1,t.ja_1>0?n:0|-n)},t.$_$.oc=Wr,t.$_$.pc=Di,t.$_$.qc=Bi,t.$_$.rc=Vi,t.$_$.sc=Ui,t.$_$.tc=Hi,t.$_$.uc=Xa,t.$_$.vc=Rh,t.$_$.wc=Nh,t.$_$.xc=function(t){return function(t){return t instanceof pe?t:new pe(t)}(new ua(t))},t.$_$.yc=function(t,n){return new Wh(t,!0,n)},t.$_$.zc=function(t){var n=t.v();return n.w()?n.y():null},t.$_$.ad=function(t,n){return new Jh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.bd=function(t,n){return new Jh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.cd=Zr,t.$_$.dd=function(t,n){return Yh(Gh([t,n]))},t.$_$.ed=function(t,n){return Yh(Gh([t,Ar(n)]))},t.$_$.fd=Gh,t.$_$.gd=function(t){return new Fh(t)},t.$_$.hd=Qr,t.$_$.id=$e,t.$_$.jd=function(t){Ue();for(var n="",i=0,e=t.length;i=0:yl(t,n,0,Ws(t),i)>=0},t.$_$.ld=hl,t.$_$.md=function(t){return Ue(),Ke(t,0,t.length,!1)},t.$_$.nd=function(t,n,i,e){return n=n===K?0:n,i=i===K?t.length:i,e=e!==K&&e,Ue(),tt.c8(n,i,t.length),Ke(t,n,i,e)},t.$_$.od=es,t.$_$.pd=function(t){return Ue(),function(t,n,i,e){if(nr(),!(n>=0&&i<=t.length&&n<=i))throw Jo(iu("Failed requirement."));for(var r=new Int8Array(Tt(i-n|0,3)),s=0,u=n;u>6|192);var l=s;s=l+1|0,r[l]=Gu(63&_|128)}else if(_<55296||_>=57344){var c=s;s=c+1|0,r[c]=Gu(_>>12|224);var f=s;s=f+1|0,r[f]=Gu(_>>6&63|128);var v=s;s=v+1|0,r[v]=Gu(63&_|128)}else{var d=Xe(t,_,u,i,e);if(d<=0){var w=s;s=w+1|0,r[w]=Ge()[0];var p=s;s=p+1|0,r[p]=Ge()[1];var m=s;s=m+1|0,r[m]=Ge()[2]}else{var g=s;s=g+1|0,r[g]=Gu(d>>18|240);var y=s;s=y+1|0,r[y]=Gu(d>>12&63|128);var b=s;s=b+1|0,r[b]=Gu(d>>6&63|128);var $=s;s=$+1|0,r[$]=Gu(63&d|128),u=u+1|0}}}return r.length===s?r:qo(r,s)}(t,0,t.length,!1)},t.$_$.qd=function(t,n,i){return i=i!==K&&i,Ws(t)>0&&Za(Vs(t,ul(t)),n,i)},t.$_$.rd=Ye,t.$_$.sd=function(t,n,i){if(null==t)return null==n;if(null==n)return!1;if(!(i=i!==K&&i))return t==n;if(t.length!==n.length)return!1;var e=0,r=t.length;if(e=0}(t)},t.$_$.zd=function(t){return ds(),ds(),t<=56319&&55296<=t},t.$_$.ae=function(t){return ds(),ds(),t<=57343&&56320<=t},t.$_$.be=function(t){return 97<=t&&t<=122||!(as(t,128)<0)&&function(t){return 1===function(t){var n=cs(t),i=jo(Io().wb_1,n),e=Io().wb_1[i],r=(e+Io().xb_1[i]|0)-1|0,s=Io().yb_1[i];if(n>r)return 0;var u=3&s;if(0===u){var o=2,_=e,h=0;if(h<=1)do{if(h=h+1|0,(_=_+(s>>o&127)|0)>n)return 3;if((_=_+(s>>(o=o+7|0)&127)|0)>n)return 0;o=o+7|0}while(h<=1);return 3}if(s<=7)return u;var a=n-e|0;return s>>Tt(2,s<=31?a%2|0:a)&3}(t)||function(t){var n=jo(Mo().zb_1,t);return n>=0&&t<(Mo().zb_1[n]+Mo().ac_1[n]|0)}(cs(t))}(t)},t.$_$.ce=function(t){return ds(),ds(),t<=57343&&55296<=t},t.$_$.de=xe,t.$_$.ee=ul,t.$_$.fe=ll,t.$_$.ge=ql,t.$_$.he=is,t.$_$.ie=al,t.$_$.je=function(t,n){if(dl(t,n)){var i=Ws(n);return t.substring(i)}return t},t.$_$.ke=function(t,n){if(Cl(t,n)){var i=t.length-Ws(n)|0;return t.substring(0,i)}return t},t.$_$.le=function(t,n,i){if(t.length>=(Ws(n)+Ws(i)|0)&&dl(t,n)&&Cl(t,i)){var e=Ws(n),r=t.length-Ws(i)|0;return t.substring(e,r)}return t},t.$_$.me=function(t,n){var i;if(!(n>=0))throw Jo(iu("Count 'n' must be non-negative, but was "+n+"."));switch(n){case 0:i="";break;case 1:i=iu(t);break;default:var e="";if(0!==Ws(t))for(var r=iu(t),s=n;1==(1&s)&&(e+=r),0!=(s=s>>>1|0);)r+=r;return e}return i},t.$_$.ne=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Te().j8(n),e?"gui":"gu"),s=Te().k8(i);return t.replace(r,s)},t.$_$.oe=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Te().j8(fs(n)),e?"gui":"gu"),s=fs(i);return t.replace(r,s)},t.$_$.pe=function(t){var n;switch(Ws(t)){case 0:throw k_("Char sequence is empty.");case 1:n=Vs(t,0);break;default:throw Jo("Char sequence has more than one element.")}return n},t.$_$.qe=function(t,n){return n.d1()?"":function(t,n){var i=n.y8(),e=n.z8()+1|0;return t.substring(i,e)}(t,n)},t.$_$.re=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length)return pl(t,fs(n[0]),i,e);for(var r=ts(function(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,bl(r=r===K?0:r),new xl(t,i,r,(s=n,u=e,function(t,n){var i=vl(t,s,n,u);return i<0?null:kc(i,1)}));var s,u}(t,n,K,i,e)),s=gn(qh(r,10)),u=r.v();u.w();){var o=ml(t,u.y());s.s(o)}return s},t.$_$.se=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length){var r=n[0];if(0!==Ws(r))return pl(t,r,i,e)}for(var s=ts(gl(t,n,K,i,e)),u=gn(qh(s,10)),o=s.v();o.w();){var _=ml(t,o.y());u.s(_)}return u},t.$_$.te=Ve,t.$_$.ue=cl,t.$_$.ve=function(t,n,i,e){return(e=e!==K&&e)||"string"!=typeof t||"string"!=typeof n?wl(t,i,n,0,Ws(n),e):Be(t,n,i)},t.$_$.we=function(t,n,i){i=i===K?t:i;var e,r=ll(t,n);if(-1===r)e=i;else{var s=r+1|0,u=t.length;e=t.substring(s,u)}return e},t.$_$.xe=function(t,n,i){i=i===K?t:i;var e,r=ol(t,n);if(-1===r)e=i;else{var s=r+1|0,u=t.length;e=t.substring(s,u)}return e},t.$_$.ye=function(t,n,i){i=i===K?t:i;var e=ll(t,n);return-1===e?i:t.substring(0,e)},t.$_$.ze=function(t,n,i){i=i===K?t:i;var e=ol(t,n);return-1===e?i:t.substring(0,e)},t.$_$.af=function(t,n){if(!(n>=0))throw Jo(iu("Requested character count "+n+" is less than zero."));var i=t.length,e=i-Xr(n,i)|0;return t.substring(e)},t.$_$.bf=rs,t.$_$.cf=function(t){return function(t){var n=fs(t).toUpperCase();if(n.length>1){var i;if(329===t)i=n;else{var e=Vs(n,0),r=n.substring(1).toLowerCase();i=fs(e)+r}return i}return fs(qe(t))}(t)},t.$_$.df=function(t){return null!=t&&"true"===t.toLowerCase()},t.$_$.ef=function(t){var n,e=function(t){return function(t,n){var e=rl(t,n);if(null==e)return null;var r=e;return ri.MAX_VALUE?null:Gu(r)}(t,10)}(t);return null==e?sl(t):n=e,n},t.$_$.ff=function(t){Ue();for(var n=0,i=t.length,e=Is(i);ne.MAX_VALUE?null:Xu(r)}(t,10)}(t);return null==i?sl(t):n=i,n},t.$_$.nf=function(t,n){return B_(Qu(t).qb(new mu(-1,0)),n)},t.$_$.of=function(t,n){return t.toString(Se(n))},t.$_$.pf=B_,t.$_$.qf=function(t){var n,i=function(t){return function(t,n){var i=zf(t,n);if(null==(null==i?null:new Hc(i)))return null;var e=i;Ec();var r=255;return Tf(e,r)>0?null:Gu(e)}(t,10)}(t);return null==(null==i?null:new jc(i))?sl(t):n=i,n},t.$_$.rf=function(t){var n,i=function(t){return zf(t,10)}(t);return null==(null==i?null:new Hc(i))?sl(t):n=i,n},t.$_$.sf=function(t){var n,i=function(t){return function(t,n){Se(n);var i=t.length;if(0===i)return null;uf();var e,r=new mu(-1,-1),s=Vs(t,0);if(as(s,48)<0){if(1===i||43!==s)return null;e=1}else e=0;var u=new mu(477218588,119304647),o=u,_=Qu(n),h=new mu(0,0),a=e;if(a0){if(!eu(o,u))return null;if(If(h,o=Df(r,_))>0)return null}var f=h=h.ba(_),v=h,d=Qu(c).qb(new mu(-1,0));if(If(h=v.gb(d),f)<0)return null}while(a0?null:Xu(e)}(t,10)}(t);return null==(null==i?null:new kf(i))?sl(t):n=i,n},t.$_$.uf=function(t){return function(t,n){n=n===K?"":n;for(var i=Sl(t),e=mn(),r=i.v();r.w();){var s=r.y();He(s)||e.s(s)}for(var u=gn(qh(e,10)),o=e.v();o.w();){var _=tl(o.y());u.s(_)}for(var h=function(t){var n=t.v();if(!n.w())return null;for(var i=n.y();n.w();){var e=n.y();Js(i,e)>0&&(i=e)}return i}(u),a=null==h?0:h,l=(t.length,Tt(n.length,i.n()),Qa(n)),c=wh(i),f=mn(),v=0,d=i.v();d.w();){var w=d.y(),p=v;v=p+1|0;var m,g=nn(p);if(0!==g&&g!==c||!He(w)){var y,b=ss(w,a);m=null==(y=null==b?null:l(b))?w:y}else m=null;var $=m;null==$||f.s($)}return jr(f,ge(),"\n").toString()}(t,"")},t.$_$.vf=function(t,n){return function(t,n,i){if(n=n===K?"":n,He(i=i===K?"|":i))throw Jo(iu("marginPrefix must be non-blank string."));for(var e=Sl(t),r=(t.length,Tt(n.length,e.n()),Qa(n)),s=wh(e),u=mn(),o=0,_=e.v();_.w();){var h=_.y(),a=o;o=a+1|0;var l,c=nn(a);if(0!==c&&c!==s||!He(h)){var f;t:{var v=0,d=Ws(h)-1|0;if(v<=d)do{var w=v;if(v=v+1|0,!xe(Vs(h,w))){f=w;break t}}while(v<=d);f=-1}var p,m,g=f;if(-1===g)p=null;else if(Be(h,i,g)){var y=g+i.length|0;p=h.substring(y)}else p=null;l=null==(m=null==p?null:r(p))?h:m}else l=null;var b=l;null==b||u.s(b)}return jr(u,ge(),"\n").toString()}(t,"",n=n===K?"|":n)},t.$_$.wf=function(t){var n;t:{var i=0,e=Ws(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!xe(Vs(t,r))){n=Ys(t,r,Ws(t));break t}}while(i<=e);n=""}return n},t.$_$.xf=function(t){var n=0,i=Ws(t)-1|0,e=!1;t:for(;n<=i;){var r=xe(Vs(t,e?i:n));if(e){if(!r)break t;i=i-1|0}else r?n=n+1|0:e=!0}return Ys(t,n,i+1|0)},t.$_$.yf=Wl,t.$_$.zf=Kl,t.$_$.ag=function(t,n){return n.z9(fr())<=0?Ql(ar(Qu(t),n,lr())):Gl(Qu(t),n)},t.$_$.bg=j_,t.$_$.cg=ws,t.$_$.dg=Rt,t.$_$.eg=sc,t.$_$.fg=rc,t.$_$.gg=Cs,t.$_$.hg=E_,t.$_$.ig=Yo,t.$_$.jg=n_,t.$_$.kg=h_,t.$_$.lg=r_,t.$_$.mg=mu,t.$_$.ng=x_,t.$_$.og=bc,t.$_$.pg=I_,t.$_$.qg=$c,t.$_$.rg=mc,t.$_$.sg=y_,t.$_$.tg=fu,t.$_$.ug=xc,t.$_$.vg=Nc,t.$_$.wg=jc,t.$_$.xg=Xc,t.$_$.yg=Hc,t.$_$.zg=wf,t.$_$.ah=hf,t.$_$.bh=jf,t.$_$.ch=kf,t.$_$.dh=Lt,t.$_$.eh=f_,t.$_$.fh=function(t,n){if(t!==n){var i=t._suppressed;null==i?t._suppressed=mh([n]):i.s(n)}},t.$_$.gh=function(t){return t},t.$_$.hh=function(t){var n=t.l_1;return 0===n?32+Kt(t.m_1)|0:Kt(n)},t.$_$.ih=gc,t.$_$.jh=cu,t.$_$.kh=function(t,n){return oc(),new uc(t.si_1,n).xi()},t.$_$.lh=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!Gt(t)},t.$_$.mh=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!function(t){return!(t==t)}(t)},t.$_$.nh=Gt,t.$_$.oh=function(t,n){return new ac(n)},t.$_$.ph=function(t){return new ac(t)},t.$_$.qh=function(){throw P_()},t.$_$.rh=Os,t.$_$.sh=function(t){console.error(ir(t))},t.$_$.th=ir,t.$_$.uh=function(){throw us()},t.$_$.vh=function(t){throw H_("lateinit property "+t+" has not been initialized")},t.$_$.wh=Es,t.$_$.xh=kc,t.$_$.yh=Tf,t})?i.apply(n,[n]):i)||(t.exports=e)},852:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i=n.$_$.mb,e=n.$_$.ca;function r(t){this.rl_1=t}return(0,n.$_$.nb)(r,"EventListenerHandler",e),i(r).sl=function(t){this.rl_1(t)},i(r).handleEvent=function(t){return this.sl(t)},i(r).toString=function(){return"EventListenerHandler("+this.rl_1+")"},t.$_$=t.$_$||{},t.$_$.a=function(t){return new r(t)},t})?e.apply(n,r):e)||(t.exports=s)},205:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e=n.$_$.ha,r=n.$_$.mb,s=n.$_$.ea,u=n.$_$.ca,o=n.$_$.nb,_=n.$_$.lb,h=n.$_$.wh,a=n.$_$.f;function l(t){for(var n=0,i=e(Array(t),null);n>ie()){case 0:var e=536870911&i,r=(2<=0){if(null===r)return iu();if(n.py(i,s,r))return $s(t),eu()}}else if(s===Gr()&&n.py(i,s,Qr()))return $s(t),n.ly(i);return function(t,n,i,e,r){t:for(;;){var s=n.ny(i);if(null===s||s===Kr()){var u=t.ty_1.kotlinx$atomicfu$value.qb(new yn(-1,268435455));if(e.ca(u)<0){if(n.py(i,s,Zr()))return $s(t),ru()}else{if(null===r)return iu();if(n.py(i,s,r))return $s(t),eu()}}else if(s===Gr()){if(n.py(i,s,Qr()))return $s(t),n.ly(i)}else{if(s===ts())return ru();if(s===Zr())return ru();if(s===is())return $s(t),ru();if(s===Jr())continue t;if(n.py(i,s,Xr())){var o,_=s instanceof Hs;return bs(s instanceof Hs?s.v10_1:s,t,n,i)?(n.oy(i,Qr()),$s(t),o=n.ly(i)):(n.oy(i,ts()),n.dz(i,!1),_&&$s(t),o=ru()),o}}}}(t,n,i,e,r)}function bs(t,n,i,e){var r;if(Xt(t,Ai))Xt(t,Ai)||It(),r=Bs(t,Tt);else if(Xt(t,Mo)){t instanceof Po||It();var s=t.h11(n,Tt);s===Bo()&&i.my(e),r=s===Vo()}else{if(!(t instanceof vs)){var u="Unexpected waiter: "+Bt(t);throw Wt(Bt(u))}r=Bs(t.d11_1,!0)}return r}function $s(t){if(cs(t))return Tt;var n=t.zy_1.kotlinx$atomicfu$value;t:for(;;){var i=t.vy_1.atomicfu$getAndIncrement$long(),e=Yr(),r=i.aa(Wn(e));if(t.vz().ca(i)<=0)return n.mq_1.ca(r)<0&&null!=n.lz()&&Ls(t,r,n),qs(t),Tt;if(!n.mq_1.equals(r)){var s=Ps(t,r,n,i);if(null==s)continue t;n=s}var u=Yr();if(ks(t,n,i.ib(Wn(u)).la(),i))return qs(t),Tt;qs(t)}}function ks(t,n,i,e){var r,s=n.ny(i);return null!=s&&Xt(s,Fr)&&e.ca(t.uy_1.kotlinx$atomicfu$value)>=0&&n.py(i,s,Jr())?(bs(s,t,n,i)?(n.oy(i,Gr()),r=!0):(n.oy(i,ts()),n.dz(i,!1),r=!1),r):function(t,n,i,e){t:for(;;){var r=n.ny(i);if(null!=r&&Xt(r,Fr)){var s;if(e.ca(t.uy_1.kotlinx$atomicfu$value)<0){if(n.py(i,r,new Hs(r)))return!0}else if(n.py(i,r,Jr()))return bs(r,t,n,i)?(n.oy(i,Gr()),s=!0):(n.oy(i,ts()),n.dz(i,!1),s=!1),s}else{if(r===ts())return!1;if(null!==r){if(r===Gr())return!0;if(r===Zr()||r===Qr()||r===ns())return!0;if(r===is())return!0;if(r===Xr())continue t;var u="Unexpected cell state: "+Jt(r);throw Wt(Bt(u))}if(n.py(i,r,Kr()))return!0}}}(t,n,i,e)}function xs(t,n){if(!t.wy_1.atomicfu$addAndGet$long(n).qb(new yn(0,1073741824)).equals(new yn(0,0)))for(;!t.wy_1.kotlinx$atomicfu$value.qb(new yn(0,1073741824)).equals(new yn(0,0)););}function qs(t,n,i){return xs(t,n=n===Rt?new yn(1,0):n)}function Ss(t){this.tz_1=t,this.rz_1=es(),this.sz_1=null}function Cs(t){var n=t.uz();return null==n?new du(mu()):n}function Es(t){t.k11()}function Os(t,n){var i=function(t){var n=t.zy_1.kotlinx$atomicfu$value,i=t.xy_1.kotlinx$atomicfu$value;i.mq_1.ca(n.mq_1)>0&&(n=i);var e=t.yy_1.kotlinx$atomicfu$value;return e.mq_1.ca(n.mq_1)>0&&(n=e),function(t){_o();for(var n=t;;){var i=eo(n);if(i===Zu())return n;var e=null==i||i instanceof uo?i:It();if(null===e){if(n.qz())return n}else n=e}}(n)}(t);if(t.m11()){var e=function(t,n){for(var i=n;;){var e=Yr()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=i.mq_1,u=Yr(),o=s.ba(Wn(u)).gb(Wn(r));if(o.ca(t.w10())<0)return new yn(-1,-1);t:for(;;){var _=i.ny(r);if(null!==_&&_!==Kr()){if(_===Gr())return o;break t}if(i.py(r,_,is())){i.fz();break t}}}while(0<=e);var h=i.oz();if(null==h)return new yn(-1,-1);i=h}}(t,i);e.equals(new yn(-1,-1))||t.l11(e)}return function(t,n,i){var e=$o(),r=n;t:for(;null!=r;){var s=Yr()-1|0;if(0<=s)do{var u=s;s=s+-1|0;var o=r.mq_1,_=Yr();if(o.ba(Wn(_)).gb(Wn(u)).ca(i)<0)break t;n:for(;;){var h=r.ny(u);if(null===h||h===Kr()){if(r.py(u,h,is())){r.fz();break n}}else if(h instanceof Hs){if(r.py(u,h,is())){e=ko(e,h.v10_1),r.dz(u,!0);break n}}else{if(null==h||!Xt(h,Fr))break n;if(r.py(u,h,is())){e=ko(e,h),r.dz(u,!0);break n}}}}while(0<=s);r=r.oz()}var a=e,l=a;if(null!=l)if(l instanceof An){var c=a instanceof An?a:It(),f=c.n()-1|0;if(0<=f)do{var v=f;f=f+-1|0,zs(c.h1(v),t)}while(0<=f)}else{zs(null==a||null!=a?a:It(),t)}}(t,i,n),i}function js(t,n){!function(t,n){var i=t.sy_1,e=null,r=$o(),s=n;t:for(;;){var u=Yr()-1|0;if(0<=u)do{var o=u;u=u+-1|0;var _=s.mq_1,h=Yr(),a=_.ba(Wn(h)).gb(Wn(o));n:for(;;){var l=s.ny(o);if(l===Qr())break t;if(l===Gr()){if(a.ca(t.w10())<0)break t;if(s.py(o,l,is())){null!=i&&(e=So(i,s.ky(o),e)),s.my(o),s.fz();break n}}else if(l===Kr()||null===l){if(s.py(o,l,is())){s.fz();break n}}else{if(!(null!=l&&Xt(l,Fr)||l instanceof Hs)){if(l===Jr()||l===Xr())break t;if(l===Jr())continue n;break n}if(a.ca(t.w10())<0)break t;var c=l instanceof Hs?l.v10_1:null!=l&&Xt(l,Fr)?l:It();if(s.py(o,l,is())){null!=i&&(e=So(i,s.ky(o),e)),r=ko(r,c),s.my(o),s.fz();break n}}}}while(0<=u);var f=s.oz();if(null==f)break t;s=f}var v=r,d=v;if(null!=d)if(d instanceof An){var w=v instanceof An?v:It(),p=w.n()-1|0;if(0<=p)do{var m=p;p=p+-1|0,Ts(w.h1(m),t)}while(0<=p)}else{Ts(null==v||null!=v?v:It(),t)}if(null!=e)throw e}(t,Os(t,n))}function zs(t,n){return As(t,n,!0)}function Ts(t,n){return As(t,n,!1)}function As(t,n,i){if(t instanceof vs){var e=t.d11_1,r=un(!1);e.qc(r)}else if(Xt(t,Ai)){var s=i?Cs(n):n.o11(),u=un(on(s));t.qc(u)}else if(t instanceof Vs){var o=t.a11_1,_=new fu(cu().n11(n.uz())),h=un(_);o.qc(h)}else if(t instanceof Ss)t.j11();else{if(!Xt(t,Mo))throw Wt(Bt("Unexpected waiter: "+t));t.b11(n,is())}}function Is(t,n){return Ds(n,t,!1)}function Ds(t,n,i){var e;switch(n.ob(60).la()){case 0:case 1:e=!1;break;case 2:Os(t,n.qb(new yn(-1,268435455))),e=!i||!t.p11();break;case 3:js(t,n.qb(new yn(-1,268435455))),e=!0;break;default:var r="unexpected close status: "+n.ob(60).la();throw Wt(Bt(r))}return e}function Ms(t,n,i,e){for(;;){var r=n.ny(i);if(null!==r&&r!==Kr())return r===Gr()||r!==ts()&&r!==is()&&r!==Qr()&&r!==Zr()&&(r===Jr()||r!==Xr()&&e.equals(t.w10()));if(n.py(i,r,Zr()))return $s(t),!1}}function Ns(t,n,i){var e;t:for(var r=t.xy_1,s=Gs();;){var u,o=oo(i,n,s);if(to(o))u=!0;else{var _;n:{for(var h=no(o);;){var a=r.kotlinx$atomicfu$value;if(a.mq_1.ca(h.mq_1)>=0){_=!0;break n}if(!h.hz()){_=!1;break n}if(r.atomicfu$compareAndSet(a,h)){a.iz()&&a.x(),_=!0;break n}h.iz()&&h.x()}_=Tt}u=_}if(u){e=o;break t}}var l,c=e;if(to(c)){Es(t);var f=i.mq_1,v=Yr();f.ba(Wn(v)).ca(t.w10())<0&&i.pz(),l=null}else{var d,w=no(c);if(w.mq_1.ca(n)>0){var p=w.mq_1,m=Yr();!function(t,n){for(var i=t.ty_1;;){var e=i.kotlinx$atomicfu$value,r=e.qb(new yn(-1,268435455));if(r.ca(n)>=0)return Tt;var s=Ys(r,e.ob(60).la());if(t.ty_1.atomicfu$compareAndSet(e,s))return Tt}}(t,p.ba(Wn(m)));var g=w.mq_1,y=Yr();g.ba(Wn(y)).ca(t.w10())<0&&w.pz(),d=null}else d=w;l=d}return l}function Rs(t,n,i){var e;t:for(var r=t.yy_1,s=Gs();;){var u,o=oo(i,n,s);if(to(o))u=!0;else{var _;n:{for(var h=no(o);;){var a=r.kotlinx$atomicfu$value;if(a.mq_1.ca(h.mq_1)>=0){_=!0;break n}if(!h.hz()){_=!1;break n}if(r.atomicfu$compareAndSet(a,h)){a.iz()&&a.x(),_=!0;break n}h.iz()&&h.x()}_=Tt}u=_}if(u){e=o;break t}}var l,c=e;if(to(c)){Es(t);var f=i.mq_1,v=Yr();f.ba(Wn(v)).ca(t.vz())<0&&i.pz(),l=null}else{var d,w,p=no(c);if(cs(t))d=!1;else{var m=ls(t),g=Yr(),y=m.aa(Wn(g));d=n.ca(y)<=0}if(d)t:for(var b=t.zy_1;;){var $=b.kotlinx$atomicfu$value;if($.mq_1.ca(p.mq_1)>=0)break t;if(!p.hz())break t;if(b.atomicfu$compareAndSet($,p)){$.iz()&&$.x();break t}p.iz()&&p.x()}if(p.mq_1.ca(n)>0){var k=p.mq_1,x=Yr();!function(t,n){for(var i=t.uy_1;;){var e=i.kotlinx$atomicfu$value;if(e.ca(n)>=0)return Tt;if(t.uy_1.atomicfu$compareAndSet(e,n))return Tt}}(t,k.ba(Wn(x)));var q=p.mq_1,S=Yr();q.ba(Wn(S)).ca(t.vz())<0&&p.pz(),w=null}else w=p;l=w}return l}function Ps(t,n,i,e){var r;t:for(var s=t.zy_1,u=Gs();;){var o,_=oo(i,n,u);if(to(_))o=!0;else{var h;n:{for(var a=no(_);;){var l=s.kotlinx$atomicfu$value;if(l.mq_1.ca(a.mq_1)>=0){h=!0;break n}if(!a.hz()){h=!1;break n}if(s.atomicfu$compareAndSet(l,a)){l.iz()&&l.x(),h=!0;break n}a.iz()&&a.x()}h=Tt}o=h}if(o){r=_;break t}}var c,f=r;if(to(f))Es(t),Ls(t,n,i),qs(t),c=null;else{var v,d=no(f);if(d.mq_1.ca(n)>0){var w=e.gb(Wn(1)),p=d.mq_1,m=Yr(),g=p.ba(Wn(m));if(t.vy_1.atomicfu$compareAndSet(w,g)){var y=d.mq_1,b=Yr();xs(t,y.ba(Wn(b)).hb(e))}else qs(t);v=null}else v=d;c=v}return c}function Ls(t,n,i){var e=i;t:for(;e.mq_1.ca(n)<0;){var r=e.lz();if(null==r)break t;e=r}for(;;){t:for(;e.gz();){var s=e.lz();if(null==s)break t;e=s}var u;t:{for(var o=t.zy_1,_=e;;){var h=o.kotlinx$atomicfu$value;if(h.mq_1.ca(_.mq_1)>=0){u=!0;break t}if(!_.hz()){u=!1;break t}if(o.atomicfu$compareAndSet(h,_)){h.iz()&&h.x(),u=!0;break t}_.iz()&&_.x()}u=Tt}if(u)return Tt}}function Fs(t){return function(n,i,e){return function(t,n,i){return function(e){return t!==is()&&xo(n.sy_1,null==t||null!=t?t:It(),i.jc()),Tt}}(e,t,n)}}function Us(t,n){if(n=n===Rt?null:n,this.ry_1=t,this.sy_1=n,!(this.ry_1>=0)){var i="Invalid channel capacity: "+this.ry_1+", should be >=0";throw Yn(Bt(i))}this.ty_1=Gn(new yn(0,0)),this.uy_1=Gn(new yn(0,0)),this.vy_1=Gn(function(t){var n;return su(),ou(),0===t?n=new yn(0,0):(ou(),n=2147483647===t?new yn(-1,2147483647):Wn(t)),n}(this.ry_1)),this.wy_1=Gn(ls(this));var e=new us(new yn(0,0),null,this,3);this.xy_1=Zt(e),this.yy_1=Zt(e);var r;if(cs(this)){var s=Wr();r=s instanceof us?s:It()}else r=e;this.zy_1=Zt(r);var u;u=null==this.sy_1?null:Fs(this),this.az_1=u,this.bz_1=Zt(rs()),this.cz_1=Zt(null)}function Hs(t){this.v10_1=t}function Vs(){}function Bs(t,n,i){i=i===Rt?null:i,su();var e,r=t.mp(n,null,i);return null!=r?(t.np(r),e=!0):e=!1,e}function Ws(t,n){return su(),new yn(0,n?1073741824:0).gb(t)}function Ys(t,n){return su(),Wn(n).nb(60).gb(t)}function Gs(){return su(),(t=function(t,n){return i=t,e=n,su(),new us(i,e,e.hy(),0);var i,e}).callableName="createSegment",t;var t}function Ks(){return K}function Xs(){return su(),3}function Js(){return su(),0}function Zs(){return su(),1}function Qs(){return su(),2}function tu(){return su(),4}function nu(){return su(),5}function iu(){return su(),su(),H}function eu(){return su(),su(),U}function ru(){return su(),su(),V}function su(){X||(X=!0,j=new us(new yn(-1,-1),null,null,0),z=zo("kotlinx.coroutines.bufferedChannel.segmentSize",32),T=zo("kotlinx.coroutines.bufferedChannel.expandBufferCompletionWaitIterations",1e4),A=new jo("BUFFERED"),I=new jo("SHOULD_BUFFER"),D=new jo("S_RESUMING_BY_RCV"),M=new jo("RESUMING_BY_EB"),N=new jo("POISONED"),R=new jo("DONE_RCV"),P=new jo("INTERRUPTED_SEND"),L=new jo("INTERRUPTED_RCV"),F=new jo("CHANNEL_CLOSED"),U=new jo("SUSPEND"),H=new jo("SUSPEND_NO_WAITER"),V=new jo("FAILED"),B=new jo("NO_RECEIVE_RESULT"),W=new jo("CLOSE_HANDLER_CLOSED"),Y=new jo("CLOSE_HANDLER_INVOKED"),G=new jo("NO_CLOSE_CAUSE"))}function uu(){J=this,this.z11_1=2147483647,this.a12_1=0,this.b12_1=-1,this.c12_1=-2,this.d12_1=-3,this.e12_1="kotlinx.coroutines.channels.defaultBuffer",this.f12_1=zo("kotlinx.coroutines.channels.defaultBuffer",64,1,2147483646)}function ou(){return null==J&&new uu,J}function _u(t){return!(t instanceof hu)}function hu(){}function au(t){hu.call(this),this.g12_1=t}function lu(){Z=this,this.y10_1=new hu}function cu(){return null==Z&&new lu,Z}function fu(t){cu(),this.h12_1=t}function vu(t){ii(t,this),qn(this,vu)}function du(t){ri(t,this),qn(this,du)}function wu(){}function pu(){}function mu(){return Q}function gu(t,n,i){return t.v12_1===(Ur(),E)?function(t,n,i){var e=At(Us).r11.call(t,n);if(_u(e)||function(t){return t instanceof au}(e))return e;if(i){var r=t.sy_1,s=null==r?null:So(r,n);if(null!=s)throw s}return cu().z10(Tt)}(t,n,i):function(t,n){var i,e=Gr(),r=t.xy_1.kotlinx$atomicfu$value;t:for(;;){var s=t.ty_1.atomicfu$getAndIncrement$long(),u=s.qb(Ks()),o=Is(s,t),_=Yr(),h=u.aa(Wn(_)),a=Yr(),l=u.ib(Wn(a)).la();if(!r.mq_1.equals(h)){var c=Ns(t,h,r);if(null==c){if(o)return cu().n11(t.o11());continue t}r=c}var f=ds(t,r,l,n,u,e,o);if(f===Js())return r.pz(),cu().z10(Tt);if(f===Zs())return cu().z10(Tt);if(f===Qs()){if(o)return r.fz(),cu().n11(t.o11());var v=null!=e&&Xt(e,Fr)?e:null;null==v||fs(v,0,r,l);var d=r.mq_1,w=Yr(),p=d.ba(Wn(w)).gb(Wn(l));return t.l11(p),cu().z10(Tt)}if(f===tu())return u.ca(t.w10())<0&&r.pz(),cu().n11(t.o11());if(f!==nu()){if(f===Xs())throw Wt(Bt("unexpected"))}else r.pz()}return i}(t,n)}function yu(t,n,i){if(i=i===Rt?null:i,Us.call(this,t,i),this.u12_1=t,this.v12_1=n,this.v12_1===Vr()){var e="This implementation does not support suspension for senders, use "+si(Us).i6()+" instead";throw Yn(Bt(e))}if(!(this.u12_1>=1)){var r="Buffered channel capacity must be at least 1, but "+this.u12_1+" was specified";throw Yn(Bt(r))}}function bu(){return Uu(),tt}function $u(t){var n=t.f13_1,i=t.e13_1;return n.ca(i)<=0?n:i}function ku(t){var n=$u(t),i=t.g13_1;return n.gb(Wn(i)).hb(t.e13_1).la()}function xu(t){return t.g13_1+t.h13_1|0}function qu(t){var n=$u(t),i=t.g13_1;return n.gb(Wn(i))}function Su(t,n){if(0===t.j13_1)return function(t,n){if(0===t.a13_1)return!0;Eu(t,n),t.g13_1=t.g13_1+1|0,t.g13_1>t.a13_1&&Cu(t);var i=t,e=$u(t),r=t.g13_1;return i.f13_1=e.gb(Wn(r)),!0}(t,n);if(t.g13_1>=t.b13_1&&t.f13_1.ca(t.e13_1)<=0)switch(t.c13_1.y9_1){case 0:return!1;case 2:return!0}if(Eu(t,n),t.g13_1=t.g13_1+1|0,t.g13_1>t.b13_1&&Cu(t),ku(t)>t.a13_1){var i=t.e13_1.gb(Wn(1));ju(t,i,t.f13_1,qu(t),function(t){var n=$u(t),i=t.g13_1,e=n.gb(Wn(i)),r=t.h13_1;return e.gb(Wn(r))}(t))}return!0}function Cu(t){Fu(Bn(t.d13_1),$u(t),null),t.g13_1=t.g13_1-1|0;var n=$u(t).gb(Wn(1));t.e13_1.ca(n)<0&&(t.e13_1=n),t.f13_1.ca(n)<0&&function(t,n){if(0!==t.j13_1){var i=t.i13_1;if(null==i);else for(var e=0,r=i.length;e=0&&s.m13_1.ca(n)<0&&(s.m13_1=n)}}t.f13_1=n}(t,n)}function Eu(t,n){var i=xu(t),e=t.d13_1;Fu(null==e?Ou(t,null,0,2):i>=e.length?Ou(t,e,i,zt(e.length,2)):e,$u(t).gb(Wn(i)),n)}function Ou(t,n,i,e){if(!(e>0))throw Wt(Bt("Buffer size overflow"));var r=oi(Array(e),null);t.d13_1=r;var s=r;if(null==n)return s;var u=$u(t),o=0;if(o0){var e=$u(t),r=xu(t);i=Lu(n,e.gb(Wn(r)).hb(Wn(1)))===bu()}else i=!1;if(!i)break t;t.h13_1=t.h13_1-1|0;var s=$u(t),u=xu(t);Fu(n,s.gb(Wn(u)),null)}}function Tu(t,n){var i,e=Hu(),r=Au(t,n);if(r.ca(new yn(0,0))<0)i=bu();else{var s=n.m13_1,u=function(t,n){var i=Lu(Bn(t.d13_1),n);return i instanceof Mu?i.q13_1:i}(t,r);n.m13_1=r.gb(Wn(1)),e=t.s13(s),i=u}for(var o=i,_=e,h=0,a=_.length;h0||i.ca($u(t))>0||0===t.h13_1?new yn(-1,-1):i}function Iu(t,n,i){var e=new Xi(Gt(i),po());if(e.fr(),Au(t,n).ca(new yn(0,0))<0)n.n13_1=e,n.n13_1=e;else{var r=un(Tt);e.qc(r)}return e.gp()}function Du(t,n){var i=n,e=n.length;if(0!==t.j13_1){var r=t.i13_1;if(null==r);else for(var s=0,u=r.length;s=i.length){var a=i,l=zt(2,i.length),c=Math.max(2,l);i=_i(a,c)}var f=e;e=f+1|0,i[f]=h,o.n13_1=null}}}}}return i}function Mu(t,n,i,e){this.o13_1=t,this.p13_1=n,this.q13_1=i,this.r13_1=e}function Nu(t,n,i){Ft.call(this,i),this.b14_1=t,this.c14_1=n}function Ru(t,n,i){Vu.call(this),this.a13_1=t,this.b13_1=n,this.c13_1=i,this.d13_1=null,this.e13_1=new yn(0,0),this.f13_1=new yn(0,0),this.g13_1=0,this.h13_1=0}function Pu(){Bu.call(this),this.m13_1=new yn(-1,-1),this.n13_1=null}function Lu(t,n){return Uu(),t[n.la()&(t.length-1|0)]}function Fu(t,n,i){return Uu(),t[n.la()&(t.length-1|0)]=i}function Uu(){nt||(nt=!0,tt=new jo("NO_VALUE"))}function Hu(){return et||(et=!0,it=oi(Array(0),null)),it}function Vu(){j_.call(this),this.i13_1=null,this.j13_1=0,this.k13_1=0,this.l13_1=null}function Bu(){}function Wu(t,n){if(n.og(0,(e=t,function(t,n){var i=n.i2(),r=e.m15_1.kc(i);if(i!==v)return n!==r?ui.MIN_VALUE:t+1|0;var s=null==r||Xt(r,Me)?r:It(),u=function(t,n){for(var i=t,e=n;;){if(null===i)return null;if(i===e)return i;if(!(i instanceof Oo))return i;i=i.an()}}(Xt(n,Me)?n:It(),s);if(u!==s)throw Wt(Bt("Flow invariant is violated:\n\t\tEmission from another coroutine is detected.\n\t\tChild of "+u+", expected child of "+s+".\n\t\tFlowCollector is not thread-safe and concurrent emissions are prohibited.\n\t\tTo mitigate this restriction please use 'channelFlow' builder instead of 'flow'"));return null==s?t:t+1|0}))!==t.n15_1){var i="Flow invariant is violated:\n\t\tFlow was collected in "+t.m15_1+",\n\t\tbut emission happened in "+n+".\n\t\tPlease refer to 'flow' documentation or use 'flowOn' instead";throw Wt(Bt(i))}var e}function Yu(t,n){Ft.call(this,n),this.x15_1=t}function Gu(){}function Ku(t,n,i){Ft.call(this,i),this.j16_1=t,this.k16_1=n}function Xu(t,n){this.l16_1=n,this.m16_1=t}function Ju(){}function Zu(){return _o(),rt}function Qu(t,n,i){uo.call(this,n),this.mq_1=t,this.nq_1=Yt(i<<16)}function to(t){return t===Zu()}function no(t){if(t===Zu())throw Wt(Bt("Does not contain segment"));return t instanceof Qu?t:It()}function io(t){this.q11_1=t}function eo(t){return t.jz_1.kotlinx$atomicfu$value}function ro(t){for(var n=t.oz();null!==n&&n.gz();)n=n.kz_1.kotlinx$atomicfu$value;return n}function so(t){for(var n=Bn(t.lz());n.gz();){var i=n.lz();if(null==i)return n;n=i}return n}function uo(t){this.jz_1=Zt(null),this.kz_1=Zt(t)}function oo(t,n,i){_o();for(var e=t;e.mq_1.ca(n)<0||e.gz();){var r=eo(e);if(r===Zu())return Zu();var s=null==r||r instanceof uo?r:It();if(null==s){var u=i(e.mq_1.gb(Wn(1)),e);e.mz(u)&&(e.gz()&&e.x(),e=u)}else e=s}return e}function _o(){st||(st=!0,rt=new jo("CLOSED"))}function ho(t,n){for(var i=(g_(),g_(),Et).v();i.w();){var e=i.y();try{e.ss(t,n)}catch(t){if(t instanceof ao)return Tt;if(!(t instanceof Error))throw t;o_(me(n,t))}}try{vn(n,new m_(t))}catch(t){if(!(t instanceof Error))throw t}o_(n)}function ao(){}function lo(){return wo(),ut}function co(){return wo(),ot}function fo(t,n){mo.call(this,lt),this.up_1=t,this.vp_1=n,this.wp_1=lo(),this.xp_1=(this.jc(),0),this.yp_1=Zt(null)}function vo(t,n,i){var e;if(i=i===Rt?null:i,wo(),t instanceof fo){var r,s=he(n,i);if(t.up_1.ps(t.jc()))t.wp_1=s,t.iq_1=po(),t.up_1.qs(t.jc(),t),r=Tt;else{var u=po(),o=Te().nt();if(o.ht())t.wp_1=s,t.iq_1=u,o.gt(t);else{o.jt(!0);try{var _,h=t.jc().kc(v);if(null==h||h.hm())_=!1;else{var a=h.fn();t.hr(s,a);var l=un(on(a));t.qc(l),_=!0}for(_||(t.vp_1,t.xp_1,t.vp_1.qc(n));o.ft(););}catch(n){if(!(n instanceof Error))throw n;var c=n;t.tr(c,null)}finally{o.kt(!0)}}r=Tt}e=r}else t.qc(n),e=Tt;return e}function wo(){_t||(_t=!0,ut=new jo("UNDEFINED"),ot=new jo("REUSABLE_CLAIMED"))}function po(){return ht}function mo(t){v_.call(this),this.iq_1=t}function go(t){return 1===t||2===t}function yo(t,n,i){var e,r=t.gr(),s=t.rr(r);if(null!=s)e=un(on(s));else{var u=t.nr(r);e=un(u)}var o=e;if(i){var _=n instanceof fo?n:It();_.vp_1,_.xp_1,_.vp_1.qc(o)}else n.qc(o)}function bo(){return ft}function $o(t){return t===Rt?null:t}function ko(t,n){var i,e=t;if(null==e)i=$o(n);else if(e instanceof An){(t instanceof An?t:It()).s(n),i=$o(t)}else{var r=zn(4),s=t;r.s(null==s||null!=s?s:It()),r.s(n),i=$o(r)}return i}function xo(t,n,i){var e=So(t,n,null);null==e||we(i,e)}function qo(t,n){xn(t,n,this),qn(this,qo)}function So(t,n,i){i=i===Rt?null:i;try{t(n)}catch(t){if(!(t instanceof Error))throw t;var e=t;if(null==i||i.cause===e)return new qo("Exception in undelivered element handler for "+n,e);vn(i,e)}return i}function Co(t,n,i){return e=t,r=n,s=i,function(t){return xo(e,r,s),Tt};var e,r,s}function Eo(t){this.o16_1=t}function Oo(t,n){Si.call(this,t,!0,!0),this.kp_1=n}function jo(t){this.p16_1=t}function zo(t,n,i,e){return i=i===Rt?1:i,e=e===Rt?ui.MAX_VALUE:e,function(t,n,i,e){var r;i=i===Rt?new yn(1,0):i,e===Rt?(bn(),r=new yn(-1,2147483647)):r=e,e=r;var s=null;if(null==s)return n;var u=s,o=li(u);if(null==o)throw Wt(Bt("System property '"+t+"' has unrecognized value '"+u+"'"));var _=o;if(!(i.ca(_)<=0&&_.ca(e)<=0)){var h="System property '"+t+"' should be in range "+i.toString()+".."+e.toString()+", but is '"+_.toString()+"'";throw Wt(Bt(h))}return _}(t,Wn(n),Wn(i),Wn(e)).la()}function To(t,n){var i;try{vo(Gt(t),un(Tt)),i=Tt}catch(t){if(!(t instanceof Error))throw t;Io(n,t),i=Tt}return i}function Ao(t,n,i,e){var r;e=e===Rt?null:e;try{vo(Gt(Lt(t,n,i)),un(Tt),e),r=Tt}catch(t){if(!(t instanceof Error))throw t;Io(i,t),r=Tt}return r}function Io(t,n){return function(t,n){var i=un(on(n));throw t.qc(i),n}(t,n)}function Do(t,n,i){var e,r;try{r="function"==typeof i?i(n,t):i.cd(n,t)}catch(t){if(!(t instanceof Error))throw t;r=new oe(t)}var s=r;if(s!==Ut()){var u=t.pm(s);if(u!==Ve()){if(u instanceof oe)throw u.mm_1,O_(u.mm_1,t.kp_1);e=Or(u)}else e=Ut()}else e=Ut();return e}function Mo(){}function No(t,n){var i,e=t.f11_1;if(null==e)return null;t:{for(var r=e.v();r.w();){var s=r.y();if(s.q16_1===n){i=s;break t}}i=null}var u=i;if(null==u){var o="Clause with object "+Bt(n)+" is not found";throw Wt(Bt(o))}return u}function Ro(){}function Po(){}function Lo(){if($t)return Tt;$t=!0,mt=new Fo("SUCCESSFUL",0),gt=new Fo("REREGISTER",1),yt=new Fo("CANCELLED",2),bt=new Fo("ALREADY_SELECTED",3)}function Fo(t,n){pn.call(this,t,n)}function Uo(t){var n;switch(Wo(),t){case 0:n=Vo();break;case 1:n=Bo();break;case 2:Lo(),n=yt;break;case 3:Lo(),n=bt;break;default:throw Wt(Bt("Unexpected internal result: "+t))}return n}function Ho(t,n){Wo();var i=t.mp(Tt,null,n);if(null==i)return!1;var e=i;return t.np(e),!0}function Vo(){return Lo(),mt}function Bo(){return Lo(),gt}function Wo(){kt||(kt=!0,vt=new jo("STATE_REG"),dt=new jo("STATE_COMPLETED"),wt=new jo("STATE_CANCELLED"),pt=new jo("NO_RESULT"),new jo("PARAM_CLAUSE_0"))}function Yo(){E_.call(this)}function Go(t,n){"function"==typeof t?t(n):t.invoke(n)}function Ko(){}function Xo(t){return Bt(t)}function Jo(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&void 0!==navigator.userAgent&&void 0!==navigator.userAgent.match&&navigator.userAgent.match("\\bjsdom\\b")?r_():"undefined"!=typeof window&&null!=window&&void 0!==window.addEventListener?function(t){var n,i=t.coroutineDispatcher;if(null==i){var e=new x_(t);t.coroutineDispatcher=e,n=e}else n=i;return n}(window):"undefined"==typeof process||void 0===process.nextTick?(null==jt&&new y_,jt):r_()}function Zo(t,n){var i=t.gm().pg(n);return i!==h_().vs_1&&null==i.kc(Ht)?i.pg(h_().vs_1):i}function Qo(t,n){Oo.call(this,t,n)}function t_(){return qt}function n_(t){var n=di(t).i6();return null==n?"Unknown":n}function i_(t){var n=t.__debug_counter;return"number"!=typeof n&&(n=xt=xt+1|0,t.__debug_counter=n),(null!=n&&"number"==typeof n?n:It()).toString()}function e_(){St=this,b_.call(this)}function r_(){return null==St&&new e_,St}function s_(t){var n;$_.call(this),this.e17_1=t,this.f17_1=(n=this,function(){return n.l17(),Tt})}function u_(t){var n;$_.call(this),this.b18_1=t,this.c18_1="dispatchCoroutine",this.b18_1.addEventListener("message",(n=this,function(t){return t.source==n.b18_1&&t.data==n.c18_1&&(t.stopPropagation(),n.l17()),Tt}),!0)}function o_(t){console.error(t.toString())}function __(){Ct=this,this.vs_1=Jo(),this.ws_1=(null==x&&new Pr,x),this.xs_1=new a_(this.vs_1,!1),this.ys_1=null}function h_(){return null==Ct&&new __,Ct}function a_(t,n){Dr.call(this),this.e18_1=t,this.f18_1=n,this.g18_1=this.f18_1?this:new a_(this.e18_1,!0)}function l_(){je.call(this)}function c_(t,n,i){wi(t,n,this),qn(this,c_),this.l18_1=i}function f_(){}function v_(){}function d_(){}function w_(t,n){return t+1|0}function p_(t,n){this.l15_1=t,this.m15_1=n,this.n15_1=this.m15_1.og(0,w_),this.o15_1=null}function m_(t){mi(Bt(t),this),qn(this,m_)}function g_(){Ot||(Ot=!0,Et=gi())}function y_(){jt=this,b_.call(this)}function b_(){de.call(this),this.h17_1=new s_(this)}function $_(){this.i17_1=$n(),this.j17_1=16,this.k17_1=!1}function k_(t,n){this.p18_1=t,S_.call(this,n)}function x_(t){de.call(this),this.r18_1=t,this.s18_1=new u_(this.r18_1)}function q_(t){return $i(t,new yn(0,0),new yn(2147483647,0)).la()}function S_(t){Zi.call(this),this.t18_1=t}function C_(){E_.call(this)}function E_(){this.xt_1=this,this.yt_1=this,this.zt_1=!1}function O_(t,n){return t}function j_(){}function z_(){this.ot_1=null}return Nt(Me,"Job",Kt,Rt,[En],Rt,Rt,Rt,[0]),Nt(Ne,"ParentJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt(br,"JobSupport",Mt,Rt,[Me,Ne],Rt,Rt,Rt,[0]),Nt($e,"CoroutineScope",Kt),Nt(Si,"AbstractCoroutine",Mt,br,[br,Me,Dt,$e],Rt,Rt,Rt,[0]),Nt(Ci,"StandaloneCoroutine",Mt,Si,Rt,Rt,Rt,Rt,[0]),Nt(Ei,"LazyStandaloneCoroutine",Mt,Ci,Rt,Rt,Rt,Rt,[0]),Nt(Oi,"$awaitCOROUTINE$0",Mt,Ft),Nt(ji,"DeferredCoroutine",Mt,Si,[Si,Me],Rt,Rt,Rt,[0]),Nt(zi,"LazyDeferredCoroutine",Mt,ji,Rt,Rt,Rt,Rt,[0]),Nt(Oo,"ScopeCoroutine",Mt,Si,Rt,Rt,Rt,Rt,[0]),Nt(Ti,"DispatchedCoroutine",Mt,Oo,Rt,Rt,Rt,Rt,[0]),Nt(Ai,"CancellableContinuation",Kt,Rt,[Dt]),Nt(Ko,"CancelHandlerBase",Mt),Nt(Ji,"NotCompleted",Kt),Nt(Zi,"CancelHandler",Mt,Ko,[Ko,Ji]),Nt(Di,"DisposeOnCancel",Mt,Zi),Nt(f_,"Runnable",Kt),Nt(v_,"SchedulerTask",Mt,Rt,[f_]),Nt(mo,"DispatchedTask",Mt,v_),Nt(Fr,"Waiter",Kt),Nt(Xi,"CancellableContinuationImpl",Mt,mo,[mo,Ai,Fr]),Nt(Qi,"Active",Qt,Rt,[Ji]),Nt(te,"CompletedContinuation",Mt),Nt(ne,"InvokeOnCancel",Mt,Zi),Nt(re,"$awaitCOROUTINE$1",Mt,Ft),Nt(se,"CompletableDeferredImpl",Mt,br,[br,Me],Rt,Rt,Rt,[0]),Nt(ue,"CompletableJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt(oe,"CompletedExceptionally",Mt),Nt(_e,"CancelledContinuation",Mt,oe),Nt(ae,"CompletedWithCancellation",Mt),Nt(fe,"Key",Qt,_n),Nt(de,"CoroutineDispatcher",Mt,hn,[hn,cn]),Nt(pe,"Key",Qt),Nt(ge,"Key",Qt),Nt(ye,"CoroutineName",Mt,hn),Nt(ke,"GlobalScope",Qt,Rt,[$e]),Nt(qe,"CoroutineStart",Mt,pn),Nt(Ce,"Delay",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(je,"EventLoop",Mt,de),Nt(ze,"ThreadLocalEventLoop",Qt),Nt(Ae,"CompletionHandlerException",Mt,kn),Nt(Ie,"CoroutinesInternalError",Mt,Sn),Nt(De,"Key",Qt),Nt(Re,"ChildHandle",Kt),Nt(Pe,"NonDisposableHandle",Qt,Rt,[Re]),Nt(Xe,"Incomplete",Kt),Nt(Ke,"Empty",Mt,Rt,[Xe]),Nt(E_,"LinkedListNode",Mt,Rt,Rt,E_),Nt(C_,"LinkedListHead",Mt,E_,Rt,C_),Nt(Je,"NodeList",Mt,C_,[C_,Xe],Je),Nt(Yo,"CompletionHandlerBase",Mt,E_),Nt(Ze,"JobNode",Mt,Yo,[Yo,Xe]),Nt(j_,"SynchronizedObject",Mt,Rt,Rt,j_),Nt(pr,"Finishing",Mt,j_,[j_,Xe]),Nt(mr,"ChildCompletion",Mt,Ze),Nt(gr,"AwaitContinuation",Mt,Xi),Nt(yr,"JobSupport$$slambda",Mt,Ft,Rt,Rt,Rt,Rt,[1]),Nt(kr,"JobCancellingNode",Mt,Ze),Nt(xr,"InactiveNodeList",Mt,Rt,[Xe]),Nt(qr,"ChildHandleNode",Mt,kr,[kr,Re]),Nt(Sr,"InvokeOnCancelling",Mt,kr),Nt(Cr,"InvokeOnCompletion",Mt,Ze),Nt(Er,"ResumeOnCompletion",Mt,Ze),Nt(jr,"ResumeAwaitOnCompletion",Mt,Ze),Nt(zr,"IncompleteStateBox",Mt),Nt(Tr,"ChildContinuation",Mt,kr),Nt(Ar,"JobImpl",Mt,br,[br,ue],Rt,Rt,Rt,[0]),Nt(Dr,"MainCoroutineDispatcher",Mt,de),Nt(Nr,"SupervisorJobImpl",Mt,Ar,Rt,Rt,Rt,Rt,[0]),Nt(Rr,"TimeoutCancellationException",Mt,Tn),Nt(Pr,"Unconfined",Qt,de),Nt(Lr,"Key",Qt),Nt(Hr,"BufferOverflow",Mt,pn),Nt(uo,"ConcurrentLinkedListNode",Mt),Nt(Qu,"Segment",Mt,uo,[uo,Ji]),Nt(us,"ChannelSegment",Mt,Qu),Nt(as,"$hasNextCOROUTINE$5",Mt,Ft),Nt(vs,"SendBroadcast",Mt,Rt,[Fr]),Nt(Ss,"BufferedChannelIterator",Mt,Rt,[Fr],Rt,Rt,Rt,[0,3]),Nt(wu,"SendChannel",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(pu,"ReceiveChannel",Kt,Rt,Rt,Rt,Rt,Rt,[0]),Nt(Us,"BufferedChannel",Mt,Rt,[wu,pu],Rt,Rt,Rt,[1,4,0,3]),Nt(Hs,"WaiterEB",Mt),Nt(Vs,"ReceiveCatching",Mt,Rt,[Fr]),Nt(uu,"Factory",Qt),Nt(hu,"Failed",Mt,Rt,Rt,hu),Nt(au,"Closed",Mt,hu),Nt(lu,"Companion",Qt),Nt(fu,"ChannelResult",Mt),Nt(vu,"ClosedSendChannelException",Mt,ni),Nt(du,"ClosedReceiveChannelException",Mt,ei),Nt(yu,"ConflatedBufferedChannel",Mt,Us,Rt,Rt,Rt,Rt,[1,0]),Nt(Mu,"Emitter",Mt),Nt(Nu,"$collectCOROUTINE$10",Mt,Ft),Nt(Vu,"AbstractSharedFlow",Mt,j_),Nt(Ru,"SharedFlowImpl",Mt,Vu,Rt,Rt,Rt,Rt,[1]),Nt(Bu,"AbstractSharedFlowSlot",Mt),Nt(Pu,"SharedFlowSlot",Mt,Bu,Rt,Pu),Nt(Yu,"$onSubscriptionCOROUTINE$12",Mt,Ft),Nt(Gu,"SubscribedFlowCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1,0]),Nt(Ku,"$collectCOROUTINE$13",Mt,Ft),Nt(Xu,"ReadonlySharedFlow",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Ju,"OpDescriptor",Mt),Nt(io,"SegmentOrClosed",Mt),Nt(ao,"ExceptionSuccessfullyProcessed",Qt,ai),Nt(fo,"DispatchedContinuation",Mt,mo,[mo,Dt]),Nt(qo,"UndeliveredElementException",Mt,kn),Nt(Eo,"ContextScope",Mt,Rt,[$e]),Nt(jo,"Symbol",Mt),Nt(Mo,"SelectInstance",Kt),Nt(Ro,"ClauseData",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Po,"SelectImplementation",Mt,Zi,[Zi,Mo,Fr],Rt,Rt,Rt,[0,2]),Nt(Fo,"TrySelectDetailedResult",Mt,pn),Nt(Qo,"UndispatchedCoroutine",Mt,Oo,Rt,Rt,Rt,Rt,[0]),Nt(b_,"SetTimeoutBasedDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(e_,"NodeDispatcher",Qt,b_,Rt,Rt,Rt,Rt,[1]),Nt($_,"MessageQueue",Mt,Rt,[bi]),Nt(s_,"ScheduledMessageQueue",Mt,$_),Nt(u_,"WindowMessageQueue",Mt,$_),Nt(__,"Dispatchers",Qt),Nt(a_,"JsMainDispatcher",Mt,Dr),Nt(l_,"UnconfinedEventLoop",Mt,je,Rt,l_),Nt(c_,"JobCancellationException",Mt,Tn),Nt(d_,"TaskContext",Qt),Nt(p_,"SafeCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(m_,"DiagnosticCoroutineContextException",Mt,kn),Nt(y_,"SetTimeoutDispatcher",Qt,b_,Rt,Rt,Rt,Rt,[1]),Nt(S_,"ClearTimeout",Mt,Zi),Nt(k_,"WindowClearTimeout",Mt,S_),Nt(x_,"WindowDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(z_,"CommonThreadLocal",Mt,Rt,Rt,z_),At(Si).jc=function(){return this.fm_1},At(Si).gm=function(){return this.fm_1},At(Si).hm=function(){return At(br).hm.call(this)},At(Si).im=function(t){},At(Si).jm=function(t,n){},At(Si).km=function(){return n_(this)+" was cancelled"},At(Si).lm=function(t){t instanceof oe?this.jm(t.mm_1,t.om()):this.im(null==t||null!=t?t:It())},At(Si).qc=function(t){var n=this.pm(he(t));if(n===Ve())return Tt;this.qm(n)},At(Si).qm=function(t){return this.rm(t)},At(Si).sm=function(t){we(this.fm_1,t)},At(Si).tm=function(){var t=(this.fm_1,null);return null==t?At(br).tm.call(this):'"'+t+'":'+At(br).tm.call(this)},At(Si).um=function(t,n,i){t.xm(i,n,this)},At(Ci).zn=function(t){return we(this.fm_1,t),!0},At(Ei).en=function(){To(this.jo_1,this)},At(Oi).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.so_1.bo(this))===Ut())return t;continue t;case 1:return null==t||null!=t?t:It();case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},At(ji).wo=function(t){var n=new Oi(this,t);return n.ec_1=Tt,n.fc_1=null,n.pc()},At(zi).en=function(){To(this.ap_1,this)},At(Ti).rm=function(t){this.qm(t)},At(Ti).qm=function(t){if(function(t){for(var n=t.fp_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.fp_1.atomicfu$compareAndSet(0,2))return!0;break;case 1:return!1;default:throw Wt(Bt("Already resumed"))}}(this))return Tt;vo(Gt(this.kp_1),le(t,this.kp_1))},At(Ti).gp=function(){if(function(t){for(var n=t.fp_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.fp_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw Wt(Bt("Already suspended"))}}(this))return Ut();var t=Or(this.bn());if(t instanceof oe)throw t.mm_1;return null==t||null!=t?t:It()},At(Di).rp=function(t){return this.qp_1.sp()},At(Di).invoke=function(t){return this.rp(t)},At(Di).toString=function(){return"DisposeOnCancel["+this.qp_1+"]"},At(Xi).er=function(){return this.bq_1},At(Xi).jc=function(){return this.cq_1},At(Xi).bn=function(){return this.eq_1.kotlinx$atomicfu$value},At(Xi).cn=function(){var t=this.bn();return!(null!=t&&Xt(t,Ji))},At(Xi).lp=function(){return this.bn()instanceof _e},At(Xi).fr=function(){var t=Fi(this);if(null==t)return Tt;var n=t;this.cn()&&(n.sp(),this.fq_1.kotlinx$atomicfu$value=d)},At(Xi).gq=function(){var t=this.eq_1.kotlinx$atomicfu$value;return t instanceof te&&null!=t.sq_1?(this.dr(),!1):(this.dq_1.kotlinx$atomicfu$value=536870911+(0<>ie()){case 0:var e=536870911&i,r=(1<>ie()<=0},At(je).it=function(){var t=this.et_1,n=null==t?null:t.d1();return null==n||n},At(je).jt=function(t){this.ct_1=this.ct_1.gb(Oe(0,t)),t||(this.dt_1=!0)},At(je).kt=function(t){if(this.ct_1=this.ct_1.hb(Oe(0,t)),this.ct_1.ca(new yn(0,0))>0)return Tt;this.dt_1&&this.lt()},At(je).lt=function(){},At(ze).nt=function(){var t,n=this.mt_1.pt();if(null==n){var i=new l_;Te().mt_1.qt(i),t=i}else t=n;return t},At(Pe).an=function(){return null},At(Pe).sp=function(){},At(Pe).rn=function(t){return!1},At(Pe).toString=function(){return"NonDisposableHandle"},At(Ke).hm=function(){return this.rt_1},At(Ke).st=function(){return null},At(Ke).toString=function(){return"Empty{"+(this.rt_1?"Active":"New")+"}"},At(Je).hm=function(){return!0},At(Je).st=function(){return this},At(Je).wt=function(t){var n=On();n.r5("List{"),n.r5(t),n.r5("}[");for(var i=!0,e=this.xt_1;!Vt(e,this);){if(e instanceof Ze){var r=e;i?i=!1:n.r5(", "),n.q5(r)}e=e.xt_1}return n.r5("]"),n.toString()},At(Je).toString=function(){return t_()?this.wt("Active"):At(C_).toString.call(this)},At(Ze).ku=function(){var t=this.ju_1;if(null!=t)return t;jn("job")},At(Ze).hm=function(){return!0},At(Ze).st=function(){return null},At(Ze).sp=function(){return this.ku().ln(this)},At(Ze).toString=function(){return n_(this)+"@"+i_(this)+"[job@"+i_(this.ku())+"]"},At(pr).st=function(){return this.mu_1},At(pr).xu=function(t){this.nu_1.kotlinx$atomicfu$value=t},At(pr).tu=function(){return this.nu_1.kotlinx$atomicfu$value},At(pr).dv=function(t){this.ou_1.kotlinx$atomicfu$value=t},At(pr).wu=function(){return this.ou_1.kotlinx$atomicfu$value},At(pr).uu=function(){return tr(this)===Ye()},At(pr).qu=function(){return!(null==this.wu())},At(pr).hm=function(){return null==this.wu()},At(pr).ru=function(t){var n,i=tr(this);if(null==i)n=nr();else if(i instanceof Error){var e=nr();e.s(i),n=e}else{if(!(i instanceof An)){var r="State is "+Jt(i);throw Wt(Bt(r))}n=i instanceof An?i:It()}var s=n,u=this.wu();return null==u||s.r1(0,u),null==t||Vt(t,u)||s.s(t),Qe(this,Ye()),s},At(pr).vu=function(t){var n=this.wu();if(null==n)return this.dv(t),Tt;if(t===n)return Tt;var i=tr(this);if(null==i)Qe(this,t);else if(i instanceof Error){if(t===i)return Tt;var e=nr();e.s(i),e.s(t),Qe(this,e)}else{if(!(i instanceof An)){var r="State is "+Jt(i);throw Wt(Bt(r))}(i instanceof An?i:It()).s(t)}},At(pr).toString=function(){return"Finishing[cancelling="+this.qu()+", completing="+this.tu()+", rootCause="+this.wu()+", exceptions="+Jt(tr(this))+", list="+this.mu_1+"]"},At(mr).rp=function(t){!function(t,n,i,e){var r=dr(i);if(null!=r&&vr(t,n,r,e))return Tt;var s=ir(t,n,e);t.rm(s)}(this.iv_1,this.jv_1,this.kv_1,this.lv_1)},At(mr).invoke=function(t){return this.rp(t)},At(gr).lr=function(t){var n=this.sv_1.bn();if(n instanceof pr){var i=n.wu();if(null!=i)return i}return n instanceof oe?n.mm_1:t.fn()},At(gr).tm=function(){return"AwaitContinuation"},At(yr).lw=function(t,n){var i=this.mw(t,n);return i.ec_1=Tt,i.fc_1=null,i.pc()},At(yr).cd=function(t,n){return this.lw(t instanceof In?t:It(),n)},At(yr).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=8,this.dw_1=this.bw_1.bn(),this.dw_1 instanceof qr){if(this.cc_1=6,(t=this.cw_1.ze(this.dw_1.cv_1,this))===Ut())return t;continue t}var n=this.dw_1;if(null!=n&&Xt(n,Xe)){if(this.ew_1=this.dw_1.st(),null==this.ew_1){this.fw_1=null,this.cc_1=5;continue t}this.gw_1=this.ew_1,this.hw_1=this.gw_1,this.iw_1=this.hw_1,this.jw_1=this.iw_1.xt_1,this.cc_1=1;continue t}this.cc_1=7;continue t;case 1:if(Vt(this.jw_1,this.iw_1)){this.cc_1=4;continue t}if(this.jw_1 instanceof qr){if(this.kw_1=this.jw_1,this.cc_1=2,(t=this.cw_1.ze(this.kw_1.cv_1,this))===Ut())return t;continue t}this.cc_1=3;continue t;case 2:this.cc_1=3;continue t;case 3:this.jw_1=this.jw_1.xt_1,this.cc_1=1;continue t;case 4:this.fw_1=Tt,this.cc_1=5;continue t;case 5:case 6:this.cc_1=7;continue t;case 7:return Tt;case 8:throw this.fc_1}}catch(t){var i=t;if(8===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},At(yr).mw=function(t,n){var i=new yr(this.bw_1,n);return i.cw_1=t,i},At(br).i2=function(){return v},At(br).ym=function(t){this.bm_1.kotlinx$atomicfu$value=t},At(br).zm=function(){return this.bm_1.kotlinx$atomicfu$value},At(br).an=function(){var t=this.zm();return null==t?null:t.an()},At(br).cm=function(t){if(null==t)return this.ym(d),Tt;t.dn();var n=t.vn(this);this.ym(n),this.cn()&&(n.sp(),this.ym(d))},At(br).bn=function(){for(var t=this.am_1;;){var n=t.kotlinx$atomicfu$value;if(!(n instanceof Ju))return n;n.nw(this)}},At(br).hm=function(){var t=this.bn();return!(null==t||!Xt(t,Xe))&&t.hm()},At(br).cn=function(){var t=this.bn();return!(null!=t&&Xt(t,Xe))},At(br).dn=function(){for(;;){var t=ur(this,this.bn());if(0===t)return!1;if(1===t)return!0}},At(br).en=function(){},At(br).fn=function(){var t,n=this.bn();if(n instanceof pr){var i=n.wu(),e=null==i?null:this.gn(i,n_(this)+" is cancelling");if(null==e)throw Wt(Bt("Job is still new or active: "+this));t=e}else{if(null!=n&&Xt(n,Xe))throw Wt(Bt("Job is still new or active: "+this));t=n instanceof oe?this.hn(n.mm_1):new c_(n_(this)+" has completed normally",null,this)}return t},At(br).gn=function(t,n){var i=t instanceof Tn?t:null;return null==i?new c_(null==n?this.km():n,t,this):i},At(br).hn=function(t,n,i){return n=n===Rt?null:n,i===Rt?this.gn(t,n):i.gn.call(this,t,n)},At(br).in=function(t){return this.jn(!1,!0,t)},At(br).jn=function(t,n,i){for(var e=function(t,n,i){var e;if(i){var r=n instanceof kr?n:null;e=null==r?new Sr(n):r}else{var s=n instanceof Ze?n:null,u=null==s?null:s;e=null==u?new Cr(n):u}var o=e;return o.ju_1=t,o}(this,i,t);;)t:{var r=this.bn();if(r instanceof Ke)if(r.rt_1){if(this.am_1.atomicfu$compareAndSet(r,e))return e}else _r(this,r);else{if(null==r||!Xt(r,Xe)){if(n){var s=r instanceof oe?r:null;Go(i,null==s?null:s.mm_1)}return d}var u=r.st();if(null==u)hr(this,r instanceof Ze?r:It());else{var o=null,_=d;if(t&&r instanceof pr&&(null==(o=r.wu())||i instanceof qr&&!r.tu())){if(!or(this,r,u,e))break t;if(null==o)return e;_=e}if(null!=o)return n&&Go(i,o),_;if(or(this,r,u,e))return e}}}},At(br).ls=function(t){return function(t){for(;;){var n=t.bn();if(null==n||!Xt(n,Xe))return!1;if(ur(t,n)>=0)return!0}}(this)?function(t,n){var i=new Xi(Gt(n),po());i.fr();var e=new Er(i);return Ii(i,t.in(e)),i.gp()}(this,t):(Le(t.jc()),Tt)},At(br).ln=function(t){for(;;){var n=this.bn();if(!(n instanceof Ze))return null!=n&&Xt(n,Xe)?(null!=n.st()&&t.du(),Tt):Tt;if(n!==t)return Tt;if(this.am_1.atomicfu$compareAndSet(n,Ge()))return Tt}},At(br).mn=function(){return!1},At(br).nn=function(t){var n;n=null==t?new c_(this.km(),null,this):t,this.pn(n)},At(br).km=function(){return"Job was cancelled"},At(br).pn=function(t){this.sn(t)},At(br).qn=function(t){this.sn(t)},At(br).rn=function(t){return t instanceof Tn||!!this.sn(t)&&this.yn()},At(br).sn=function(t){var n,i=He();return!(!this.mn()||(i=function(t,n){for(;;){var i=t.bn();if(null==i||!Xt(i,Xe)||i instanceof pr&&i.tu())return He();var e=fr(t,i,new oe(ar(t,n)));if(e!==Be())return e}}(this,t))!==Ve())||(i===He()&&(i=function(t,n){for(var i=null;;)t:{var e=t.bn();if(e instanceof pr){if(e.uu())return We();var r=e.qu();if(null!=n||!r){var s,u=i;if(null==u){var o=ar(t,n);i=o,s=o}else s=u;var _=s;e.vu(_)}var h=e.wu(),a=r?null:h;return null==a||rr(t,e.mu_1,a),He()}if(null==e||!Xt(e,Xe))return We();var l,c=i;if(null==c){var f=ar(t,n);i=f,l=f}else l=c;var v=l;if(!e.hm()){var d=fr(t,e,new oe(v));if(d===He()){var w="Cannot happen in "+Jt(e);throw Wt(Bt(w))}if(d===Be())break t;return d}if(cr(t,e,v))return He()}}(this,t)),i===He()||i===Ve()?n=!0:i===We()?n=!1:(this.rm(i),n=!0),n)},At(br).tn=function(){var t,n=this.bn();if(n instanceof pr)t=n.wu();else if(n instanceof oe)t=n.mm_1;else{if(null!=n&&Xt(n,Xe)){var i="Cannot be cancelling child in this state: "+Jt(n);throw Wt(Bt(i))}t=null}var e=t,r=e instanceof Tn?e:null;return null==r?new c_("Parent job is "+wr(0,n),e,this):r},At(br).is=function(t){for(;;){var n=fr(this,this.bn(),t);if(n===He())return!1;if(n===Ve())return!0;if(n!==Be())return this.rm(n),!0}},At(br).pm=function(t){for(;;){var n=fr(this,this.bn(),t);if(n===He())throw Dn("Job "+this+" is already complete or completing, but is being completed with "+Jt(t),(e=void 0,null==(e=(i=t)instanceof oe?i:null)?null:e.mm_1));if(n!==Be())return n}var i,e},At(br).un=function(){return Mn((t=new yr(this,null),(n=function(n,i){return t.lw(n,i)}).$arity=1,n));var t,n},At(br).vn=function(t){var n=new qr(t),i=this.kn(!0,Rt,n);return Xt(i,Re)?i:It()},At(br).sm=function(t){throw t},At(br).wn=function(t){},At(br).xn=function(){return!1},At(br).yn=function(){return!0},At(br).zn=function(t){return!1},At(br).lm=function(t){},At(br).rm=function(t){},At(br).toString=function(){return this.ao()+"@"+i_(this)},At(br).ao=function(){return this.tm()+"{"+wr(0,this.bn())+"}"},At(br).tm=function(){return n_(this)},At(br).bo=function(t){t:for(;;){var n=this.bn();if(null==n||!Xt(n,Xe)){if(n instanceof oe)throw n.mm_1;return Or(n)}if(ur(this,n)>=0)break t}return function(t,n){var i=new gr(Gt(n),t);i.fr();var e=new jr(i);return Ii(i,t.in(e)),i.gp()}(this,t)},At(xr).st=function(){return this.su_1},At(xr).hm=function(){return!1},At(xr).toString=function(){return t_()?this.su_1.wt("New"):Fn(this)},At(qr).an=function(){return this.ku()},At(qr).rp=function(t){return this.cv_1.qn(this.ku())},At(qr).invoke=function(t){return this.rp(t)},At(qr).rn=function(t){return this.ku().rn(t)},At(Sr).rp=function(t){this.tw_1.atomicfu$compareAndSet(0,1)&&this.sw_1(t)},At(Sr).invoke=function(t){return this.rp(t)},At(Cr).rp=function(t){return this.yw_1(t)},At(Cr).invoke=function(t){return this.rp(t)},At(Er).rp=function(t){var n=this.dx_1,i=un(Tt);return n.qc(i),Tt},At(Er).invoke=function(t){return this.rp(t)},At(jr).rp=function(t){var n=this.ku().bn();if(n instanceof oe){var i=this.jx_1,e=n.mm_1,r=un(on(e));i.qc(r)}else{var s=this.jx_1,u=Or(n),o=null==u||null!=u?u:It(),_=un(o);s.qc(_)}},At(jr).invoke=function(t){return this.rp(t)},At(Tr).rp=function(t){this.ox_1.kr(this.ox_1.lr(this.ku()))},At(Tr).invoke=function(t){return this.rp(t)},At(Ar).mn=function(){return!0},At(Ar).yn=function(){return this.rx_1},At(Ar).ks=function(){return this.is(Tt)},At(Ar).js=function(t){return this.is(new oe(t))},At(Dr).toString=function(){var t=this.ux();return null==t?n_(this)+"@"+i_(this):t},At(Dr).ux=function(){var t,n=h_().zs();if(this===n)return"Dispatchers.Main";try{t=n.tx()}catch(n){if(!(n instanceof Un))throw n;t=null}return this===t?"Dispatchers.Main.immediate":null},At(Nr).rn=function(t){return!1},At(Pr).ps=function(t){return!1},At(Pr).qs=function(t,n){var i=t.kc(q);if(null!=i)return i.ay_1=!0,Tt;throw Hn("Dispatchers.Unconfined.dispatch function can only be used by the yield function. If you wrap Unconfined dispatcher in your code, make sure you properly delegate isDispatchNeeded and dispatch calls.")},At(Pr).toString=function(){return"Dispatchers.Unconfined"},At(us).hy=function(){return Bn(this.fy_1)},At(us).iy=function(){return Yr()},At(us).jy=function(t,n){ss(this,t,n)},At(us).ky=function(t){var n=this.gy_1.atomicfu$get(zt(t,2)).kotlinx$atomicfu$value;return null==n||null!=n?n:It()},At(us).ly=function(t){var n=this.ky(t);return this.my(t),n},At(us).my=function(t){ss(this,t,null)},At(us).ny=function(t){return this.gy_1.atomicfu$get(zt(t,2)+1|0).kotlinx$atomicfu$value},At(us).oy=function(t,n){this.gy_1.atomicfu$get(zt(t,2)+1|0).kotlinx$atomicfu$value=n},At(us).py=function(t,n,i){return this.gy_1.atomicfu$get(zt(t,2)+1|0).atomicfu$compareAndSet(n,i)},At(us).qy=function(t,n){return this.gy_1.atomicfu$get(zt(t,2)+1|0).atomicfu$getAndSet(n)},At(us).oq=function(t,n,i){var e=t>=Yr(),r=e?t-Yr()|0:t,s=this.ky(r);t:for(;;){var u=this.ny(r);if(!(null!=u&&Xt(u,Fr)||u instanceof Hs)){if(u===ts()||u===ns()){if(this.my(r),e){var o=this.hy().sy_1;null==o||xo(o,s,i)}return Tt}if(u===Jr()||u===Xr())continue t;if(u===Qr()||u===Gr())return Tt;if(u===is())return Tt;var _="unexpected state: "+Jt(u);throw Wt(Bt(_))}var h=e?ts():ns();if(this.py(r,u,h)){if(this.my(r),this.dz(r,!e),e){var a=this.hy().sy_1;null==a||xo(a,s,i)}return Tt}}},At(us).dz=function(t,n){if(n){var i=this.hy(),e=this.mq_1,r=Yr(),s=e.ba(Wn(r)).gb(Wn(t));i.ez(s)}this.fz()},At(as).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=8,this.cc_1=1;continue t;case 1:this.h10_1=this.f10_1.tz_1,this.i10_1=null,this.j10_1=this.h10_1.yy_1.kotlinx$atomicfu$value,this.cc_1=2;continue t;case 2:if(this.h10_1.wz()){this.g10_1=os(this.f10_1),this.cc_1=10;continue t}this.cc_1=3;continue t;case 3:this.k10_1=this.h10_1.uy_1.atomicfu$getAndIncrement$long();var n=this.k10_1,i=Yr();this.l10_1=n.aa(Wn(i));var e=this.k10_1,r=Yr();if(this.m10_1=e.ib(Wn(r)).la(),this.j10_1.mq_1.equals(this.l10_1)){this.cc_1=5;continue t}if(this.n10_1=Rs(this.h10_1,this.l10_1,this.j10_1),null==this.n10_1){this.cc_1=2;continue t}this.o10_1=this.n10_1,this.cc_1=4;continue t;case 4:this.j10_1=this.o10_1,this.cc_1=5;continue t;case 5:if(this.p10_1=ys(this.h10_1,this.j10_1,this.m10_1,this.k10_1,this.i10_1),this.p10_1===eu()){var s=this.i10_1,u=null!=s&&Xt(s,Fr)?s:null;throw null==u||gs(u,this.h10_1,this.j10_1,this.m10_1),this.j10_1,this.m10_1,this.k10_1,Wt(Bt("unreachable"))}if(this.p10_1===ru()){this.k10_1.ca(this.h10_1.vz())<0&&this.j10_1.pz(),this.cc_1=2;continue t}if(this.p10_1===iu()){if(this.r10_1=this.j10_1,this.s10_1=this.m10_1,this.t10_1=this.k10_1,this.cc_1=6,(t=_s(this.f10_1,this.r10_1,this.s10_1,this.t10_1,this))===Ut())return t;continue t}this.j10_1.pz();var o=this.p10_1,_=null==o||null!=o?o:It();this.f10_1.rz_1=_,this.q10_1=!0,this.cc_1=7;continue t;case 6:return t;case 7:this.g10_1=this.q10_1,this.cc_1=10;continue t;case 8:throw this.fc_1;case 9:this.cc_1=10;continue t;case 10:return this.g10_1}}catch(t){var h=t;if(8===this.dc_1)throw h;this.cc_1=this.dc_1,this.fc_1=h}},At(Ss).i11=function(t){var n=new as(this,t);return n.ec_1=Tt,n.fc_1=null,n.pc()},At(Ss).qr=function(t,n){var i=this.sz_1;null==i||i.qr(t,n)},At(Ss).y=function(){var t=this.rz_1;if(t===es())throw Wt(Bt("`hasNext()` has not been invoked"));if(this.rz_1=es(),t===is())throw Cs(this.tz_1);return null==t||null!=t?t:It()},At(Ss).x10=function(t){var n=Bn(this.sz_1);this.sz_1=null,this.rz_1=t;var i=this.tz_1.sy_1;return Bs(n,!0,null==i?null:Co(i,t,n.jc()))},At(Ss).j11=function(){var t=Bn(this.sz_1);this.sz_1=null,this.rz_1=is();var n=this.tz_1.uz();if(null==n){var i=un(!1);t.qc(i)}else{var e=O_(n),r=un(on(e));t.qc(r)}},At(Us).vz=function(){return this.ty_1.kotlinx$atomicfu$value.qb(new yn(-1,268435455))},At(Us).w10=function(){return this.uy_1.kotlinx$atomicfu$value},At(Us).r11=function(t){if(n=this,!Is(i=this.ty_1.kotlinx$atomicfu$value,n)&&!ps(n,i.qb(new yn(-1,268435455))))return cu().s11();var n,i,e;t:{var r=ts(),s=this.xy_1.kotlinx$atomicfu$value;n:for(;;){var u=this.ty_1.atomicfu$getAndIncrement$long(),o=u.qb(new yn(-1,268435455)),_=Is(u,this),h=Yr(),a=o.aa(Wn(h)),l=Yr(),c=o.ib(Wn(l)).la();if(!s.mq_1.equals(a)){var f=Ns(this,a,s);if(null==f){if(_){e=cu().n11(this.o11());break t}continue n}s=f}var v=ds(this,s,c,t,o,r,_);if(v===Js()){s.pz(),e=cu().z10(Tt);break t}if(v===Zs()){e=cu().z10(Tt);break t}if(v===Qs()){if(_){s.fz(),e=cu().n11(this.o11());break t}var d=null!=r&&Xt(r,Fr)?r:null;null==d||fs(d,0,s,c),s.fz(),e=cu().s11();break t}if(v===tu()){o.ca(this.w10())<0&&s.pz(),e=cu().n11(this.o11());break t}if(v!==nu()){if(v===Xs())throw Wt(Bt("unexpected"))}else s.pz()}}return e},At(Us).c11=function(){},At(Us).u10=function(){},At(Us).l11=function(t){var n=this.yy_1.kotlinx$atomicfu$value;t:for(;;){var i=this.uy_1.kotlinx$atomicfu$value,e=this.ry_1,r=i.gb(Wn(e)),s=ls(this),u=r.ca(s)>=0?r:s;if(t.ca(u)<0)return Tt;var o=i.gb(Wn(1));if(this.uy_1.atomicfu$compareAndSet(i,o)){var _=Yr(),h=i.aa(Wn(_)),a=Yr(),l=i.ib(Wn(a)).la();if(!n.mq_1.equals(h)){var c=Rs(this,h,n);if(null==c)continue t;n=c}var f=ys(this,n,l,i,null);if(f===ru())i.ca(this.vz())<0&&n.pz();else{n.pz();var v,d=this.sy_1;if(null!=(v=null==d?null:So(d,null==f||null!=f?f:It())))throw v}}}},At(Us).ez=function(t){if(cs(this))return Tt;for(;ls(this).ca(t)<=0;);var n=(su(),T),i=0;if(i0&&(_=a,h=l)}while(o.w());t=_}else t=_;var c=t,f=this.w10(),v=this.vz(),d=c;t:for(;;){var w=0,p=Yr();if(w=0&&b.ca(f)>=0)break t;var $,k=d.ny(m),x=d.ky(m);if(null!=k&&Xt(k,Ai))$=b.ca(f)<0&&b.ca(v)>=0?"receive":b.ca(v)<0&&b.ca(f)>=0?"send":"cont";else if(null!=k&&Xt(k,Mo))$=b.ca(f)<0&&b.ca(v)>=0?"onReceive":b.ca(v)<0&&b.ca(f)>=0?"onSend":"select";else if(k instanceof Vs)$="receiveCatching";else if(k instanceof vs)$="sendBroadcast";else if(k instanceof Hs)$="EB("+Jt(k)+")";else if(Vt(k,Xr())||Vt(k,Jr()))$="resuming_sender";else{if(null==k||Vt(k,Kr())||Vt(k,Qr())||Vt(k,Zr())||Vt(k,ns())||Vt(k,ts())||Vt(k,is()))continue n;$=Bt(k)}var q=$;null!=x?n.r5("("+q+","+x+"),"):n.r5(q+",")}while(w0)return Hu();var n=$u(this),i=this.g13_1,e=n.gb(Wn(i));if(0===this.b13_1&&this.h13_1>0&&(e=e.jb()),0!==this.j13_1){var r=this.i13_1;if(null==r);else for(var s=0,u=r.length;s=0&&o.m13_1.ca(e)<0&&(e=o.m13_1)}}if(e.ca(this.f13_1)<=0)return Hu();var _,h=qu(this);if(this.j13_1>0){var a=h.hb(e).la(),l=this.h13_1,c=this.b13_1-a|0;_=Math.min(l,c)}else _=this.h13_1;var f=_,v=Hu(),d=h,w=this.h13_1,p=d.gb(Wn(w));if(f>0){v=oi(Array(f),null);var m=0,g=Bn(this.d13_1),y=h;if(y.ca(p)<0)t:do{var b=y;y=y.gb(new yn(1,0));var $=Lu(g,b);if($!==bu()){$ instanceof Mu||It();var k=m;if(m=k+1|0,v[k]=$.r13_1,Fu(g,b,bu()),Fu(g,h,$.q13_1),h=h.jb(),m>=f)break t}}while(y.ca(p)<0)}var x=h.hb(n).la();0===this.j13_1&&(e=h);var q=this.e13_1,S=h,C=this.a13_1,E=Math.min(C,x),O=S.hb(Wn(E)),j=q.ca(O)>=0?q:O;return 0===this.b13_1&&j.ca(p)<0&&Vt(Lu(Bn(this.d13_1),j),bu())&&(h=h.jb(),j=j.jb()),ju(this,j,e,h,p),zu(this),0!==v.length&&(v=Du(this,v)),v},At(Ru).s14=function(){return new Pu},At(Ru).t14=function(t){return oi(Array(t),null)},At(Pu).u14=function(t){return!(this.m13_1.ca(new yn(0,0))>=0||(this.m13_1=t.r14(),0))},At(Pu).v14=function(t){return this.u14(t instanceof Ru?t:It())},At(Pu).w14=function(t){var n=this.m13_1;return this.m13_1=new yn(-1,-1),this.n13_1=null,t.s13(n)},At(Pu).x14=function(t){return this.w14(t instanceof Ru?t:It())},At(Vu).h14=function(){var t,n,i=this.i13_1;if(null==i){var e=this.t14(2);this.i13_1=e,n=e}else{var r;if(this.j13_1>=i.length){var s=_i(i,zt(2,i.length));this.i13_1=s,r=s}else r=i;n=r}var u,o=n,_=this.k13_1;t:for(;;){var h,a=o[_];if(null==a){var l=this.s14();o[_]=l,h=l}else h=a;if(u=h,(_=_+1|0)>=o.length&&(_=0),(u instanceof Bu?u:It()).v14(this))break t}this.k13_1=_,this.j13_1=this.j13_1+1|0;var c=u;return null==(t=this.l13_1)||t.k15(1),c},At(Vu).m14=function(t){var n;this.j13_1=this.j13_1-1|0,n=this.l13_1,0===this.j13_1&&(this.k13_1=0);for(var i=(t instanceof Bu?t:It()).x14(this),e=0,r=i.length;e"},At(Ro).t16=function(t,n){var i=this.s16_1;return null==i?null:i(t,this.r16_1,n)},At(Po).h11=function(t,n){return Uo(function(t,n,i){t:for(;;){var e=t.e11_1.kotlinx$atomicfu$value;if(Xt(e,Ai)){var r=No(t,n);if(null==r)continue t;var s=r,u=s.t16(t,i);if(t.e11_1.atomicfu$compareAndSet(e,s)){var o=Xt(e,Ai)?e:It();return t.g11_1=i,Ho(o,u)?0:(t.g11_1=(Wo(),pt),2)}}else{if(Vt(e,(Wo(),dt))||e instanceof Ro)return 3;if(Vt(e,(Wo(),wt)))return 2;if(Vt(e,(Wo(),vt))){if(t.e11_1.atomicfu$compareAndSet(e,vi(n)))return 1}else{if(!Xt(e,fi)){var _="Unexpected state: "+Bt(e);throw Wt(Bt(_))}if(t.e11_1.atomicfu$compareAndSet(e,ci(e,n)))return 1}}}}(this,t,n))},At(Qo).qm=function(t){return this.kp_1.qc(le(t,this.kp_1))},At(e_).a17=function(){process.nextTick(this.h17_1.f17_1)},At(s_).m17=function(){this.e17_1.a17()},At(s_).n17=function(){setTimeout(this.f17_1,0)},At(s_).o17=function(t){setTimeout(this.f17_1,t)},At(u_).m17=function(){var t;Promise.resolve(Tt).then((t=this,function(n){return t.l17(),Tt}))},At(u_).n17=function(){this.b18_1.postMessage(this.c18_1,"*")},At(__).zs=function(){var t=this.ys_1;return null==t?this.xs_1:t},At(a_).tx=function(){return this.g18_1},At(a_).ps=function(t){return!this.f18_1},At(a_).qs=function(t,n){return this.e18_1.qs(t,n)},At(a_).toString=function(){var t=this.ux();return null==t?this.e18_1.toString():t},At(l_).qs=function(t,n){!function(){throw Hn("runBlocking event loop is not supported")}()},At(c_).toString=function(){return At(Tn).toString.call(this)+"; job="+this.l18_1},At(c_).equals=function(t){return t===this||!!(t instanceof c_&&t.message==this.message&&Vt(t.l18_1,this.l18_1))&&Vt(t.cause,this.cause)},At(c_).hashCode=function(){var t=zt(zt(dn(Bn(this.message)),31)+tn(this.l18_1)|0,31),n=this.cause,i=null==n?null:tn(n);return t+(null==i?0:i)|0},At(p_).l14=function(t,n){var i=n.jc();return Le(i),this.o15_1!==i&&(Wu(this,i),this.o15_1=i),this.l15_1.l14(t,n)},At(p_).a16=function(){},At(y_).a17=function(){this.h17_1.o17(0)},At(b_).qs=function(t,n){this.h17_1.x17(n)},At(b_).at=function(t,n){var i,e,r,s,u=new S_((r=n,s=this,i=function(){return r.pp(s,Tt),Tt},e=q_(t),setTimeout(i,e)));n.op(u)},At($_).n=function(){return this.i17_1.qd_1},At($_).p17=function(t,n){this.i17_1.r1(t,n)},At($_).r1=function(t,n){return this.p17(t,null!=n&&Xt(n,f_)?n:It())},At($_).q17=function(t){return this.i17_1.s(t)},At($_).s=function(t){return this.q17(null!=t&&Xt(t,f_)?t:It())},At($_).r17=function(t){return this.i17_1.z(t)},At($_).z=function(t){return this.r17(t)},At($_).b1=function(){this.i17_1.b1()},At($_).s17=function(t){return this.i17_1.r(t)},At($_).r=function(t){return!(null==t||!Xt(t,f_))&&this.s17(null!=t&&Xt(t,f_)?t:It())},At($_).t17=function(t){return this.i17_1.c1(t)},At($_).c1=function(t){return this.t17(t)},At($_).h1=function(t){return this.i17_1.h1(t)},At($_).u17=function(t){return this.i17_1.t1(t)},At($_).t1=function(t){return null!=t&&Xt(t,f_)?this.u17(null!=t&&Xt(t,f_)?t:It()):-1},At($_).d1=function(){return this.i17_1.d1()},At($_).v=function(){return this.i17_1.v()},At($_).u1=function(t){return this.i17_1.u1(t)},At($_).v17=function(t){return this.i17_1.t(t)},At($_).t=function(t){return!(null==t||!Xt(t,f_))&&this.v17(null!=t&&Xt(t,f_)?t:It())},At($_).j1=function(t){return this.i17_1.j1(t)},At($_).w17=function(t,n){return this.i17_1.o(t,n)},At($_).o=function(t,n){return this.w17(t,null!=n&&Xt(n,f_)?n:It())},At($_).x17=function(t){this.q17(t),this.k17_1||(this.k17_1=!0,this.m17())},At($_).l17=function(){try{var t=this.j17_1,n=0;if(n=0))throw Yn(Bt("replay cannot be negative, but was "+t));if(!(n>=0))throw Yn(Bt("extraBufferCapacity cannot be negative, but was "+n));if(!(t>0||n>0||i.equals(Vr())))throw Yn(Bt("replay or extraBufferCapacity must be positive with non-default onBufferOverflow strategy "+i));var e=t+n|0;return new Ru(t,e<0?ui.MAX_VALUE:e,i)},t.$_$.p=function(t){return new Xu(t,null)},t.$_$.q=E_,t.$_$.r=O_,t.$_$.s=Xi,t.$_$.t=function(t){return new se(t=t===Rt?null:t)},t.$_$.u=ue,t.$_$.v=ye,t.$_$.w=function(t){return new Eo(null!=t.kc(v)?t:t.pg(Ue()))},t.$_$.x=$e,t.$_$.y=Ue,t.$_$.z=Me,t.$_$.a1=po,t.$_$.b1=function(){return new Eo(Mr().pg(h_().zs()))},t.$_$.c1=Mr,t.$_$.d1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Se():i;var r=Zo(t,n),s=i.co()?new zi(r,e):new ji(r,!0);return s.um(i,s,e),s},t.$_$.e1=function(t,n){n=n===Rt?null:n;var i=t.kc(v),e=null==i?null:i.un();if(null==e);else for(var r=e.v();r.w();)r.y().nn(n)},t.$_$.f1=be,t.$_$.g1=function(t,n){n=n===Rt?null:n;var i=t.kc(v);null==i||i.nn(n)},t.$_$.h1=function(t,n,i){return be(t,wn(n,i=i===Rt?null:i))},t.$_$.i1=function(t,n,i){return i=i===Rt?null:i,t.nn(wn(n,i))},t.$_$.j1=function(t){var n=t.gm().kc(v),i=null==n?null:n.hm();return null==i||i},t.$_$.k1=function(t){var n=t.kc(v);if(null==n)throw Wt(Bt("Current context doesn't contain Job in it: "+t));return n},t.$_$.l1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Se():i;var r=Zo(t,n),s=i.co()?new Ei(r,e):new Ci(r,!0);return s.um(i,s,e),s},t})?e.apply(n,r):e)||(t.exports=s)},755:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ut,ot,_t,ht,at,lt=Math.imul,ct=n.$_$.mb,ft=n.$_$.na,vt=n.$_$.nb,dt=n.$_$.f,wt=(n.$_$.p4,n.$_$.a5),pt=n.$_$.t6,mt=n.$_$.j,gt=n.$_$.oh,yt=n.$_$.ca,bt=n.$_$.tc,$t=n.$_$.ka,kt=n.$_$.r1,xt=n.$_$.kb,qt=n.$_$.w9,St=n.$_$.s1,Ct=n.$_$.u1,Et=n.$_$.jg,Ot=n.$_$.y5,jt=n.$_$.l,zt=n.$_$.tg,Tt=n.$_$.pc,At=n.$_$.wa,It=n.$_$.ug,Dt=n.$_$.d,Mt=n.$_$.qg,Nt=n.$_$.j5,Rt=n.$_$.g5,Pt=n.$_$.m5,Lt=n.$_$.k5,Ft=n.$_$.e5,Ut=n.$_$.h5,Ht=n.$_$.n5,Vt=n.$_$.p5,Bt=n.$_$.f5,Wt=n.$_$.c5,Yt=n.$_$.l5,Gt=n.$_$.i5,Kt=n.$_$.d5,Xt=n.$_$.p6,Jt=n.$_$.d3,Zt=n.$_$.c3,Qt=n.$_$.rg,tn=n.$_$.jh,nn=n.$_$.fa,en=n.$_$.la,rn=n.$_$.xd,sn=n.$_$.rb,un=n.$_$.t1,on=n.$_$.s8,_n=n.$_$.m,hn=n.$_$.s,an=n.$_$.p8,ln=n.$_$.o8,cn=n.$_$.z8,fn=n.$_$.xh,vn=n.$_$.t8,dn=n.$_$.ph,wn=n.$_$.b6,pn=n.$_$.oc,mn=n.$_$.k7,gn=n.$_$.lb,yn=n.$_$.c,bn=n.$_$.mg,$n=n.$_$.cg,kn=n.$_$.s4,xn=n.$_$.yf,qn=n.$_$.if,Sn=n.$_$.ma,Cn=n.$_$.x1,En=n.$_$.n,On=n.$_$.t,jn=n.$_$.x,zn=n.$_$.y,Tn=n.$_$.p,An=n.$_$.q,In=n.$_$.v,Dn=n.$_$.w,Mn=n.$_$.s5,Nn=n.$_$.oa,Rn=n.$_$.nc,Pn=n.$_$.g7,Ln=n.$_$.cb,Fn=n.$_$.u4,Un=n.$_$.n7,Hn=n.$_$.hh,Vn=n.$_$.r,Bn=n.$_$.uc,Wn=n.$_$.ha,Yn=n.$_$.v9,Gn=n.$_$.u6,Kn=n.$_$.d6,Xn=n.$_$.t4,Jn=n.$_$.ra,Zn=n.$_$.y9,Qn=(n.$_$.l4,n.$_$.ta),ti=(n.$_$.m4,n.$_$.ua),ni=n.$_$.xa,ii=n.$_$.y4,ei=n.$_$.zg,ri=n.$_$.v3,si=n.$_$.t3,ui=(n.$_$.n4,n.$_$.va),oi=n.$_$.x4,_i=n.$_$.xg,hi=n.$_$.o3,ai=n.$_$.l3,li=(n.$_$.o4,n.$_$.za),ci=n.$_$.z4,fi=n.$_$.bh,vi=n.$_$.c4,di=n.$_$.a4,wi=(n.$_$.k4,n.$_$.qa),pi=n.$_$.w4,mi=n.$_$.vg,gi=n.$_$.h3,yi=n.$_$.e3,bi=(n.$_$.j4,n.$_$.pa),$i=n.$_$.zb,ki=n.$_$.j6,xi=n.$_$.l6,qi=n.$_$.m6,Si=n.$_$.h6,Ci=n.$_$.y3,Ei=n.$_$.z3,Oi=n.$_$.w3,ji=n.$_$.x3,zi=n.$_$.o6,Ti=n.$_$.r3,Ai=n.$_$.s3,Ii=n.$_$.p3,Di=n.$_$.q3,Mi=n.$_$.g6,Ni=n.$_$.f4,Ri=n.$_$.g4,Pi=n.$_$.d4,Li=n.$_$.e4,Fi=n.$_$.k6,Ui=n.$_$.j3,Hi=n.$_$.k3,Vi=n.$_$.g3,Bi=n.$_$.i3,Wi=n.$_$.i6,Yi=n.$_$.uf,Gi=n.$_$.sd,Ki=n.$_$.aa,Xi=n.$_$.z9,Ji=n.$_$.z2,Zi=n.$_$.cf,Qi=n.$_$.be,te=n.$_$.r4,ne=n.$_$.ah,ie=n.$_$.yg,ee=n.$_$.ch,re=n.$_$.wg,se=n.$_$.dh,ue=n.$_$.v7,oe=n.$_$.q7,_e=n.$_$.o7,he=n.$_$.t5,ae=n.$_$.bb,le=n.$_$.b,ce=n.$_$.i7,fe=n.$_$.b2,ve=n.$_$.h7,de=(n.$_$.v4,n.$_$.a3),we=n.$_$.ih;function pe(){return!1}function me(){return!1}function ge(){return pt()}function ye(t){return t.o34(this)}function be(){return!1}function $e(t){return-1}function ke(t,n,i,e,r){return e=e===dt?null:e,r===dt?this.y37(t,n,i,e):r.y37.call(this,t,n,i,e)}function xe(){return uu()}function qe(){}function Se(){}function Ce(t){return function(){return n=Cr("kotlinx.serialization.Polymorphic",os(),[],function(t){return function(n){return n.x34("type",Ke().n34()),n.x34("value",Cr("kotlinx.serialization.Polymorphic<"+t.y34_1.i6()+">",Nr(),[])),n.r34_1=t.z34_1,wt}}(t)),i=t.y34_1,new $r(n,i);var n,i}}function Ee(t){fs.call(this),this.y34_1=t,this.z34_1=pt();var n=mt();this.a35_1=gt(n,Ce(this))}function Oe(t,n,i){var e,r=t.c35(n,i);return null==r?function(t,n){var i="in the polymorphic scope of '"+n.i6()+"'";throw ze(null==t?"Class discriminator was missing and no default serializers were registered "+i+".":"Serializer for subclass '"+t+"' is not found "+i+".\nCheck if class with serial name '"+t+"' exists and serializer is registered in a corresponding SerializersModule.\nTo be registered automatically, class '"+t+"' has to be '@Serializable', and the base class '"+n.i6()+"' has to be sealed and '@Serializable'.")}(i,t.b35()):e=r,e}function je(t,n){return St(t,n),Ae.call(n),n}function ze(t){var n=je(t,xt(ct(Ae)));return qt(n,ze),n}function Te(t,n,i){return Ct(t,n,i),Ae.call(i),i}function Ae(){qt(this,Ae)}function Ie(t){je(t,this),qt(this,Ie)}function De(t,n){var i=function(t,n,i){return Me.call(i,t,1===t.n()?"Field '"+t.h1(0)+"' is required for type with serial name '"+n+"', but it was missing":"Fields "+t+" are required for type with serial name '"+n+"', but they were missing",null),i}(t,n,xt(ct(Me)));return qt(i,De),i}function Me(t,n,i){Te(n,i,this),qt(this,Me),this.d35_1=t}function Ne(t){var n=function(t){var n,i=Eo(t,[]);if(null==i){var e;if(t===te().z6())e=ds();else{var r=ae(t).Companion;e=null==r?null:r.serializer()}var s=e;n=null!=s&&At(s,qe)?s:null}else n=i;return n}(t);return null==n?function(t){Zu();var n=Au().q2(t);return null==n||At(n,qe)?n:zt()}(t):n}function Re(t,n,i){var e;if(i){for(var r=jt(Ot(n,10)),s=n.v();s.w();){var u=Le(t,s.y());r.s(u)}e=r}else{for(var o=jt(Ot(n,10)),_=n.v();_.w();){var h=Fe(t,_.y());if(null==h)return null;var a=h;o.s(a)}e=o}return e}function Pe(t,n,i){var e=function(t,n,i){var e;if(t.equals(Dt(Kt))||t.equals(Dt(Gt))||t.equals(Dt(Yt))||t.equals(Dt(Wt)))e=new Cs(n.h1(0));else if(t.equals(Dt(Bt)))e=new Es(n.h1(0));else if(t.equals(Dt(Vt))||t.equals(Dt(Ht))||t.equals(Dt(Ut)))e=new Os(n.h1(0));else if(t.equals(Dt(Ft)))e=new js(n.h1(0),n.h1(1));else if(t.equals(Dt(Lt))||t.equals(Dt(Pt))||t.equals(Dt(Rt)))e=new zs(n.h1(0),n.h1(1));else if(t.equals(Dt(Nt)))l=n.h1(0),c=n.h1(1),e=new ro(l,c);else if(t.equals(Dt(Mt)))e=function(t,n){return new so(t,n)}(n.h1(0),n.h1(1));else if(t.equals(Dt(It)))_=n.h1(0),h=n.h1(1),a=n.h1(2),e=new uo(_,h,a);else{var r;if(t.equals(te().g7())){var s=i();u=null!=s&&At(s,Tt)?s:zt(),o=n.h1(0),r=new Ts(u,o)}else r=null;e=r}var u,o;var _,h,a;var l,c;return e}(t,n,i);return null==e?function(t,n){return Eo(t,Xt(n).slice())}(t,n):e}function Le(t,n){var i,e=Ue(t,n,!0);return null==e?function(t){throw ze(function(t){nu();var n=t.i6();return i=null==n?"":n,nu(),"Serializer for class '"+i+"' is not found.\nPlease ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.\n";var i}(t)+"To get enum serializer on Kotlin/JS, it should be annotated with @Serializable annotation.")}(Zs(n)):i=e,i}function Fe(t,n){return Ue(t,n,!1)}function Ue(t,n,u){for(var o=Zs(n),_=n.w6(),h=n.v6(),a=jt(Ot(h,10)),l=h.v();l.w();){var c=Qs(l.y());a.s(c)}var f,v,d,w=a;if(w.d1())f=function(t,n){var r;if(Ye(),n)r=(Ye(),e).g35(t);else{var s=(Ye(),i).g35(t);r=null==s?null:At(s,qe)?s:zt()}return r}(o,_);else{var p,m=function(t,n,i){var e;if(Ye(),i)e=(Ye(),s).h35(t,n);else{var u=(Ye(),r).h35(t,n);e=new Qt(u)instanceof Qt?u:zt()}return e}(o,w,_);if(Zt(m))p=null;else{var g=Jt(m);p=null==g||null!=g?g:zt()}f=p}if(null!=f)return f;if(w.d1())v=t.f35(o);else{var y=Re(t,w,u);if(null==y)return null;var b=y,$=Pe(o,b,(d=w,function(){return d.h1(0).u6()}));v=null==$?t.e35(o,b):$}var k,x=v;return null==(k=null==x?null:At(x,qe)?x:zt())?null:function(t,n){return n?Ge(t):At(t,qe)?t:zt()}(k,_)}function He(t){return Ye(),Ne(t)}function Ve(t){Ye();var n=Ne(t),i=null==n?null:Ge(n);return null==i?null:At(i,qe)?i:zt()}function Be(t,n){return Ye(),Pe(t,tn(Re(yo(),n,!0)),(i=n,function(){return i.h1(0).u6()}));var i}function We(t,n){Ye();var i,e=Pe(t,tn(Re(yo(),n,!0)),(i=n,function(){return i.h1(0).u6()})),r=null==e?null:Ge(e);return null==r?null:At(r,qe)?r:zt()}function Ye(){u||(u=!0,i=So(He),e=So(Ve),r=Co(Be),s=Co(We))}function Ge(t){return t.n34().i35()?At(t,qe)?t:zt():new Ys(t)}function Ke(t){return Du()}function Xe(t){return null==Y&&new Mu,Y}function Je(){return null==A&&new hu,A}function Ze(t){return Ru()}function Qe(){return null==I&&new au,I}function tr(t){return Lu()}function nr(){return null==D&&new lu,D}function ir(t){return null==X&&new Fu,X}function er(){return null==M&&new cu,M}function rr(t){return null==st&&new _o,st}function sr(){return null==N&&new fu,N}function ur(t){return Hu()}function or(){return null==R&&new vu,R}function _r(t){return null==ut&&new ho,ut}function hr(){return null==P&&new du,P}function ar(t){return null==Z&&new Vu,Z}function lr(){return null==L&&new wu,L}function cr(t){return null==ot&&new ao,ot}function fr(){return null==F&&new pu,F}function vr(t){return null==Q&&new Bu,Q}function dr(){return null==U&&new mu,U}function wr(t){return null==_t&&new lo,_t}function pr(){return null==H&&new gu,H}function mr(t){return Yu()}function gr(){return null==V&&new yu,V}function yr(t){return null==nt&&new Gu,nt}function br(t){return null==S&&new ws,S}function $r(t,n){this.j35_1=t,this.k35_1=n,this.l35_1=this.j35_1.m35()+"<"+this.k35_1.i6()+">"}function kr(t){return t instanceof $r?t.k35_1:t instanceof Gs?kr(t.w35_1):null}function xr(){}function qr(t){this.f36_1=t,this.e36_1=t.o35()}function Sr(t){this.g36_1=t}function Cr(t,n,i,e){if(e=e===dt?Ar:e,rn(t))throw un(sn("Blank serial names are prohibited"));if(nn(n,Jr()))throw un(sn("For StructureKind.CLASS please use 'buildClassSerialDescriptor' instead"));var r=new Er(t);return e(r),new zr(t,n,r.s34_1.n(),on(i),r)}function Er(t){this.p34_1=t,this.q34_1=!1,this.r34_1=pt(),this.s34_1=_n(),this.t34_1=hn(),this.u34_1=_n(),this.v34_1=_n(),this.w34_1=_n()}function Or(t,n,i){if(i=i===dt?Ir:i,rn(t))throw un(sn("Blank serial names are prohibited"));var e=new Er(t);return i(e),new zr(t,Jr(),e.s34_1.n(),on(n),e)}function jr(t){var n=t.t36_1;return $t("_hashCode",1,bt,(function(t){return jr(t)}),null),n.j2()}function zr(t,n,i,e,r){this.i36_1=t,this.j36_1=n,this.k36_1=i,this.l36_1=r.r34_1,this.m36_1=an(r.s34_1);var s=r.s34_1;this.n36_1=Xt(s),this.o36_1=tu(r.u34_1);var u,o=r.v34_1;this.p36_1=Xt(o),this.q36_1=ln(r.w34_1);for(var _=cn(this.n36_1),h=jt(Ot(_,10)),a=_.v();a.w();){var l=a.y(),c=fn(l.ke_1,l.je_1);h.s(c)}this.r36_1=vn(h),this.s36_1=tu(e),this.t36_1=dn((u=this,function(){return su(u,u.s36_1)}))}function Tr(t,n){this.v36_1=t,this.w36_1=n}function Ar(t){return wt}function Ir(t){return wt}function Dr(){o=this,Rr.call(this)}function Mr(){_=this,Rr.call(this)}function Nr(){return null==_&&new Mr,_}function Rr(){}function Pr(){h=this,Kr.call(this)}function Lr(){a=this,Kr.call(this)}function Fr(){l=this,Kr.call(this)}function Ur(){c=this,Kr.call(this)}function Hr(){f=this,Kr.call(this)}function Vr(){v=this,Kr.call(this)}function Br(){d=this,Kr.call(this)}function Wr(){w=this,Kr.call(this)}function Yr(){p=this,Kr.call(this)}function Gr(){return null==p&&new Yr,p}function Kr(){Rr.call(this)}function Xr(){m=this,rs.call(this)}function Jr(){return null==m&&new Xr,m}function Zr(){g=this,rs.call(this)}function Qr(){return null==g&&new Zr,g}function ts(){y=this,rs.call(this)}function ns(){return null==y&&new ts,y}function is(){b=this,rs.call(this)}function es(){return null==b&&new is,b}function rs(){Rr.call(this)}function ss(){$=this,_s.call(this)}function us(){k=this,_s.call(this)}function os(){return null==k&&new us,k}function _s(){Rr.call(this)}function hs(){}function as(){}function ls(){this.f38_1=-1,this.g38_1=-3}function cs(){}function fs(){}function vs(){q=this,this.i38_1=(null==E&&new Ws,E)}function ds(){return null==q&&new vs,q}function ws(){S=this,this.j38_1=new Xu("kotlin.time.Duration",Gr())}function ps(){}function ms(t){xs.call(this,t)}function gs(t){xs.call(this,t)}function ys(t){xs.call(this,t)}function bs(t,n){qs.call(this,"kotlin.collections.HashMap",t,n)}function $s(t,n){qs.call(this,"kotlin.collections.LinkedHashMap",t,n)}function ks(t){xs.call(this,t)}function xs(t){this.n38_1=t,this.o38_1=1}function qs(t,n,i){this.t38_1=t,this.u38_1=n,this.v38_1=i,this.w38_1=2}function Ss(t){xs.call(this,t),this.b39_1=t.m35()+"Array"}function Cs(t){As.call(this,t),this.d39_1=new ms(t.n34())}function Es(t){As.call(this,t),this.v39_1=new gs(t.n34())}function Os(t){As.call(this,t),this.c3a_1=new ys(t.n34())}function js(t,n){Is.call(this,t,n),this.j3a_1=new bs(t.n34(),n.n34())}function zs(t,n){Is.call(this,t,n),this.u3a_1=new $s(t.n34(),n.n34())}function Ts(t,n){Ds.call(this,n),this.z3a_1=t,this.a3b_1=new ks(n.n34())}function As(t){Ds.call(this,t)}function Is(t,n){Ms.call(this),this.o3a_1=t,this.p3a_1=n}function Ds(t){Ms.call(this),this.p39_1=t}function Ms(){}function Ns(t){Ds.call(this,t),this.h3b_1=new Ss(t.n34())}function Rs(){}function Ps(){C=this,this.q3b_1=Ln(0)}function Ls(){return null==C&&new Ps,C}function Fs(t,n){Ls(),this.r3b_1=t,this.s3b_1=n;var i=this.r3b_1.o35();if(Fn(),i<=64){var e;Fn(),e=64===i?new bn(0,0):new bn(-1,-1).nb(i),this.t3b_1=e,this.u3b_1=Ls().q3b_1}else this.t3b_1=new bn(0,0),this.u3b_1=function(t,n){var i=(n-1|0)>>>6|0;Fn();var e=63&n,r=Ln(i);return 0!==e&&(r[Un(r)]=new bn(-1,-1).nb(n)),r}(0,i)}function Us(t,n){return new Hs(t,new Vs(n))}function Hs(t,n){ru.call(this,t,n,1),this.j3c_1=!0}function Vs(t){this.a3d_1=t}function Bs(t){throw Cn("Descriptor for type `kotlin.Nothing` does not have elements")}function Ws(){E=this,this.d3d_1=es(),this.e3d_1="kotlin.Nothing"}function Ys(t){this.f3d_1=t,this.g3d_1=new Gs(this.f3d_1.n34())}function Gs(t){this.w35_1=t,this.x35_1=this.w35_1.m35()+"?",this.y35_1=Js(this.w35_1)}function Ks(t,n){return function(){var i=es();return Cr(t,i,[],function(t){return function(n){return n.r34_1=t.i3d_1,wt}}(n))}}function Xs(t,n){this.h3d_1=n,this.i3d_1=pt();var i=mt();this.j3d_1=gt(i,Ks(t,this))}function Js(t){if(nu(),At(t,ps))return t.u36();var n=Vn(t.o35()),i=0,e=t.o35();if(i0){var i=Xi(t,0),e=Qi(i)?Zi(i):Ji(i);n=sn(e)+t.substring(1)}else n=t;return n}function Zu(){it||(it=!0,B=ue([fn(te().h7(),Ke()),fn(Dt($n),Xe(Xn())),fn(te().k7(),Je()),fn(te().f7(),Ze()),fn(te().q7(),Qe()),fn(te().e7(),tr()),fn(te().p7(),nr()),fn(Dt(bn),ir(Fn())),fn(te().o7(),er()),fn(Dt(ne),rr(ii())),fn(Dt(ei),sr()),fn(te().d7(),ur()),fn(te().n7(),or()),fn(Dt(ie),_r(oi())),fn(Dt(_i),hr()),fn(te().c7(),ar()),fn(te().m7(),lr()),fn(Dt(ee),cr(ci())),fn(Dt(fi),fr()),fn(te().b7(),vr()),fn(te().l7(),dr()),fn(Dt(re),wr(pi())),fn(Dt(mi),pr()),fn(te().a7(),mr()),fn(te().j7(),gr()),fn(Dt(se),yr()),fn(te().z6(),ds()),fn(Dt(xn),br(kn()))]))}function Qu(){no.call(this)}function to(t,n,i){t.k3i(n);var e=i();return t.v3h_1||t.l3i(),t.v3h_1=!1,e}function no(){this.u3h_1=_n(),this.v3h_1=!1}function io(){return rt||(rt=!0,et=new Object),et}function eo(t,n){this.m3i_1=t,this.n3i_1=n}function ro(t,n){oo.call(this,t,n);var i,e,r=ns();this.q3i_1=Cr("kotlin.collections.Map.Entry",r,[],(i=t,e=n,function(t){return t.x34("key",i.n34()),t.x34("value",e.n34()),wt}))}function so(t,n){var i,e;oo.call(this,t,n),this.w3i_1=Or("kotlin.Pair",[],(i=t,e=n,function(t){return t.x34("first",i.n34()),t.x34("second",e.n34()),wt}))}function uo(t,n,i){var e;this.x3i_1=t,this.y3i_1=n,this.z3i_1=i,this.a3j_1=Or("kotlin.Triple",[],(e=this,function(t){return t.x34("first",e.x3i_1.n34()),t.x34("second",e.y3i_1.n34()),t.x34("third",e.z3i_1.n34()),wt}))}function oo(t,n){this.s3i_1=t,this.t3i_1=n}function _o(){st=this,this.b3j_1=Us("kotlin.ULong",ir(Fn()))}function ho(){ut=this,this.d3j_1=Us("kotlin.UInt",ur())}function ao(){ot=this,this.f3j_1=Us("kotlin.UShort",ar())}function lo(){_t=this,this.h3j_1=Us("kotlin.UByte",vr())}function co(){return go(),ht}function fo(){}function vo(t,n,i,e,r){fo.call(this),this.z35_1=t,this.a36_1=n,this.b36_1=i,this.c36_1=e,this.d36_1=r}function wo(t){mo.call(this),this.n3j_1=t}function po(t){mo.call(this),this.l3j_1=t}function mo(){}function go(){at||(at=!0,ht=new vo(Gn(),Gn(),Gn(),Gn(),Gn()))}function yo(){return co()}function bo(){this.s3j_1=Tn(),this.t3j_1=Tn(),this.u3j_1=Tn(),this.v3j_1=Tn(),this.w3j_1=Tn()}function $o(t,n){var i=function(t,n,i){return ko.call(i,"Serializer for "+n+" already registered in the scope of "+t),i}(t,n,xt(ct(ko)));return qt(i,$o),i}function ko(t){St(t,this),qt(this,ko)}function xo(){}function qo(t){this.e3k_1=t}function So(t){return new zo(t)}function Co(t){return new To(t)}function Eo(t,n){var i;try{var e,r=le(t,Dt(qo));if(null!=r&&At(r,qe))e=null!=r&&At(r,qe)?r:zt();else if(null!=r&&At(r,ou)){var s=r.m3d(n.slice());e=At(s,qe)?s:zt()}else e=function(t){var n=ae(t).$metadata$;return"interface"==(null==n?null:n.kind)}(t)?new Ee(t):null;i=e}catch(t){i=null}return i}function Oo(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ce(t));return t[n]}function jo(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ve(t));return t[n]}function zo(t){this.f3k_1=t}function To(t){this.g3k_1=t}return vt(Se,"DeserializationStrategy",ft),vt(qe,"KSerializer",ft,dt,[Se]),vt(fs,"AbstractPolymorphicSerializer",yt,dt,[qe]),vt(Ee,"PolymorphicSerializer",yt,fs),vt(Ae,"SerializationException",yt,Et,dt,(function t(){var n,i=(n=xt(ct(Ae)),kt(n),Ae.call(n),n);return qt(i,t),i})),vt(Ie,"UnknownFieldException",yt,Ae),vt(Me,"MissingFieldException",yt,Ae),vt(xr,"SerialDescriptor",ft),vt($r,"ContextDescriptor",yt,dt,[xr]),vt(qr,dt,yt),vt(Sr,dt,yt),vt(Er,"ClassSerialDescriptorBuilder",yt),vt(ps,"CachedNames",ft),vt(zr,"SerialDescriptorImpl",yt,dt,[xr,ps]),vt(Tr,"WrappedSerialDescriptor",yt,dt,[xr]),vt(Rr,"SerialKind",yt),vt(Dr,"ENUM",gn,Rr),vt(Mr,"CONTEXTUAL",gn,Rr),vt(Kr,"PrimitiveKind",yt,Rr),vt(Pr,"BOOLEAN",gn,Kr),vt(Lr,"BYTE",gn,Kr),vt(Fr,"CHAR",gn,Kr),vt(Ur,"SHORT",gn,Kr),vt(Hr,"INT",gn,Kr),vt(Vr,"LONG",gn,Kr),vt(Br,"FLOAT",gn,Kr),vt(Wr,"DOUBLE",gn,Kr),vt(Yr,"STRING",gn,Kr),vt(rs,"StructureKind",yt,Rr),vt(Xr,"CLASS",gn,rs),vt(Zr,"LIST",gn,rs),vt(ts,"MAP",gn,rs),vt(is,"OBJECT",gn,rs),vt(_s,"PolymorphicKind",yt,Rr),vt(ss,"SEALED",gn,_s),vt(us,"OPEN",gn,_s),vt(as,"Decoder",ft),vt(cs,"CompositeDecoder",ft),vt(hs,"AbstractDecoder",yt,dt,[as,cs]),vt(ls,"Companion",gn),vt(vs,"NothingSerializer",gn,dt,[qe]),vt(ws,"DurationSerializer",gn,dt,[qe]),vt(xs,"ListLikeDescriptor",yt,dt,[xr]),vt(ms,"ArrayListClassDesc",yt,xs),vt(gs,"HashSetClassDesc",yt,xs),vt(ys,"LinkedHashSetClassDesc",yt,xs),vt(qs,"MapLikeDescriptor",yt,dt,[xr]),vt(bs,"HashMapClassDesc",yt,qs),vt($s,"LinkedHashMapClassDesc",yt,qs),vt(ks,"ArrayClassDesc",yt,xs),vt(Ss,"PrimitiveArrayDescriptor",yt,xs),vt(Ms,"AbstractCollectionSerializer",yt,dt,[qe]),vt(Ds,"CollectionLikeSerializer",yt,Ms),vt(As,"CollectionSerializer",yt,Ds),vt(Cs,"ArrayListSerializer",yt,As),vt(Es,"HashSetSerializer",yt,As),vt(Os,"LinkedHashSetSerializer",yt,As),vt(Is,"MapLikeSerializer",yt,Ms),vt(js,"HashMapSerializer",yt,Is),vt(zs,"LinkedHashMapSerializer",yt,Is),vt(Ts,"ReferenceArraySerializer",yt,Ds),vt(Ns,"PrimitiveArraySerializer",yt,Ds),vt(Rs,"PrimitiveArrayBuilder",yt),vt(Ps,"Companion",gn),vt(Fs,"ElementMarker",yt),vt(ru,"PluginGeneratedSerialDescriptor",yt,dt,[xr,ps]),vt(Hs,"InlineClassDescriptor",yt,ru),vt(_u,"GeneratedSerializer",ft,dt,[qe]),vt(Vs,dt,yt,dt,[_u]),vt(Ws,"NothingSerialDescriptor",gn,dt,[xr]),vt(Ys,"NullableSerializer",yt,dt,[qe]),vt(Gs,"SerialDescriptorForNullable",yt,dt,[xr,ps]),vt(Xs,"ObjectSerializer",yt,dt,[qe]),vt(ou,"SerializerFactory",ft),vt(hu,"CharArraySerializer",gn,Ns,[qe,Ns]),vt(au,"DoubleArraySerializer",gn,Ns,[qe,Ns]),vt(lu,"FloatArraySerializer",gn,Ns,[qe,Ns]),vt(cu,"LongArraySerializer",gn,Ns,[qe,Ns]),vt(fu,"ULongArraySerializer",gn,Ns,[qe,Ns]),vt(vu,"IntArraySerializer",gn,Ns,[qe,Ns]),vt(du,"UIntArraySerializer",gn,Ns,[qe,Ns]),vt(wu,"ShortArraySerializer",gn,Ns,[qe,Ns]),vt(pu,"UShortArraySerializer",gn,Ns,[qe,Ns]),vt(mu,"ByteArraySerializer",gn,Ns,[qe,Ns]),vt(gu,"UByteArraySerializer",gn,Ns,[qe,Ns]),vt(yu,"BooleanArraySerializer",gn,Ns,[qe,Ns]),vt(bu,"CharArrayBuilder",yt,Rs),vt($u,"DoubleArrayBuilder",yt,Rs),vt(ku,"FloatArrayBuilder",yt,Rs),vt(xu,"LongArrayBuilder",yt,Rs),vt(qu,"ULongArrayBuilder",yt,Rs),vt(Su,"IntArrayBuilder",yt,Rs),vt(Cu,"UIntArrayBuilder",yt,Rs),vt(Eu,"ShortArrayBuilder",yt,Rs),vt(Ou,"UShortArrayBuilder",yt,Rs),vt(ju,"ByteArrayBuilder",yt,Rs),vt(zu,"UByteArrayBuilder",yt,Rs),vt(Tu,"BooleanArrayBuilder",yt,Rs),vt(Iu,"StringSerializer",gn,dt,[qe]),vt(Mu,"CharSerializer",gn,dt,[qe]),vt(Nu,"DoubleSerializer",gn,dt,[qe]),vt(Pu,"FloatSerializer",gn,dt,[qe]),vt(Fu,"LongSerializer",gn,dt,[qe]),vt(Uu,"IntSerializer",gn,dt,[qe]),vt(Vu,"ShortSerializer",gn,dt,[qe]),vt(Bu,"ByteSerializer",gn,dt,[qe]),vt(Wu,"BooleanSerializer",gn,dt,[qe]),vt(Gu,"UnitSerializer",gn,dt,[qe]),vt(Xu,"PrimitiveSerialDescriptor",yt,dt,[xr]),vt(no,"TaggedDecoder",yt,dt,[as,cs]),vt(Qu,"NamedValueDecoder",yt,no),vt(eo,"MapEntry",yt,dt,[Nt]),vt(oo,"KeyValueSerializer",yt,dt,[qe]),vt(ro,"MapEntrySerializer",yt,oo),vt(so,"PairSerializer",yt,oo),vt(uo,"TripleSerializer",yt,dt,[qe]),vt(_o,"ULongSerializer",gn,dt,[qe]),vt(ho,"UIntSerializer",gn,dt,[qe]),vt(ao,"UShortSerializer",gn,dt,[qe]),vt(lo,"UByteSerializer",gn,dt,[qe]),vt(fo,"SerializersModule",yt),vt(vo,"SerialModuleImpl",yt,fo),vt(mo,"ContextualProvider",yt),vt(wo,"Argless",yt,mo),vt(po,"WithTypeArguments",yt,mo),vt(xo,"SerializersModuleCollector",ft),vt(bo,"SerializersModuleBuilder",yt,dt,[xo]),vt(ko,"SerializerAlreadyRegisteredException",yt,Et),vt(qo,"SerializableWith",yt,dt,dt,dt,0),vt(zo,dt,yt),vt(To,dt,yt),ct(Ee).b35=function(){return this.y34_1},ct(Ee).n34=function(){var t=this.a35_1;return $t("descriptor",1,bt,(function(t){return t.n34()}),null),t.j2()},ct(Ee).toString=function(){return"kotlinx.serialization.PolymorphicSerializer(baseClass: "+this.y34_1+")"},ct($r).n35=function(){return this.j35_1.n35()},ct($r).o35=function(){return this.j35_1.o35()},ct($r).p35=function(){return this.j35_1.p35()},ct($r).i35=function(){return this.j35_1.i35()},ct($r).q35=function(){return this.j35_1.q35()},ct($r).r35=function(t){return this.j35_1.r35(t)},ct($r).s35=function(t){return this.j35_1.s35(t)},ct($r).t35=function(t){return this.j35_1.t35(t)},ct($r).u35=function(t){return this.j35_1.u35(t)},ct($r).v35=function(t){return this.j35_1.v35(t)},ct($r).m35=function(){return this.l35_1},ct($r).equals=function(t){var n=t instanceof $r?t:null;if(null==n)return!1;var i=n;return!!nn(this.j35_1,i.j35_1)&&i.k35_1.equals(this.k35_1)},ct($r).hashCode=function(){var t=this.k35_1.hashCode();return lt(31,t)+en(this.l35_1)|0},ct($r).toString=function(){return"ContextDescriptor(kClass: "+this.k35_1+", original: "+this.j35_1+")"},ct(qr).w=function(){return this.e36_1>0},ct(qr).y=function(){var t=this.f36_1.o35(),n=this.e36_1;return this.e36_1=n-1|0,this.f36_1.s35(t-n|0)},ct(Sr).v=function(){return new qr(this.g36_1)},ct(Er).h36=function(t,n,i,e){if(!this.t34_1.s(t)){var r="Element with name '"+t+"' is already registered in "+this.p34_1;throw un(sn(r))}this.s34_1.s(t),this.u34_1.s(n),this.v34_1.s(i),this.w34_1.s(e)},ct(Er).x34=function(t,n,i,e,r){var s;return i=i===dt?pt():i,e=e!==dt&&e,r===dt?(this.h36(t,n,i,e),s=wt):s=r.h36.call(this,t,n,i,e),s},ct(zr).m35=function(){return this.i36_1},ct(zr).q35=function(){return this.j36_1},ct(zr).o35=function(){return this.k36_1},ct(zr).n35=function(){return this.l36_1},ct(zr).u36=function(){return this.m36_1},ct(zr).u35=function(t){return Oo(this.n36_1,t)},ct(zr).t35=function(t){var n=this.r36_1.q2(t);return null==n?-3:n},ct(zr).r35=function(t){return Oo(this.p36_1,t)},ct(zr).s35=function(t){return Oo(this.o36_1,t)},ct(zr).v35=function(t){return jo(this.q36_1,t)},ct(zr).equals=function(t){var n;t:if(this!==t)if(t instanceof zr)if(this.m35()===t.m35())if(wn(this.s36_1,t.s36_1))if(this.o35()===t.o35()){var i=0,e=this.o35();if(i=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return!1},ct(xs).r35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return pt()},ct(xs).s35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return this.n38_1},ct(xs).equals=function(t){return this===t||t instanceof xs&&!(!nn(this.n38_1,t.n38_1)||this.m35()!==t.m35())},ct(xs).hashCode=function(){return lt(Sn(this.n38_1),31)+en(this.m35())|0},ct(xs).toString=function(){return this.m35()+"("+this.n38_1+")"},ct(qs).m35=function(){return this.t38_1},ct(qs).q35=function(){return ns()},ct(qs).o35=function(){return this.w38_1},ct(qs).u35=function(t){return t.toString()},ct(qs).t35=function(t){var n=qn(t);if(null==n)throw un(t+" is not a valid map index");return n},ct(qs).v35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return!1},ct(qs).r35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}return pt()},ct(qs).s35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.m35()+" expects only non-negative indices";throw un(sn(n))}var i;switch(t%2|0){case 0:i=this.u38_1;break;case 1:i=this.v38_1;break;default:throw Cn(sn("Unreached"))}return i},ct(qs).equals=function(t){return this===t||t instanceof qs&&this.m35()===t.m35()&&!!nn(this.u38_1,t.u38_1)&&!!nn(this.v38_1,t.v38_1)},ct(qs).hashCode=function(){var t=en(this.m35());return t=lt(31,t)+Sn(this.u38_1)|0,lt(31,t)+Sn(this.v38_1)|0},ct(qs).toString=function(){return this.m35()+"("+this.u38_1+", "+this.v38_1+")"},ct(Ss).m35=function(){return this.b39_1},ct(Cs).n34=function(){return this.d39_1},ct(Cs).e39=function(){return _n()},ct(Cs).f39=function(t){return t.n()},ct(Cs).g39=function(t){return this.f39(t instanceof Wt?t:zt())},ct(Cs).h39=function(t){return t},ct(Cs).i39=function(t){return this.h39(t instanceof Wt?t:zt())},ct(Cs).j39=function(t){var n=t instanceof Wt?t:null;return null==n?En(t):n},ct(Cs).k39=function(t){return this.j39(null!=t&&At(t,Gt)?t:zt())},ct(Cs).l39=function(t,n){return t.z2(n)},ct(Cs).m39=function(t,n){return this.l39(t instanceof Wt?t:zt(),n)},ct(Cs).n39=function(t,n,i){t.r1(n,i)},ct(Cs).o39=function(t,n,i){var e=t instanceof Wt?t:zt();return this.n39(e,n,null==i||null!=i?i:zt())},ct(Es).n34=function(){return this.v39_1},ct(Es).e39=function(){return hn()},ct(Es).w39=function(t){return t.n()},ct(Es).g39=function(t){return this.w39(t instanceof Bt?t:zt())},ct(Es).x39=function(t){return t},ct(Es).i39=function(t){return this.x39(t instanceof Bt?t:zt())},ct(Es).y39=function(t){var n=t instanceof Bt?t:null;return null==n?On(t):n},ct(Es).k39=function(t){return this.y39(null!=t&&At(t,Vt)?t:zt())},ct(Es).z39=function(t,n){},ct(Es).m39=function(t,n){return this.z39(t instanceof Bt?t:zt(),n)},ct(Es).a3a=function(t,n,i){t.s(i)},ct(Es).o39=function(t,n,i){var e=t instanceof Bt?t:zt();return this.a3a(e,n,null==i||null!=i?i:zt())},ct(Os).n34=function(){return this.c3a_1},ct(Os).e39=function(){return jn()},ct(Os).d3a=function(t){return t.n()},ct(Os).g39=function(t){return this.d3a(t instanceof Ut?t:zt())},ct(Os).e3a=function(t){return t},ct(Os).i39=function(t){return this.e3a(t instanceof Ut?t:zt())},ct(Os).y39=function(t){var n=t instanceof Ut?t:null;return null==n?zn(t):n},ct(Os).k39=function(t){return this.y39(null!=t&&At(t,Vt)?t:zt())},ct(Os).f3a=function(t,n){},ct(Os).m39=function(t,n){return this.f3a(t instanceof Ut?t:zt(),n)},ct(Os).g3a=function(t,n,i){t.s(i)},ct(Os).o39=function(t,n,i){var e=t instanceof Ut?t:zt();return this.g3a(e,n,null==i||null!=i?i:zt())},ct(js).n34=function(){return this.j3a_1},ct(js).e39=function(){return Tn()},ct(js).k3a=function(t){return lt(t.n(),2)},ct(js).g39=function(t){return this.k3a(t instanceof Ft?t:zt())},ct(js).l3a=function(t){return t},ct(js).i39=function(t){return this.l3a(t instanceof Ft?t:zt())},ct(js).m3a=function(t){var n=t instanceof Ft?t:null;return null==n?An(t):n},ct(js).k39=function(t){return this.m3a(null!=t&&At(t,Lt)?t:zt())},ct(js).n3a=function(t,n){},ct(js).m39=function(t,n){return this.n3a(t instanceof Ft?t:zt(),n)},ct(zs).n34=function(){return this.u3a_1},ct(zs).e39=function(){return In()},ct(zs).v3a=function(t){return lt(t.n(),2)},ct(zs).g39=function(t){return this.v3a(t instanceof Rt?t:zt())},ct(zs).w3a=function(t){return t},ct(zs).i39=function(t){return this.w3a(t instanceof Rt?t:zt())},ct(zs).m3a=function(t){var n=t instanceof Rt?t:null;return null==n?Dn(t):n},ct(zs).k39=function(t){return this.m3a(null!=t&&At(t,Lt)?t:zt())},ct(zs).x3a=function(t,n){},ct(zs).m39=function(t,n){return this.x3a(t instanceof Rt?t:zt(),n)},ct(Ts).n34=function(){return this.a3b_1},ct(Ts).e39=function(){return _n()},ct(Ts).b3b=function(t){return t.n()},ct(Ts).g39=function(t){return this.b3b(t instanceof Wt?t:zt())},ct(Ts).c3b=function(t){return function(t,n){return Xt(t)}(t,this.z3a_1)},ct(Ts).i39=function(t){return this.c3b(t instanceof Wt?t:zt())},ct(Ts).d3b=function(t){return En(Mn(t))},ct(Ts).k39=function(t){return this.d3b(null!=t&&Nn(t)?t:zt())},ct(Ts).e3b=function(t,n){return t.z2(n)},ct(Ts).m39=function(t,n){return this.e3b(t instanceof Wt?t:zt(),n)},ct(Ts).f3b=function(t,n,i){t.r1(n,i)},ct(Ts).o39=function(t,n,i){var e=t instanceof Wt?t:zt();return this.f3b(e,n,null==i||null!=i?i:zt())},ct(Is).q3a=function(t,n,i,e){if(!(e>=0))throw un(sn("Size must be known in advance when using READ_ALL"));var r=Rn(pn(0,lt(e,2)),2),s=r.ha_1,u=r.ia_1,o=r.ja_1;if(o>0&&s<=u||o<0&&u<=s)do{var _=s;s=s+o|0,this.r3a(t,i+_|0,n,!1)}while(_!==u)},ct(Is).q39=function(t,n,i,e){return this.q3a(t,null!=n&&At(n,Pt)?n:zt(),i,e)},ct(Is).r3a=function(t,n,i,e){var r,s=t.z37(this.n34(),n,this.o3a_1);if(e){var u=t.d38(this.n34());if(u!==(n+1|0))throw un(sn("Value must follow key in a map, index for key: "+n+", returned index for value: "+u));r=u}else r=n+1|0;var o=r,_=!i.n2(s)||this.p3a_1.n34().q35()instanceof Kr?t.z37(this.n34(),o,this.p3a_1):t.y37(this.n34(),o,this.p3a_1,Pn(i,s));i.g2(s,_)},ct(Is).r39=function(t,n,i,e){return this.r3a(t,n,null!=i&&At(i,Pt)?i:zt(),e)},ct(Ds).q39=function(t,n,i,e){if(!(e>=0))throw un(sn("Size must be known in advance when using READ_ALL"));var r=0;if(r>>6|0)-1|0;Fn();var e=63&n;t.u3b_1[i]=t.u3b_1[i].rb(new bn(1,0).nb(e))}(this,t)},ct(Fs).w3b=function(){for(var t=this.r3b_1.o35();!this.t3b_1.equals(new bn(-1,-1));){var n=Hn(this.t3b_1.mb());if(this.t3b_1=this.t3b_1.rb(new bn(1,0).nb(n)),this.s3b_1(this.r3b_1,n))return n}return Fn(),t>64?function(t){var n=0,i=t.u3b_1.length-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=e+1|0;Fn();for(var s=lt(r,64),u=t.u3b_1[e];!u.equals(new bn(-1,-1));){var o=Hn(u.mb());u=u.rb(new bn(1,0).nb(o));var _=s+o|0;if(t.s3b_1(t.r3b_1,_))return t.u3b_1[e]=u,_}t.u3b_1[e]=u}while(n<=i);return-1}(this):-1},ct(Hs).p35=function(){return this.j3c_1},ct(Hs).hashCode=function(){return lt(ct(ru).hashCode.call(this),31)},ct(Hs).equals=function(t){var n;t:if(this!==t)if(t instanceof Hs)if(this.m35()===t.m35())if(t.j3c_1&&wn(this.w3c(),t.w3c()))if(this.o35()===t.o35()){var i=0,e=this.o35();if(i>>1|0}while(s<32);throw De(e,i.m35())},t.$_$.k2=co,t.$_$.l2=yo,t.$_$.m2=bo,t.$_$.n2=function(t,n){go();var i=new bo;return i.x3j(t),i.x3j(n),i.y2()},t.$_$.o2=Se,t.$_$.p2=qe,t.$_$.q2=Me,t.$_$.r2=Ae,t.$_$.s2=Oe,t.$_$.t2=Ne,t.$_$.u2=function(t){return Le(yo(),t)},t.$_$.v2=Le,t})?e.apply(n,r):e)||(t.exports=s)},800:function(t,n,i){var e,r,s;r=[n,i(755),i(675)],void 0===(s="function"==typeof(e=function(t,n,i){"use strict";var e,r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M,N,R,P,L,F,U,H,V,B,W,Y,G,K,X,J,Z=Math.imul,Q=n.$_$.l2,tt=i.$_$.mb,nt=i.$_$.lb,it=i.$_$.nb,et=i.$_$.ca,rt=i.$_$.f,st=i.$_$.a5,ut=i.$_$.gg,ot=n.$_$.w1,_t=n.$_$.u1,ht=i.$_$.na,at=i.$_$.f1,lt=i.$_$.r2,ct=i.$_$.tg,ft=i.$_$.fa,vt=i.$_$.ma,dt=i.$_$.k7,wt=i.$_$.k5,pt=i.$_$.j,mt=i.$_$.oh,gt=n.$_$.h2,yt=i.$_$.rb,bt=i.$_$.t1,$t=i.$_$.c,kt=i.$_$.ia,xt=i.$_$.la,qt=i.$_$.i5,St=i.$_$.f2,Ct=i.$_$.n4,Et=i.$_$.db,Ot=i.$_$.wb,jt=i.$_$.wa,zt=i.$_$.kc,Tt=i.$_$.hf,At=i.$_$.p4,It=n.$_$.x,Dt=n.$_$.d2,Mt=n.$_$.g,Nt=n.$_$.n1,Rt=n.$_$.p2,Pt=n.$_$.v,Lt=n.$_$.j1,Ft=n.$_$.u,Ut=n.$_$.h,Ht=n.$_$.j,Vt=n.$_$.e1,Bt=i.$_$.x1,Wt=i.$_$.ph,Yt=n.$_$.h1,Gt=n.$_$.g1,Kt=n.$_$.f1,Xt=i.$_$.tc,Jt=i.$_$.ka,Zt=n.$_$.a2,Qt=i.$_$.w9,tn=n.$_$.r2,nn=n.$_$.b,en=i.$_$.aa,rn=i.$_$.ba,sn=i.$_$.zb,un=i.$_$.ec,on=(n.$_$.o,n.$_$.k),_n=i.$_$.v,hn=i.$_$.m,an=i.$_$.i8,ln=i.$_$.u6,cn=i.$_$.g7,fn=i.$_$.n6,vn=i.$_$.o6,dn=i.$_$.ha,wn=n.$_$.l,pn=i.$_$.eg,mn=i.$_$.kh,gn=i.$_$.q9,yn=i.$_$.fg,bn=i.$_$.dh,$n=i.$_$.c9,kn=n.$_$.y1,xn=i.$_$.d,qn=n.$_$.s2,Sn=i.$_$.jh,Cn=n.$_$.o2,En=n.$_$.r1,On=i.$_$.ze,jn=i.$_$.ke,zn=i.$_$.xe,Tn=i.$_$.kd,An=i.$_$.rh,In=n.$_$.q2,Dn=i.$_$.pb,Mn=i.$_$.jg,Nn=i.$_$.mh,Rn=i.$_$.lh,Pn=i.$_$.z9,Ln=i.$_$.rf,Fn=i.$_$.n3,Un=i.$_$.sf,Hn=i.$_$.u3,Vn=i.$_$.qf,Bn=i.$_$.f3,Wn=i.$_$.tf,Yn=i.$_$.b4,Gn=i.$_$.x4,Kn=n.$_$.z,Xn=i.$_$.y4,Jn=n.$_$.b1,Zn=i.$_$.w4,Qn=n.$_$.a1,ti=i.$_$.z4,ni=n.$_$.y,ii=i.$_$.h8,ei=i.$_$.y2,ri=i.$_$.fb,si=i.$_$.sd,ui=i.$_$.z2,oi=n.$_$.f2,_i=n.$_$.c1,hi=n.$_$.d1,ai=n.$_$.m,li=i.$_$.k4,ci=i.$_$.ob,fi=i.$_$.o4,vi=i.$_$.qb,di=i.$_$.pe,wi=i.$_$.cg,pi=n.$_$.i2,mi=i.$_$.v6,gi=i.$_$.x7,yi=i.$_$.jf,bi=i.$_$.r8,$i=n.$_$.p1,ki=n.$_$.i,xi=i.$_$.qh,qi=i.$_$.r7,Si=i.$_$.d8,Ci=i.$_$.ge,Ei=i.$_$.mg,Oi=i.$_$.u2,ji=i.$_$.u4,zi=i.$_$.ib,Ti=i.$_$.y9,Ai=i.$_$.wd,Ii=i.$_$.o;function Di(){e=this,Ni.call(this,new Li,Q())}function Mi(){return null==e&&new Di,e}function Ni(t,n){Mi(),this.r41_1=t,this.s41_1=n,this.t41_1=new hr}function Ri(){}function Pi(){}function Li(t,n,i,e,u,o,_,h,a,l,c,f,v,d,w,p){t=t!==rt&&t,n=n!==rt&&n,i=i!==rt&&i,e=e!==rt&&e,u=u!==rt&&u,o=o===rt||o,_=_===rt?" ":_,h=h!==rt&&h,a=a!==rt&&a,l=l===rt?"type":l,c=c!==rt&&c,f=f===rt||f,v=v===rt?null:v,d=d!==rt&&d,w=w!==rt&&w,p=p===rt?(function(){if(s)return st;s=!0,new Fi("NONE",0),new Fi("ALL_JSON_OBJECTS",1),r=new Fi("POLYMORPHIC",2)}(),r):p,this.i42_1=t,this.j42_1=n,this.k42_1=i,this.l42_1=e,this.m42_1=u,this.n42_1=o,this.o42_1=_,this.p42_1=h,this.q42_1=a,this.r42_1=l,this.s42_1=c,this.t42_1=f,this.u42_1=v,this.v42_1=d,this.w42_1=w,this.x42_1=p}function Fi(t,n){ut.call(this,t,n)}function Ui(){}function Hi(){}function Vi(){}function Bi(){}function Wi(t){var n=t.i2(),i=t.j2(),e=at();return yr(e,n),e.s5(lt(58)),e.q5(i),e.toString()}function Yi(t){Vi.call(this),this.a43_1=t}function Gi(){return qe()}function Ki(){u=this,Zi.call(this),this.b43_1="null";var t=pt();this.c43_1=mt(t,Gi)}function Xi(){return null==u&&new Ki,u}function Ji(){}function Zi(){Vi.call(this)}function Qi(t,n,i){if(i=i===rt?null:i,Zi.call(this),this.e43_1=n,this.f43_1=i,this.g43_1=yt(t),null!=this.f43_1&&!this.f43_1.p35())throw bt(yt("Failed requirement."))}function te(){}function ne(t){Vi.call(this),this.h43_1=t}function ie(t){return ue(),function(t){return br(),!!si(t,"true",!0)||!si(t,"false",!0)&&null}(t.d2b())}function ee(t){var n;ue();try{n=new vs(t.d2b()).l43()}catch(t){if(t instanceof Me)throw St(t.message);throw t}var i=n,e=Et(Ct.MIN_VALUE,Ct.MAX_VALUE);if(!zt(jt(e,Ot)?e:ct(),i))throw St(t.d2b()+" is not an Int");return i.la()}function re(t){return ue(),t instanceof Ki?null:t.d2b()}function se(t){ue();var n,i=t instanceof Zi?t:null;return null==i?function(t,n){throw ue(),bt("Element "+$t(t)+" is not a "+n)}(t,"JsonPrimitive"):n=i,n}function ue(){o||(o=!0,Dt("kotlinx.serialization.json.JsonUnquotedLiteral",It(At)))}function oe(t){return t.x34("JsonPrimitive",be(_e)),t.x34("JsonNull",be(he)),t.x34("JsonLiteral",be(ae)),t.x34("JsonObject",be(le)),t.x34("JsonArray",be(ce)),st}function _e(){return ke().m43_1}function he(){return qe().n43_1}function ae(){return(null==d&&new Se,d).o43_1}function le(){return pe().p43_1}function ce(){return ye().q43_1}function fe(){_=this;var t=Mt();this.r43_1=Nt("kotlinx.serialization.json.JsonElement",t,[],oe)}function ve(){return null==_&&new fe,_}function de(){h=this,this.s43_1=Pt(It(At),ve()).n34(),this.t43_1="kotlinx.serialization.json.JsonObject"}function we(){a=this,this.p43_1=(null==h&&new de,h)}function pe(){return null==a&&new we,a}function me(){l=this,this.u43_1=Ft(ve()).n34(),this.v43_1="kotlinx.serialization.json.JsonArray"}function ge(){c=this,this.q43_1=(null==l&&new me,l)}function ye(){return null==c&&new ge,c}function be(t){return new je(t)}function $e(){f=this,this.m43_1=Nt("kotlinx.serialization.json.JsonPrimitive",Ut(),[])}function ke(){return null==f&&new $e,f}function xe(){v=this,this.n43_1=Nt("kotlinx.serialization.json.JsonNull",Ht(),[])}function qe(){return null==v&&new xe,v}function Se(){d=this,this.o43_1=Vt("kotlinx.serialization.json.JsonLiteral",Ut())}function Ce(t){var n=jt(t,Ui)?t:null;if(null==n)throw Bt("This serializer can be used only with Json format.Expected Decoder to be JsonDecoder, got "+$t(t));return n}function Ee(t){Ce(t)}function Oe(t){var n=t.w43_1;return Jt("original",1,Xt,(function(t){return Oe(t)}),null),n.j2()}function je(t){this.w43_1=Wt(t)}function ze(t){var n,i;this.x43_1=new Zt(t,(n=this,i=function(t,i){return r=t,s=i,(e=n).y43_1=!r.v35(s)&&r.s35(s).i35(),e.y43_1;var e,r,s},i.callableName="readIfAbsent",i)),this.y43_1=!1}function Te(t,n){n=n===rt?"object":n,t.z43("Trailing comma before the end of JSON "+n,t.d42_1-1|0,"Trailing commas are non-complaint JSON and not allowed by default. Use 'allowTrailingCommas = true' in 'Json {}' builder to support them.")}function Ae(t,n){t.a44("Unexpected special floating-point value "+yt(n)+". By default, non-finite floating point values are prohibited because they do not conform JSON specification",rt,fs())}function Ie(t){Fe.call(this,t),Qt(this,Ie)}function De(t){return new Ie("Value of type '"+t.m35()+"' can't be used in JSON as a key in the map. It should have either primitive or enum kind, but its kind is '"+t.q35()+"'.\n"+J)}function Me(t){Fe.call(this,t),Qt(this,Me)}function Ne(t,n,i){return Pe(t,n+"\nJSON input: "+Ue(i,t))}function Re(t,n,i){return Pe(-1,function(t,n,i){return"Unexpected special floating-point value "+yt(t)+" with key "+n+". By default, non-finite floating point values are prohibited because they do not conform JSON specification. "+fs()+"\nCurrent output: "+Ue(i)}(t,n,i))}function Pe(t,n){return new Me(t>=0?"Unexpected JSON token at offset "+t+": "+n:n)}function Le(t,n){return Pe(-1,"Encountered an unknown key '"+t+"'.\n"+G+"\nCurrent input: "+Ue(n))}function Fe(t){nn(t,this),Qt(this,Fe)}function Ue(t,n){if(n=n===rt?-1:n,en(t)<200)return t;if(-1===n){var i=en(t)-60|0;if(i<=0)return t;var e=en(t);return"....."+yt(rn(t,i,e))}var r=n-30|0,s=n+30|0,u=r<=0?"":".....",o=s>=en(t)?"":".....",_=sn(r,0),h=un(s,en(t));return u+yt(rn(t,_,h))+o}function He(){return Xe(),w}function Ve(t,n,i){if(Xe(),Ye(n,t))return Ge(t,n,i.toLowerCase());if(null!=Be(t,n))return Ge(t,n,i);var e=t.t35(i);return-3!==e?e:n.r41_1.t42_1?Ge(t,n,i):e}function Be(t,n){return Xe(),ft(t.q35(),on())?n.r41_1.u42_1:null}function We(t,n){Xe();var i,e,r=ds(t),s=He();return r.c44(n,s,(i=n,e=t,function(){return function(t,n){Xe();var i=_n(),e=Ye(n,t),r=Be(t,n),s=0,u=t.o35();if(s>12),r=gr(i>>8),s=gr(i>>4),u=gr(i);t[i]="\\u"+ui(e)+ui(r)+ui(s)+ui(u)}while(n<=31);var o=lt(34);t[ei(o)]='\\"';var _=lt(92);t[ei(_)]="\\\\";var h=lt(9);t[ei(h)]="\\t";var a=lt(8);t[ei(a)]="\\b";var l=lt(10);t[ei(l)]="\\n";var c=lt(13);t[ei(c)]="\\r",t[12]="\\f",b=t;var f=new Int8Array(93),v=0;if(v<=31)do{var d=v;v=v+1|0,f[d]=1}while(v<=31);var w=lt(34);f[ei(w)]=34;var p=lt(92);f[ei(p)]=92;var m=lt(9);f[ei(m)]=116;var g=lt(8);f[ei(g)]=98;var y=lt(10);f[ei(y)]=110;var k=lt(13);f[ei(k)]=114,f[12]=102}}function $r(t,n){throw Ne(-1,"Failed to parse literal as '"+n+"' value",yt(t.c47()))}function kr(t,n){oi.call(this),this.z46_1=t,this.a47_1=n,this.b47_1=this.y42().r41_1}function xr(t,n,i,e){var r;t:{var s=t.y42();if(n.v35(i)){var u=n.s35(i);if(!u.i35()&&t.d47(e)instanceof Ki)r=!0;else{if(ft(u.q35(),Ht())){if(u.i35()&&t.d47(e)instanceof Ki){r=!1;break t}var o=t.d47(e),_=o instanceof Zi?o:null,h=null==_?null:re(_);if(null==h){r=!1;break t}if(-3===Ve(u,s,h)){r=!0;break t}}r=!1}}else r=!1}return r}function qr(t,n,i){return t.z47_1=!t.y42().r41_1.n42_1&&!n.v35(i)&&n.s35(i).i35(),t.z47_1}function Sr(t,n,i,e){i=i===rt?null:i,e=e===rt?null:e,kr.call(this,t,n),this.v47_1=n,this.w47_1=i,this.x47_1=e,this.y47_1=0,this.z47_1=!1}function Cr(t,n){kr.call(this,t,n),this.f48_1=n,this.g48_1=this.f48_1.n(),this.h48_1=-1}function Er(t,n){kr.call(this,t,n),this.n48_1=n,this.k3i(jr())}function Or(t,n){Sr.call(this,t,n),this.y48_1=n,this.z48_1=bi(this.y48_1.d2()),this.a49_1=Z(this.z48_1.n(),2),this.b49_1=-1}function jr(){return k}function zr(){if(E)return st;E=!0,x=new Tr("OBJ",0,Zr(),Qr()),q=new Tr("LIST",1,ts(),ns()),S=new Tr("MAP",2,Zr(),Qr()),C=new Tr("POLY_OBJ",3,ts(),ns())}function Tr(t,n,i,e){ut.call(this,t,n),this.r46_1=i,this.s46_1=e}function Ar(t,n){var i,e=n.q35();if(e instanceof _i)zr(),i=C;else if(ft(e,wn()))i=Mr();else if(ft(e,ai())){var r,s=Ir(n.s35(0),t.b38()),u=s.q35();if(u instanceof hi||ft(u,Ht()))r=Nr();else{if(!t.r41_1.l42_1)throw De(s);r=Mr()}i=r}else i=Dr();return i}function Ir(t,n){var i;if(ft(t.q35(),ki())){var e=$i(n,t),r=null==e?null:Ir(e,n);i=null==r?t:r}else i=t.p35()?Ir(t.s35(0),n):t;return i}function Dr(){return zr(),x}function Mr(){return zr(),q}function Nr(){return zr(),S}function Rr(t,n,i){return t.c49(n,i),function(t,n){var i=n;-1===(i=t.e49(i))&&t.a44("Expected escape sequence to continue, got EOF");var e=t.d49(),r=i;i=r+1|0;var s=Pn(e,r);if(s===lt(117))return Fr(t,t.d49(),i);var u=function(t){return t<117?cs().m49_1[t]:lt(0)}(ei(s));return u===lt(0)&&t.a44("Invalid escaped char '"+ui(s)+"'"),t.g42_1.s5(u),i}(t,i+1|0)}function Pr(t,n,i){t.c49(n,i);var e=t.g42_1.toString();return t.g42_1.a8(0),e}function Lr(t){var n=Sn(t.f42_1);return t.f42_1=null,n}function Fr(t,n,i){return(i+4|0)>=en(n)?(t.d42_1=i,t.f49(),(t.d42_1+4|0)>=en(n)&&t.a44("Unexpected EOF during unicode escape"),Fr(t,n,t.d42_1)):(t.g42_1.s5(ri((((Ur(t,n,i)<<12)+(Ur(t,n,i+1|0)<<8)|0)+(Ur(t,n,i+2|0)<<4)|0)+Ur(t,n,i+3|0)|0)),i+4|0)}function Ur(t,n,i){var e,r=Pn(n,i);if(lt(48)<=r&&r<=lt(57)){var s=ei(r),u=lt(48);e=s-ei(u)|0}else if(lt(97)<=r&&r<=lt(102)){var o=ei(r),_=lt(97);e=10+(o-ei(_)|0)|0}else if(lt(65)<=r&&r<=lt(70)){var h=ei(r),a=lt(65);e=10+(h-ei(a)|0)|0}else t.a44("Invalid toHexChar char '"+ui(r)+"' in unicode escape");return e}function Hr(t,n,i){(en(t.d49())-i|0)=0&&(t.r5("."),t.r5(r.u35(s)))}else r!==m&&(t.r5("["),t.r5("'"),t.q5(r),t.r5("'"),t.r5("]"))}while(i0&&t===lt(34)){var n;t:{var i=this.d42_1;try{this.d42_1=this.d42_1-1|0,n=this.w44();break t}finally{this.d42_1=i}}"null"===n&&this.z43("Expected string literal but 'null' literal was found",this.d42_1-1|0,"Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls if property has a default value.")}this.h49(Br(t))},tt(Vr).j49=function(t,n){var i=is(t),e=n?this.d42_1-1|0:this.d42_1,r=this.d42_1===en(this.d49())||e<0?"EOF":ui(Pn(this.d49(),e));this.a44("Expected "+i+", but had '"+r+"' instead",e)},tt(Vr).h49=function(t,n,i){return n=n===rt||n,i===rt?this.j49(t,n):i.j49.call(this,t,n)},tt(Vr).t44=function(){for(var t=this.d49(),n=this.d42_1;-1!==(n=this.e49(n));){var i=Pn(t,n);if(i!==lt(32)&&i!==lt(10)&&i!==lt(13)&&i!==lt(9))return this.d42_1=n,Br(i);n=n+1|0}return this.d42_1=n,10},tt(Vr).i46=function(t){var n=this.k49();n=this.e49(n);var i=en(this.d49())-n|0;if(i<4||-1===n)return!1;var e=0;if(e<=3)do{var r=e;if(e=e+1|0,Pn("null",r)!==Pn(this.d49(),n+r|0))return!1}while(e<=3);return!(i>4&&0===Br(Pn(this.d49(),n+4|0))||(t&&(this.d42_1=n+4|0),0))},tt(Vr).t46=function(t,n){return t=t===rt||t,n===rt?this.i46(t):n.i46.call(this,t)},tt(Vr).k49=function(){var t=this.d42_1;t:for(;-1!==(t=this.e49(t));){var n=Pn(this.d49(),t);if(n!==lt(32)&&n!==lt(10)&&n!==lt(13)&&n!==lt(9))break t;t=t+1|0}return this.d42_1=t,t},tt(Vr).j46=function(t){var n,i=this.t44();if(t){if(1!==i&&0!==i)return null;n=this.w44()}else{if(1!==i)return null;n=this.v44()}var e=n;return this.f42_1=e,e},tt(Vr).l49=function(){this.f42_1=null},tt(Vr).b8=function(t,n){var i=this.d49();return yt(rn(i,t,n))},tt(Vr).v44=function(){return null!=this.f42_1?Lr(this):this.m46()},tt(Vr).consumeString2=function(t,n,i){for(var e=i,r=n,s=Pn(t,e),u=!1;s!==lt(34);)s===lt(92)?(u=!0,-1===(e=this.e49(Rr(this,r,e)))&&this.a44("Unexpected EOF",e),r=e):(e=e+1|0)>=en(t)&&(u=!0,this.c49(r,e),-1===(e=this.e49(e))&&this.a44("Unexpected EOF",e),r=e),s=Pn(t,e);var o=u?Pr(this,r,e):this.b8(r,e);return this.d42_1=e+1|0,o},tt(Vr).n46=function(){var t,n=this.w44();return"null"===n&&!(Pn((t=this).d49(),t.d42_1-1|0)===lt(34))&&this.a44("Unexpected 'null' value instead of string literal"),n},tt(Vr).w44=function(){if(null!=this.f42_1)return Lr(this);var t=this.k49();(t>=en(this.d49())||-1===t)&&this.a44("EOF",t);var n=Br(Pn(this.d49(),t));if(1===n)return this.v44();0!==n&&this.a44("Expected beginning of the string, but got "+ui(Pn(this.d49(),t)));for(var i=!1;0===Br(Pn(this.d49(),t));)if((t=t+1|0)>=en(this.d49())){i=!0,this.c49(this.d42_1,t);var e=this.e49(t);if(-1===e)return this.d42_1=t,Pr(this,0,0);t=e}var r=i?Pr(this,this.d42_1,t):this.b8(this.d42_1,t);return this.d42_1=t,r},tt(Vr).c49=function(t,n){this.g42_1.t7(this.d49(),t,n)},tt(Vr).l46=function(t){var n=hn(),i=this.t44();if(8!==i&&6!==i)return this.w44(),st;for(;;)if(1!==(i=this.t44())){var e=i;if(8===e||6===e)n.s(i);else if(9===e){if(8!==qi(n))throw Ne(this.d42_1,"found ] instead of } at path: "+this.e42_1,this.d49());Si(n)}else if(7===e){if(6!==qi(n))throw Ne(this.d42_1,"found } instead of ] at path: "+this.e42_1,this.d49());Si(n)}else 10===e&&this.a44("Unexpected end of input due to malformed JSON during ignoring unknown keys");if(this.y44(),0===n.n())return st}else t?this.w44():this.m46()},tt(Vr).toString=function(){return"JsonReader(source='"+this.d49()+"', currentPosition="+this.d42_1+")"},tt(Vr).k46=function(t){var n=this.b8(0,this.d42_1),i=Ci(n,t);this.z43("Encountered an unknown key '"+t+"'",i,"Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.")},tt(Vr).z43=function(t,n,i){var e=0===en(i)?"":"\n"+i;throw Ne(n,t+" at path: "+this.e42_1.n44()+e,this.d49())},tt(Vr).a44=function(t,n,i,e){return n=n===rt?this.d42_1:n,i=i===rt?"":i,e===rt?this.z43(t,n,i):e.z43.call(this,t,n,i)},tt(Vr).l43=function(){var t,n=this.k49();((n=this.e49(n))>=en(this.d49())||-1===n)&&this.a44("EOF"),Pn(this.d49(),n)===lt(34)?((n=n+1|0)===en(this.d49())&&this.a44("EOF"),t=!0):t=!1;var i=t,e=new Ei(0,0),r=new Ei(0,0),s=!1,u=!1,o=!1,_=n;t:for(;n!==en(this.d49());){var h=Pn(this.d49(),n);if(h!==lt(101)&&h!==lt(69)||o)if(h===lt(45)&&o)n===_&&this.a44("Unexpected symbol '-' in numeric literal"),u=!1,n=n+1|0;else if(h===lt(43)&&o)n===_&&this.a44("Unexpected symbol '+' in numeric literal"),u=!0,n=n+1|0;else if(h!==lt(45)){if(0!==Br(h))break t;n=n+1|0;var a=Oi(h,lt(48));0<=a&&a<=9||this.a44("Unexpected symbol '"+ui(h)+"' in numeric literal"),o?r=r.ba(Dn(10)).gb(Dn(a)):(e=e.ba(Dn(10)).hb(Dn(a))).ca(new Ei(0,0))>0&&this.a44("Numeric value overflow")}else n!==_&&this.a44("Unexpected symbol '-' in numeric literal"),s=!0,n=n+1|0;else n===_&&this.a44("Unexpected symbol "+ui(h)+" in numeric literal"),u=!0,o=!0,n=n+1|0}var l,c=!(n===_);if((_===n||s&&_===(n-1|0))&&this.a44("Expected numeric literal"),i&&(c||this.a44("EOF"),Pn(this.d49(),n)!==lt(34)&&this.a44("Expected closing quotation mark"),n=n+1|0),this.d42_1=n,o){var f,v=e.f6()*function(t,n){var i;switch(n){case!1:var e=-t.f6();i=Math.pow(10,e);break;case!0:var r=t.f6();i=Math.pow(10,r);break;default:xi()}return i}(r,u);ji(),v>new Ei(-1,2147483647).f6()?f=!0:(ji(),f=v=en(t.d49())||-1===i)&&t.a44("EOF");var e=t.d49(),r=i;i=r+1|0;var s,u=Pn(e,r),o=32|ei(u),_=lt(116);if(o===ei(_))Hr(t,"rue",i),s=!0;else{var h=lt(102);o===ei(h)?(Hr(t,"alse",i),s=!1):t.a44("Expected valid boolean literal prefix, but had '"+t.w44()+"'")}return s}(this,n);return i&&(this.d42_1===en(this.d49())&&this.a44("EOF"),Pn(this.d49(),this.d42_1)!==lt(34)&&this.a44("Expected closing quotation mark"),this.d42_1=this.d42_1+1|0),e},tt(vs).d49=function(){return this.s49_1},tt(vs).e49=function(t){return t0&&c.r5(","),c.r5(get_name(v))}for(var d=u.v();d.w();){var w=d.y(),p=w.ue(),m=w.ve();if(charSequenceLength(c)>0&&c.r5(","),!(0<=m&&m<=1))throw IllegalStateException_init_$Create$(toString("Check failed."));var g=roundToInt(100*m)/100;c.r5(get_name(p)+";q="+g)}0===charSequenceLength(c)&&c.r5(get_name(this.e2o_1)),this.g2o_1=c.toString();var y,b=null==i?firstOrNull(l):i;if(null==b){var $=firstOrNull(u);y=null==$?null:$.se_1}else y=b;var k=y;this.f2o_1=null==k?Charsets_getInstance().q1k_1:k}function _init_properties_HttpPlainText_kt__iy89z1(){properties_initialized_HttpPlainText_kt_2nx4ox||(properties_initialized_HttpPlainText_kt_2nx4ox=!0,LOGGER_2=KtorSimpleLogger("io.ktor.client.plugins.HttpPlainText"))}function get_ALLOWED_FOR_REDIRECT(){return _init_properties_HttpRedirect_kt__ure7fo(),ALLOWED_FOR_REDIRECT}function get_LOGGER_3(){return _init_properties_HttpRedirect_kt__ure7fo(),LOGGER_3}function handleCall(t,n,i,e,r,s,u){var o=new $handleCallCOROUTINE$7(n,t,i,e,r,s,u);return o.ec_1=Unit_instance,o.fc_1=null,o.pc()}function HttpRedirect$Plugin$install$slambda(t,n,i){this.h2q_1=t,this.i2q_1=n,CoroutineImpl.call(this,i)}function HttpRedirect$Plugin$install$slambda_0(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.a2m(t,n,i)};return r.$arity=2,r}function $handleCallCOROUTINE$7(t,n,i,e,r,s,u){CoroutineImpl.call(this,u),this.o2p_1=t,this.p2p_1=n,this.q2p_1=i,this.r2p_1=e,this.s2p_1=r,this.t2p_1=s}function Config_1(){this.q2q_1=!0,this.r2q_1=!1}function Plugin_1(){Plugin_instance_1=this,this.o2q_1=new AttributeKey("HttpRedirect"),this.p2q_1=new EventDefinition}function Plugin_getInstance_1(){return null==Plugin_instance_1&&new Plugin_1,Plugin_instance_1}function HttpRedirect(t,n){Plugin_getInstance_1(),this.m2q_1=t,this.n2q_1=n}function isRedirect(t){_init_properties_HttpRedirect_kt__ure7fo();var n=t.t22_1;return n===Companion_getInstance_2().c21_1.t22_1||n===Companion_getInstance_2().d21_1.t22_1||n===Companion_getInstance_2().i21_1.t22_1||n===Companion_getInstance_2().j21_1.t22_1||n===Companion_getInstance_2().e21_1.t22_1}function _init_properties_HttpRedirect_kt__ure7fo(){properties_initialized_HttpRedirect_kt_klj746||(properties_initialized_HttpRedirect_kt_klj746=!0,ALLOWED_FOR_REDIRECT=setOf_0([Companion_getInstance_1().z1z_1,Companion_getInstance_1().e20_1]),LOGGER_3=KtorSimpleLogger("io.ktor.client.plugins.HttpRedirect"))}function get_LOGGER_4(){return _init_properties_HttpRequestLifecycle_kt__jgkmfx(),LOGGER_4}function HttpRequestLifecycle$Plugin$install$slambda(t,n){this.c2r_1=t,CoroutineImpl.call(this,n)}function HttpRequestLifecycle$Plugin$install$slambda_0(t,n){var i=new HttpRequestLifecycle$Plugin$install$slambda(t,n),e=function(t,n,e){return i.m27(t,n,e)};return e.$arity=2,e}function Plugin_2(){Plugin_instance_2=this,this.h2r_1=new AttributeKey("RequestLifecycle")}function Plugin_getInstance_2(){return null==Plugin_instance_2&&new Plugin_2,Plugin_instance_2}function HttpRequestLifecycle(){Plugin_getInstance_2()}function attachToClientEngineJob(t,n){_init_properties_HttpRequestLifecycle_kt__jgkmfx();var i=n.in(attachToClientEngineJob$lambda(t));t.in(attachToClientEngineJob$lambda_0(i))}function attachToClientEngineJob$lambda(t){return function(n){return null!=n?(get_LOGGER_4().y1t("Cancelling request because engine Job failed with error: "+n),cancel_2(t,"Engine failed",n)):(get_LOGGER_4().y1t("Cancelling request because engine Job completed"),t.ks()),Unit_instance}}function attachToClientEngineJob$lambda_0(t){return function(n){return t.sp(),Unit_instance}}function _init_properties_HttpRequestLifecycle_kt__jgkmfx(){properties_initialized_HttpRequestLifecycle_kt_3hmcrf||(properties_initialized_HttpRequestLifecycle_kt_3hmcrf=!0,LOGGER_4=KtorSimpleLogger("io.ktor.client.plugins.HttpRequestLifecycle"))}function HttpSend$Plugin$install$slambda(t,n,i){this.r2r_1=t,this.s2r_1=n,CoroutineImpl.call(this,i)}function HttpSend$Plugin$install$slambda_0(t,n,i){var e=new HttpSend$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.m27(t,n,i)};return r.$arity=2,r}function $executeCOROUTINE$8(t,n,i){CoroutineImpl.call(this,i),this.g2s_1=t,this.h2s_1=n}function Config_2(){this.m2s_1=20}function Plugin_3(){Plugin_instance_3=this,this.n2s_1=new AttributeKey("HttpSend")}function Plugin_getInstance_3(){return null==Plugin_instance_3&&new Plugin_3,Plugin_instance_3}function InterceptedSender(t,n){this.q2s_1=t,this.r2s_1=n}function DefaultSender(t,n){this.i2s_1=t,this.j2s_1=n,this.k2s_1=0,this.l2s_1=null}function HttpSend(t){Plugin_getInstance_3(),t=t===VOID?20:t,this.i2n_1=t,this.j2n_1=ArrayList_init_$Create$()}function Sender(){}function SendCountExceedException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,SendCountExceedException)}function get_LOGGER_5(){return _init_properties_HttpTimeout_kt__pucqrr(),LOGGER_5}function HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,e){return t=t===VOID?null:t,n=n===VOID?null:n,i=i===VOID?null:i,HttpTimeoutCapabilityConfiguration.call(e),e.v2s(t),e.w2s(n),e.x2s(i),e}function HttpTimeoutCapabilityConfiguration_init_$Create$(t,n,i){return HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,objectCreate(protoOf(HttpTimeoutCapabilityConfiguration)))}function checkTimeoutValue(t,n){if(!(null==n||n.ca(new Long(0,0))>0))throw IllegalArgumentException_init_$Create$(toString("Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS"));return n}function Companion_2(){Companion_instance_3=this,this.y2s_1=new AttributeKey("TimeoutConfiguration")}function Companion_getInstance_9(){return null==Companion_instance_3&&new Companion_2,Companion_instance_3}function HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e){this.h2t_1=t,this.i2t_1=n,this.j2t_1=i,CoroutineImpl.call(this,e)}function HttpTimeout$Plugin$install$slambda$slambda_0(t,n,i,e){var r=new HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e),s=function(t,n){return r.a1h(t,n)};return s.$arity=1,s}function HttpTimeout$Plugin$install$slambda$lambda(t){return function(n){return t.on(),Unit_instance}}function HttpTimeout$Plugin$install$slambda(t,n,i){this.t2t_1=t,this.u2t_1=n,CoroutineImpl.call(this,i)}function HttpTimeout$Plugin$install$slambda_0(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.a2m(t,n,i)};return r.$arity=2,r}function HttpTimeoutCapabilityConfiguration(){Companion_getInstance_9(),this.s2s_1=new Long(0,0),this.t2s_1=new Long(0,0),this.u2s_1=new Long(0,0)}function hasNotNullTimeouts(t){return null!=t.c2u_1||null!=t.d2u_1||!(null==t.e2u_1)}function Plugin_4(){Plugin_instance_4=this,this.h2u_1=new AttributeKey("TimeoutPlugin"),this.i2u_1=new Long(-1,2147483647)}function Plugin_getInstance_4(){return null==Plugin_instance_4&&new Plugin_4,Plugin_instance_4}function HttpTimeout(t,n,i){Plugin_getInstance_4(),this.c2u_1=t,this.d2u_1=n,this.e2u_1=i}function HttpRequestTimeoutException_init_$Init$(t,n){var i=t.s28_1.o24(),e=t.z2t(Plugin_getInstance_4());return HttpRequestTimeoutException.call(n,i,null==e?null:e.g2u()),n}function HttpRequestTimeoutException_init_$Create$(t){var n=HttpRequestTimeoutException_init_$Init$(t,objectCreate(protoOf(HttpRequestTimeoutException)));return captureStack(n,HttpRequestTimeoutException_init_$Create$),n}function HttpRequestTimeoutException(t,n){IOException_init_$Init$("Request timeout has expired [url="+t+", request_timeout="+toString(null==n?"unknown":n)+" ms]",this),captureStack(this,HttpRequestTimeoutException)}function _init_properties_HttpTimeout_kt__pucqrr(){properties_initialized_HttpTimeout_kt_9oyjbd||(properties_initialized_HttpTimeout_kt_9oyjbd=!0,LOGGER_5=KtorSimpleLogger("io.ktor.client.plugins.HttpTimeout"))}function wrapWithContent(t,n){return new DelegatedCall(t.o27_1,n,t)}function DelegatedCall(t,n,i){HttpClientCall.call(this,t),this.q27_1=new DelegatedRequest(this,i.c2b()),this.r27_1=new DelegatedResponse(this,n,i.t27())}function DelegatedRequest(t,n){this.l2u_1=t,this.m2u_1=n}function DelegatedResponse(t,n,i){HttpResponse.call(this),this.n2u_1=t,this.o2u_1=n,this.p2u_1=i,this.q2u_1=this.p2u_1.gm()}function WebSocketCapability(){}function WebSocketCapability_getInstance(){return WebSocketCapability_instance}function WebSocketException_init_$Init$(t,n){return WebSocketException.call(n,t,null),n}function WebSocketException_init_$Create$(t){var n=WebSocketException_init_$Init$(t,objectCreate(protoOf(WebSocketException)));return captureStack(n,WebSocketException_init_$Create$),n}function WebSocketException(t,n){IllegalStateException_init_$Init$_1(t,n,this),captureStack(this,WebSocketException)}function ClientUpgradeContent(){}function DefaultHttpRequest(t,n){this.r2u_1=t,this.s2u_1=n.t2d_1,this.t2u_1=n.s2d_1,this.u2u_1=n.v2d_1,this.v2u_1=n.u2d_1,this.w2u_1=n.x2d_1}function HttpRequest_0(){}function Companion_3(){}function Companion_getInstance_10(){return Companion_instance_4}function HttpRequestBuilder$setCapability$lambda(){return LinkedHashMap_init_$Create$()}function HttpRequestBuilder(){this.s28_1=new URLBuilder,this.t28_1=Companion_getInstance_1().z1z_1,this.u28_1=new HeadersBuilder,this.v28_1=EmptyContent_getInstance(),this.w28_1=SupervisorJob(),this.x28_1=AttributesJsFn(!0)}function HttpRequestData(t,n,i,e,r,s){this.s2d_1=t,this.t2d_1=n,this.u2d_1=i,this.v2d_1=e,this.w2d_1=r,this.x2d_1=s;var u=this.x2d_1.k1o(get_ENGINE_CAPABILITIES_KEY()),o=null==u?null:u.d2();this.y2d_1=null==o?emptySet():o}function HttpResponseData(t,n,i,e,r,s){this.a2a_1=t,this.b2a_1=n,this.c2a_1=i,this.d2a_1=e,this.e2a_1=r,this.f2a_1=s,this.g2a_1=GMTDate()}function url(t,n){takeFrom(t.s28_1,n)}function isUpgradeRequest(t){return t.v2d_1 instanceof ClientUpgradeContent}function Phases(){Phases_instance=this,this.q2f_1=new PipelinePhase("Before"),this.r2f_1=new PipelinePhase("State"),this.s2f_1=new PipelinePhase("Transform"),this.t2f_1=new PipelinePhase("Render"),this.u2f_1=new PipelinePhase("Send")}function Phases_getInstance(){return null==Phases_instance&&new Phases,Phases_instance}function HttpRequestPipeline(t){Phases_getInstance(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance().q2f_1,Phases_getInstance().r2f_1,Phases_getInstance().s2f_1,Phases_getInstance().t2f_1,Phases_getInstance().u2f_1]),this.g2v_1=t}function Phases_0(){Phases_instance_0=this,this.i29_1=new PipelinePhase("Before"),this.j29_1=new PipelinePhase("State"),this.k29_1=new PipelinePhase("Monitoring"),this.l29_1=new PipelinePhase("Engine"),this.m29_1=new PipelinePhase("Receive")}function Phases_getInstance_0(){return null==Phases_instance_0&&new Phases_0,Phases_instance_0}function HttpSendPipeline(t){Phases_getInstance_0(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_0().i29_1,Phases_getInstance_0().j29_1,Phases_getInstance_0().k29_1,Phases_getInstance_0().l29_1,Phases_getInstance_0().m29_1]),this.o2v_1=t}function get_BodyTypeAttributeKey(){return _init_properties_RequestBody_kt__bo3lwf(),BodyTypeAttributeKey}function _init_properties_RequestBody_kt__bo3lwf(){properties_initialized_RequestBody_kt_agyv1b||(properties_initialized_RequestBody_kt_agyv1b=!0,BodyTypeAttributeKey=new AttributeKey("BodyTypeAttributeKey"))}function DefaultHttpResponse(t,n){HttpResponse.call(this),this.p2v_1=t,this.q2v_1=n.f2a_1,this.r2v_1=n.a2a_1,this.s2v_1=n.d2a_1,this.t2v_1=n.b2a_1,this.u2v_1=n.g2a_1;var i=n.e2a_1,e=isInterface(i,ByteReadChannel)?i:null;this.v2v_1=null==e?Companion_getInstance().e1h():e,this.w2v_1=n.c2a_1}function HttpResponse(){}function get_request(t){return t.b2c().c2b()}function complete(t){var n=ensureNotNull(t.gm().kc(Key_instance));(isInterface(n,CompletableJob)?n:THROW_CCE()).ks()}function bodyAsText(t,n,i){var e=new $bodyAsTextCOROUTINE$13(t,n=n===VOID?Charsets_getInstance().q1k_1:n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()}function $bodyAsTextCOROUTINE$13(t,n,i){CoroutineImpl.call(this,i),this.f2w_1=t,this.g2w_1=n}function Phases_1(){Phases_instance_1=this,this.q29_1=new PipelinePhase("Receive"),this.r29_1=new PipelinePhase("Parse"),this.s29_1=new PipelinePhase("Transform"),this.t29_1=new PipelinePhase("State"),this.u29_1=new PipelinePhase("After")}function Phases_getInstance_1(){return null==Phases_instance_1&&new Phases_1,Phases_instance_1}function HttpResponsePipeline(t){Phases_getInstance_1(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_1().q29_1,Phases_getInstance_1().r29_1,Phases_getInstance_1().s29_1,Phases_getInstance_1().t29_1,Phases_getInstance_1().u29_1]),this.r2w_1=t}function Phases_2(){Phases_instance_2=this,this.v2f_1=new PipelinePhase("Before"),this.w2f_1=new PipelinePhase("State"),this.x2f_1=new PipelinePhase("After")}function Phases_getInstance_2(){return null==Phases_instance_2&&new Phases_2,Phases_instance_2}function HttpReceivePipeline(t){Phases_getInstance_2(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_2().v2f_1,Phases_getInstance_2().w2f_1,Phases_getInstance_2().x2f_1]),this.z2w_1=t}function HttpResponseContainer(t,n){this.a2b_1=t,this.b2b_1=n}function checkCapabilities(t){var n,i=t.a2x_1.x28_1.k1o(get_ENGINE_CAPABILITIES_KEY()),e=null==i?null:i.d2();if(null==e)n=null;else{for(var r=ArrayList_init_$Create$(),s=e.v();s.w();){var u=s.y();null!=u&&isInterface(u,HttpClientPlugin)&&r.s(u)}n=r}if(null==n);else for(var o=n.v();o.w();){var _=o.y();if(null==pluginOrNull(t.b2x_1,_))throw IllegalArgumentException_init_$Create$(toString("Consider installing "+_+" plugin because the request requires it to be installed"))}}function HttpStatement$execute$slambda(t){CoroutineImpl.call(this,t)}function HttpStatement$execute$slambda_0(t){var n=new HttpStatement$execute$slambda(t),i=function(t,i){return n.l2x(t,i)};return i.$arity=1,i}function $executeCOROUTINE$14(t,n,i){CoroutineImpl.call(this,i),this.u2x_1=t,this.v2x_1=n}function $executeUnsafeCOROUTINE$15(t,n){CoroutineImpl.call(this,n),this.l2y_1=t}function $cleanupCOROUTINE$16(t,n,i){CoroutineImpl.call(this,i),this.w2y_1=t,this.x2y_1=n}function HttpStatement(t,n){this.a2x_1=t,this.b2x_1=n,checkCapabilities(this)}function observable(t,n,i,e){return writer(GlobalScope_instance,n,!0,observable$slambda_0(i,t,e,null)).hy()}function observable$slambda(t,n,i,e){this.m2z_1=t,this.n2z_1=n,this.o2z_1=i,CoroutineImpl.call(this,e)}function observable$slambda_0(t,n,i,e){var r=new observable$slambda(t,n,i,e),s=function(t,n){return r.z2c(t,n)};return s.$arity=1,s}function get_HttpRequestCreated(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestCreated}function get_HttpRequestIsReadyForSending(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestIsReadyForSending}function get_HttpResponseReceived(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceived}function get_HttpResponseReceiveFailed(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceiveFailed}function get_HttpResponseCancelled(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseCancelled}function HttpResponseReceiveFail(t,n){this.z2z_1=t,this.a30_1=n}function _init_properties_ClientEvents_kt__xuvbz8(){properties_initialized_ClientEvents_kt_rdee4m||(properties_initialized_ClientEvents_kt_rdee4m=!0,HttpRequestCreated=new EventDefinition,HttpRequestIsReadyForSending=new EventDefinition,HttpResponseReceived=new EventDefinition,HttpResponseReceiveFailed=new EventDefinition,HttpResponseCancelled=new EventDefinition)}function EmptyContent(){EmptyContent_instance=this,NoContent.call(this),this.c30_1=new Long(0,0)}function EmptyContent_getInstance(){return null==EmptyContent_instance&&new EmptyContent,EmptyContent_instance}function buildHeaders(t){t=t===VOID?buildHeaders$lambda:t;var n=new HeadersBuilder;return t(n),n.y2()}function buildHeaders$lambda(t){return Unit_instance}function HttpClient_1(t){return t=t===VOID?HttpClient$lambda_3:t,HttpClient_0(JsClient(),t)}function HttpClient$lambda_3(t){return Unit_instance}function ioDispatcher(){return Dispatchers_getInstance().vs_1}function JsClient(){return Js_instance}function Js(){}function Js_getInstance(){return Js_instance}function createWebSocket($this,urlString_capturingHack,headers){for(var this_0=headers.g1q(),destination=ArrayList_init_$Create$(),tmp0_iterator=this_0.v();tmp0_iterator.w();){var element=tmp0_iterator.y();equals_0(element,"sec-websocket-protocol",!0)&&destination.s(element)}for(var protocolHeaderNames=destination,destination_0=ArrayList_init_$Create$(),tmp0_iterator_0=protocolHeaderNames.v();tmp0_iterator_0.w();){var element_0=tmp0_iterator_0.y(),tmp0_safe_receiver=headers.f1q(element_0);null==tmp0_safe_receiver||destination_0.s(tmp0_safe_receiver)}var this_1=flatten(destination_0),protocols=copyToArray(this_1),tmp;if(2===get_platform(PlatformUtils_getInstance()).y9_1)tmp=new WebSocket(urlString_capturingHack,protocols);else{var ws_capturingHack=eval("require")("ws"),headers_capturingHack=new JsClientEngine$createWebSocket$headers_capturingHack$1;headers.i1q(JsClientEngine$createWebSocket$lambda(headers_capturingHack)),tmp=new ws_capturingHack(urlString_capturingHack,protocols,{headers:headers_capturingHack})}return tmp}function executeWebSocketRequest(t,n,i,e){var r=new $executeWebSocketRequestCOROUTINE$18(t,n,i,e);return r.ec_1=Unit_instance,r.fc_1=null,r.pc()}function JsClientEngine$createWebSocket$headers_capturingHack$1(){}function JsClientEngine$createWebSocket$lambda(t){return function(n,i){return t[n]=joinToString(i,","),Unit_instance}}function $executeCOROUTINE$17(t,n,i){CoroutineImpl.call(this,i),this.b31_1=t,this.c31_1=n}function $executeWebSocketRequestCOROUTINE$18(t,n,i,e){CoroutineImpl.call(this,e),this.m30_1=t,this.n30_1=n,this.o30_1=i}function JsClientEngine(t){if(HttpClientEngineBase.call(this,"ktor-js"),this.l31_1=t,this.m31_1=setOf_0([Plugin_getInstance_4(),WebSocketCapability_instance]),null!=this.l31_1.o2f_1)throw IllegalStateException_init_$Create$(toString("Proxy unsupported in Js engine."))}function mapToKtor(t){return buildHeaders(mapToKtor$lambda(t))}function awaitConnection(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());if(i.fr(),!i.lp()){var e=awaitConnection$lambda(i,t);t.addEventListener("open",e),t.addEventListener("error",e),i.op(awaitConnection$lambda_0(t,e))}return i.gp()}function asString(t){var n=StringBuilder_init_$Create$(),i=JSON;return n.r5(i.stringify(t,["message","target","type","isTrusted"])),n.toString()}function JsError(t){extendThrowable(this,"Error from javascript["+t+"]."),captureStack(this,JsError),this.n31_1=t}function mapToKtor$lambda$lambda(t){return function(n,i){return t.p1q(i,n),Unit_instance}}function mapToKtor$lambda(t){return function(n){return t.forEach(mapToKtor$lambda$lambda(n)),Unit_instance}}function awaitConnection$lambda(t,n){return function(i){var e=i.type;if("open"===e){var r=t,s=_Result___init__impl__xyqfz8(n);r.qc(s)}else if("error"===e){var u=t,o=WebSocketException_init_$Create$(asString(i)),_=_Result___init__impl__xyqfz8(createFailure(o));u.qc(_)}return Unit_instance}}function awaitConnection$lambda_0(t,n){return function(i){return t.removeEventListener("open",n),t.removeEventListener("error",n),null!=i&&t.close(),Unit_instance}}function toRaw(t,n,i,e){var r=new $toRawCOROUTINE$19(t,n,i,e);return r.ec_1=Unit_instance,r.fc_1=null,r.pc()}function buildObject(t){var n={},i=null==n||null!=n?n:THROW_CCE();return t(i),i}function toRaw$lambda(t){return function(n,i){return t[n]=i,Unit_instance}}function toRaw$slambda(t,n){this.k32_1=t,CoroutineImpl.call(this,n)}function toRaw$slambda_0(t,n){var i=new toRaw$slambda(t,n),e=function(t,n){return i.z2c(t,n)};return e.$arity=1,e}function toRaw$lambda_0(t,n,i,e){return function(r){var s;r.method=t.t2d_1.h20_1,r.headers=n,s=i.c29_1?"follow":"manual",r.redirect=s;var u=e;return null==u||(r.body=new Uint8Array(toTypedArray(u))),Unit_instance}}function $toRawCOROUTINE$19(t,n,i,e){CoroutineImpl.call(this,e),this.w31_1=t,this.x31_1=n,this.y31_1=i}function asByteArray(t){return new Int8Array(t.buffer,t.byteOffset,t.length)}function readBodyBrowser(t,n){var i=n.body;return null==i?Companion_getInstance().e1h():channelFromStream(t,i)}function channelFromStream(t,n){return writer(t,VOID,VOID,channelFromStream$slambda_0(n,null)).hy()}function readChunk(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());return i.fr(),t.read().then(readChunk$lambda(i)).catch(readChunk$lambda_0(i)),i.gp()}function channelFromStream$slambda(t,n){this.u32_1=t,CoroutineImpl.call(this,n)}function channelFromStream$slambda_0(t,n){var i=new channelFromStream$slambda(t,n),e=function(t,n){return i.z2c(t,n)};return e.$arity=1,e}function readChunk$lambda(t){return function(n){var i=n.value,e=n.done||null==i?null:i,r=_Result___init__impl__xyqfz8(e);return t.qc(r),Unit_instance}}function readChunk$lambda_0(t){return function(n){var i=t,e=_Result___init__impl__xyqfz8(createFailure(n));return i.qc(e),Unit_instance}}function commonFetch(t,n,i){var e=new CancellableContinuationImpl(intercepted(i),get_MODE_CANCELLABLE());e.fr();var r=AbortController_0();n.signal=r.signal,e.op(commonFetch$lambda(r));var s=2===get_platform(PlatformUtils_getInstance()).y9_1?fetch(t,n):jsRequireNodeFetch()(t,n),u=commonFetch$lambda_0(e);return s.then(u,commonFetch$lambda_1(e)),e.gp()}function readBody(t,n){return 3===get_platform(PlatformUtils_getInstance()).y9_1?readBodyNode(t,n):readBodyBrowser(t,n)}function AbortController_0(){var tmp;if(2===get_platform(PlatformUtils_getInstance()).y9_1)tmp=new AbortController;else{var controller=eval("require")("abort-controller");tmp=new controller}return tmp}function jsRequireNodeFetch(){var tmp;try{tmp=eval("require")("node-fetch")}catch(t){var tmp_0,cause=t;throw Error_init_$Create$("Error loading module 'node-fetch': "+cause)}return tmp}function commonFetch$lambda(t){return function(n){return t.abort(),Unit_instance}}function commonFetch$lambda_0(t){return function(n){var i=_Result___init__impl__xyqfz8(n);return t.qc(i),Unit_instance}}function commonFetch$lambda_1(t){return function(n){var i=Error_init_$Create$_0("Fail to fetch",n),e=_Result___init__impl__xyqfz8(createFailure(i));return t.qc(e),Unit_instance}}function readBodyNode(t,n){return writer(t,VOID,VOID,readBodyNode$slambda_0(n,null)).hy()}function readBodyNode$slambda$lambda(t,n){return function(i){return _ChannelResult___get_isSuccess__impl__odq1z9(t.r11(asByteArray(new Uint8Array(i)))),n.pause()}}function readBodyNode$slambda$lambda_0(t,n){return function(i){var e=new JsError(i);return t.u11(e),n.hy().u11(e)}}function readBodyNode$slambda$lambda_1(t){return function(){return t.w11()}}function readBodyNode$slambda(t,n){this.i33_1=t,CoroutineImpl.call(this,n)}function readBodyNode$slambda_0(t,n){var i=new readBodyNode$slambda(t,n),e=function(t,n){return i.z2c(t,n)};return e.$arity=1,e}function platformRequestDefaultTransform(t,n,i){return null}function platformResponseDefaultTransformers(t){}function isReservedStatusCode(t,n){var i=Companion_getInstance_5().u25(t);return null==i||equals(i,Codes_CLOSED_ABNORMALLY_getInstance())}function JsWebSocketSession$lambda(t){return function(n){var i,e=n,r=e.data;if(r instanceof ArrayBuffer){var s=new Int8Array(r);i=Binary_init_$Create$(!1,s)}else{if(null==r||"string"!=typeof r){var u=IllegalStateException_init_$Create$("Unknown frame type: "+e.type);throw t.q33_1.js(u),u}i=Text_init_$Create$(r)}var o=i;return t.r33_1.r11(o),Unit_instance}}function JsWebSocketSession$lambda_0(t){return function(n){var i=WebSocketException_init_$Create$(""+n);return t.q33_1.js(i),t.r33_1.u11(i),t.s33_1.y11(),Unit_instance}}function JsWebSocketSession$lambda_1(t){return function(n){var i=n.code,e=null!=i&&"number"==typeof i?i:THROW_CCE(),r=n.reason,s=new CloseReason(e,null!=r&&"string"==typeof r?r:THROW_CCE());return t.q33_1.hs(s),t.r33_1.r11(Close_init_$Create$(s)),t.r33_1.w11(),t.s33_1.y11(),Unit_instance}}function JsWebSocketSession$slambda(t,n){this.e34_1=t,CoroutineImpl.call(this,n)}function JsWebSocketSession$slambda_0(t,n){var i=new JsWebSocketSession$slambda(t,n),e=function(t,n){return i.a1h(t,n)};return e.$arity=1,e}function JsWebSocketSession$lambda_2(t){return function(n){return null==n?t.p33_1.close():t.p33_1.close(Codes_NORMAL_getInstance().r25_1,"Client failed"),Unit_instance}}function JsWebSocketSession(t,n){this.o33_1=t,this.p33_1=n,this.q33_1=CompletableDeferred(),Factory_getInstance(),this.r33_1=Channel(2147483647),Factory_getInstance(),this.s33_1=Channel(2147483647),this.t33_1=this.r33_1,this.u33_1=this.s33_1,this.v33_1=this.q33_1,this.p33_1.binaryType="arraybuffer",this.p33_1.addEventListener("message",JsWebSocketSession$lambda(this)),this.p33_1.addEventListener("error",JsWebSocketSession$lambda_0(this)),this.p33_1.addEventListener("close",JsWebSocketSession$lambda_1(this)),launch(this,VOID,VOID,JsWebSocketSession$slambda_0(this,null));var i=this.o33_1.kc(Key_instance);null==i||i.in(JsWebSocketSession$lambda_2(this))}function unwrapCancellationException(t){for(var n=t;n instanceof CancellationException;){if(equals(n,n.cause))return t;n=n.cause}return null==n?t:n}return setMetadataFor(HttpClient$slambda,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClient$slambda_1,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$0,"$executeCOROUTINE$0",classMeta,CoroutineImpl),setMetadataFor(HttpClient,"HttpClient",classMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientConfig,"HttpClientConfig",classMeta,VOID,VOID,HttpClientConfig),setMetadataFor(Companion,"Companion",objectMeta),setMetadataFor($bodyNullableCOROUTINE$1,"$bodyNullableCOROUTINE$1",classMeta,CoroutineImpl),setMetadataFor(HttpClientCall,"HttpClientCall",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),setMetadataFor(DoubleReceiveException,"DoubleReceiveException",classMeta,IllegalStateException),setMetadataFor(NoTransformationFoundException,"NoTransformationFoundException",classMeta,UnsupportedOperationException),setMetadataFor(SavedHttpCall,"SavedHttpCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(HttpRequest_0,"HttpRequest",interfaceMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpRequest,"SavedHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpResponse,"HttpResponse",classMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpResponse,"SavedHttpResponse",classMeta,HttpResponse),setMetadataFor($saveCOROUTINE$3,"$saveCOROUTINE$3",classMeta,CoroutineImpl),setMetadataFor(UnsupportedContentTypeException,"UnsupportedContentTypeException",classMeta,IllegalStateException),setMetadataFor(ObservableContent$content$slambda,"ObservableContent$content$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(ObservableContent,"ObservableContent",classMeta,ReadChannelContent),setMetadataFor(HttpClientEngine$install$slambda,"HttpClientEngine$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClientEngine$executeWithinCallContext$slambda,"HttpClientEngine$executeWithinCallContext$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeWithinCallContextCOROUTINE$4,"$executeWithinCallContextCOROUTINE$4",classMeta,CoroutineImpl),setMetadataFor(HttpClientEngine,"HttpClientEngine",interfaceMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(ClientEngineClosedException,"ClientEngineClosedException",classMeta,IllegalStateException,VOID,ClientEngineClosedException),setMetadataFor(HttpClientEngineBase,"HttpClientEngineBase",classMeta,VOID,[HttpClientEngine],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientEngineConfig,"HttpClientEngineConfig",classMeta,VOID,VOID,HttpClientEngineConfig),setMetadataFor(Companion_0,"Companion",objectMeta),setMetadataFor(KtorCallContextElement,"KtorCallContextElement",classMeta,VOID,[Element]),setMetadataFor(HttpClientPlugin,"HttpClientPlugin",interfaceMeta),setMetadataFor(Plugin,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(BodyProgress$handle$slambda,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress$handle$slambda_1,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress,"BodyProgress",classMeta),setMetadataFor(ResponseException,"ResponseException",classMeta,IllegalStateException),setMetadataFor(RedirectResponseException,"RedirectResponseException",classMeta,ResponseException),setMetadataFor(ClientRequestException,"ClientRequestException",classMeta,ResponseException),setMetadataFor(ServerResponseException,"ServerResponseException",classMeta,ResponseException),setMetadataFor(addDefaultResponseValidation$lambda$slambda,"addDefaultResponseValidation$lambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$1$content$1,VOID,classMeta,ByteArrayContent),setMetadataFor(defaultTransformers$1$content$2,VOID,classMeta,ReadChannelContent),setMetadataFor(defaultTransformers$slambda,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(defaultTransformers$slambda$slambda,"defaultTransformers$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$slambda_1,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_1,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_3,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config,"Config",classMeta,VOID,VOID,Config),setMetadataFor(Companion_1,"Companion",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor($validateResponseCOROUTINE$5,"$validateResponseCOROUTINE$5",classMeta,CoroutineImpl),setMetadataFor($processExceptionCOROUTINE$6,"$processExceptionCOROUTINE$6",classMeta,CoroutineImpl),setMetadataFor(HttpCallValidator,"HttpCallValidator",classMeta,VOID,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(ExceptionHandlerWrapper,"ExceptionHandlerWrapper",classMeta),setMetadataFor(RequestExceptionHandlerWrapper,"RequestExceptionHandlerWrapper",classMeta),setMetadataFor(HttpRequest$1,VOID,classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpPlainText$Plugin$install$slambda,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpPlainText$Plugin$install$slambda_1,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config_0,"Config",classMeta,VOID,VOID,Config_0),setMetadataFor(Plugin_0,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(sam$kotlin_Comparator$0,"sam$kotlin_Comparator$0",classMeta),setMetadataFor(HttpPlainText,"HttpPlainText",classMeta),setMetadataFor(HttpRedirect$Plugin$install$slambda,"HttpRedirect$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($handleCallCOROUTINE$7,"$handleCallCOROUTINE$7",classMeta,CoroutineImpl),setMetadataFor(Config_1,"Config",classMeta,VOID,VOID,Config_1),setMetadataFor(Plugin_1,"Plugin",objectMeta,VOID,[HttpClientPlugin],VOID,VOID,VOID,[4]),setMetadataFor(HttpRedirect,"HttpRedirect",classMeta),setMetadataFor(HttpRequestLifecycle$Plugin$install$slambda,"HttpRequestLifecycle$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Plugin_2,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpRequestLifecycle,"HttpRequestLifecycle",classMeta),setMetadataFor(HttpSend$Plugin$install$slambda,"HttpSend$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$8,"$executeCOROUTINE$8",classMeta,CoroutineImpl),setMetadataFor(Config_2,"Config",classMeta,VOID,VOID,Config_2),setMetadataFor(Plugin_3,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(Sender,"Sender",interfaceMeta,VOID,VOID,VOID,VOID,VOID,[1]),setMetadataFor(InterceptedSender,"InterceptedSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(DefaultSender,"DefaultSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(HttpSend,"HttpSend",classMeta),setMetadataFor(SendCountExceedException,"SendCountExceedException",classMeta,IllegalStateException),setMetadataFor(Companion_2,"Companion",objectMeta),setMetadataFor(HttpTimeout$Plugin$install$slambda$slambda,"HttpTimeout$Plugin$install$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpTimeout$Plugin$install$slambda,"HttpTimeout$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpTimeoutCapabilityConfiguration,"HttpTimeoutCapabilityConfiguration",classMeta,VOID,VOID,HttpTimeoutCapabilityConfiguration_init_$Create$),setMetadataFor(Plugin_4,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpTimeout,"HttpTimeout",classMeta),setMetadataFor(HttpRequestTimeoutException,"HttpRequestTimeoutException",classMeta,IOException),setMetadataFor(DelegatedCall,"DelegatedCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(DelegatedRequest,"DelegatedRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(DelegatedResponse,"DelegatedResponse",classMeta,HttpResponse),setMetadataFor(WebSocketCapability,"WebSocketCapability",objectMeta),setMetadataFor(WebSocketException,"WebSocketException",classMeta,IllegalStateException),setMetadataFor(ClientUpgradeContent,"ClientUpgradeContent",classMeta,NoContent,VOID,VOID,VOID,VOID,[1]),setMetadataFor(DefaultHttpRequest,"DefaultHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(Companion_3,"Companion",objectMeta),setMetadataFor(HttpRequestBuilder,"HttpRequestBuilder",classMeta,VOID,VOID,HttpRequestBuilder),setMetadataFor(HttpRequestData,"HttpRequestData",classMeta),setMetadataFor(HttpResponseData,"HttpResponseData",classMeta),setMetadataFor(Phases,"Phases",objectMeta),setMetadataFor(HttpRequestPipeline,"HttpRequestPipeline",classMeta,Pipeline,VOID,HttpRequestPipeline,VOID,VOID,[2]),setMetadataFor(Phases_0,"Phases",objectMeta),setMetadataFor(HttpSendPipeline,"HttpSendPipeline",classMeta,Pipeline,VOID,HttpSendPipeline,VOID,VOID,[2]),setMetadataFor(DefaultHttpResponse,"DefaultHttpResponse",classMeta,HttpResponse),setMetadataFor($bodyAsTextCOROUTINE$13,"$bodyAsTextCOROUTINE$13",classMeta,CoroutineImpl),setMetadataFor(Phases_1,"Phases",objectMeta),setMetadataFor(HttpResponsePipeline,"HttpResponsePipeline",classMeta,Pipeline,VOID,HttpResponsePipeline,VOID,VOID,[2]),setMetadataFor(Phases_2,"Phases",objectMeta),setMetadataFor(HttpReceivePipeline,"HttpReceivePipeline",classMeta,Pipeline,VOID,HttpReceivePipeline,VOID,VOID,[2]),setMetadataFor(HttpResponseContainer,"HttpResponseContainer",classMeta),setMetadataFor(HttpStatement$execute$slambda,"HttpStatement$execute$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeCOROUTINE$14,"$executeCOROUTINE$14",classMeta,CoroutineImpl),setMetadataFor($executeUnsafeCOROUTINE$15,"$executeUnsafeCOROUTINE$15",classMeta,CoroutineImpl),setMetadataFor($cleanupCOROUTINE$16,"$cleanupCOROUTINE$16",classMeta,CoroutineImpl),setMetadataFor(HttpStatement,"HttpStatement",classMeta,VOID,VOID,VOID,VOID,VOID,[1,0]),setMetadataFor(observable$slambda,"observable$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpResponseReceiveFail,"HttpResponseReceiveFail",classMeta),setMetadataFor(EmptyContent,"EmptyContent",objectMeta,NoContent),setMetadataFor(Js,"Js",objectMeta),setMetadataFor(JsClientEngine$createWebSocket$headers_capturingHack$1,VOID,classMeta),setMetadataFor($executeCOROUTINE$17,"$executeCOROUTINE$17",classMeta,CoroutineImpl),setMetadataFor($executeWebSocketRequestCOROUTINE$18,"$executeWebSocketRequestCOROUTINE$18",classMeta,CoroutineImpl),setMetadataFor(JsClientEngine,"JsClientEngine",classMeta,HttpClientEngineBase,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(JsError,"JsError",classMeta,Error),setMetadataFor(toRaw$slambda,"toRaw$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($toRawCOROUTINE$19,"$toRawCOROUTINE$19",classMeta,CoroutineImpl),setMetadataFor(channelFromStream$slambda,"channelFromStream$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(readBodyNode$slambda,"readBodyNode$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession$slambda,"JsWebSocketSession$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession,"JsWebSocketSession",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),protoOf(HttpClient$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpClient$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClient$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,!(this.k27_1 instanceof HttpClientCall)){var n="Error: HttpClientCall expected, but found "+toString(this.k27_1)+"("+getKClassFromExpression(this.k27_1)+").";throw IllegalStateException_init_$Create$(toString(n))}if(this.cc_1=1,(t=this.i27_1.v26_1.b1t(Unit_instance,this.k27_1.t27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.l27_1=t,this.k27_1.u27(this.l27_1),this.cc_1=2,(t=this.j27_1.g1s(this.k27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var i=t;if(3===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpClient$slambda).n27=function(t,n,i){var e=new HttpClient$slambda(this.i27_1,i);return e.j27_1=t,e.k27_1=n,e},protoOf(HttpClient$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpClient$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpClient$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.dc_1=2,this.cc_1=1,(t=this.e28_1.h1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var n=this.fc_1;throw this.d28_1.y26_1.k25(get_HttpResponseReceiveFailed(),new HttpResponseReceiveFail(this.e28_1.c1t_1.t27(),n)),n}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,Unit_instance}}catch(t){var i=t;if(3===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpClient$slambda_1).h28=function(t,n,i){var e=new HttpClient$slambda_1(this.d28_1,i);return e.e28_1=t,e.f28_1=n,e},protoOf($executeCOROUTINE$0).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.q28_1.y26_1.k25(get_HttpRequestCreated(),this.r28_1),this.cc_1=1,(t=this.q28_1.s26_1.b1t(this.r28_1,this.r28_1.v28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t instanceof HttpClientCall?t:THROW_CCE();case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpClient).gm=function(){return this.r26_1},protoOf(HttpClient).v29=function(t,n){var i=new $executeCOROUTINE$0(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpClient).e1j=function(){if(!this.p26_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;for(var t=this.w26_1.j1o(get_PLUGIN_INSTALLED_LIST()),n=t.p1o().v();n.w();){var i=n.y(),e=t.j1o(i instanceof AttributeKey?i:THROW_CCE());isInterface(e,Closeable)&&e.e1j()}this.q26_1.ks(),this.o26_1&&this.m26_1.e1j()},protoOf(HttpClient).toString=function(){return"HttpClient["+this.m26_1+"]"},protoOf(HttpClientConfig).z29=function(t,n){var i=this.z28_1.q2(t.i2()),e=this.z28_1,r=t.i2(),s=HttpClientConfig$install$lambda_0(i,n);if(e.g2(r,s),this.y28_1.n2(t.i2()))return Unit_instance;var u=this.y28_1,o=t.i2(),_=HttpClientConfig$install$lambda_1(t);u.g2(o,_)},protoOf(HttpClientConfig).n29=function(t,n,i){var e;return n=n===VOID?HttpClientConfig$install$lambda:n,i===VOID?(this.z29(t,n),e=Unit_instance):e=i.z29.call(this,t,n),e},protoOf(HttpClientConfig).o29=function(t,n){this.a29_1.g2(t,n)},protoOf(HttpClientConfig).h29=function(t){for(var n=this.y28_1.e2().v();n.w();)n.y()(t);for(var i=this.a29_1.e2().v();i.w();)i.y()(t)},protoOf(HttpClientConfig).p29=function(t){this.c29_1=t.c29_1,this.d29_1=t.d29_1,this.e29_1=t.e29_1;var n=this.y28_1,i=t.y28_1;n.h2(i);var e=this.z28_1,r=t.z28_1;e.h2(r);var s=this.a29_1,u=t.a29_1;s.h2(u)},protoOf($bodyNullableCOROUTINE$1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=10,this.cc_1=1;continue t;case 1:this.cc_1=2;continue t;case 2:if(this.dc_1=9,this.dc_1=8,instanceOf(this.r2a_1.t27(),this.s2a_1.t1t_1)){this.t2a_1=this.r2a_1.t27(),this.dc_1=10,this.cc_1=7;continue t}this.cc_1=3;continue t;case 3:if(!this.r2a_1.y2a()&&!this.r2a_1.p27_1.atomicfu$compareAndSet(!1,!0))throw new DoubleReceiveException(this.r2a_1);if(this.u2a_1=this.r2a_1.h2a().k1o(Companion_getInstance_6().i2a_1),null==this.u2a_1){if(this.cc_1=4,(t=this.r2a_1.z2a(this))===get_COROUTINE_SUSPENDED())return t;continue t}this.v2a_1=this.u2a_1,this.cc_1=5;continue t;case 4:this.v2a_1=t,this.cc_1=5;continue t;case 5:if(this.w2a_1=this.v2a_1,this.x2a_1=new HttpResponseContainer(this.s2a_1,this.w2a_1),this.cc_1=6,(t=this.r2a_1.o27_1.t26_1.b1t(this.r2a_1,this.x2a_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var n=t.b2b_1,i=equals(n,NullBody_instance)?null:n;if(null!=i&&!instanceOf(i,this.s2a_1.t1t_1)){var e=getKClassFromExpression(i),r=this.s2a_1.t1t_1;throw new NoTransformationFoundException(this.r2a_1.t27(),e,r)}this.t2a_1=i,this.dc_1=10,this.cc_1=7;continue t;case 7:var s=this.t2a_1;return this.dc_1=10,complete(this.r2a_1.t27()),s;case 8:if(this.dc_1=9,this.fc_1 instanceof Error){var u=this.fc_1;throw cancel_0(this.r2a_1.t27(),"Receive failed",u),u}throw this.fc_1;case 9:this.dc_1=10;var o=this.fc_1;throw complete(this.r2a_1.t27()),o;case 10:throw this.fc_1;case 11:return this.dc_1=10,complete(this.r2a_1.t27()),Unit_instance}}catch(t){var _=t;if(10===this.dc_1)throw _;this.cc_1=this.dc_1,this.fc_1=_}},protoOf(HttpClientCall).gm=function(){return this.t27().gm()},protoOf(HttpClientCall).h2a=function(){return this.c2b().h2a()},protoOf(HttpClientCall).c2b=function(){var t=this.q27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("request")},protoOf(HttpClientCall).t27=function(){var t=this.r27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("response")},protoOf(HttpClientCall).y2a=function(){return this.s27_1},protoOf(HttpClientCall).z2a=function(t){return this.t27().d2b()},protoOf(HttpClientCall).e2b=function(t,n){var i=new $bodyNullableCOROUTINE$1(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpClientCall).toString=function(){return"HttpClientCall["+this.c2b().f2b()+", "+this.t27().g2b()+"]"},protoOf(HttpClientCall).u27=function(t){this.r27_1=t},protoOf(DoubleReceiveException).d6=function(){return this.h2b_1},protoOf(NoTransformationFoundException).d6=function(){return this.i2b_1},protoOf(SavedHttpCall).z2a=function(t){return ByteReadChannel_0(this.x2b_1)},protoOf(SavedHttpCall).y2a=function(){return this.y2b_1},protoOf(SavedHttpRequest).b2c=function(){return this.z2b_1},protoOf(SavedHttpRequest).h2a=function(){return this.a2c_1.h2a()},protoOf(SavedHttpRequest).gm=function(){return this.a2c_1.gm()},protoOf(SavedHttpRequest).y1z=function(){return this.a2c_1.y1z()},protoOf(SavedHttpRequest).c2c=function(){return this.a2c_1.c2c()},protoOf(SavedHttpRequest).f2b=function(){return this.a2c_1.f2b()},protoOf(SavedHttpResponse).b2c=function(){return this.d2c_1},protoOf(SavedHttpResponse).g2b=function(){return this.f2c_1},protoOf(SavedHttpResponse).m2c=function(){return this.g2c_1},protoOf(SavedHttpResponse).n2c=function(){return this.h2c_1},protoOf(SavedHttpResponse).o2c=function(){return this.i2c_1},protoOf(SavedHttpResponse).y1z=function(){return this.j2c_1},protoOf(SavedHttpResponse).gm=function(){return this.k2c_1},protoOf(SavedHttpResponse).d2b=function(){return this.l2c_1},protoOf($saveCOROUTINE$3).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.r2b_1.t27().d2b().z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=readBytes(t);return new SavedHttpCall(this.r2b_1.o27_1,this.r2b_1.c2b(),this.r2b_1.t27(),n);case 2:throw this.fc_1}}catch(t){var i=t;if(2===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(ObservableContent$content$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(ObservableContent$content$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(ObservableContent$content$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.x2c_1.c2d_1.b25(this.y2c_1.hy(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(ObservableContent$content$slambda).a2d=function(t,n){var i=new ObservableContent$content$slambda(this.x2c_1,n);return i.y2c_1=t,i},protoOf(ObservableContent).w24=function(){return this.c2d_1.w24()},protoOf(ObservableContent).x24=function(){return this.c2d_1.x24()},protoOf(ObservableContent).y1z=function(){return this.c2d_1.y1z()},protoOf(ObservableContent).z24=function(){return observable(this.f2d_1,this.d2d_1,this.x24(),this.e2d_1)},protoOf(HttpClientEngine$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpClientEngine$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClientEngine$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=3;var n=new HttpRequestBuilder;n.r2e(this.k2e_1.c1t_1);var i=this.l2e_1;if(null==i){n.v28_1=NullBody_instance;var e,r=JsType_instance,s=PrimitiveClasses_getInstance().x6();try{e=createKType(PrimitiveClasses_getInstance().x6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;e=null}n.s2e(typeInfoImpl(r,s,e))}else if(i instanceof OutgoingContent)n.v28_1=i,n.s2e(null);else{n.v28_1=i;var u,o=JsType_instance,_=PrimitiveClasses_getInstance().x6();try{u=createKType(PrimitiveClasses_getInstance().x6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;u=null}n.s2e(typeInfoImpl(o,_,u))}this.m2e_1=n,this.i2e_1.y26_1.k25(get_HttpRequestIsReadyForSending(),this.m2e_1);var h=this.m2e_1.y2();if(h.x2d_1.m1o(get_CLIENT_CONFIG(),this.i2e_1.z26_1),this.n2e_1=h,validateHeaders(this.n2e_1),checkExtensions(this.j2e_1,this.n2e_1),this.cc_1=1,(t=executeWithinCallContext(this.j2e_1,this.n2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.o2e_1=t,this.p2e_1=HttpClientCall_init_$Create$(this.i2e_1,this.n2e_1,this.o2e_1),this.q2e_1=this.p2e_1.t27(),this.i2e_1.y26_1.k25(get_HttpResponseReceived(),this.q2e_1),get_job(this.q2e_1.gm()).in(HttpClientEngine$install$slambda$lambda(this.i2e_1,this.q2e_1)),this.cc_1=2,(t=this.k2e_1.g1s(this.p2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var a=t;if(3===this.dc_1)throw a;this.cc_1=this.dc_1,this.fc_1=a}},protoOf(HttpClientEngine$install$slambda).n27=function(t,n,i){var e=new HttpClientEngine$install$slambda(this.i2e_1,this.j2e_1,i);return e.k2e_1=t,e.l2e_1=n,e},protoOf(HttpClientEngine$executeWithinCallContext$slambda).e2f=function(t,n){var i=this.b1h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpClientEngine$executeWithinCallContext$slambda).cd=function(t,n){return this.e2f(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpClientEngine$executeWithinCallContext$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,_get_closed__iwkfs1(this.b2f_1))throw new ClientEngineClosedException;if(this.cc_1=1,(t=this.b2f_1.f2f(this.c2f_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpClientEngine$executeWithinCallContext$slambda).b1h=function(t,n){var i=new HttpClientEngine$executeWithinCallContext$slambda(this.b2f_1,this.c2f_1,n);return i.d2f_1=t,i},protoOf($executeWithinCallContextCOROUTINE$4).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,(t=createCallContext(this.o2d_1,this.p2d_1.w2d_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.q2d_1=t,this.r2d_1=this.q2d_1.pg(new KtorCallContextElement(this.q2d_1)),this.cc_1=2,(t=async(this.o2d_1,this.r2d_1,VOID,HttpClientEngine$executeWithinCallContext$slambda_0(this.o2d_1,this.p2d_1,null)).wo(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(ClientEngineClosedException).e6=function(){return this.g2f_1},protoOf(HttpClientEngineBase).l2f=function(){return this.j2f_1},protoOf(HttpClientEngineBase).gm=function(){var t=this.k2f_1;return coroutineContext$factory(),t.j2()},protoOf(HttpClientEngineBase).e1j=function(){if(!this.i2f_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;var t=this.gm().kc(Key_instance),n=null!=t&&isInterface(t,CompletableJob)?t:null;if(null==n)return Unit_instance;n.ks()},protoOf(KtorCallContextElement).i2=function(){return Companion_instance_1},protoOf(Plugin).i2=function(){return this.y2f_1},protoOf(Plugin).z2f=function(t){return new BodyProgress},protoOf(Plugin).x29=function(t){return this.z2f(t)},protoOf(Plugin).a2g=function(t,n){handle(t,n)},protoOf(Plugin).y29=function(t,n){return this.a2g(t instanceof BodyProgress?t:THROW_CCE(),n)},protoOf(BodyProgress$handle$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(BodyProgress$handle$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n,i=this.j2g_1.c1t_1.x28_1.k1o(get_UploadProgressListenerAttributeKey());if(null==i)return Unit_instance;n=i,this.l2g_1=n;var e=this.k2g_1;if(this.m2g_1=new ObservableContent(e instanceof OutgoingContent?e:THROW_CCE(),this.j2g_1.c1t_1.w28_1,this.l2g_1),this.cc_1=1,(t=this.j2g_1.g1s(this.m2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var r=t;if(2===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(BodyProgress$handle$slambda).n27=function(t,n,i){var e=new BodyProgress$handle$slambda(i);return e.j2g_1=t,e.k2g_1=n,e},protoOf(BodyProgress$handle$slambda_1).z2g=function(t,n,i){var e=this.a2h(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(BodyProgress$handle$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.z2g(e,n instanceof HttpResponse?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n,i=this.w2g_1.b2c().c2b().h2a().k1o(get_DownloadProgressListenerAttributeKey());if(null==i)return Unit_instance;if(n=i,this.x2g_1=n,this.y2g_1=withObservableDownload(this.w2g_1,this.x2g_1),this.cc_1=1,(t=this.v2g_1.g1s(this.y2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var e=t;if(2===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(BodyProgress$handle$slambda_1).a2h=function(t,n,i){var e=new BodyProgress$handle$slambda_1(i);return e.v2g_1=t,e.w2g_1=n,e},protoOf(RedirectResponseException).d6=function(){return this.d2h_1},protoOf(ClientRequestException).d6=function(){return this.f2h_1},protoOf(ServerResponseException).d6=function(){return this.h2h_1},protoOf(addDefaultResponseValidation$lambda$slambda).y2h=function(t,n){var i=this.z2h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(addDefaultResponseValidation$lambda$slambda).cd=function(t,n){return this.y2h(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(addDefaultResponseValidation$lambda$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=5,this.r2h_1=this.q2h_1.b2c().h2a().j1o(get_ExpectSuccessAttributeKey()),!this.r2h_1)return get_LOGGER().y1t("Skipping default response validation for "+this.q2h_1.b2c().c2b().f2b()),Unit_instance;if(this.s2h_1=this.q2h_1.g2b().t22_1,this.t2h_1=this.q2h_1.b2c(),this.s2h_1<300||this.t2h_1.h2a().l1o(get_ValidateMark()))return Unit_instance;if(this.cc_1=1,(t=save(this.t2h_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.u2h_1=t,this.u2h_1.h2a().m1o(get_ValidateMark(),Unit_instance),this.v2h_1=this.u2h_1,this.w2h_1=this.v2h_1.t27(),this.dc_1=3,this.cc_1=2,(t=bodyAsText(this.w2h_1,VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.x2h_1=t,this.dc_1=5,this.cc_1=4;continue t;case 3:if(this.dc_1=5,this.fc_1 instanceof MalformedInputException){this.fc_1,this.x2h_1="",this.cc_1=4;continue t}throw this.fc_1;case 4:this.dc_1=5;var n=this.x2h_1,i=this.s2h_1,e=300<=i&&i<=399?new RedirectResponseException(this.w2h_1,n):400<=i&&i<=499?new ClientRequestException(this.w2h_1,n):500<=i&&i<=599?new ServerResponseException(this.w2h_1,n):new ResponseException(this.w2h_1,n);throw get_LOGGER().y1t("Default response validation for "+this.q2h_1.b2c().c2b().f2b()+" failed with "+e),e;case 5:throw this.fc_1}}catch(t){var r=t;if(5===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(addDefaultResponseValidation$lambda$slambda).z2h=function(t,n){var i=new addDefaultResponseValidation$lambda$slambda(n);return i.q2h_1=t,i},protoOf(defaultTransformers$1$content$1).w24=function(){return this.f2i_1},protoOf(defaultTransformers$1$content$1).x24=function(){return this.g2i_1},protoOf(defaultTransformers$1$content$1).d25=function(){return this.h2i_1},protoOf(defaultTransformers$1$content$2).x24=function(){return this.j2i_1},protoOf(defaultTransformers$1$content$2).w24=function(){return this.k2i_1},protoOf(defaultTransformers$1$content$2).z24=function(){return this.l2i_1},protoOf(defaultTransformers$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(defaultTransformers$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=3,null==this.u2i_1.c1t_1.u28_1.d1p(HttpHeaders_getInstance().w1v_1)&&this.u2i_1.c1t_1.u28_1.p1q(HttpHeaders_getInstance().w1v_1,"*/*"),this.w2i_1=contentType(this.u2i_1.c1t_1);var n,i=this.v2i_1;if("string"==typeof i){var e=this.w2i_1;n=new TextContent(this.v2i_1,null==e?Text_getInstance().f1v_1:e)}else n=isByteArray(i)?new defaultTransformers$1$content$1(this.w2i_1,this.v2i_1):isInterface(i,ByteReadChannel)?new defaultTransformers$1$content$2(this.u2i_1,this.w2i_1,this.v2i_1):i instanceof OutgoingContent?this.v2i_1:platformRequestDefaultTransform(this.w2i_1,this.u2i_1.c1t_1,this.v2i_1);this.x2i_1=n;var r=this.x2i_1;if(null!=(null==r?null:r.w24())){if(this.u2i_1.c1t_1.u28_1.r1q(HttpHeaders_getInstance().o1w_1),get_LOGGER_0().y1t("Transformed with default transformers request body for "+this.u2i_1.c1t_1.s28_1+" from "+getKClassFromExpression(this.v2i_1)),this.cc_1=1,(t=this.u2i_1.g1s(this.x2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=2;continue t;case 1:this.cc_1=2;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var s=t;if(3===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(defaultTransformers$slambda).n27=function(t,n,i){var e=new defaultTransformers$slambda(i);return e.u2i_1=t,e.v2i_1=n,e},protoOf(defaultTransformers$slambda$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(defaultTransformers$slambda$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(defaultTransformers$slambda$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=5,this.cc_1=1;continue t;case 1:this.dc_1=4,this.dc_1=3,this.cc_1=2;var n=this.i2j_1.hy();if(Companion_getInstance_0(),(t=copyTo(this.g2j_1,n,new Long(-1,2147483647),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.j2j_1=Unit_instance,this.dc_1=5,this.cc_1=6;continue t;case 3:if(this.dc_1=4,this.fc_1 instanceof CancellationException){var i=this.fc_1;throw cancel(this.h2j_1,i),i}if(this.fc_1 instanceof Error){var e=this.fc_1;throw cancel_0(this.h2j_1,"Receive failed",e),e}throw this.fc_1;case 4:this.dc_1=5;var r=this.fc_1;throw complete(this.h2j_1),r;case 5:throw this.fc_1;case 6:return this.dc_1=5,complete(this.h2j_1),Unit_instance}}catch(t){var s=t;if(5===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(defaultTransformers$slambda$slambda).a2d=function(t,n){var i=new defaultTransformers$slambda$slambda(this.g2j_1,this.h2j_1,n);return i.i2j_1=t,i},protoOf(defaultTransformers$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(defaultTransformers$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=11,this.u2j_1=this.t2j_1.ue(),this.v2j_1=this.t2j_1.ve();var n=this.v2j_1;if(!isInterface(n,ByteReadChannel))return Unit_instance;if(this.w2j_1=this.s2j_1.c1t_1.t27(),this.x2j_1=this.u2j_1.t1t_1,this.x2j_1.equals(getKClass(Unit))){if(cancel_1(this.v2j_1),this.cc_1=9,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,Unit_instance),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(PrimitiveClasses_getInstance().d7())){if(this.cc_1=7,(t=this.v2j_1.z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(getKClass(ByteReadPacket))||this.x2j_1.equals(getKClass(Input))){if(this.cc_1=5,(t=this.v2j_1.z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(PrimitiveClasses_getInstance().l7())){if(this.cc_1=3,(t=toByteArray(this.v2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(getKClass(ByteReadChannel))){this.z2j_1=Job(this.w2j_1.gm().kc(Key_instance));var i=this.w2j_1.gm(),e=writer(this.s2j_1,i,VOID,defaultTransformers$slambda$slambda_0(this.v2j_1,this.w2j_1,null));if(e.in(defaultTransformers$slambda$lambda(this.z2j_1)),this.a2k_1=e.hy(),this.cc_1=2,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,this.a2k_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2j_1.equals(getKClass(HttpStatusCode))){if(cancel_1(this.v2j_1),this.cc_1=1,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,this.w2j_1.g2b()),this))===get_COROUTINE_SUSPENDED())return t;continue t}this.y2j_1=null,this.cc_1=10;continue t;case 1:case 2:case 4:case 6:case 8:case 9:this.y2j_1=t,this.cc_1=10;continue t;case 3:if(this.b2k_1=t,this.c2k_1=contentLength(this.w2j_1),this.d2k_1=!PlatformUtils_getInstance().y1p_1&&null==this.w2j_1.y1z().d1p(HttpHeaders_getInstance().j1w_1),this.e2k_1=!this.s2j_1.c1t_1.c2b().c2c().equals(Companion_getInstance_1().e20_1),this.d2k_1&&this.e2k_1&&null!=this.c2k_1&&this.c2k_1.ca(new Long(0,0))>0&&this.b2k_1.length!==this.c2k_1.la()){var r="Expected "+toString_0(this.c2k_1)+", actual "+this.b2k_1.length;throw IllegalStateException_init_$Create$(toString(r))}if(this.cc_1=4,(t=this.s2j_1.g1s(new HttpResponseContainer(this.u2j_1,this.b2k_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.f2k_1=t,this.g2k_1=new HttpResponseContainer(this.u2j_1,this.f2k_1),this.cc_1=6,(t=this.s2j_1.g1s(this.g2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:if(this.h2k_1=t,this.i2k_1=this.h2k_1.h1k(),this.j2k_1=toInt(this.i2k_1),this.k2k_1=new HttpResponseContainer(this.u2j_1,this.j2k_1),this.cc_1=8,(t=this.s2j_1.g1s(this.k2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 10:return null!=this.y2j_1&&get_LOGGER_0().y1t("Transformed with default transformers response body for "+this.s2j_1.c1t_1.c2b().f2b()+" to "+this.u2j_1.t1t_1),Unit_instance;case 11:throw this.fc_1}}catch(t){var s=t;if(11===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(defaultTransformers$slambda_1).h28=function(t,n,i){var e=new defaultTransformers$slambda_1(i);return e.s2j_1=t,e.t2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpCallValidator$Companion$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=5,this.dc_1=3;var n=get_ExpectSuccessAttributeKey();if(this.x2k_1.c1t_1.x28_1.o1o(n,HttpCallValidator$Companion$install$slambda$lambda(this.w2k_1)),this.cc_1=1,(t=this.x2k_1.g1s(this.y2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=5,this.cc_1=2;continue t;case 2:return this.dc_1=5,Unit_instance;case 3:if(this.dc_1=5,this.fc_1 instanceof Error){if(this.z2k_1=this.fc_1,this.a2l_1=unwrapCancellationException(this.z2k_1),this.cc_1=4,(t=processException(this.w2k_1,this.a2l_1,HttpRequest(this.x2k_1.c1t_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.fc_1;case 4:throw this.a2l_1;case 5:throw this.fc_1}}catch(t){var i=t;if(5===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpCallValidator$Companion$install$slambda).n27=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda(this.w2k_1,i);return e.x2k_1=t,e.y2k_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpCallValidator$Companion$install$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=5,this.dc_1=3,this.cc_1=1,(t=this.k2l_1.g1s(this.l2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=5,this.cc_1=2;continue t;case 2:return this.dc_1=5,Unit_instance;case 3:if(this.dc_1=5,this.fc_1 instanceof Error){if(this.m2l_1=this.fc_1,this.n2l_1=unwrapCancellationException(this.m2l_1),this.cc_1=4,(t=processException(this.j2l_1,this.n2l_1,this.k2l_1.c1t_1.c2b(),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.fc_1;case 4:throw this.n2l_1;case 5:throw this.fc_1}}catch(t){var n=t;if(5===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_1).h28=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_1(this.j2l_1,i);return e.k2l_1=t,e.l2l_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_3).a2m=function(t,n,i){var e=this.b2m(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpCallValidator$Companion$install$slambda_3).zi=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.a2m(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_3).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,(t=this.x2l_1.v29(this.y2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.z2l_1=t,this.cc_1=2,(t=validateResponse(this.w2l_1,this.z2l_1.t27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return this.z2l_1;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_3).b2m=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_3(this.w2l_1,i);return e.x2l_1=t,e.y2l_1=n,e},protoOf(Config).d2i=function(t){this.a2i_1.s(t)},protoOf(Companion_1).i2=function(){return this.f2n_1},protoOf(Companion_1).g2n=function(t){var n=new Config;t(n);var i=n;return new HttpCallValidator(reversed(i.a2i_1),reversed(i.b2i_1),i.c2i_1)},protoOf(Companion_1).x29=function(t){return this.g2n(t)},protoOf(Companion_1).h2n=function(t,n){var i=Phases_getInstance().q2f_1;n.s26_1.g1t(i,HttpCallValidator$Companion$install$slambda_0(t,null));var e=new PipelinePhase("BeforeReceive");n.t26_1.f1t(Phases_getInstance_1().q29_1,e),n.t26_1.g1t(e,HttpCallValidator$Companion$install$slambda_2(t,null)),plugin(n,Plugin_getInstance_3()).k2n(HttpCallValidator$Companion$install$slambda_4(t,null))},protoOf(Companion_1).y29=function(t,n){return this.h2n(t instanceof HttpCallValidator?t:THROW_CCE(),n)},protoOf($validateResponseCOROUTINE$5).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4,get_LOGGER_1().y1t("Validating response for request "+this.l2m_1.b2c().c2b().f2b()),this.m2m_1=this.k2m_1.l2k_1,this.n2m_1=this.m2m_1.v(),this.cc_1=1;continue t;case 1:if(!this.n2m_1.w()){this.cc_1=3;continue t}if(this.o2m_1=this.n2m_1.y(),this.cc_1=2,(t=this.o2m_1(this.l2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.cc_1=1;continue t;case 3:return Unit_instance;case 4:throw this.fc_1}}catch(t){var n=t;if(4===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf($processExceptionCOROUTINE$6).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,get_LOGGER_1().y1t("Processing exception "+this.y2m_1+" for request "+this.z2m_1.f2b()),this.a2n_1=this.x2m_1.m2k_1,this.b2n_1=this.a2n_1.v(),this.cc_1=1;continue t;case 1:if(!this.b2n_1.w()){this.cc_1=5;continue t}if(this.c2n_1=this.b2n_1.y(),this.d2n_1=this.c2n_1,this.e2n_1=this.d2n_1,this.e2n_1 instanceof ExceptionHandlerWrapper){if(this.cc_1=3,(t=this.d2n_1.m2n_1(this.y2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.e2n_1 instanceof RequestExceptionHandlerWrapper){if(this.cc_1=2,(t=this.d2n_1.l2n_1(this.y2m_1,this.z2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=4;continue t;case 2:case 3:this.cc_1=4;continue t;case 4:this.cc_1=1;continue t;case 5:return Unit_instance;case 6:throw this.fc_1}}catch(t){var n=t;if(6===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpRequest$1).b2c=function(){throw IllegalStateException_init_$Create$(toString("Call is not initialized"))},protoOf(HttpRequest$1).c2c=function(){return this.n2n_1},protoOf(HttpRequest$1).f2b=function(){return this.o2n_1},protoOf(HttpRequest$1).h2a=function(){return this.p2n_1},protoOf(HttpRequest$1).y1z=function(){return this.q2n_1},protoOf(HttpPlainText$Plugin$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpPlainText$Plugin$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.a2o_1.h2o(this.b2o_1.c1t_1),"string"!=typeof this.c2o_1)return Unit_instance;if(this.d2o_1=contentType(this.b2o_1.c1t_1),null!=this.d2o_1&&this.d2o_1.p1v_1!==Text_getInstance().f1v_1.p1v_1)return Unit_instance;if(this.cc_1=1,(t=this.b2o_1.g1s(wrapContent(this.a2o_1,this.b2o_1.c1t_1,this.c2o_1,this.d2o_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpPlainText$Plugin$install$slambda).n27=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda(this.a2o_1,i);return e.b2o_1=t,e.c2o_1=n,e},protoOf(HttpPlainText$Plugin$install$slambda_1).g28=function(t,n,i){var e=this.h28(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpPlainText$Plugin$install$slambda_1).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda_1).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:var n;if(this.dc_1=3,this.t2o_1=this.s2o_1.ue(),this.u2o_1=this.s2o_1.ve(),this.t2o_1.t1t_1.equals(PrimitiveClasses_getInstance().h7())){var i=this.u2o_1;n=!isInterface(i,ByteReadChannel)}else n=!0;if(n)return Unit_instance;if(this.cc_1=1,(t=this.u2o_1.z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.v2o_1=t,this.w2o_1=this.q2o_1.x2o(this.r2o_1.c1t_1,this.v2o_1),this.cc_1=2,(t=this.r2o_1.g1s(new HttpResponseContainer(this.t2o_1,this.w2o_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(HttpPlainText$Plugin$install$slambda_1).h28=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda_1(this.q2o_1,i);return e.r2o_1=t,e.s2o_1=n,e},protoOf(Plugin_0).i2=function(){return this.c2p_1},protoOf(Plugin_0).d2p=function(t){var n=new Config_0;t(n);var i=n;return new HttpPlainText(i.y2o_1,i.z2o_1,i.a2p_1,i.b2p_1)},protoOf(Plugin_0).x29=function(t){return this.d2p(t)},protoOf(Plugin_0).e2p=function(t,n){var i=Phases_getInstance().t2f_1;n.s26_1.g1t(i,HttpPlainText$Plugin$install$slambda_0(t,null));var e=Phases_getInstance_1().s29_1;n.t26_1.g1t(e,HttpPlainText$Plugin$install$slambda_2(t,null))},protoOf(Plugin_0).y29=function(t,n){return this.e2p(t instanceof HttpPlainText?t:THROW_CCE(),n)},protoOf(sam$kotlin_Comparator$0).o9=function(t,n){return this.f2p_1(t,n)},protoOf(sam$kotlin_Comparator$0).compare=function(t,n){return this.o9(t,n)},protoOf(HttpPlainText).x2o=function(t,n){var i=charset_0(t.t27()),e=null==i?this.e2o_1:i;return get_LOGGER_2().y1t("Reading response body for "+t.c2b().f2b()+" as String with charset "+e),readText(n,e)},protoOf(HttpPlainText).h2o=function(t){if(null!=t.u28_1.d1p(HttpHeaders_getInstance().x1v_1))return Unit_instance;get_LOGGER_2().y1t("Adding Accept-Charset="+this.g2o_1+" to "+t.s28_1),t.u28_1.n1q(HttpHeaders_getInstance().x1v_1,this.g2o_1)},protoOf(HttpRedirect$Plugin$install$slambda).a2m=function(t,n,i){var e=this.b2m(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpRedirect$Plugin$install$slambda).zi=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.a2m(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpRedirect$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,(t=this.j2q_1.v29(this.k2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.l2q_1=t,this.h2q_1.m2q_1&&!get_ALLOWED_FOR_REDIRECT().r(this.l2q_1.c2b().c2c()))return this.l2q_1;if(this.cc_1=2,(t=handleCall(this.j2q_1,Plugin_getInstance_1(),this.k2q_1,this.l2q_1,this.h2q_1.n2q_1,this.i2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpRedirect$Plugin$install$slambda).b2m=function(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(this.h2q_1,this.i2q_1,i);return e.j2q_1=t,e.k2q_1=n,e},protoOf($handleCallCOROUTINE$7).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,!isRedirect(this.r2p_1.t27().g2b()))return this.r2p_1;this.u2p_1=this.r2p_1,this.v2p_1=this.q2p_1,this.w2p_1=this.r2p_1.c2b().f2b().l23_1,this.x2p_1=get_authority(this.r2p_1.c2b().f2b()),this.cc_1=1;continue t;case 1:this.t2p_1.y26_1.k25(this.o2p_1.p2q_1,this.u2p_1.t27()),this.y2p_1=this.u2p_1.t27().y1z().d1p(HttpHeaders_getInstance().k1x_1),get_LOGGER_3().y1t("Received redirect response to "+this.y2p_1+" for request "+this.q2p_1.s28_1);var n=new HttpRequestBuilder;n.r2e(this.v2p_1),n.s28_1.i23_1.b1();var i=this.y2p_1;if(null==i||takeFrom(n.s28_1,i),!this.s2p_1&&isSecure(this.w2p_1)&&!isSecure(n.s28_1.z22_1))return get_LOGGER_3().y1t("Can not redirect "+this.q2p_1.s28_1+" because of security downgrade"),this.u2p_1;if(this.x2p_1!==get_authority_0(n.s28_1)&&(n.u28_1.r1q(HttpHeaders_getInstance().f1w_1),get_LOGGER_3().y1t("Removing Authorization header from redirect for "+this.q2p_1.s28_1)),this.v2p_1=n,this.cc_1=2,(t=this.p2p_1.v29(this.v2p_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.u2p_1=t,!isRedirect(this.u2p_1.t27().g2b()))return this.u2p_1;this.cc_1=1;continue t;case 3:throw this.fc_1;case 4:return Unit_instance}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(Plugin_1).i2=function(){return this.o2q_1},protoOf(Plugin_1).s2q=function(t){var n=new Config_1;t(n);var i=n;return new HttpRedirect(i.q2q_1,i.r2q_1)},protoOf(Plugin_1).x29=function(t){return this.s2q(t)},protoOf(Plugin_1).t2q=function(t,n){plugin(n,Plugin_getInstance_3()).k2n(HttpRedirect$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_1).y29=function(t,n){return this.t2q(t instanceof HttpRedirect?t:THROW_CCE(),n)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpRequestLifecycle$Plugin$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.f2r_1=SupervisorJob(this.d2r_1.c1t_1.w28_1),attachToClientEngineJob(this.f2r_1,ensureNotNull(this.c2r_1.r26_1.kc(Key_instance))),this.cc_1=1;continue t;case 1:if(this.dc_1=4,this.dc_1=3,this.d2r_1.c1t_1.w28_1=this.f2r_1,this.cc_1=2,(t=this.d2r_1.h1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.g2r_1=Unit_instance,this.dc_1=6,this.cc_1=5;continue t;case 3:if(this.dc_1=4,this.fc_1 instanceof Error){var n=this.fc_1;throw this.f2r_1.js(n),n}throw this.fc_1;case 4:this.dc_1=6;var i=this.fc_1;throw this.f2r_1.ks(),i;case 5:return this.dc_1=6,this.f2r_1.ks(),Unit_instance;case 6:throw this.fc_1}}catch(t){var e=t;if(6===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},protoOf(HttpRequestLifecycle$Plugin$install$slambda).n27=function(t,n,i){var e=new HttpRequestLifecycle$Plugin$install$slambda(this.c2r_1,i);return e.d2r_1=t,e.e2r_1=n,e},protoOf(Plugin_2).i2=function(){return this.h2r_1},protoOf(Plugin_2).z2f=function(t){return new HttpRequestLifecycle},protoOf(Plugin_2).x29=function(t){return this.z2f(t)},protoOf(Plugin_2).i2r=function(t,n){var i=Phases_getInstance().q2f_1;n.s26_1.g1t(i,HttpRequestLifecycle$Plugin$install$slambda_0(n,null))},protoOf(Plugin_2).y29=function(t,n){return this.i2r(t instanceof HttpRequestLifecycle?t:THROW_CCE(),n)},protoOf(HttpSend$Plugin$install$slambda).m27=function(t,n,i){var e=this.n27(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpSend$Plugin$install$slambda).zi=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.m27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpSend$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,!(this.u2r_1 instanceof OutgoingContent)){var n=trimMargin("\n|Fail to prepare request body for sending. \n|The body type is: "+getKClassFromExpression(this.u2r_1)+", with Content-Type: "+contentType(this.t2r_1.c1t_1)+".\n|\n|If you expect serialized body, please check that you have installed the corresponding plugin(like `ContentNegotiation`) and set `Content-Type` header.");throw IllegalStateException_init_$Create$(toString(n))}var i=this.t2r_1.c1t_1,e=this.u2r_1;if(null==e){i.v28_1=NullBody_instance;var r,s=JsType_instance,u=getKClass(OutgoingContent);try{r=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;r=null}i.s2e(typeInfoImpl(s,u,r))}else if(e instanceof OutgoingContent)i.v28_1=e,i.s2e(null);else{i.v28_1=e;var o,_=JsType_instance,h=getKClass(OutgoingContent);try{o=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;o=null}i.s2e(typeInfoImpl(_,h,o))}this.v2r_1=new DefaultSender(this.r2r_1.i2n_1,this.s2r_1),this.w2r_1=this.v2r_1;for(var a=downTo(get_lastIndex(this.r2r_1.j2n_1),0).v();a.w();){var l=a.y(),c=this.r2r_1.j2n_1.h1(l);this.w2r_1=new InterceptedSender(c,this.w2r_1)}if(this.cc_1=1,(t=this.w2r_1.v29(this.t2r_1.c1t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.x2r_1=t,this.cc_1=2,(t=this.t2r_1.g1s(this.x2r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.fc_1}}catch(t){var f=t;if(3===this.dc_1)throw f;this.cc_1=this.dc_1,this.fc_1=f}},protoOf(HttpSend$Plugin$install$slambda).n27=function(t,n,i){var e=new HttpSend$Plugin$install$slambda(this.r2r_1,this.s2r_1,i);return e.t2r_1=t,e.u2r_1=n,e},protoOf($executeCOROUTINE$8).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n=this.g2s_1.l2s_1;if(null==n||cancel(n),this.g2s_1.k2s_1>=this.g2s_1.i2s_1)throw new SendCountExceedException("Max send count "+this.g2s_1.i2s_1+" exceeded. Consider increasing the property maxSendCount if more is required.");var i=this.g2s_1;if(i.k2s_1=i.k2s_1+1|0,this.cc_1=1,(t=this.g2s_1.j2s_1.u26_1.b1t(this.h2s_1,this.h2s_1.v28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var e=t instanceof HttpClientCall?t:null;if(null==e){var r="Failed to execute send pipeline. Expected [HttpClientCall], but received "+toString(t);throw IllegalStateException_init_$Create$(toString(r))}var s=e;return this.g2s_1.l2s_1=s,s;case 2:throw this.fc_1}}catch(t){var u=t;if(2===this.dc_1)throw u;this.cc_1=this.dc_1,this.fc_1=u}},protoOf(Plugin_3).i2=function(){return this.n2s_1},protoOf(Plugin_3).o2s=function(t){var n=new Config_2;return t(n),new HttpSend(n.m2s_1)},protoOf(Plugin_3).x29=function(t){return this.o2s(t)},protoOf(Plugin_3).p2s=function(t,n){var i=Phases_getInstance().u2f_1;n.s26_1.g1t(i,HttpSend$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_3).y29=function(t,n){return this.p2s(t instanceof HttpSend?t:THROW_CCE(),n)},protoOf(InterceptedSender).v29=function(t,n){return this.q2s_1(this.r2s_1,t,n)},protoOf(DefaultSender).v29=function(t,n){var i=new $executeCOROUTINE$8(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpSend).k2n=function(t){this.j2n_1.s(t)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpTimeout$Plugin$install$slambda$slambda).cd=function(t,n){return this.a1h(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=delay(this.h2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=HttpRequestTimeoutException_init_$Create$(this.i2t_1);return get_LOGGER_5().y1t("Request timeout: "+this.i2t_1.s28_1),cancel_2(this.j2t_1,ensureNotNull(n.message),n),Unit_instance;case 2:throw this.fc_1}}catch(t){var i=t;if(2===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpTimeout$Plugin$install$slambda$slambda).b1h=function(t,n){var i=new HttpTimeout$Plugin$install$slambda$slambda(this.h2t_1,this.i2t_1,this.j2t_1,n);return i.k2t_1=t,i},protoOf(HttpTimeout$Plugin$install$slambda).a2m=function(t,n,i){var e=this.b2m(t,n,i);return e.ec_1=Unit_instance,e.fc_1=null,e.pc()},protoOf(HttpTimeout$Plugin$install$slambda).zi=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.a2m(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpTimeout$Plugin$install$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=4,this.x2t_1=isWebsocket(this.w2t_1.s28_1.z22_1),this.x2t_1||this.w2t_1.v28_1 instanceof ClientUpgradeContent){if(this.cc_1=3,(t=this.v2t_1.v29(this.w2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=1;continue t;case 1:this.y2t_1=this.w2t_1.z2t(Plugin_getInstance_4()),null==this.y2t_1&&hasNotNullTimeouts(this.t2t_1)&&(this.y2t_1=HttpTimeoutCapabilityConfiguration_init_$Create$(),this.w2t_1.a2u(Plugin_getInstance_4(),this.y2t_1));var n=this.y2t_1;if(null==n);else n:do{var i=n.b2u();n.w2s(null==i?this.t2t_1.d2u_1:i);var e=n.f2u();n.x2s(null==e?this.t2t_1.e2u_1:e);var r=n.g2u();n.v2s(null==r?this.t2t_1.c2u_1:r);var s=n.g2u(),u=null==s?this.t2t_1.c2u_1:s;if(null==u||equals(u,new Long(-1,2147483647)))break n;var o=this.w2t_1.w28_1,_=launch(this.u2t_1,VOID,VOID,HttpTimeout$Plugin$install$slambda$slambda_0(u,this.w2t_1,o,null));this.w2t_1.w28_1.in(HttpTimeout$Plugin$install$slambda$lambda(_))}while(0);if(this.cc_1=2,(t=this.v2t_1.v29(this.w2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:case 3:return t;case 4:throw this.fc_1}}catch(t){var h=t;if(4===this.dc_1)throw h;this.cc_1=this.dc_1,this.fc_1=h}},protoOf(HttpTimeout$Plugin$install$slambda).b2m=function(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(this.t2t_1,this.u2t_1,i);return e.v2t_1=t,e.w2t_1=n,e},protoOf(HttpTimeoutCapabilityConfiguration).v2s=function(t){this.s2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).g2u=function(){return this.s2s_1},protoOf(HttpTimeoutCapabilityConfiguration).w2s=function(t){this.t2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).b2u=function(){return this.t2s_1},protoOf(HttpTimeoutCapabilityConfiguration).x2s=function(t){this.u2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).f2u=function(){return this.u2s_1},protoOf(HttpTimeoutCapabilityConfiguration).y2=function(){return new HttpTimeout(this.g2u(),this.b2u(),this.f2u())},protoOf(HttpTimeoutCapabilityConfiguration).equals=function(t){return!!(this===t||null!=t&&getKClassFromExpression(this).equals(getKClassFromExpression(t))&&(t instanceof HttpTimeoutCapabilityConfiguration||THROW_CCE(),equals(this.s2s_1,t.s2s_1)&&equals(this.t2s_1,t.t2s_1)&&equals(this.u2s_1,t.u2s_1)))},protoOf(HttpTimeoutCapabilityConfiguration).hashCode=function(){var t=this.s2s_1,n=null==t?null:t.hashCode(),i=null==n?0:n,e=imul(31,i),r=this.t2s_1,s=null==r?null:r.hashCode(),u=imul(31,i=e+(null==s?0:s)|0),o=this.u2s_1,_=null==o?null:o.hashCode();return u+(null==_?0:_)|0},protoOf(Plugin_4).i2=function(){return this.h2u_1},protoOf(Plugin_4).j2u=function(t){var n=HttpTimeoutCapabilityConfiguration_init_$Create$();return t(n),n.y2()},protoOf(Plugin_4).x29=function(t){return this.j2u(t)},protoOf(Plugin_4).k2u=function(t,n){plugin(n,Plugin_getInstance_3()).k2n(HttpTimeout$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_4).y29=function(t,n){return this.k2u(t instanceof HttpTimeout?t:THROW_CCE(),n)},protoOf(DelegatedRequest).b2c=function(){return this.l2u_1},protoOf(DelegatedRequest).h2a=function(){return this.m2u_1.h2a()},protoOf(DelegatedRequest).gm=function(){return this.m2u_1.gm()},protoOf(DelegatedRequest).y1z=function(){return this.m2u_1.y1z()},protoOf(DelegatedRequest).c2c=function(){return this.m2u_1.c2c()},protoOf(DelegatedRequest).f2b=function(){return this.m2u_1.f2b()},protoOf(DelegatedResponse).b2c=function(){return this.n2u_1},protoOf(DelegatedResponse).d2b=function(){return this.o2u_1},protoOf(DelegatedResponse).gm=function(){return this.q2u_1},protoOf(DelegatedResponse).g2b=function(){return this.p2u_1.g2b()},protoOf(DelegatedResponse).m2c=function(){return this.p2u_1.m2c()},protoOf(DelegatedResponse).n2c=function(){return this.p2u_1.n2c()},protoOf(DelegatedResponse).o2c=function(){return this.p2u_1.o2c()},protoOf(DelegatedResponse).y1z=function(){return this.p2u_1.y1z()},protoOf(WebSocketCapability).toString=function(){return"WebSocketCapability"},protoOf(DefaultHttpRequest).b2c=function(){return this.r2u_1},protoOf(DefaultHttpRequest).gm=function(){return this.b2c().gm()},protoOf(DefaultHttpRequest).c2c=function(){return this.s2u_1},protoOf(DefaultHttpRequest).f2b=function(){return this.t2u_1},protoOf(DefaultHttpRequest).y1z=function(){return this.v2u_1},protoOf(DefaultHttpRequest).h2a=function(){return this.w2u_1},protoOf(HttpRequestBuilder).y1z=function(){return this.u28_1},protoOf(HttpRequestBuilder).s2e=function(t){null!=t?this.x28_1.m1o(get_BodyTypeAttributeKey(),t):this.x28_1.n1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).x2u=function(){return this.x28_1.k1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).y2=function(){var t=this.s28_1.y2(),n=this.t28_1,i=this.u28_1.y2(),e=this.v28_1,r=e instanceof OutgoingContent?e:null;if(null==r){var s="No request transformation found: "+toString(this.v28_1);throw IllegalStateException_init_$Create$(toString(s))}return new HttpRequestData(t,n,i,r,this.w28_1,this.x28_1)},protoOf(HttpRequestBuilder).r2e=function(t){return this.w28_1=t.w28_1,this.y2u(t)},protoOf(HttpRequestBuilder).y2u=function(t){return this.t28_1=t.t28_1,this.v28_1=t.v28_1,this.s2e(t.x2u()),takeFrom_0(this.s28_1,t.s28_1),this.s28_1.g23_1=this.s28_1.g23_1,appendAll(this.u28_1,t.u28_1),putAll(this.x28_1,t.x28_1),this},protoOf(HttpRequestBuilder).a2u=function(t,n){var i=get_ENGINE_CAPABILITIES_KEY();this.x28_1.o1o(i,HttpRequestBuilder$setCapability$lambda).g2(t,n)},protoOf(HttpRequestBuilder).z2t=function(t){var n=this.x28_1.k1o(get_ENGINE_CAPABILITIES_KEY()),i=null==n?null:n.q2(t);return null==i||null!=i?i:THROW_CCE()},protoOf(HttpRequestData).toString=function(){return"HttpRequestData(url="+this.s2d_1+", method="+this.t2d_1+")"},protoOf(HttpResponseData).toString=function(){return"HttpResponseData=(statusCode="+this.a2a_1+")"},protoOf(HttpRequestPipeline).a1t=function(){return this.g2v_1},protoOf(HttpSendPipeline).a1t=function(){return this.o2v_1},protoOf(DefaultHttpResponse).b2c=function(){return this.p2v_1},protoOf(DefaultHttpResponse).gm=function(){return this.q2v_1},protoOf(DefaultHttpResponse).g2b=function(){return this.r2v_1},protoOf(DefaultHttpResponse).m2c=function(){return this.s2v_1},protoOf(DefaultHttpResponse).n2c=function(){return this.t2v_1},protoOf(DefaultHttpResponse).o2c=function(){return this.u2v_1},protoOf(DefaultHttpResponse).d2b=function(){return this.v2v_1},protoOf(DefaultHttpResponse).y1z=function(){return this.w2v_1},protoOf(HttpResponse).toString=function(){return"HttpResponse["+get_request(this).f2b()+", "+this.g2b()+"]"},protoOf($bodyAsTextCOROUTINE$13).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=2;var n=charset_0(this.f2w_1);this.h2w_1=null==n?this.g2w_1:n,this.i2w_1=this.h2w_1.t1k(),this.j2w_1=this.f2w_1,this.cc_1=1;var i,e=this.j2w_1.b2c(),r=JsType_instance,s=getKClass(ByteReadPacket);try{i=createKType(getKClass(ByteReadPacket),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;i=null}if((t=e.e2b(typeInfoImpl(r,s,i),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var u=t instanceof ByteReadPacket?t:THROW_CCE();return decode(this.i2w_1,u);case 2:throw this.fc_1}}catch(t){var o=t;if(2===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},protoOf(HttpResponsePipeline).a1t=function(){return this.r2w_1},protoOf(HttpReceivePipeline).a1t=function(){return this.z2w_1},protoOf(HttpResponseContainer).ue=function(){return this.a2b_1},protoOf(HttpResponseContainer).ve=function(){return this.b2b_1},protoOf(HttpResponseContainer).toString=function(){return"HttpResponseContainer(expectedType="+this.a2b_1+", response="+toString(this.b2b_1)+")"},protoOf(HttpResponseContainer).hashCode=function(){var t=this.a2b_1.hashCode();return imul(t,31)+hashCode(this.b2b_1)|0},protoOf(HttpResponseContainer).equals=function(t){if(this===t)return!0;if(!(t instanceof HttpResponseContainer))return!1;var n=t instanceof HttpResponseContainer?t:THROW_CCE();return!!this.a2b_1.equals(n.a2b_1)&&!!equals(this.b2b_1,n.b2b_1)},protoOf(HttpStatement$execute$slambda).l2x=function(t,n){var i=this.z2h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpStatement$execute$slambda).cd=function(t,n){return this.l2x(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(HttpStatement$execute$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=save(this.k2x_1.b2c(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t.t27();case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(HttpStatement$execute$slambda).z2h=function(t,n){var i=new HttpStatement$execute$slambda(n);return i.k2x_1=t,i},protoOf($executeCOROUTINE$14).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=13,this.cc_1=1;continue t;case 1:if(this.dc_1=12,this.cc_1=2,(t=this.u2x_1.b2y(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.x2x_1=t,this.cc_1=3;continue t;case 3:this.cc_1=4;continue t;case 4:if(this.dc_1=10,this.cc_1=5,(t=this.v2x_1(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:this.y2x_1=t,this.cc_1=6;continue t;case 6:if(this.z2x_1=this.y2x_1,this.dc_1=12,this.cc_1=7,(t=this.u2x_1.c2y(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:return this.z2x_1;case 8:if(this.dc_1=12,this.cc_1=9,(t=this.u2x_1.c2y(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 9:this.w2x_1=Unit_instance,this.dc_1=13,this.cc_1=15;continue t;case 10:if(this.dc_1=12,this.a2y_1=this.fc_1,this.cc_1=11,(t=this.u2x_1.c2y(this.x2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 11:throw this.a2y_1;case 12:if(this.dc_1=13,this.fc_1 instanceof CancellationException)throw unwrapCancellationException(this.fc_1);throw this.fc_1;case 13:throw this.fc_1;case 14:this.dc_1=13,this.cc_1=15;continue t;case 15:return this.w2x_1}}catch(t){var n=t;if(13===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf($executeUnsafeCOROUTINE$15).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4,this.cc_1=1;continue t;case 1:if(this.dc_1=3,this.n2y_1=(new HttpRequestBuilder).r2e(this.l2y_1.a2x_1),this.cc_1=2,(t=this.l2y_1.b2x_1.v29(this.n2y_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t.t27();case 3:if(this.dc_1=4,this.fc_1 instanceof CancellationException)throw unwrapCancellationException(this.fc_1);throw this.fc_1;case 4:throw this.fc_1;case 5:this.dc_1=4,this.cc_1=6;continue t;case 6:return this.m2y_1}}catch(t){var n=t;if(4===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf($cleanupCOROUTINE$16).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=4;var n=ensureNotNull(this.x2y_1.gm().kc(Key_instance));this.y2y_1=isInterface(n,CompletableJob)?n:THROW_CCE(),this.z2y_1=this.y2y_1,this.a2z_1=this.z2y_1,this.a2z_1.ks(),this.dc_1=1,cancel_1(this.x2y_1.d2b()),this.dc_1=4,this.cc_1=2;continue t;case 1:if(this.dc_1=4,this.fc_1 instanceof Error){this.b2z_1=this.fc_1,this.cc_1=2;continue t}throw this.fc_1;case 2:if(this.dc_1=4,this.cc_1=3,(t=this.a2z_1.ls(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:return Unit_instance;case 4:throw this.fc_1}}catch(t){var i=t;if(4===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(HttpStatement).c2z=function(t,n){var i=new $executeCOROUTINE$14(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpStatement).d2z=function(t){return this.c2z(HttpStatement$execute$slambda_0(null),t)},protoOf(HttpStatement).b2y=function(t){var n=new $executeUnsafeCOROUTINE$15(this,t);return n.ec_1=Unit_instance,n.fc_1=null,n.pc()},protoOf(HttpStatement).c2y=function(t,n){var i=new $cleanupCOROUTINE$16(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(HttpStatement).toString=function(){return"HttpStatement["+this.a2x_1.s28_1+"]"},protoOf(observable$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(observable$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(observable$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=15,this.cc_1=1;continue t;case 1:this.r2z_1=get_ByteArrayPool(),this.s2z_1=this.r2z_1.c1j(),this.cc_1=2;continue t;case 2:this.cc_1=3;continue t;case 3:this.dc_1=14,this.u2z_1=this.s2z_1;var n=this.m2z_1;this.v2z_1=null==n?new Long(-1,-1):n,this.w2z_1=new Long(0,0),this.cc_1=4;continue t;case 4:if(this.n2z_1.u1a()){this.cc_1=8;continue t}if(this.cc_1=5,(t=readAvailable(this.n2z_1,this.u2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.x2z_1=t,this.cc_1=6,(t=this.p2z_1.hy().x1f(this.u2z_1,0,this.x2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var i=this.w2z_1,e=this.x2z_1;if(this.w2z_1=i.gb(toLong(e)),this.cc_1=7,(t=this.o2z_1(this.w2z_1,this.v2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:this.cc_1=4;continue t;case 8:if(this.y2z_1=this.n2z_1.e1a(),this.p2z_1.hy().u11(this.y2z_1),null==this.y2z_1&&this.w2z_1.equals(new Long(0,0))){if(this.cc_1=9,(t=this.o2z_1(this.w2z_1,this.v2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=10;continue t;case 9:this.cc_1=10;continue t;case 10:this.t2z_1=Unit_instance,this.dc_1=15,this.cc_1=11;continue t;case 11:this.dc_1=15,this.r2z_1.d1j(this.s2z_1),this.q2z_1=Unit_instance,this.cc_1=13;continue t;case 12:this.dc_1=15,this.r2z_1.d1j(this.s2z_1),this.cc_1=13;continue t;case 13:return Unit_instance;case 14:this.dc_1=15;var r=this.fc_1;throw this.r2z_1.d1j(this.s2z_1),r;case 15:throw this.fc_1}}catch(t){var s=t;if(15===this.dc_1)throw s;this.cc_1=this.dc_1,this.fc_1=s}},protoOf(observable$slambda).a2d=function(t,n){var i=new observable$slambda(this.m2z_1,this.n2z_1,this.o2z_1,n);return i.p2z_1=t,i},protoOf(EmptyContent).x24=function(){return this.c30_1},protoOf(EmptyContent).toString=function(){return"EmptyContent"},protoOf(Js).d30=function(t){var n=new HttpClientEngineConfig;return t(n),new JsClientEngine(n)},protoOf(Js).w29=function(t){return this.d30(t)},protoOf($executeCOROUTINE$17).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=6,this.cc_1=1,(t=callContext(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.d31_1=t,this.e31_1=this.c31_1.x2d_1.j1o(get_CLIENT_CONFIG()),isUpgradeRequest(this.c31_1)){if(this.cc_1=5,(t=executeWebSocketRequest(this.b31_1,this.c31_1,this.d31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.cc_1=2;continue t;case 2:if(this.f31_1=GMTDate(),this.cc_1=3,(t=toRaw(this.c31_1,this.e31_1,this.d31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:if(this.g31_1=t,this.cc_1=4,(t=commonFetch(this.c31_1.s2d_1.toString(),this.g31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:var n=t,i=new HttpStatusCode(n.status,n.statusText),e=mapToKtor(n.headers),r=Companion_getInstance_3().j20_1,s=readBody(CoroutineScope_0(this.d31_1),n);return new HttpResponseData(i,this.f31_1,e,r,s,this.d31_1);case 5:return t;case 6:throw this.fc_1}}catch(t){var u=t;if(6===this.dc_1)throw u;this.cc_1=this.dc_1,this.fc_1=u}},protoOf($executeWebSocketRequestCOROUTINE$18).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=4,this.p30_1=GMTDate(),this.q30_1=this.n30_1.s2d_1.toString(),this.r30_1=createWebSocket(this.m30_1,this.q30_1,this.n30_1.u2d_1),this.s30_1=new JsWebSocketSession(this.o30_1,this.r30_1),this.dc_1=2,this.cc_1=1,(t=awaitConnection(this.r30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.dc_1=4,this.cc_1=3;continue t;case 2:if(this.dc_1=4,this.fc_1 instanceof Error){var n=this.fc_1;throw cancel_3(this.o30_1,CancellationException_init_$Create$_0("Failed to connect to "+this.q30_1,n)),n}throw this.fc_1;case 3:return this.dc_1=4,new HttpResponseData(Companion_getInstance_2().r20_1,this.p30_1,Companion_getInstance_4().t1v_1,Companion_getInstance_3().j20_1,this.s30_1,this.o30_1);case 4:throw this.fc_1}}catch(t){var i=t;if(4===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(JsClientEngine).g29=function(){return this.l31_1},protoOf(JsClientEngine).z2d=function(){return this.m31_1},protoOf(JsClientEngine).f2f=function(t,n){var i=new $executeCOROUTINE$17(this,t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(toRaw$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(toRaw$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(toRaw$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=2,this.cc_1=1,(t=this.k32_1.b25(this.l32_1.hy(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.fc_1}}catch(t){var n=t;if(2===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},protoOf(toRaw$slambda).a2d=function(t,n){var i=new toRaw$slambda(this.k32_1,n);return i.l32_1=t,i},protoOf($toRawCOROUTINE$19).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=4,this.z31_1={},mergeHeaders(this.w31_1.u2d_1,this.w31_1.v2d_1,toRaw$lambda(this.z31_1)),this.a32_1=this.w31_1.v2d_1,this.a32_1 instanceof ByteArrayContent){this.b32_1=this.a32_1.d25(),this.cc_1=3;continue t}if(this.a32_1 instanceof ReadChannelContent){if(this.cc_1=2,(t=this.a32_1.z24().z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.a32_1 instanceof WriteChannelContent){if(this.cc_1=1,(t=writer(GlobalScope_instance,this.y31_1,VOID,toRaw$slambda_0(this.a32_1,null)).hy().z1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.b32_1=null,this.cc_1=3;continue t;case 1:var n=t;this.b32_1=readBytes(n),this.cc_1=3;continue t;case 2:var i=t;this.b32_1=readBytes(i),this.cc_1=3;continue t;case 3:var e=this.b32_1;return buildObject(toRaw$lambda_0(this.w31_1,this.z31_1,this.x31_1,e));case 4:throw this.fc_1}}catch(t){var r=t;if(4===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(channelFromStream$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(channelFromStream$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(channelFromStream$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6,this.w32_1=this.u32_1.getReader(),this.cc_1=1;continue t;case 1:if(this.dc_1=5,this.cc_1=2,(t=readChunk(this.w32_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.x32_1=t,null==this.x32_1){this.dc_1=6,this.cc_1=8;continue t}this.y32_1=this.x32_1,this.cc_1=3;continue t;case 3:if(this.z32_1=this.y32_1,this.cc_1=4,(t=writeFully(this.v32_1.hy(),asByteArray(this.z32_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:this.v32_1.hy().v1f(),this.dc_1=6,this.cc_1=7;continue t;case 5:if(this.dc_1=6,this.fc_1 instanceof Error){var n=this.fc_1;throw this.w32_1.cancel(n),n}throw this.fc_1;case 6:throw this.fc_1;case 7:this.dc_1=6,this.cc_1=1;continue t;case 8:return Unit_instance}}catch(t){var i=t;if(6===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},protoOf(channelFromStream$slambda).a2d=function(t,n){var i=new channelFromStream$slambda(this.u32_1,n);return i.v32_1=t,i},protoOf(readBodyNode$slambda).z2c=function(t,n){var i=this.a2d(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(readBodyNode$slambda).cd=function(t,n){return this.z2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(readBodyNode$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=6;var n,i=this.i33_1.body;if(null==i)throw IllegalStateException_init_$Create$(toString("Fail to get body"));n=i,this.k33_1=n,this.l33_1=Channel(1),this.k33_1.on("data",readBodyNode$slambda$lambda(this.l33_1,this.k33_1)),this.k33_1.on("error",readBodyNode$slambda$lambda_0(this.l33_1,this.j33_1)),this.k33_1.on("end",readBodyNode$slambda$lambda_1(this.l33_1)),this.dc_1=5,this.m33_1=this.l33_1.v(),this.cc_1=1;continue t;case 1:if(this.cc_1=2,(t=this.m33_1.i11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(!t){this.cc_1=4;continue t}if(this.n33_1=this.m33_1.y(),this.cc_1=3,(t=writeFully(this.j33_1.hy(),this.n33_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:this.j33_1.hy().v1f(),this.k33_1.resume(),this.cc_1=1;continue t;case 4:this.dc_1=6,this.cc_1=7;continue t;case 5:if(this.dc_1=6,this.fc_1 instanceof Error){var e=this.fc_1;throw this.k33_1.destroy(e),e}throw this.fc_1;case 6:throw this.fc_1;case 7:return this.dc_1=6,Unit_instance}}catch(t){var r=t;if(6===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},protoOf(readBodyNode$slambda).a2d=function(t,n){var i=new readBodyNode$slambda(this.i33_1,n);return i.j33_1=t,i},protoOf(JsWebSocketSession$slambda).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=Unit_instance,i.fc_1=null,i.pc()},protoOf(JsWebSocketSession$slambda).cd=function(t,n){return this.a1h(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(JsWebSocketSession$slambda).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=10,this.g34_1=this.e34_1.s33_1,this.cc_1=1;continue t;case 1:this.i34_1=this.g34_1,this.j34_1=null,this.cc_1=2;continue t;case 2:this.cc_1=3;continue t;case 3:this.dc_1=9,this.dc_1=8,this.l34_1=this.i34_1,this.m34_1=this.l34_1.v(),this.cc_1=4;continue t;case 4:if(this.cc_1=5,(t=this.m34_1.i11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(!t){this.cc_1=6;continue t}var n=this.m34_1.y();switch(n.g26_1.y9_1){case 0:var i=n.h26_1;this.e34_1.p33_1.send(String_0(i));break;case 1:var e=n.h26_1,r=e instanceof Int8Array?e:THROW_CCE(),s=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength|0);this.e34_1.p33_1.send(s);break;case 2:var u;n:do{var o=new BytePacketBuilder;try{writeFully_0(o,n.h26_1),u=o.y2();break n}catch(t){if(t instanceof Error){var _=t;throw o.rs(),_}throw t}}while(0);var h=u,a=readShort(h),l=h.h1k();this.e34_1.q33_1.hs(new CloseReason(a,l)),isReservedStatusCode(a,this.e34_1)?this.e34_1.p33_1.close():this.e34_1.p33_1.close(a,l)}this.cc_1=4;continue t;case 6:this.k34_1=Unit_instance,this.dc_1=10,this.cc_1=7;continue t;case 7:this.dc_1=10,cancelConsumed(this.i34_1,this.j34_1),this.h34_1=Unit_instance,this.cc_1=12;continue t;case 8:if(this.dc_1=9,this.fc_1 instanceof Error){var c=this.fc_1;throw this.j34_1=c,c}throw this.fc_1;case 9:this.dc_1=10;var f=this.fc_1;throw cancelConsumed(this.i34_1,this.j34_1),f;case 10:throw this.fc_1;case 11:this.dc_1=10,cancelConsumed(this.i34_1,this.j34_1),this.cc_1=12;continue t;case 12:return Unit_instance}}catch(t){var v=t;if(10===this.dc_1)throw v;this.cc_1=this.dc_1,this.fc_1=v}},protoOf(JsWebSocketSession$slambda).b1h=function(t,n){var i=new JsWebSocketSession$slambda(this.e34_1,n);return i.f34_1=t,i},protoOf(JsWebSocketSession).gm=function(){return this.o33_1},defineProp(protoOf(DoubleReceiveException),"message",(function(){return this.d6()})),defineProp(protoOf(NoTransformationFoundException),"message",(function(){return this.d6()})),defineProp(protoOf(ClientEngineClosedException),"cause",(function(){return this.e6()})),protoOf(HttpClientEngineBase).z2d=get_supportedCapabilities,protoOf(HttpClientEngineBase).h29=install,protoOf(KtorCallContextElement).kc=get,protoOf(KtorCallContextElement).og=fold,protoOf(KtorCallContextElement).ng=minusKey,protoOf(KtorCallContextElement).pg=plus,defineProp(protoOf(RedirectResponseException),"message",(function(){return this.d6()})),defineProp(protoOf(ClientRequestException),"message",(function(){return this.d6()})),defineProp(protoOf(ServerResponseException),"message",(function(){return this.d6()})),protoOf(HttpRequest$1).gm=get_coroutineContext,Companion_instance_1=new Companion_0,WebSocketCapability_instance=new WebSocketCapability,Companion_instance_4=new Companion_3,Js_instance=new Js,_.$_$=_.$_$||{},_.$_$.a=bodyAsText,_.$_$.b=Plugin_getInstance_4,_.$_$.c=set_expectSuccess,_.$_$.d=HttpRequestBuilder,_.$_$.e=url,_.$_$.f=HttpStatement,_.$_$.g=HttpClient_1,_},__WEBPACK_AMD_DEFINE_ARRAY__=[exports,__webpack_require__(675),__webpack_require__(485),__webpack_require__(754),__webpack_require__(205),__webpack_require__(498),__webpack_require__(229),__webpack_require__(997),__webpack_require__(878)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},498:function(t,n,i){var e,r,s;r=[n,i(485),i(675),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r=n.$_$.q,s=i.$_$.ca,u=i.$_$.nb,o=e.$_$.d,_=i.$_$.fa,h=i.$_$.tg,a=i.$_$.fh,l=i.$_$.a5,c=i.$_$.mb,f=i.$_$.f;function v(){}function d(){this.j25_1=new o}function w(){}return u(v,"HandlerRegistration",s,r),u(d,"Events",s,f,f,d),u(w,"EventDefinition",s,f,f,w),c(d).k25=function(t,n){var i=null,e=this.j25_1.v1q(t);if(null==e);else for(var r=e.xt_1;!_(r,e);){if(r instanceof v){var s=r;try{var u=s.o25_1;("function"==typeof u?u:h())(n)}catch(t){if(!(t instanceof Error))throw t;var o,c=t;null==i?o=null:(a(i,c),o=l),null==o&&(i=c)}}r=r.xt_1}if(null!=i)throw i},t.$_$=t.$_$||{},t.$_$.a=w,t.$_$.b=d,t})?e.apply(n,r):e)||(t.exports=s)},997:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j=Math.imul,z=n.$_$.f,T=n.$_$.f1,A=i.$_$.f,I=i.$_$.k,D=n.$_$.a5,M=i.$_$.n,N=i.$_$.o,R=i.$_$.m,P=n.$_$.y9,L=n.$_$.r2,F=n.$_$.jd,U=n.$_$.z9,H=n.$_$.rb,V=n.$_$.cg,B=n.$_$.ce,W=n.$_$.w2,Y=n.$_$.v2,G=n.$_$.e1,K=n.$_$.aa,X=n.$_$.ba,J=n.$_$.z2,Z=n.$_$.ob,Q=i.$_$.t,tt=n.$_$.ig,nt=n.$_$.n1,it=n.$_$.w9,et=n.$_$.mb,rt=n.$_$.ca,st=n.$_$.nb,ut=n.$_$.u2,ot=n.$_$.fb,_t=n.$_$.x2,ht=n.$_$.y7,at=n.$_$.z7,lt=n.$_$.y5,ct=n.$_$.l,ft=n.$_$.y2,vt=n.$_$.w8,dt=n.$_$.h8,wt=n.$_$.x7,pt=n.$_$.t7,mt=n.$_$.t6,gt=n.$_$.kb,yt=n.$_$.sd,bt=n.$_$.d5,$t=n.$_$.wa,kt=n.$_$.xd,xt=n.$_$.r7,qt=n.$_$.wd,St=n.$_$.tg,Ct=n.$_$.sa,Et=n.$_$.xf,Ot=n.$_$.ld,jt=n.$_$.lb,zt=n.$_$.a8,Tt=n.$_$.fa,At=n.$_$.la,It=n.$_$.ma,Dt=i.$_$.e,Mt=n.$_$.jg,Nt=i.$_$.l,Rt=n.$_$.o7,Pt=n.$_$.he,Lt=n.$_$.td,Ft=n.$_$.ee,Ut=e.$_$.q,Ht=n.$_$.v6,Vt=e.$_$.p,Bt=e.$_$.o,Wt=e.$_$.s,Yt=e.$_$.r,Gt=n.$_$.u6,Kt=n.$_$.gf,Xt=n.$_$.i,Jt=n.$_$.oh,Zt=n.$_$.xh,Qt=n.$_$.m,tn=n.$_$.s5,nn=n.$_$.t2,en=n.$_$.s1,rn=n.$_$.lf,sn=n.$_$.u7,un=n.$_$.zb,on=n.$_$.u,_n=n.$_$.dg,hn=n.$_$.na,an=n.$_$.de,ln=n.$_$.ue,cn=n.$_$.x9,fn=n.$_$.re,vn=n.$_$.u8,dn=n.$_$.a7,wn=n.$_$.k7,pn=n.$_$.t1,mn=e.$_$.x,gn=n.$_$.ud,yn=n.$_$.r6,bn=n.$_$.kg,$n=n.$_$.y1,kn=n.$_$.vd,xn=n.$_$.jf,qn=n.$_$.s7,Sn=e.$_$.y,Cn=e.$_$.u,En=e.$_$.t,On=n.$_$.te,jn=n.$_$.q5,zn=n.$_$.m7,Tn=n.$_$.wh,An=n.$_$.ph,In=n.$_$.c,Dn=n.$_$.tc,Mn=n.$_$.ka,Nn=n.$_$.pd,Rn=i.$_$.j,Pn=n.$_$.pb,Ln=n.$_$.bf,Fn=e.$_$.c,Un=e.$_$.v;function Hn(){return oi(),r}function Vn(){return oi(),s}function Bn(){return oi(),u}function Wn(){return oi(),_}function Yn(t,n){n=n!==z&&n,oi();var i,e,r=T();return Zn(I(A().q1k_1.u1k(),t),(i=r,e=n,function(t){return Hn().r(t)||(oi(),h).r(t)?i.s5(ot(t)):e&&32===t?i.s5(L(43)):i.r5(Qn(t)),D})),r.toString()}function Gn(t,n,i,e){return n=n===z?0:n,i=i===z?t.length:i,e=e===z?A().q1k_1:e,oi(),ti(t,n,i,!1,e)}function Kn(t,n,i,e){n=n!==z&&n,i=i!==z&&i,e=e===z?A().q1k_1:e,oi();var r,s,u,_=T();return Zn(I(e.u1k(),t),(r=i,s=_,u=n,function(t){return 32===t?r?s.s5(L(43)):s.r5("%20"):Hn().r(t)||!u&&(oi(),o).r(t)?s.s5(ot(t)):s.r5(Qn(t)),D})),_.toString()}function Xn(t,n,i,e,r){return n=n===z?0:n,i=i===z?t.length:i,e=e!==z&&e,r=r===z?A().q1k_1:r,oi(),ti(t,n,i,e,r)}function Jn(t){return oi(),function(t,n){oi();for(var i=T(),e=A().q1k_1,r=0;rs.c1c_1;)n(s.u1h());i=!1;var u=N(t,r);if(null==u)break t;r=u,i=!0}}finally{i&&R(t,r)}}}function Qn(t){oi();var n=255&t,i=P(3);return i[0]=L(37),i[1]=ni(n>>4),i[2]=ni(15&n),F(i)}function ti(t,n,i,e,r){oi();var s=n;if(s255?u/3|0:u);e>n&&o.t7(t,n,e);for(var _=e,h=null;_=i){var c=_,f=K(t);throw new ei("Incomplete trailing HEX escape: "+H(X(t,c,f))+", in "+t+" at "+_)}var v=ri(U(t,_+1|0)),d=ri(U(t,_+2|0));if(-1===v||-1===d)throw new ei("Wrong HEX escape: %"+J(U(t,_+1|0))+J(U(t,_+2|0))+", in "+t+", at "+_);var w=l;l=w+1|0,h[w]=Z(j(v,16)+d|0),_=_+3|0}o.r5(Q(h,0,l,s))}else o.s5(a),_=_+1|0}return o.toString()}function ei(t){nt(t,this),it(this,ei)}function ri(t){return oi(),L(48)<=t&&t<=L(57)?ut(t,L(48)):L(65)<=t&&t<=L(70)?ut(t,L(65))+10|0:L(97)<=t&&t<=L(102)?ut(t,L(97))+10|0:-1}function si(t){return oi(),Yn(t,!0)}function ui(t){return function(n){return t.r5(Qn(n)),D}}function oi(){if(!a){a=!0;for(var t=at(ht(_t(L(97),L(122)),_t(L(65),L(90))),_t(L(48),L(57))),n=ct(lt(t,10)),i=t.v();i.w();){var e=i.y().oa_1,l=ft(e),c=Z(l);n.s(c)}r=vt(n),s=vt(at(ht(_t(L(97),L(122)),_t(L(65),L(90))),_t(L(48),L(57)))),u=vt(at(ht(_t(L(97),L(102)),_t(L(65),L(70))),_t(L(48),L(57))));for(var f=dt([new V(L(58)),new V(L(47)),new V(L(63)),new V(L(35)),new V(L(91)),new V(L(93)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126)),new V(L(43))]),v=ct(lt(f,10)),d=f.v();d.w();){var w=d.y().oa_1,p=ft(w),m=Z(p);v.s(m)}o=v,_=dt([new V(L(58)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(43)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),wt(Vn(),dt([new V(L(33)),new V(L(35)),new V(L(36)),new V(L(38)),new V(L(43)),new V(L(45)),new V(L(46)),new V(L(94)),new V(L(95)),new V(L(96)),new V(L(124)),new V(L(126))]));for(var g=pt([new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),y=ct(lt(g,10)),b=g.v();b.w();){var $=b.y().oa_1,k=ft($),x=Z(k);y.s(x)}h=y}}function _i(t,n,i){return function(t,n,i,e){return i=i===z?mt():i,fi.call(e,t,n,t+"/"+n,i),e}(t,n,i,gt(et(fi)))}function hi(){l=this,this.e1u_1=_i("*","*")}function ai(){return null==l&&new hi,l}function li(){c=this,this.j1u_1=_i("application","*"),this.k1u_1=_i("application","atom+xml"),this.l1u_1=_i("application","cbor"),this.m1u_1=_i("application","json"),this.n1u_1=_i("application","hal+json"),this.o1u_1=_i("application","javascript"),this.p1u_1=_i("application","octet-stream"),this.q1u_1=_i("application","rss+xml"),this.r1u_1=_i("application","xml"),this.s1u_1=_i("application","xml-dtd"),this.t1u_1=_i("application","zip"),this.u1u_1=_i("application","gzip"),this.v1u_1=_i("application","x-www-form-urlencoded"),this.w1u_1=_i("application","pdf"),this.x1u_1=_i("application","vnd.openxmlformats-officedocument.spreadsheetml.sheet"),this.y1u_1=_i("application","vnd.openxmlformats-officedocument.wordprocessingml.document"),this.z1u_1=_i("application","vnd.openxmlformats-officedocument.presentationml.presentation"),this.a1v_1=_i("application","protobuf"),this.b1v_1=_i("application","wasm"),this.c1v_1=_i("application","problem+json"),this.d1v_1=_i("application","problem+xml")}function ci(){f=this,this.e1v_1=_i("text","*"),this.f1v_1=_i("text","plain"),this.g1v_1=_i("text","css"),this.h1v_1=_i("text","csv"),this.i1v_1=_i("text","html"),this.j1v_1=_i("text","javascript"),this.k1v_1=_i("text","vcard"),this.l1v_1=_i("text","xml"),this.m1v_1=_i("text","event-stream")}function fi(t,n,i,e){ai(),e=e===z?mt():e,pi.call(this,i,e),this.p1v_1=t,this.q1v_1=n}function vi(t){nt("Bad Content-Type format: "+t,this),it(this,vi)}function di(t){var n,i=t.s1v("charset");if(null==i)n=null;else{var e;try{e=Dt.s1n(i)}catch(t){if(!(t instanceof Mt))throw t;e=null}n=e}return n}function wi(){}function pi(t,n){n=n===z?mt():n,this.z1t_1=t,this.a1u_1=n}function mi(t){if(yi(),0===K(t))return!0;if(function(t){if(yi(),t.length<2)return!1;if(Lt(t)!==L(34)||Pt(t)!==L(34))return!1;var n=1;t:do{var i=qt(t,L(34),n);if(i===Ft(t))break t;for(var e=0,r=i-1|0;U(t,r)===L(92);)e=e+1|0,r=r-1|0;if(0==(e%2|0))return!1;n=i+1|0}while(nFt(t))r=te().w22_1;else{te();var s=ie();(function(t,n,i,e,r){var s=0,u=i,o=-1,_=i,h=Ft(n);if(_<=h)do{var a=_;if(_=_+1|0,s===e)return D;var l=U(n,a);l===L(38)?(oe(t,n,u,o,a,r),u=a+1|0,o=-1,s=s+1|0):l===L(61)&&-1===o&&(o=a)}while(a!==h);if(s===e)return D;oe(t,n,u,o,n.length,r)})(s,t,n,i,e),r=s.y2()}return r}function oe(t,n,i,e,r,s){if(-1===e){var u=_e(i,r,n),o=he(u,r,n);if(o>u){var _=s?Xn(n,u,o):n.substring(u,o);t.m1q(_,mt())}return D}var h=_e(i,e,n),a=he(h,e,n);if(a>h){var l=s?Xn(n,h,a):n.substring(h,a),c=_e(e+1|0,r,n),f=he(c,r,n),v=s?Xn(n,c,f,!0):n.substring(c,f);t.p1q(l,v)}}function _e(t,n,i){for(var e=t;et&&an(U(i,e-1|0));)e=e-1|0;return e}function ae(t){var n=t.a23_1;if(K(n)>0||"file"===t.z22_1.j23_1)return D;t.a23_1=ce().b24_1.m23_1,t.z22_1.equals(Ce().c24_1)&&(t.z22_1=ce().b24_1.l23_1),0===t.b23_1&&(t.b23_1=ce().b24_1.n23_1)}function le(){x=this,this.b24_1=function(t){return be(new fe,t)}(function(t){var n;if(2===Un(Fn()).y9_1){var i=function(){var t=null;"undefined"!=typeof window?t=window.location:"undefined"!=typeof self&&(t=self.location);var n="";return t&&(n=t.origin),n&&"null"!=n?n:"http://localhost"}();n=null!=i&&"string"==typeof i?i:St()}else n="http://localhost";return n}()).y2()}function ce(){return null==x&&new le,x}function fe(t,n,i,e,r,s,u,o,_){ce(),t=t===z?Ce().c24_1:t,n=n===z?"":n,i=i===z?0:i,e=e===z?null:e,r=r===z?null:r,s=s===z?mt():s,u=u===z?te().w22_1:u,o=o===z?"":o,_=_!==z&&_,this.z22_1=t,this.a23_1=n,this.b23_1=i,this.c23_1=_,this.d23_1=null==e?null:Yn(e),this.e23_1=null==r?null:Yn(r),this.f23_1=Kn(o);for(var h=ct(lt(s,10)),a=s.v();a.w();){var l=Jn(a.y());h.s(l)}this.g23_1=h,this.h23_1=function(t){var n=ie();return function(t,n){for(var i=n.g1q().v();i.w();){for(var e=i.y(),r=n.f1q(e),s=null==r?mt():r,u=Yn(e),o=ct(lt(s,10)),_=s.v();_.w();){var h=si(_.y());o.s(h)}t.m1q(u,o)}}(n,t),n}(u),this.i23_1=new Ae(this.h23_1)}function ve(t){var n=T();return n.r5(pe(t)),n.r5(t.a23_1),0!==t.b23_1&&t.b23_1!==t.z22_1.k23_1&&(n.r5(":"),n.r5(t.b23_1.toString())),n.toString()}function de(){return q}function we(t,n){n.s7(t.z22_1.j23_1);var i=t.z22_1.j23_1;if("file"===i)return function(t,n,i){t.s7("://"),t.s7(n),ln(i,L(47))||t.s5(L(47)),t.s7(i)}(n,t.a23_1,ge(t)),n;if("mailto"===i)return function(t,n,i){t.s7(":"),t.s7(n),t.s7(i)}(n,pe(t),t.a23_1),n;n.s7("://"),n.s7(ve(t)),function(t,n,i,e){!kt(n)&&!On(n,"/")&&t.s5(L(47)),t.s7(n),i.d1()&&!e||t.s7("?");for(var r=i.h1q(),s=Qt(),u=r.v();u.w();){var o,_=u.y(),h=_.i2(),a=_.j2();if(a.d1())o=qn(Zt(h,null));else{for(var l=ct(lt(a,10)),c=a.v();c.w();){var f=c.y(),v=Zt(h,f);l.s(v)}o=l}jn(s,o)}zn(s,t,"&",z,z,z,z,je)}(n,ge(t),t.h23_1,t.c23_1);var e=t.f23_1;return K(e)>0&&(n.s5(L(35)),n.s7(t.f23_1)),n}function pe(t){var n=T();return Oe(n,t.d23_1,t.e23_1),n.toString()}function me(t,n){t.g23_1=kt(n)?mt():"/"===n?ye():vn(fn(n,cn([L(47)])))}function ge(t){return function(t){if(t.d1())return"";if(1===t.n()){var n=dn(t);return 0===K(n)?"/":dn(t)}return wn(t,"/")}(t.g23_1)}function ye(){return qe(),S}function be(t,n){if(qe(),kt(n))return t;var i;try{i=function(t,n){var i;qe();t:{var e=0,r=K(n)-1|0;if(e<=r)do{var s=e;e=e+1|0;var u=U(n,s);if(!an(u)){i=s;break t}}while(e<=r);i=-1}var o,_=i;t:{var h=K(n)-1|0;if(0<=h)do{var a=h;h=h+-1|0;var l=U(n,a);if(!an(l)){o=a;break t}}while(0<=h);o=-1}var c=o+1|0,f=function(t,n,i){qe();var e=n,r=-1,s=U(t,e);for(L(97)<=s&&s<=L(122)||L(65)<=s&&s<=L(90)||(r=e);e0){var v=_,d=_+f|0,w=n.substring(v,d);t.z22_1=Ce().p24(w),_=_+(f+1|0)|0}var p=function(t,n,i,e){qe();for(var r=0;(n+r|0)=2)t:for(;;){var m,g=gn(n,mn("@/\\?#"),_),y=null==(m=g>0?g:null)?c:m;if(!(y=c)return t.g23_1=U(n,c-1|0)===L(47)?ye():mt(),t;var q,S=t;q=0===p?yn(t.g23_1,1):mt(),S.g23_1=q;var C,E=gn(n,mn("?#"),_),O=null==(C=E>0?E:null)?c:C;if(O>_){var j,T=_,A=n.substring(T,O);if(1===t.g23_1.n()){var I=dn(t.g23_1);j=0===K(I)}else j=!1;var M=j?mt():t.g23_1,N="/"===A?ye():fn(A,cn([L(47)])),R=at(1===p?ye():mt(),N);t.g23_1=at(M,R),_=O}return _0?s:null)?e:r,o=i+1|0;return ue(n.substring(o,u),z,z,!1).i1q((_=t,function(t,n){return _.h23_1.m1q(t,n),D})),u;var _}(t,n,_,c)),function(t,n,i,e){if(qe(),i0?s:null)?e:r;if(t.a23_1=n.substring(i,u),(u+1|0)?@[\\]{}',e))throw new Fi(t,r)}},et(Pi).t1z=function(t){for(var n=0,i=0;i=0?i:e}return n}(n),s=(e.ca(r)<=0?e:r).la(),u=ht(s);return function(t,n,i,e){var r=qe(ee(ve(t)),!0),s=0,u=!0,o=zi(n,1);if(null!=o){var _=o,h=1;try{t:do{var a,l,c=_,f=c.d1c_1-c.c1c_1|0;if(f>=h)try{var v,d=_,w=e-s|0,p=d.d1c_1-d.c1c_1|0;if(w0&&d.k1h(p),S=0}else S=s0)}finally{u&&ji(n,_)}}if(s=N)try{var U=M,H=U.b1c_1,V=U.c1c_1,B=U.d1c_1,W=pe(new Int8Array(H.f1h_1.buffer,H.f1h_1.byteOffset+V|0,B-V|0),r,e-s|0);i.s7(W.d1o_1),s=s+W.d1o_1.length|0;var Y=W.e1o_1;U.g1h(Y),N=A=Y>0?1:A===de()?0:A+1|0}finally{var G=M;R=G.d1c_1-G.c1c_1|0}else R=F;if(I=!1,0===R)P=Ti(n,M);else{var K;if(R0)}finally{I&&ji(n,M)}}}}(t,n,u,i),u.toString()}function bn(t,n,i,e,r){var s=e;if(s>=r)return 0;var u=0,o=Ai(n,1,null);try{var _;t:for(;;){var h=o,a=h.f1c_1-h.d1c_1|0,l=ce(t,i,s,r,h);if(!(l>=0))throw I(z("Check failed."));if(s=s+l|0,u=u+(a-(h.f1c_1-h.d1c_1|0)|0)|0,(_=s>=r?0:0===l?8:1)<=0)break t;o=Ai(n,_,o)}}finally{n.c1h()}return u+function(t,n){var i=1,e=0,r=Ai(n,1,null);try{t:for(;;){var s=r,u=s.f1c_1-s.d1c_1|0;if(i=0,e=e+(u-(s.f1c_1-s.d1c_1|0)|0)|0,!(i>0))break t;r=Ai(n,1,r)}}finally{n.c1h()}return e}(0,n)|0}function $n(){this.d1h_1=8}function kn(t){this.b1c_1=t,this.c1c_1=0,this.d1c_1=0,this.e1c_1=0,this.f1c_1=this.b1c_1.f1h_1.byteLength,this.g1c_1=this.b1c_1.f1h_1.byteLength}function xn(t,n){throw new $e("Unable to discard "+t+" bytes: only "+n+" available for reading")}function qn(t,n){throw new $e("Unable to discard "+t+" bytes: only "+n+" available for writing")}function Sn(t,n,i){var e=function(t,n,i,e){return Cn.call(e,"Not enough free space to write "+t+" of "+n+" bytes, available "+i+" bytes."),e}(t,n,i,vt(N(Cn)));return K(e,Sn),e}function Cn(t){wt(t=t===F?"Not enough free space":t,this),K(this,Cn)}function En(t,n,i){var e=n.d1c_1-n.c1c_1|0,r=Math.min(e,i);(t.f1c_1-t.d1c_1|0)<=r&&function(t,n){if(((t.f1c_1-t.d1c_1|0)+(t.g1c_1-t.f1c_1|0)|0)0&&t.s1h()}(t,r);var s=t.b1c_1,u=t.d1c_1;t.f1c_1;var o=n.b1c_1,_=n.c1c_1;n.d1c_1,o.x1h(s,_,r,u);var h=r;n.g1h(h);var a=h;return t.h1h(a),a}function On(){return h||(h=!0,o=new jn),o}function jn(t,n,i){t=t===F?4096:t,n=n===F?1e3:n,i=i===F?p:i,ze.call(this,n),this.b1i_1=t,this.c1i_1=i}function zn(t,n,i,e){i=i===F?0:i,e=e===F?n.length-i|0:e;var r=t.b1c_1,s=t.d1c_1,u=t.f1c_1-s|0;if(u=0))throw T(z("length shouldn't be negative: "+i));if(!(i<=(n.d1c_1-n.c1c_1|0))){var e="length shouldn't be greater than the source read remaining: "+i+" > "+(n.d1c_1-n.c1c_1|0);throw T(z(e))}if(!(i<=(t.f1c_1-t.d1c_1|0))){var r="length shouldn't be greater than the destination write remaining space: "+i+" > "+(t.f1c_1-t.d1c_1|0);throw T(z(r))}var s=t.b1c_1,u=t.d1c_1,o=t.f1c_1-u|0;if(o=0))throw T(z("Failed requirement."));if(!(i<=(n.f1c_1-n.d1c_1|0)))throw T(z("Failed requirement."));var e=t.b1c_1,r=t.c1c_1;if((t.d1c_1-r|0)r)!function(t,n,i,e){var r=t.k1d_1.c1j(),s=t.k1d_1.c1j();r.m1h(8),s.m1h(8),r.o1k(s),s.o1k(n.f1j()),En(r,n,i-e|0),En(s,n,e),Hn(t,r),t.b1k(Dn(s))}(t,n,i,r);else{var s=t.k1d_1.c1j();s.m1h(8),s.o1k(n.f1j()),En(s,n,i),Hn(t,s)}n.g1j(t.k1d_1)}function Yn(t){if(t.q1d_1)return null;var n=t.y1j();return null==n?(t.q1d_1=!0,null):(function(t,n){var i=Mn(t.l1d_1);if(i===di().q1f_1){if(Hn(t,n),!t.p1d_1.equals(new L(0,0)))throw I("It should be no tail remaining bytes if current tail is EmptyBuffer");var e=n.lz(),r=null==e?null:Dn(e);t.b1k(null==r?new L(0,0):r)}else i.o1k(n),t.b1k(t.p1d_1.gb(Dn(n)))}(t,n),n)}function Gn(t,n,i){for(var e=t,r=n,s=i;;){var u=e,o=u.o1d_1-u.n1d_1|0;if(o>=r)return s;var _=s.lz(),h=null==_?Yn(e):_;if(null==h)return null;var a=h;if(0!==o){var l=En(s,a,r-o|0);e.o1d_1=s.d1c_1;var c=e,f=c.p1d_1.hb(A(l));c.b1k(f),a.d1c_1>a.c1c_1?a.l1h(l):(s.o1k(null),s.o1k(a.f1j()),a.g1j(e.k1d_1));var v=s;if((v.d1c_1-v.c1c_1|0)>=r)return s;r>8&&Kn(0,r)}else s!==di().q1f_1&&e.n1k(s),s=a}}function Kn(t,n){throw I("minSize of "+n+" is too big (should be less than 8)")}function Xn(t,n){0==(n.d1c_1-n.c1c_1|0)&&t.n1k(n)}function Jn(){}function Zn(t,n,i){t=t===F?di().q1f_1:t,n=n===F?Dn(t):n,i=i===F?di().t1f():i,this.k1d_1=i,this.l1d_1=t,this.m1d_1=t.b1c_1,this.n1d_1=t.c1c_1,this.o1d_1=t.d1c_1;var e=this.o1d_1-this.n1d_1|0;this.p1d_1=n.hb(A(e)),this.q1d_1=!1}function Qn(t,n,i,e){i=i===F?0:i;var r=e=e===F?n.length-i|0:e,s=i,u=!0,o=zi(t,1);if(null!=o){var _=o;try{t:for(;;){var h=_,a=r,l=h.d1c_1-h.c1c_1|0,c=Math.min(a,l);if(An(h,n,s,c),s=s+c|0,!((r=r-c|0)>0))break t;u=!1;var f=Ti(t,_);if(null==f)break t;_=f,u=!0}}finally{u&&ji(t,_)}}r>0&&_i(r)}function ti(t,n,i){var e=i=i===F?n.f1c_1-n.d1c_1|0:i,r=0,s=!0,u=zi(t,1);if(null!=u){var o=u;try{t:for(;;){var _=o,h=e,a=_.d1c_1-_.c1c_1|0,l=Math.min(h,a);if(In(_,n,l),r=r+l|0,!((e=e-l|0)>0))break t;s=!1;var c=Ti(t,o);if(null==c)break t;o=c,s=!0}}finally{s&&ji(t,o)}}e>0&&_i(e)}function ni(t){var n=t.u19_1.c1j();return n.m1h(8),t.m1j(n),n}function ii(t,n,i,e){var r=t.w19_1;if(null==r)t.v19_1=n,t.b1a_1=0;else{r.o1k(n);var s=t.y19_1;r.i1h(s),t.b1a_1=t.b1a_1+(s-t.a1a_1|0)|0}t.w19_1=i,t.b1a_1=t.b1a_1+e|0,t.x19_1=i.b1c_1,t.y19_1=i.d1c_1,t.a1a_1=i.c1c_1,t.z19_1=i.f1c_1}function ei(t,n,i,e){n.i1h(t.y19_1);var r=n.d1c_1-n.c1c_1|0,s=i.d1c_1-i.c1c_1|0,u=be(),o=s0))break t;s=Ai(t,1,s)}}finally{t.c1h()}}function ui(t,n,i,e){var r=i=i===F?0:i,s=e=e===F?n.length-i|0:e,u=Ai(t,1,null);try{t:for(;;){var o=u,_=s,h=o.f1c_1-o.d1c_1|0,a=Math.min(_,h);if(zn(o,n,r,a),r=r+a|0,!((s=s-a|0)>0))break t;u=Ai(t,1,u)}}finally{t.c1h()}}function oi(t,n){var i,e;if(n===F){var r=t.r1d();if(r.ca(A(_t.MAX_VALUE))>0)throw T("Unable to convert to a ByteArray: packet is too big");i=r.la()}else i=n;if(0!==(n=i)){var s=new Int8Array(n);Qn(t,s,0,n),e=s}else e=Oi();return e}function _i(t){throw new $e("Premature end of stream: expected "+t+" bytes")}function hi(t,n,i){return function(t,n,i){if(0===i)return"";if((n.o1d_1-n.n1d_1|0)>=i){var e,r=qe(ve(t).s1k_1,!0),s=n.l1j(),u=n.m1d_1.f1h_1;t:try{var o=0===s.c1c_1&&i===u.byteLength?u:new DataView(u.buffer,u.byteOffset+s.c1c_1|0,i);e=r.f1o(o);break t}catch(t){if(t instanceof Error){var _=t.message;throw new ue("Failed to decode bytes: "+(null==_?"no cause provided":_))}throw t}var h=e;return n.g1h(i),h}return function(t,n,i){var e=qe(ee(ve(t)),!0),r=i,s=ht(i);t:try{var u=!0,o=zi(n,6);if(null!=o){var _=o,h=6;try{n:do{var a,l,c=_,f=c.d1c_1-c.c1c_1|0;if(f>=h)try{var v,d=_,w=d.d1c_1-d.c1c_1|0,p=r,m=Math.min(w,p);if(0===d.c1c_1&&d.b1c_1.f1h_1.byteLength===m){var g;i:{var y=d.b1c_1.f1h_1;try{g=e.b1o(y,Se(!0));break i}catch(t){if(t instanceof Error){var b=t.message;throw new ue("Failed to decode bytes: "+(null==b?"no cause provided":b))}throw t}}v=g}else{var $;i:{var k=new Int8Array(d.b1c_1.f1h_1.buffer,d.b1c_1.f1h_1.byteOffset+d.c1c_1|0,m);try{$=e.b1o(k,Se(!0));break i}catch(t){if(t instanceof Error){var x=t.message;throw new ue("Failed to decode bytes: "+(null==x?"no cause provided":x))}throw t}}v=$}var q=v;s.r5(q),d.g1h(m),h=(r=r-m|0)>0?6:0}finally{var S=_;a=S.d1c_1-S.c1c_1|0}else a=f;if(u=!1,0===a)l=Ti(n,_);else{var C;if(a0)}finally{u&&ji(n,_)}}if(r>0){var j=!0,z=zi(n,1);if(null!=z){var T=z;try{n:for(;;){var A,I=T,D=I.d1c_1-I.c1c_1|0,M=r,N=Math.min(D,M);if(0===I.c1c_1&&I.b1c_1.f1h_1.byteLength===N)A=e.f1o(I.b1c_1.f1h_1);else{var R;i:{var P=new Int8Array(I.b1c_1.f1h_1.buffer,I.b1c_1.f1h_1.byteOffset+I.c1c_1|0,N);try{R=e.b1o(P,Se(!0));break i}catch(t){if(t instanceof Error){var L=t.message;throw new ue("Failed to decode bytes: "+(null==L?"no cause provided":L))}throw t}}A=R}var F=A;s.r5(F),I.g1h(N),r=r-N|0,j=!1;var U=Ti(n,T);if(null==U)break n;T=U,j=!0}}finally{j&&ji(n,T)}}}s.r5(e.c1o());break t}catch(t){if(t instanceof Error){var H=t.message;throw new ue("Failed to decode bytes: "+(null==H?"no cause provided":H))}throw t}if(r>0)throw new $e("Not enough bytes available: had only "+(i-r|0)+" instead of "+i);return s.toString()}(t,n,i)}((i=i===F?se().q1k_1:i).t1k(),t,n)}function ai(t,n,i,e,r){if(i=i===F?0:i,e=e===F?at(n):e,(r=r===F?se().q1k_1:r)===se().q1k_1)return function(t,n,i,e){var r=i,s=Ai(t,1,null);try{var u;t:for(;;){var o=s,_=Ci(o.b1c_1,n,r,e,o.d1c_1,o.f1c_1),h=mi(_),a=gi(_);r=r+(65535&$t(h))|0;var l=65535&$t(a);if(o.h1h(l),(u=0==(65535&$t(h))&&r>>16|0);return qt(n)}(t)}function gi(t){return function(t){var n=xt(65535&t);return qt(n)}(t)}function yi(t){wt(t,this),K(this,yi)}function bi(t){throw new yi("Expected "+t+" more character bytes")}function $i(t){return 0==(t>>>16|0)}function ki(t){return t<=1114111}function xi(t){throw T("Malformed code-point "+t+" found")}function qi(t){return 55232+(t>>>10|0)|0}function Si(t){return 56320+(1023&t)|0}function Ci(t,n,i,e,r,s){St();var u=qt(-1),o=i+(65535&$t(u))|0,_=Math.min(e,o);St();var h=qt(-1),a=65535&$t(h),l=gt(s,a),c=r,f=i;t:for(;;){if(c>=l||f>=_)return pi(qt(xt(f-i|0)),qt(xt(c-r|0)));var v=f;f=v+1|0;var d=Ct(n,v),w=65535&yt(d);if(0!=(65408&w))break t;var p=c;c=p+1|0;var m=bt(w);t.f1h_1.setInt8(p,m)}return function(t,n,i,e,r,s,u,o){var _=i,h=s,a=u-3|0;for(;!((a-h|0)<=0||_>=e);){var l=_;_=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(_!==e&&Et(Ct(n,_))){var d=_;_=d+1|0,v=Ei(f,Ct(n,d))}else v=63;c=v}else c=yt(f);var w,p=c,m=h;if(0<=p&&p<=127){var g=bt(p);t.f1h_1.setInt8(m,g),w=1}else if(128<=p&&p<=2047){var y=bt(192|p>>6&31);t.f1h_1.setInt8(m,y);var b=m+1|0,$=bt(128|63&p);t.f1h_1.setInt8(b,$),w=2}else if(2048<=p&&p<=65535){var k=bt(224|p>>12&15);t.f1h_1.setInt8(m,k);var x=m+1|0,q=bt(128|p>>6&63);t.f1h_1.setInt8(x,q);var S=m+2|0,C=bt(128|63&p);t.f1h_1.setInt8(S,C),w=3}else if(65536<=p&&p<=1114111){var E=bt(240|p>>18&7);t.f1h_1.setInt8(m,E);var O=m+1|0,j=bt(128|p>>12&63);t.f1h_1.setInt8(O,j);var z=m+2|0,T=bt(128|p>>6&63);t.f1h_1.setInt8(z,T);var A=m+3|0,I=bt(128|63&p);t.f1h_1.setInt8(A,I),w=4}else xi(p);h=h+w|0}return h===a?function(t,n,i,e,r,s,u,o){var _=i,h=s;t:for(;;){var a=u-h|0;if(a<=0||_>=e)break t;var l=_;_=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(_!==e&&Et(Ct(n,_))){var d=_;_=d+1|0,v=Ei(f,Ct(n,d))}else v=63;c=v}else c=yt(f);var w,p=c;if(1<=p&&p<=127?w=1:128<=p&&p<=2047?w=2:2048<=p&&p<=65535?w=3:65536<=p&&p<=1114111?w=4:xi(p),w>a){_=_-1|0;break t}var m,g=h;if(0<=p&&p<=127){var y=bt(p);t.f1h_1.setInt8(g,y),m=1}else if(128<=p&&p<=2047){var b=bt(192|p>>6&31);t.f1h_1.setInt8(g,b);var $=g+1|0,k=bt(128|63&p);t.f1h_1.setInt8($,k),m=2}else if(2048<=p&&p<=65535){var x=bt(224|p>>12&15);t.f1h_1.setInt8(g,x);var q=g+1|0,S=bt(128|p>>6&63);t.f1h_1.setInt8(q,S);var C=g+2|0,E=bt(128|63&p);t.f1h_1.setInt8(C,E),m=3}else if(65536<=p&&p<=1114111){var O=bt(240|p>>18&7);t.f1h_1.setInt8(g,O);var j=g+1|0,z=bt(128|p>>12&63);t.f1h_1.setInt8(j,z);var T=g+2|0,A=bt(128|p>>6&63);t.f1h_1.setInt8(T,A);var I=g+3|0,D=bt(128|63&p);t.f1h_1.setInt8(I,D),m=4}else xi(p);h=h+m|0}return pi(qt(xt(_-r|0)),qt(xt(h-o|0)))}(t,n,_,e,r,h,u,o):pi(qt(xt(_-r|0)),qt(xt(h-o|0)))}(t,n,f=f-1|0,_,i,c,l,r)}function Ei(t,n){return(yt(t)-55232|0)<<10|yt(n)-56320|0}function Oi(){return Ii(),c}function ji(t,n){if(Ii(),n===t)return j;n.d1c_1>n.c1c_1?(n.g1c_1-n.f1c_1|0)<8?t.l1k(n):t.n1d_1=n.c1c_1:t.k1k(n)}function zi(t,n){return Ii(),t.i1k(n)}function Ti(t,n){return Ii(),n===t?t.g1e()?t:null:t.j1k(n)}function Ai(t,n,i){return Ii(),null!=i&&t.c1h(),t.o1j(n)}function Ii(){f||(f=!0,c=new Int8Array(0))}function Di(t,n,i){D.call(this,i),this.t1l_1=t,this.u1l_1=n}function Mi(t,n,i){D.call(this,i),this.h1l_1=t,this.i1l_1=n}function Ni(){this.j19_1=U(null)}function Ri(t,n,i,e){D.call(this,e),this.d1m_1=t,this.e1m_1=n,this.f1m_1=i}function Pi(t,n,i,e){D.call(this,e),this.s1m_1=t,this.t1m_1=n,this.u1m_1=i}function Li(){ze.call(this,128)}function Fi(){}function Ui(){}function Hi(t){return function(n){return t.q1n_1=null,null!=n&&t.jr(function(t){for(var n=t;n instanceof Y;){if(ot(n,n.cause))return t;var i=n.cause;if(null==i)return n;n=i}return n}(n)),j}}function Vi(t,n){cn.call(this,t,n),this.q1n_1=null}function Bi(){var t=new Vi(di().q1f_1,!1);return t.u11(null),t}function Wi(){w=this,this.b1n_1=Tt(Bi)}function Yi(){return null==w&&new Wi,w}function Gi(){}function Ki(){}function Xi(t,n,i,e){return i=i===F?0:i,e=e===F?n.byteLength-i|0:e,new Qi(new DataView(n,i,e))}function Ji(){m=this,this.p1k_1=new Qi(new DataView(new ArrayBuffer(0)))}function Zi(){return null==m&&new Ji,m}function Qi(t){Zi(),this.f1h_1=t}function te(t,n,i,e,r){!function(t,n,i,e,r){var s=new Int8Array(t,i,e);new Int8Array(n.f1h_1.buffer,n.f1h_1.byteOffset+r|0,e).set(s,0)}(t.buffer,n,i+t.byteOffset|0,e,r)}function ne(){}function ie(t){this.s1k_1=t}function ee(t){return t.s1k_1}function re(){y=this,this.q1k_1=new he("UTF-8"),this.r1k_1=new he("ISO-8859-1")}function se(){return null==y&&new re,y}function ue(t){Lt(this,t),K(this,ue)}function oe(t){this.t1n_1=t}function _e(t){this.u1n_1=t}function he(t){ie.call(this,t),this.w1n_1=t}function ae(t){_e.call(this,t),this.y1n_1=t}function le(t){oe.call(this,t),this.a1o_1=t}function ce(t,n,i,e,r){if(!(i<=e))throw T(z("Failed requirement."));if(fe(t).equals(se().r1k_1))return function(t,n,i,e){if(n>=i)return 0;var r=e.b1c_1,s=e.d1c_1,u=e.f1c_1,o=r.r1n(s,u-s|0).f1h_1,_=new Int8Array(o.buffer,o.byteOffset,o.byteLength),h=0,a=n;if(a255&&me(f);var v=h;h=v+1|0,_[v]=bt(f)}while(a0;){var _=e-u|0,h=o/6|0,a=Math.min(_,h),l=mt(a,1),c=Ot(Ct(n,(u+l|0)-1|0)),f=c&&1===l?u+2|0:c?(u+l|0)-1|0:u+l|0,v=z(Ft(n,u,f)),d=s.encode(v);if(d.length>o)break t;ge(r,d),u=f,o=o-d.length|0}return u-i|0}function fe(t){return t.u1n_1}function ve(t){return t.t1n_1}function de(){return b}function we(t,n){this.d1o_1=t,this.e1o_1=n}function pe(t,n,i){if(0===i)return new we("",0);try{var e=gt(i,t.byteLength),r=n.f1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}return function(t,n,i){for(var e=gt(i>=268435455?_t.MAX_VALUE:E(i,8),t.byteLength);e>8;){try{var r=n.f1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}e=e/2|0}for(e=8;e>0;){try{var s=n.f1o(t.subarray(0,e));if(s.length<=i)return new we(s,e)}catch(t){}e=e-1|0}t:try{n.f1o(t);break t}catch(t){if(t instanceof Error){var u=t.message;throw new ue("Failed to decode bytes: "+(null==u?"no cause provided":u))}throw t}throw new ue("Unable to decode buffer")}(t,n,i)}function me(t){throw new ue("The character with unicode point "+t+" couldn't be mapped to ISO-8859-1 character")}function ge(t,n,i,e){i=i===F?0:i,e=e===F?n.byteLength-i|0:e;var r=t.b1c_1,s=t.d1c_1;if((t.f1c_1-s|0)=0))throw T(z("Failed requirement."));if(this.cc_1=1,(t=this.m1f_1.o1f(this.n1f_1,this))===M())return t;continue t;case 1:this.m1f_1.f1e();var n=this.m1f_1.e1a();if(null!=n)throw n;return!this.m1f_1.u1a()&&this.m1f_1.s1a()>=this.n1f_1;case 2:throw this.fc_1}}catch(t){var i=t;if(2===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},N(cn).u1f=function(){return this.u18_1},N(cn).f1a=function(){return!(null==this.a19_1.kotlinx$atomicfu$value)},N(cn).s1a=function(){return this.y18_1.kotlinx$atomicfu$value},N(cn).t1a=function(){var t=4088-this.z18_1.kotlinx$atomicfu$value|0;return Math.max(0,t)},N(cn).u1a=function(){return!(t=this,n=t.a19_1.kotlinx$atomicfu$value,null==(null==n?null:n.i19_1)&&(!this.f1a()||0!==this.z18_1.kotlinx$atomicfu$value));var t,n},N(cn).e1a=function(){var t=this.a19_1.kotlinx$atomicfu$value;return null==t?null:t.i19_1},N(cn).a1c=function(t,n){var i=new nn(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).o1f=function(t,n){var i=new en(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).v1f=function(){Xt(this)},N(cn).f1e=function(){this.g19_1,function(t,n){Ii();var i=n.n(),e=n.c1a();if(null==e)return 0;var r=e;i<=be()&&null==r.lz()&&t.e1k(r)?n.p1j():t.d1k(r)}(this.c19_1,this.h19_1)},N(cn).w1f=function(t,n){var i=new rn(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).x1f=function(t,n,i,e){var r=new sn(this,t,n,i,e);return r.ec_1=j,r.fc_1=null,r.pc()},N(cn).t1d=function(t){(function(t,n){if(!(n>=0))throw T(z("Can't read negative amount of bytes: "+n));if(t.z18_1.atomicfu$getAndAdd(0|-n),t.w18_1.atomicfu$addAndGet$long(A(n)),t.y18_1.atomicfu$getAndAdd(0|-n),!(t.z18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.s1a()+", "+n+" in "+t;throw I(z(i))}if(!(t.s1a()>=0)){var e="Readable bytes count is negative: "+t.s1a()+", "+n+" in "+t;throw I(z(e))}})(this,t),this.f19_1.k19()},N(cn).y1f=function(t,n){var i=new un(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).a1g=function(t,n){return this.b1g(t instanceof kn?t:B(),n)},N(cn).b1g=function(t,n){var i=new _n(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).c1g=function(t,n,i,e){var r=new hn(this,t,n,i,e);return r.ec_1=j,r.fc_1=null,r.pc()},N(cn).d1g=function(t){var n=new an(this,t);return n.ec_1=j,n.fc_1=null,n.pc()},N(cn).u1d=function(t,n){var i=new ln(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(cn).jr=function(t){return null==this.e1a()&&!this.f1a()&&this.u11(null==t?W("Channel cancelled"):t)},N(cn).u11=function(t){var n=null==t?vn():new dn(t);return!!this.a19_1.atomicfu$compareAndSet(null,n)&&(null!=t?(this.c19_1.rs(),this.b19_1.rs(),this.h19_1.rs()):(this.v1f(),this.b19_1.rs()),this.f19_1.e1g(t),!0)},N(cn).f1g=function(t,n){var i,e=this.c19_1.r1d();return e.ca(n)<=0?(t.b19_1.g1g(this.c19_1),t.h1c(e.la()),this.t1d(e.la()),i=e):i=new L(0,0),i},N(cn).h1c=function(t){(function(t,n){if(!(n>=0))throw T(z("Can't write negative amount of bytes: "+n));if(t.z18_1.atomicfu$getAndAdd(n),t.x18_1.atomicfu$addAndGet$long(A(n)),!(t.z18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.z18_1.kotlinx$atomicfu$value+", "+n+" in "+t;throw I(z(i))}})(this,t),this.f1a()&&(this.b19_1.rs(),function(t){if(t.f1a()){var n=t.e1a();throw null==n?new fn("Channel "+t+" is already closed"):n}}(this)),(this.u1f()||0===this.t1a())&&this.v1f()},N(pn).hy=function(){return this.j1g_1},N(pn).un=function(){return this.i1g_1.un()},N(pn).hm=function(){return this.i1g_1.hm()},N(pn).i2=function(){return this.i1g_1.i2()},N(pn).an=function(){return this.i1g_1.an()},N(pn).vn=function(t){return this.i1g_1.vn(t)},N(pn).nn=function(t){this.i1g_1.nn(t)},N(pn).og=function(t,n){return this.i1g_1.og(t,n)},N(pn).kc=function(t){return this.i1g_1.kc(t)},N(pn).fn=function(){return this.i1g_1.fn()},N(pn).jn=function(t,n,i){return this.i1g_1.jn(t,n,i)},N(pn).in=function(t){return this.i1g_1.in(t)},N(pn).ng=function(t){return this.i1g_1.ng(t)},N(pn).pg=function(t){return this.i1g_1.pg(t)},N(pn).dn=function(){return this.i1g_1.dn()},N(pn).toString=function(){return"ChannelJob["+this.i1g_1+"]"},N(mn).hy=function(){return this.k1g_1},N(mn).gm=function(){return this.l1g_1.gm()},N(gn).a1h=function(t,n){var i=this.b1h(t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(gn).cd=function(t,n){return this.a1h(null!=t&&rt(t,J)?t:B(),n)},N(gn).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=3,this.u1g_1&&this.v1g_1.h1g(O(this.y1g_1.gm().kc(st)));var n=new mn(this.y1g_1,this.v1g_1);if(this.z1g_1=rt(n,J)?n:B(),this.dc_1=2,this.cc_1=1,(t=this.w1g_1(this.z1g_1,this))===M())return t;continue t;case 1:this.dc_1=3,this.cc_1=4;continue t;case 2:if(this.dc_1=3,this.fc_1 instanceof Error){var i=this.fc_1;if(!ot(this.x1g_1,ut().ws_1)&&null!=this.x1g_1)throw i;this.v1g_1.jr(i),this.cc_1=4;continue t}throw this.fc_1;case 3:throw this.fc_1;case 4:return this.dc_1=3,j}}catch(t){var e=t;if(3===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},N(gn).b1h=function(t,n){var i=new gn(this.u1g_1,this.v1g_1,this.w1g_1,this.x1g_1,n);return i.y1g_1=t,i},N($n).e1h=function(){return di().q1f_1},N(kn).g1h=function(t){if(0===t)return j;var n=this.c1c_1+t|0;(t<0||n>this.d1c_1)&&xn(t,this.d1c_1-this.c1c_1|0),this.c1c_1=n},N(kn).h1h=function(t){var n=this.d1c_1+t|0;(t<0||n>this.f1c_1)&&qn(t,this.f1c_1-this.d1c_1|0),this.d1c_1=n},N(kn).i1h=function(t){var n=this.f1c_1;if(t=n){if(t===n)return this.d1c_1=t,!1;qn(t-this.d1c_1|0,this.f1c_1-this.d1c_1|0)}return this.d1c_1=t,!0},N(kn).j1h=function(t){(t<0||t>this.d1c_1)&&xn(t-this.c1c_1|0,this.d1c_1-this.c1c_1|0),this.c1c_1!==t&&(this.c1c_1=t)},N(kn).k1h=function(t){var n=this.c1c_1-t|0;n=0))throw T(z("startGap shouldn't be negative: "+t));return this.c1c_1>=t?(this.e1c_1=t,j):this.c1c_1===this.d1c_1?(t>this.f1c_1&&function(t,n){if(n>t.g1c_1)throw T("Start gap "+n+" is bigger than the capacity "+t.g1c_1);var i=t.g1c_1-t.f1c_1|0;throw I("Unable to reserve "+n+" start gap: there are already "+i+" bytes reserved in the end")}(this,t),this.d1c_1=t,this.c1c_1=t,this.e1c_1=t,j):void function(t,n){var i="Unable to reserve "+n+" start gap: ",e=t.d1c_1-t.c1c_1|0;throw I(i+"there are already "+e+" content bytes starting at offset "+t.c1c_1)}(this,t)},N(kn).m1h=function(t){if(!(t>=0))throw T(z("endGap shouldn't be negative: "+t));var n=this.g1c_1-t|0;return n>=this.d1c_1?(this.f1c_1=n,j):(n<0&&function(t,n){throw T("End gap "+n+" is too big: capacity is "+t.g1c_1)}(this,t),n=0))throw T(z("newReadPosition shouldn't be negative: "+t));if(!(t<=this.c1c_1)){var n="newReadPosition shouldn't be ahead of the read position: "+t+" > "+this.c1c_1;throw T(z(n))}this.c1c_1=t,this.e1c_1>t&&(this.e1c_1=t)},N(kn).t1h=function(t){t.f1c_1=this.f1c_1,t.e1c_1=this.e1c_1,t.c1c_1=this.c1c_1,t.d1c_1=this.d1c_1},N(kn).u1h=function(){var t=this.c1c_1;if(t===this.d1c_1)throw new $e("No readable bytes available.");return this.c1c_1=t+1|0,this.b1c_1.f1h_1.getInt8(t)},N(kn).v1h=function(t){var n=this.d1c_1;if(n===this.f1c_1)throw new Cn("No free space in the buffer to write a byte");this.b1c_1.f1h_1.setInt8(n,t),this.d1c_1=n+1|0},N(kn).w1h=function(){this.q1h(),this.o1h()},N(kn).toString=function(){return"Buffer[0x"+ft(ct(this),16)+"]("+(this.d1c_1-this.c1c_1|0)+" used, "+(this.f1c_1-this.d1c_1|0)+" free, "+(this.e1c_1+(this.g1c_1-this.f1c_1|0)|0)+" reserved of "+this.g1c_1+")"},N(jn).d1i=function(){return new wi(this.c1i_1.e1i(this.b1i_1),null,this)},N(jn).f1i=function(t){this.c1i_1.g1i(t.b1c_1),N(ze).k1i.call(this,t),t.v1i()},N(jn).k1i=function(t){return this.f1i(t instanceof wi?t:B())},N(jn).w1i=function(t){N(ze).x1i.call(this,t);var n=t.b1c_1;if(!A(n.f1h_1.byteLength).equals(A(this.b1i_1))){var i=t.b1c_1,e=A(i.f1h_1.byteLength),r="Buffer size mismatch. Expected: "+this.b1i_1+", actual: "+e.toString();throw I(z(r))}if(t===di().q1f_1)throw I(z("ChunkBuffer.Empty couldn't be recycled"));if(t===u.e1h())throw I(z("Empty instance couldn't be recycled"));if(0!==t.y1i())throw I(z("Unable to clear buffer: it is still in use."));if(null!=t.lz())throw I(z("Recycled instance shouldn't be a part of a chain."));if(null!=t.u1i_1)throw I(z("Recycled instance shouldn't be a view or another buffer."))},N(jn).x1i=function(t){return this.w1i(t instanceof wi?t:B())},N(jn).z1i=function(t){var n=N(ze).a1j.call(this,t);return n.b1j(),n.w1h(),n},N(jn).a1j=function(t){return this.z1i(t instanceof wi?t:B())},N(Rn).n=function(){return this.h1j()},N(Rn).t19=function(){return 0===this.h1j()},N(Rn).i1j=function(){},N(Rn).j1j=function(t,n,i){},N(Rn).s5=function(t){var n=N(ri).s5.call(this,t);return n instanceof Rn?n:B()},N(Rn).s7=function(t){var n=N(ri).s7.call(this,t);return n instanceof Rn?n:B()},N(Rn).t7=function(t,n,i){var e=N(ri).t7.call(this,t,n,i);return e instanceof Rn?e:B()},N(Rn).y2=function(){var t=this.n(),n=this.c1a();return null==n?Fn().k1j_1:new Un(n,A(t),this.u19_1)},N(Rn).toString=function(){return"BytePacketBuilder[0x"+ct(this)+"]"},N(Un).y1j=function(){return null},N(Un).z1j=function(t,n,i){return 0},N(Un).a1k=function(){},N(Un).toString=function(){return"ByteReadPacket["+ct(this)+"]"},N(Zn).d1f=function(){return!(0!=(this.o1d_1-this.n1d_1|0)||!this.p1d_1.equals(new L(0,0))||!this.q1d_1&&null!=Yn(this))},N(Zn).l1j=function(){var t=this.l1d_1;return t.j1h(this.n1d_1),t},N(Zn).b1k=function(t){if(!(t.ca(new L(0,0))>=0)){var n="tailRemaining shouldn't be negative: "+t.toString();throw T(z(n))}this.p1d_1=t},N(Zn).r1d=function(){var t=this.o1d_1-this.n1d_1|0;return A(t).gb(this.p1d_1)},N(Zn).g1e=function(){return this.n1d_1!==this.o1d_1||!this.p1d_1.equals(new L(0,0))},N(Zn).rs=function(){var t=this.l1j(),n=di().q1f_1;t!==n&&(Hn(this,n),this.b1k(new L(0,0)),Nn(t,this.k1d_1))},N(Zn).e1j=function(){this.rs(),this.q1d_1||(this.q1d_1=!0),this.a1k()},N(Zn).c1a=function(){var t=this.l1j(),n=di().q1f_1;return t===n?null:(Hn(this,n),this.b1k(new L(0,0)),t)},N(Zn).c1k=function(){var t=this.l1j(),n=t.lz(),i=di().q1f_1;if(t===i)return null;if(null==n)Hn(this,i),this.b1k(new L(0,0));else{Hn(this,n);var e=this.p1d_1,r=n.d1c_1-n.c1c_1|0,s=e.hb(A(r));this.b1k(s)}return t.o1k(null),t},N(Zn).d1k=function(t){if(t===di().q1f_1)return j;var n=Dn(t);if(this.l1d_1===di().q1f_1){Hn(this,t);var i=this.o1d_1-this.n1d_1|0,e=n.hb(A(i));this.b1k(e)}else Mn(this.l1d_1).o1k(t),this.b1k(this.p1d_1.gb(n))},N(Zn).e1k=function(t){var n=Mn(this.l1j()),i=t.d1c_1-t.c1c_1|0;if(0===i||(n.f1c_1-n.d1c_1|0)=0))throw T(z("Negative discard is not allowed: "+t));return function(t,n,i){for(var e=n,r=i;;){if(0===e)return r;var s=t.m1k(1);if(null==s)return r;var u=s,o=u.d1c_1-u.c1c_1|0,_=e,h=Math.min(o,_);u.g1h(h),t.n1d_1=t.n1d_1+h|0,Xn(t,u),e=e-h|0,r=r+h|0}}(this,t,0)},N(Zn).g1h=function(t){if(this.f1k(t)!==t)throw new $e("Unable to discard "+t+" bytes due to end of packet")},N(Zn).g1k=function(t,n){if(0===t&&(0===n||this.d1f()))return"";var i=this.r1d();if(i.ca(new L(0,0))>0&&A(n).ca(i)>=0)return hi(this,i.la());var e=gt(mt(t,16),n),r=ht(e);return Vn(this,r,t,n),r.toString()},N(Zn).h1k=function(t,n,i){return t=t===F?0:t,n=n===F?_t.MAX_VALUE:n,i===F?this.g1k(t,n):i.g1k.call(this,t,n)},N(Zn).i1k=function(t){return Gn(this,t,this.l1j())},N(Zn).j1k=function(t){return this.k1k(t)},N(Zn).k1k=function(t){return function(t,n,i){for(var e=t,r=n,s=i;;){if(r===s)return Yn(e);var u=r.f1j();if(r.g1j(e.k1d_1),null!=u){if(u.d1c_1>u.c1c_1){Hn(e,u);var o=e,_=o.p1d_1,h=u.d1c_1-u.c1c_1|0,a=_.hb(A(h));return o.b1k(a),u}r=u}else Hn(e,s),e.b1k(new L(0,0)),r=s}}(this,t,di().q1f_1)},N(Zn).l1k=function(t){var n=t.lz();if(null==n)return Wn(this,t);var i,e,r=n,s=t.d1c_1-t.c1c_1|0,u=8-(t.g1c_1-t.f1c_1|0)|0,o=Math.min(s,u);if(r.e1c_1o){t.s1h(),this.o1d_1=t.d1c_1;var _=this.p1d_1.gb(A(o));this.b1k(_)}else{Hn(this,r);var h=this.p1d_1,a=(r.d1c_1-r.c1c_1|0)-o|0,l=h.hb(A(a));this.b1k(l),t.f1j(),t.g1j(this.k1d_1)}},N(Zn).y1j=function(){var t=this.k1d_1.c1j();try{t.m1h(8);var n=t.d1c_1,i=t.f1c_1-t.d1c_1|0,e=this.z1j(t.b1c_1,n,i);return 0!==e||(this.q1d_1=!0,t.d1c_1>t.c1c_1)?(t.h1h(e),t):(t.g1j(this.k1d_1),null)}catch(n){if(n instanceof Error){var r=n;throw t.g1j(this.k1d_1),r}throw n}},N(Zn).q1j=function(){this.q1d_1||(this.q1d_1=!0)},N(Zn).m1k=function(t){var n=this.l1j();return(this.o1d_1-this.n1d_1|0)>=t?n:Gn(this,t,n)},N(Zn).n1k=function(t){var n=t.f1j(),i=null==n?di().q1f_1:n;Hn(this,i);var e=this.p1d_1,r=i.d1c_1-i.c1c_1|0,s=e.hb(A(r));return this.b1k(s),t.g1j(this.k1d_1),i},N(ri).h1j=function(){return this.b1a_1+(this.y19_1-this.a1a_1|0)|0},N(ri).l1j=function(){var t=this.v19_1;return null==t?di().q1f_1:t},N(ri).v1f=function(){!function(t){var n=t.c1a();if(null==n)return j;var i=n;try{var e=i;t:for(;;){var r=e,s=r.c1c_1,u=r.d1c_1-r.c1c_1|0;t.j1j(r.b1c_1,s,u);var o=e.lz();if(null==o)break t;e=o}}finally{Nn(i,t.u19_1)}}(this)},N(ri).c1a=function(){var t=this.v19_1;if(null==t)return null;var n=t,i=this.w19_1;return null==i||i.i1h(this.y19_1),this.v19_1=null,this.w19_1=null,this.y19_1=0,this.z19_1=0,this.a1a_1=0,this.b1a_1=0,this.x19_1=Zi().p1k_1,n},N(ri).m1j=function(t){if(null!=t.lz())throw I(z("It should be a single buffer chunk."));ii(this,t,t,0)},N(ri).n1j=function(t){var n=Mn(t),i=Dn(t),e=n.d1c_1-n.c1c_1|0,r=i.hb(A(e));r.ca(A(_t.MAX_VALUE))>=0&&function(t,n){throw T("Long value "+t.toString()+" of "+n+" doesn't fit into 32-bit integer")}(r,"total size increase"),ii(this,t,n,r.la())},N(ri).v1h=function(t){var n=this.y19_1;return n=3){var i,e=this.x19_1,r=yt(t);if(0<=r&&r<=127){var s=bt(r);e.f1h_1.setInt8(n,s),i=1}else if(128<=r&&r<=2047){var u=bt(192|r>>6&31);e.f1h_1.setInt8(n,u);var o=n+1|0,_=bt(128|63&r);e.f1h_1.setInt8(o,_),i=2}else if(2048<=r&&r<=65535){var h=bt(224|r>>12&15);e.f1h_1.setInt8(n,h);var a=n+1|0,l=bt(128|r>>6&63);e.f1h_1.setInt8(a,l);var c=n+2|0,f=bt(128|63&r);e.f1h_1.setInt8(c,f),i=3}else if(65536<=r&&r<=1114111){var v=bt(240|r>>18&7);e.f1h_1.setInt8(n,v);var d=n+1|0,w=bt(128|r>>12&63);e.f1h_1.setInt8(d,w);var p=n+2|0,m=bt(128|r>>6&63);e.f1h_1.setInt8(p,m);var g=n+3|0,y=bt(128|63&r);e.f1h_1.setInt8(g,y),i=4}else xi(r);var b=i;return this.y19_1=n+b|0,this}return function(t,n){t:{var i=t.o1j(3);try{var e,r=i.b1c_1,s=i.d1c_1,u=yt(n);if(0<=u&&u<=127){var o=bt(u);r.f1h_1.setInt8(s,o),e=1}else if(128<=u&&u<=2047){var _=bt(192|u>>6&31);r.f1h_1.setInt8(s,_);var h=s+1|0,a=bt(128|63&u);r.f1h_1.setInt8(h,a),e=2}else if(2048<=u&&u<=65535){var l=bt(224|u>>12&15);r.f1h_1.setInt8(s,l);var c=s+1|0,f=bt(128|u>>6&63);r.f1h_1.setInt8(c,f);var v=s+2|0,d=bt(128|63&u);r.f1h_1.setInt8(v,d),e=3}else if(65536<=u&&u<=1114111){var w=bt(240|u>>18&7);r.f1h_1.setInt8(s,w);var p=s+1|0,m=bt(128|u>>12&63);r.f1h_1.setInt8(p,m);var g=s+2|0,y=bt(128|u>>6&63);r.f1h_1.setInt8(g,y);var b=s+3|0,$=bt(128|63&u);r.f1h_1.setInt8(b,$),e=4}else xi(u);var k=e;if(i.h1h(k),!(k>=0))throw I(z("The returned value shouldn't be negative"));break t}finally{t.c1h()}}}(this,t),this},N(ri).s7=function(t){return null==t?this.t7("null",0,4):this.t7(t,0,at(t)),this},N(ri).t7=function(t,n,i){return null==t?this.t7("null",n,i):(ai(this,t,n,i,se().q1k_1),this)},N(ri).g1g=function(t){var n=t.c1a();if(null==n)return t.rs(),j;var i=this.w19_1;if(null==i)return this.n1j(n),j;ei(this,i,n,t.k1d_1)},N(ri).d1a=function(t){var n=this.w19_1;if(null==n)return this.n1j(t),j;ei(this,n,t,this.u19_1)},N(ri).s1d=function(t,n){var i=n;t:for(;i.ca(new L(0,0))>0;){var e=t.o1d_1-t.n1d_1|0,r=A(e);if(!(r.ca(i)<=0)){var s,u=t.m1k(1);null==u?_i(1):s=u;var o=s,_=o.c1c_1;try{si(this,o,i.la())}finally{var h=o.c1c_1;if(h<_)throw I("Buffer's position shouldn't be rewinded");h===o.d1c_1?t.k1k(o):t.n1d_1=h}break t}i=i.hb(r);var a,l=t.c1k();if(null==l)throw new $e("Unexpected end of packet");a=l,this.m1j(a)}},N(ri).rs=function(){this.e1j()},N(ri).o1j=function(t){if((this.z19_1-this.y19_1|0)>=t){var n=this.w19_1;if(null!=n)return n.i1h(this.y19_1),n}return ni(this)},N(ri).c1h=function(){var t=this.w19_1;null==t||(this.y19_1=t.d1c_1)},N(ri).p1j=function(){var t=this.l1j();if(t!==di().q1f_1){if(null!=t.lz())throw I(z("Check failed."));t.o1h(),t.m1h(8),this.y19_1=t.d1c_1,this.a1a_1=this.y19_1,this.z19_1=t.f1c_1}},N(li).c1j=function(){return di().q1f_1},N(li).v1k=function(t){if(t!==di().q1f_1)throw T(z("Only ChunkBuffer.Empty instance could be recycled."))},N(li).d1j=function(t){return this.v1k(t instanceof wi?t:B())},N(li).sp=function(){},N(ci).c1j=function(){return new wi(p.e1i(_),null,this)},N(ci).v1k=function(t){p.g1i(t.b1c_1)},N(ci).d1j=function(t){return this.v1k(t instanceof wi?t:B())},N(fi).c1j=function(){throw kt("This pool doesn't support borrow")},N(fi).v1k=function(t){},N(fi).d1j=function(t){return this.v1k(t instanceof wi?t:B())},N(vi).t1f=function(){return On()},N(wi).o1k=function(t){null==t?this.f1j():function(t,n){if(!t.s1i_1.atomicfu$compareAndSet(null,n))throw I("This chunk has already a next chunk.")}(this,t)},N(wi).lz=function(){return this.s1i_1.kotlinx$atomicfu$value},N(wi).y1i=function(){return this.t1i_1.kotlinx$atomicfu$value},N(wi).f1j=function(){return this.s1i_1.atomicfu$getAndSet(null)},N(wi).w1k=function(){var t=this.u1i_1,n=null==t?this:t;n.x1k();var i=new wi(this.b1c_1,n,this.r1i_1);return this.t1h(i),i},N(wi).g1j=function(t){if(this.y1k()){var n=this.u1i_1;if(null!=n)this.v1i(),n.g1j(t);else{var i=this.r1i_1;(null==i?t:i).d1j(this)}}},N(wi).v1i=function(){if(!this.t1i_1.atomicfu$compareAndSet(0,-1))throw I("Unable to unlink: buffer is in use.");this.f1j(),this.u1i_1=null},N(wi).x1k=function(){t:for(var t=this.t1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<=0)throw I("Unable to acquire chunk: it is already released.");var i=n+1|0;if(t.atomicfu$compareAndSet(n,i))break t}},N(wi).b1j=function(){t:for(var t=this.t1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<0)throw I("This instance is already disposed and couldn't be borrowed.");if(n>0)throw I("This instance is already in use but somehow appeared in the pool.");if(t.atomicfu$compareAndSet(n,1))break t}},N(wi).y1k=function(){var t;t:for(var n=this.t1i_1;;){var i=n.kotlinx$atomicfu$value;if(i<=0)throw I("Unable to release: it is already released.");var e=i-1|0;if(n.atomicfu$compareAndSet(i,e)){t=e;break t}}return 0===t},N(wi).w1h=function(){if(null!=this.u1i_1)throw T(z("Unable to reset buffer with origin"));N(kn).w1h.call(this),this.s1i_1.kotlinx$atomicfu$value=null},N(Di).pc=function(){var t,n,i,e=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.cc_1=1,t=this.t1l_1,n=this.u1l_1,i=void 0,(i=new Mi(t,n,this)).ec_1=j,i.fc_1=null,(e=i.pc())===M())return e;continue t;case 1:if(e)return j;this.cc_1=2;continue t;case 2:return this.t1l_1.k19(),j;case 3:throw this.fc_1}}catch(t){var r=t;if(3===this.dc_1)throw r;this.cc_1=this.dc_1,this.fc_1=r}},N(Mi).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=3,this.j1l_1=!1,this.k1l_1=jt(),this.h1l_1.j19_1.atomicfu$compareAndSet(null,this.k1l_1)&&this.i1l_1()){if(this.j1l_1=!0,this.cc_1=1,(t=this.k1l_1.ls(this))===M())return t;continue t}this.cc_1=2;continue t;case 1:this.cc_1=2;continue t;case 2:return this.j1l_1;case 3:throw this.fc_1}}catch(t){var n=t;if(3===this.dc_1)throw n;this.cc_1=this.dc_1,this.fc_1=n}},N(Ni).f1b=function(t,n){var i=new Di(this,t,n);return i.ec_1=j,i.fc_1=null,i.pc()},N(Ni).k19=function(){var t=this.j19_1.atomicfu$getAndSet(null);null==t||t.ks()},N(Ni).e1g=function(t){var n=this.j19_1.atomicfu$getAndSet(null);if(null==n)return j;var i=n;null!=t?i.js(t):i.ks()},N(Ri).pc=function(){var t,n,i,e,r=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:if(this.dc_1=10,this.d1m_1===this.e1m_1)throw T(z("Failed requirement."));if(null!=this.d1m_1.e1a())return this.e1m_1.u11(this.d1m_1.e1a()),new L(0,0);this.g1m_1=this.f1m_1,this.cc_1=1;continue t;case 1:if(!(this.g1m_1.ca(new L(0,0))>0)){this.cc_1=9;continue t}if(this.cc_1=2,(r=this.d1m_1.d1g(this))===M())return r;continue t;case 2:if(this.h1m_1=r,this.h1m_1){this.cc_1=3;continue t}this.cc_1=9;continue t;case 3:if(this.i1m_1=this.d1m_1.f1g(this.e1m_1,this.g1m_1),this.i1m_1.equals(new L(0,0))){if(this.cc_1=6,t=this.d1m_1,n=this.e1m_1,i=this.g1m_1,e=void 0,(e=new Pi(t,n,i,this)).ec_1=j,e.fc_1=null,(r=e.pc())===M())return r;continue t}if(0===this.e1m_1.t1a()){if(this.cc_1=4,(r=this.e1m_1.a1c(1,this))===M())return r;continue t}this.cc_1=5;continue t;case 4:this.cc_1=5;continue t;case 5:this.j1m_1=this.i1m_1,this.cc_1=8;continue t;case 6:var s=r;if(s.equals(new L(0,0))){this.cc_1=9;continue t}this.cc_1=7;continue t;case 7:this.j1m_1=s,this.cc_1=8;continue t;case 8:var u=this.j1m_1;this.g1m_1=this.g1m_1.hb(u),u.ca(new L(0,0))>0&&this.e1m_1.v1f(),this.cc_1=1;continue t;case 9:return this.f1m_1.hb(this.g1m_1);case 10:throw this.fc_1}}catch(t){var o=t;if(10===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},N(Pi).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=9,this.v1m_1=di().t1f().c1j(),this.cc_1=1;continue t;case 1:this.cc_1=2;continue t;case 2:if(this.dc_1=8,this.v1m_1.p1h(zt(this.u1m_1,A(this.v1m_1.g1c_1)).la()),this.cc_1=3,(t=this.s1m_1.a1g(this.v1m_1,this))===M())return t;continue t;case 3:if(this.x1m_1=t,-1===this.x1m_1){this.v1m_1.g1j(di().t1f()),this.w1m_1=new L(0,0),this.dc_1=9,this.cc_1=6;continue t}this.cc_1=4;continue t;case 4:if(this.cc_1=5,(t=this.t1m_1.w1f(this.v1m_1,this))===M())return t;continue t;case 5:this.w1m_1=A(this.x1m_1),this.dc_1=9,this.cc_1=6;continue t;case 6:var n=this.w1m_1;return this.dc_1=9,this.v1m_1.g1j(di().t1f()),n;case 7:return this.dc_1=9,this.v1m_1.g1j(di().t1f()),j;case 8:this.dc_1=9;var i=this.fc_1;throw this.v1m_1.g1j(di().t1f()),i;case 9:throw this.fc_1}}catch(t){var e=t;if(9===this.dc_1)throw e;this.cc_1=this.dc_1,this.fc_1=e}},N(Li).d1i=function(){return new Int8Array(4096)},N(Ui).d1j=function(t){},N(Ui).sp=function(){},N(Vi).h1g=function(t){var n=this.q1n_1;null==n||n.on(),this.q1n_1=t,t.kn(!0,F,Hi(this))},N(Vi).toString=function(){return"ByteChannel["+this.q1n_1+", "+ct(this)+"]"},N(Wi).e1h=function(){var t=this.b1n_1;return Dt("Empty",1,It,(function(t){return t.e1h()}),null),t.j2()},N(Ki).e1i=function(t){return new Qi(new DataView(new ArrayBuffer(t)))},N(Ki).g1i=function(t){},N(Qi).r1n=function(t,n){if(!(t>=0))throw T(z("offset shouldn't be negative: "+t));if(!(n>=0))throw T(z("length shouldn't be negative: "+n));var i=A(t+n|0),e=A(this.f1h_1.byteLength);if(i.ca(e)>0){var r=A(this.f1h_1.byteLength);throw Mt("offset + length > size: "+t+" + "+n+" > "+r.toString())}return new Qi(new DataView(this.f1h_1.buffer,this.f1h_1.byteOffset+t|0,n))},N(Qi).x1h=function(t,n,i,e){var r=new Int8Array(this.f1h_1.buffer,this.f1h_1.byteOffset+n|0,i);new Int8Array(t.f1h_1.buffer,t.f1h_1.byteOffset+e|0,i).set(r)},N(ne).s1n=function(t){switch(t){case"UTF-8":case"utf-8":case"UTF8":case"utf8":return se().q1k_1}var n;switch(t){case"ISO-8859-1":case"iso-8859-1":n=!0;break;default:var i=Rt(t,Nt(95),Nt(45));n="iso-8859-1"===i||"iso-8859-1"===i.toLowerCase()}if(n||"latin1"===t||"Latin1"===t)return se().r1k_1;throw T("Charset "+t+" is not supported")},N(ie).equals=function(t){return this===t||null!=t&&this.constructor==t.constructor&&(t instanceof ie||B(),this.s1k_1===t.s1k_1)},N(ie).hashCode=function(){return Pt(this.s1k_1)},N(ie).toString=function(){return this.s1k_1},N(he).u1k=function(){return new ae(this)},N(he).t1k=function(){return new le(this)},N(he).toString=function(){return"CharsetImpl(name="+this.w1n_1+")"},N(he).hashCode=function(){return Pt(this.w1n_1)},N(he).equals=function(t){if(this===t)return!0;if(!(t instanceof he))return!1;var n=t instanceof he?t:B();return this.w1n_1===n.w1n_1},N(ae).toString=function(){return"CharsetEncoderImpl(charset="+this.y1n_1+")"},N(ae).hashCode=function(){return this.y1n_1.hashCode()},N(ae).equals=function(t){if(this===t)return!0;if(!(t instanceof ae))return!1;var n=t instanceof ae?t:B();return!!this.y1n_1.equals(n.y1n_1)},N(le).toString=function(){return"CharsetDecoderImpl(charset="+this.a1o_1+")"},N(le).hashCode=function(){return this.a1o_1.hashCode()},N(le).equals=function(t){if(this===t)return!0;if(!(t instanceof le))return!1;var n=t instanceof le?t:B();return!!this.a1o_1.equals(n.a1o_1)},N(we).toString=function(){return"DecodeBufferResult(charactersDecoded="+this.d1o_1+", bytesConsumed="+this.e1o_1+")"},N(we).hashCode=function(){var t=Pt(this.d1o_1);return E(t,31)+this.e1o_1|0},N(we).equals=function(t){if(this===t)return!0;if(!(t instanceof we))return!1;var n=t instanceof we?t:B();return this.d1o_1===n.d1o_1&&this.e1o_1===n.e1o_1},N(Ce).c1o=function(){return this.g1o_1.decode()},N(Ce).f1o=function(t){return this.g1o_1.decode(t)},N(Ce).b1o=function(t,n){return this.g1o_1.decode(t,n)},N(Ee).c1o=function(){return""},N(Ee).f1o=function(t){var n;t:{var i=new Rn;try{var e=t instanceof Int8Array?t:B(),r=0,s=e.length;if(r255&&i.v1h(bt(o>>8)),i.v1h(bt(255&o))}while(r=(e=e===F?at(n):e))return Oi();var s=di().t1f().c1j();try{var u;if((r=r+ce(t,n,r,e,s)|0)===e){var o=s.d1c_1-s.c1c_1|0,_=new Int8Array(o),h=_.length-0|0;return An(s instanceof kn?s:B(),_,0,h),_}t:{var a=new Rn;try{a.m1j(s.w1k()),bn(t,a,n,r,e),u=a.y2();break t}catch(t){if(t instanceof Error){var l=t;throw a.rs(),l}throw t}}return oi(u)}finally{s.g1j(di().t1f())}}(t,n,i=i===F?0:i,e=e===F?at(n):e)},t.$_$.k=function(t,n,i,e){var r;i=i===F?0:i,e=e===F?at(n):e;t:{var s=new Rn;try{bn(t,s,n,i,e),r=s.y2();break t}catch(t){if(t instanceof Error){var u=t;throw s.rs(),u}throw t}}return r},t.$_$.l=ee,t.$_$.m=ji,t.$_$.n=zi,t.$_$.o=Ti,t.$_$.p=Rn,t.$_$.q=Un,t.$_$.r=ye,t.$_$.s=Zn,t.$_$.t=function(t,n,i,e){n=n===F?0:n,i=i===F?t.length:i,e=e===F?se().q1k_1:e,(n<0||i<0||(n+i|0)>t.length)&&function(t,n,i){if(!(t>=0))throw Mt("offset ("+t+") shouldn't be negative");if(!(n>=0))throw Mt("length ("+n+") shouldn't be negative");if(!((t+n|0)<=i.length))throw Mt("offset ("+t+") + length ("+n+") > bytes.size ("+i.length+")");throw Ut()}(n,i,t);var r=t,s=r.byteOffset+n|0,u=r.buffer.slice(s,s+i|0),o=new wi(Xi(Zi(),u),null,di().r1f_1);o.n1h();var _=Pn(o,di().s1f_1);return yn(e.t1k(),_,_t.MAX_VALUE)},t.$_$.u=function(t,n){},t.$_$.v=oi,t.$_$.w=function(t){var n;if((t.o1d_1-t.n1d_1|0)>2){var i=t.n1d_1;t.n1d_1=i+2|0,n=t.m1d_1.f1h_1.getInt16(i,!1)}else n=function(t){var n,i=zi(t,2);null==i?_i(2):n=i;var e=n,r=function(t){var n,i=t.b1c_1,e=t.c1c_1;if((t.d1c_1-e|0)<2)throw new $e("Not enough bytes to read a short integer of size 2.");return n=i.f1h_1.getInt16(e,!1),t.g1h(2),n}(e);return ji(t,e),r}(t);return n},t.$_$.x=function(t,n,i){return n=n===F?se().q1k_1:n,i=i===F?_t.MAX_VALUE:i,yn(n.t1k(),t,i)},t.$_$.y=ui,t.$_$.z=function(t,n){var i,e=t.y19_1;(t.z19_1-e|0)>2?(t.y19_1=e+2|0,t.x19_1.f1h_1.setInt16(e,n,!1),i=!0):i=!1,i||function(t,n){(function(t,n){var i=t.b1c_1,e=t.d1c_1,r=t.f1c_1-e|0;if(r<2)throw Sn("short integer",2,r);i.f1h_1.setInt16(e,n,!1),t.h1h(2)})(t.o1j(2),n),t.c1h()}(t,n)},t.$_$.a1=ai,t.$_$.b1=xe,t.$_$.c1=function(){return d||(d=!0,v=new Li),v},t.$_$.d1=function(t){return function(t,n,i){if(0===t.length)return Yi().e1h();var e=di().t1f().c1j(),r=e,s=n,u=s+i|0;t:for(;;){r.m1h(8);var o=u-s|0,_=r,h=_.f1c_1-_.d1c_1|0,a=Math.min(o,h);if(zn(r instanceof kn?r:B(),t,s,a),(s=s+a|0)===u)break t;var l=r;r=di().t1f().c1j(),l.o1k(r)}var c=new Vi(e,!1);return f=c,f.u11(null),c;var f}(t,0,t.length)},t.$_$.e1=Gi,t.$_$.f1=wn,t.$_$.g1=function(t){return t.jr(null)},t.$_$.h1=function(t,n,i,e){return function(t,n,i,e,r){var s=t.gm().kc(it()),u=et(t,n,F,(o=e,_=i,h=r,a=s,l=null,c=new gn(o,_,h,a,l),f=function(t,n){return c.a1h(t,n)},f.$arity=1,f));var o,_,h,a,l,c,f;return u.in(function(t){return function(n){return t.u11(n),j}}(i)),new pn(u,i)}(t,n=n===F?X():n,function(t){return t=t!==F&&t,new Vi(di().q1f_1,t)}(i=i!==F&&i),!0,e)},t})?e.apply(n,r):e)||(t.exports=s)},754:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(485),i(205)],void 0===(s="function"==typeof(e=function(t,n,i,e,r){"use strict";var s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M,N,R,P,L,F,U,H,V,B,W=Math.imul,Y=n.$_$.aa,G=n.$_$.x1,K=n.$_$.mb,X=n.$_$.c,J=n.$_$.tg,Z=n.$_$.a5,Q=n.$_$.la,tt=n.$_$.ca,nt=n.$_$.nb,it=n.$_$.na,et=n.$_$.q9,rt=n.$_$.f,st=n.$_$.c9,ut=i.$_$.v,ot=n.$_$.v,_t=n.$_$.fa,ht=n.$_$.ma,at=n.$_$.m5,lt=n.$_$.jh,ct=n.$_$.j5,ft=n.$_$.wa,vt=n.$_$.y9,dt=n.$_$.z9,wt=n.$_$.z2,pt=e.$_$.c1,mt=n.$_$.f9,gt=e.$_$.i,yt=n.$_$.o9,bt=n.$_$.y5,$t=n.$_$.l,kt=n.$_$.p5,xt=n.$_$.rb,qt=n.$_$.n5,St=n.$_$.gg,Ct=n.$_$.lb,Et=n.$_$.z6,Ot=n.$_$.m,jt=n.$_$.u,zt=n.$_$.u6,Tt=n.$_$.ia,At=n.$_$.e1,It=n.$_$.ee,Dt=n.$_$.r2,Mt=n.$_$.w2,Nt=n.$_$.sd,Rt=r.$_$.d,Pt=n.$_$.mg,Lt=n.$_$.dg,Ft=n.$_$.ab,Ut=n.$_$.l5,Ht=n.$_$.kb,Vt=n.$_$.c5,Bt=n.$_$.t6,Wt=n.$_$.o7,Yt=n.$_$.r7,Gt=n.$_$.w7,Kt=e.$_$.x,Xt=n.$_$.ga,Jt=n.$_$.w9,Zt=e.$_$.r,Qt=(n.$_$.v4,n.$_$.a3),tn=n.$_$.ih,nn=n.$_$.b3,en=n.$_$.c3,rn=n.$_$.n4,sn=n.$_$.k9,un=n.$_$.ha,on=n.$_$.e9,_n=n.$_$.r8,hn=n.$_$.nh,an=n.$_$.ib,ln=n.$_$.kg,cn=n.$_$.w1,fn=n.$_$.d3,vn=n.$_$.qh;function dn(t){this.i1o_1=t;var n=this.i1o_1;if(0===Y(n))throw G("Name can't be blank")}function wn(){}function pn(t,n){et.call(this,n),this.y1o_1=t}function mn(t){return t.z1o_1}function gn(t){return Fn(t)}function yn(t){return new kn(t.i2().z1o_1,t.j2())}function bn(t){return new kn(Fn(t.i2()),t.j2())}function $n(){this.b1p_1=ot()}function kn(t,n){this.h1p_1=t,this.i1p_1=n}function xn(){return new $n}function qn(){mt.call(this,gt)}function Sn(t){this.l1p_1=t,this.k1p_1=t.m1p_1.v()}function Cn(t,n,i){this.m1p_1=t,this.n1p_1=n,this.o1p_1=i,this.p1p_1=this.m1p_1.n()}function En(){if(h)return Z;h=!0,s=new On("Jvm",0),u=new On("Native",1),o=new On("Browser",2),_=new On("Node",3)}function On(t,n){St.call(this,t,n)}function jn(){a=this,this.y1p_1=Si().equals(Tn()),this.z1p_1=Si().equals(An()),this.a1q_1=Si().equals((En(),s)),this.b1q_1=Si().equals((En(),u)),this.c1q_1=!1,this.d1q_1=!0}function zn(){return null==a&&new jn,a}function Tn(){return En(),o}function An(){return En(),_}function In(){}function Dn(t,n){var i,e=t.k1q_1.q2(n);if(null==e){var r=Ot();t.l1q(n),t.k1q_1.g2(n,r),i=r}else i=e;return i}function Mn(t,n){t=t!==rt&&t,n=n===rt?8:n,this.j1q_1=t,this.k1q_1=this.j1q_1?xn():jt(n)}function Nn(t,n){return t.t1q_1.q2(n)}function Rn(t,n){t=t!==rt&&t,n=n===rt?zt():n,this.s1q_1=t;for(var i=this.s1q_1?xn():ot(),e=n.f2().v();e.w();){var r=e.y(),s=r.i2(),u=r.j2(),o=u.n(),_=$t(o),h=0;if(h=this.y1r_1.n()){this.w1r_1.f1s(),this.cc_1=5;continue t}this.cc_1=3;continue t;case 3:this.z1r_1=this.y1r_1.h1(this.x1r_1),this.w1r_1.e1s_1=this.x1r_1+1|0,this.cc_1=4;var n=this.z1r_1;if((t=(Ft(n,2)?n:J())(this.w1r_1,this.w1r_1.d1s_1,this))===st())return t;continue t;case 4:this.cc_1=1;continue t;case 5:return this.w1r_1.d1s_1;case 6:throw this.fc_1}}catch(t){var i=t;if(6===this.dc_1)throw i;this.cc_1=this.dc_1,this.fc_1=i}},K(Zn).gm=function(){return this.c1s_1},K(Zn).f1s=function(){this.e1s_1=-1},K(Zn).g1s=function(t,n){return this.d1s_1=t,this.h1s(n)},K(Zn).h1s=function(t){var n=this.e1s_1;return n<0?this.d1s_1:n>=this.b1s_1.n()?(this.f1s(),this.d1s_1):function(t,n){var i=new Jn(t,n);return i.ec_1=Z,i.fc_1=null,i.pc()}(this,t)},K(Zn).i1s=function(t,n){return this.e1s_1=0,this.d1s_1=t,this.h1s(n)},K(ii).t19=function(){return this.m1s_1.d1()},K(ii).n=function(){return this.m1s_1.n()},K(ii).p1s=function(t){var n;this.n1s_1&&((n=this).m1s_1=n.o1s(),n.n1s_1=!1),this.m1s_1.s(t)},K(ii).q1s=function(t){var n=this.m1s_1;t instanceof Vt&&t.z2(t.n()+n.n()|0);var i=0,e=n.n();if(i=0;){var i=n;n=i-1|0;var e=this.r1t_1.n1t_1[i];if(e!==this&&null!=e)return e.jc()}throw G(xt("Not started"))},K(bi).ef=function(t){if(en(t)){var n=lt(nn(t)),i=Qt(tn(n));return yi(this.r1t_1,i),Z}gi(this.r1t_1,!1)},K(bi).qc=function(t){return this.ef(t)},K($i).gm=function(){return this.l1t_1.jc()},K($i).h1s=function(t){var n;return this.p1t_1!==this.k1t_1.n()?(this.s1t(on(t)),gi(this,!0)?(function(t){if(t.o1t_1<0)throw G("No more continuations to resume");var n=t.o1t_1;t.o1t_1=n-1|0,t.n1t_1[n]=null}(this),n=this.m1t_1):n=st()):n=this.m1t_1,n},K($i).g1s=function(t,n){return this.m1t_1=t,this.h1s(n)},K($i).i1s=function(t,n){if(this.p1t_1=0,this.p1t_1===this.k1t_1.n())return t;if(this.m1t_1=t,this.o1t_1>=0)throw G("Already started");return this.h1s(n)},K($i).s1t=function(t){this.o1t_1=this.o1t_1+1|0,this.n1t_1[this.o1t_1]=t},K(ki).toString=function(){return"TypeInfo(type="+this.t1t_1+", reifiedType="+this.u1t_1+", kotlinType="+this.v1t_1+")"},K(ki).hashCode=function(){var t=this.t1t_1.hashCode();return t=W(t,31)+ht(this.u1t_1)|0,W(t,31)+(null==this.v1t_1?0:ht(this.v1t_1))|0},K(ki).equals=function(t){if(this===t)return!0;if(!(t instanceof ki))return!1;var n=t instanceof ki?t:J();return!!this.t1t_1.equals(n.t1t_1)&&!!_t(this.u1t_1,n.u1t_1)&&!!_t(this.v1t_1,n.v1t_1)},K(qi).k1o=function(t){var n=this.w1t_1.q2(t);return null==n||null!=n?n:J()},K(qi).l1o=function(t){return this.w1t_1.n2(t)},K(qi).m1o=function(t,n){this.w1t_1.g2(t,n)},K(qi).n1o=function(t){this.w1t_1.k2(t)},K(qi).o1o=function(t,n){var i=this.w1t_1.q2(t);if(null!=i)return null!=i?i:J();var e=n();return this.w1t_1.g2(t,e),e},K(qi).p1o=function(){return _n(this.w1t_1.d2())},K(Oi).y1t=function(t){if(this.x1t_1.z9(Ti())>0)return Z;console.debug("TRACE: "+t)},K(qi).j1o=function(t){var n=this.k1o(t);if(null==n)throw G("No instance for key "+t);return n},g=new Bn,A=new Gn,V=!1,B=new Ri,t.$_$=t.$_$||{},t.$_$.a=function(t,n){var i=new pn(t,n);return i.ec_1=Z,i.fc_1=null,i.pc()},t.$_$.b=B,t.$_$.c=zn,t.$_$.d=Un,t.$_$.e=Ci,t.$_$.f=function(t){return new Oi},t.$_$.g=ci,t.$_$.h=fi,t.$_$.i=li,t.$_$.j=function(t,n){return n.j6(t)},t.$_$.k=function(t,n,i){return new ki(n,t,i)},t.$_$.l=dn,t.$_$.m=xi,t.$_$.n=function(t){var n=pt(t=t===rt?null:t),i=new qn;return n.pg(i)},t.$_$.o=function(t){for(var n=this.h1q().v();n.w();){var i=n.y();t(i.i2(),i.j2())}return Z},t.$_$.p=function(t){var n=this.f1q(t);return null==n?null:Et(n)},t.$_$.q=Mn,t.$_$.r=Rn,t.$_$.s=In,t.$_$.t=function(t,n){for(var i=n.h1q().v();i.w();){var e=i.y(),r=e.i2(),s=e.j2();t.m1q(r,s)}return t},t.$_$.u=function(t){var n=wt(t).toLowerCase();return dt(n,0)===t},t.$_$.v=Si,t.$_$.w=function(t,n){for(var i=n.p1o().v();i.w();){var e=i.y();t.m1o(e instanceof dn?e:J(),n.j1o(e))}},t.$_$.x=function(t){for(var n=0,i=t.length,e=vt(i);n=e)throw new jt(n,"Unexpected end of string "+(null==r?"":" in ["+r+"]"),i);return P(n,i)}function Ct(t,n){var i,e=t.f5a_1,r=e.oh_1;if(n<=e.ph_1&&r<=n){var s=L(n),u=l(48);i=s-L(u)|0}else{var o=t.c5a_1,_=o.oh_1;if(n<=o.ph_1&&_<=n){var h=10+L(n)|0,a=l(97);i=h-L(a)|0}else{var c=t.e5a_1,f=c.oh_1;if(n<=c.ph_1&&f<=n){var v=10+L(n)|0,d=l(65);i=v-L(d)|0}else i=-1}}return i}function Et(){s=this,this.b5a_1=F(l(97),l(122)),this.c5a_1=F(l(97),l(102)),this.d5a_1=F(l(65),l(90)),this.e5a_1=F(l(65),l(70)),this.f5a_1=F(l(48),l(57)),this.g5a_1=U([new I(l(95)),new I(l(45)),new I(l(33)),new I(l(46)),new I(l(126)),new I(l(39)),new I(l(40)),new I(l(41)),new I(l(42))]),this.h5a_1=c([l(48),l(49),l(50),l(51),l(52),l(53),l(54),l(55),l(56),l(57),l(65),l(66),l(67),l(68),l(69),l(70)]),this.i5a_1=l(65533)}function Ot(){return null==s&&new Et,s}function jt(t,n,i){if(i=i===S?-1:i,Q(n,this),tt(this,jt),this.i5b_1=t,this.j5b_1=n,this.k5b_1=i,!(this.k5b_1>=-1))throw y(g("Failed requirement."))}function zt(){return u}function Tt(t){var n=t.o5a_1;return Z("internalDecoded",1,J,(function(t){return Tt(t)}),null),n.j2()}function At(t){var n=t.p5a_1;return Z("internalEncoded",1,J,(function(t){return At(t)}),null),n.j2()}function It(){this.l5b_1=1,this.m5b_1=2}function Dt(t,n){if(this.m5a_1=!(t===ft().f59_1),this.n5a_1=!(n===ft().f59_1),this.o5a_1=M((i=this,e=n,r=t,function(){return i.m5a_1||e===ft().f59_1?Ot().g5b(r):e})),this.p5a_1=M(function(t,n,i){return function(){return t===ft().f59_1?n.n5b(i):t}}(t,this,n)),t===ft().f59_1&&n===ft().f59_1)throw y("Neither encoded nor decoded");var i,e,r}function Mt(t){if(Pt.call(this,t,t),null!=t&&0!==E(t))throw y(g("Expected empty value, got: "+t));this.t5b_1=!0}function Nt(){o=this,this.s59_1=new Mt(null),this.t59_1=new Mt("")}function Rt(){return null==o&&new Nt,o}function Pt(t,n){Rt(),Dt.call(this,t,n)}function Lt(){_=this,this.r5a_1=new Ut(null,null),this.s5a_1=new Ut("","")}function Ft(){return null==_&&new Lt,_}function Ut(t,n){var i;Ft(),Dt.call(this,t,n),this.e5c_1=M((i=t,function(){var t=i;if(null==t)return dt().g59_1;var n,e=t,r=new mt,s=0;t:for(;;){var u=D(e,l(47),s);if(n=u,!(u>-1))break t;if(sL(h)}if(r)return zt()}while(0<=i);return zt()}function Bt(){var t;this.f5c_1=M((t=this,function(){var n=t.m24();return n.d1()?null:et(n)})),this.g5c_1=M(function(t){return function(){var n=t.w5a();if(null==n)return Rt().l5a(null);var i,e=n,r=rt(e,l(64)),s=Rt();return i=r===zt()?null:e.substring(0,r),s.l5a(i)}}(this)),this.h5c_1=M(function(t){return function(){return Ht(t).o5b()}}(this)),this.i5c_1=M(function(t){return function(){return Ht(t).q5a()}}(this)),this.j5c_1=M(function(t){return function(){var n=t.w5a();if(null==n)return null;var i,e=n,r=rt(e,l(64)),s=Vt(0,e);if(s===zt()){var u=r+1|0;i=e.substring(u)}else{var o=r+1|0;i=e.substring(o,s)}var _=i;return Ot().h5b(_)}}(this)),this.k5c_1=M(function(t){return function(){var n=t.w5a();if(null==n)return-1;var i=n,e=Vt(0,i);if(e===zt())return-1;var r,s=Ot(),u=e+1|0,o=i.substring(u),_=s.h5b(o);try{r=st(_)}catch(t){if(!(t instanceof ut))throw t;r=-1}return r}}(this))}function Wt(t){var n=t.y5c_1;return Z("ssp",1,J,(function(t){return Wt(t)}),null),n.j2()}function Yt(t,n){var i=n.s5c_1.q5a();null!=i&&t.r5("//").r5(i);var e=n.t5c_1.q5a();null!=e&&t.r5(e),n.u5c_1.t19()||t.s5(l(63)).r5(n.u5c_1.q5a())}function Gt(t){var n=t.k5d_1;return Z("uriString",1,J,(function(t){return Gt(t)}),null),n.j2()}function Kt(t){return function(){return Rt().l5a((n=t,Yt(i=H(),n),i.toString()));var n,i}}function Xt(t,n,i,e,r){var s;Bt.call(this),this.r5c_1=t,this.s5c_1=Rt().y5b(n),this.t5c_1=null==i?Ft().r5a_1:i,this.u5c_1=Rt().y5b(e),this.v5c_1=Rt().y5b(r),this.w5c_1=!0,this.x5c_1=null==this.r5c_1,this.y5c_1=M(Kt(this)),this.z5c_1=M((s=this,function(){return Wt(s).q5a()})),this.a5d_1=M(function(t){return function(){return Wt(t).o5b()}}(this)),this.b5d_1=M(function(t){return function(){return t.s5c_1.o5b()}}(this)),this.c5d_1=M(function(t){return function(){return t.s5c_1.q5a()}}(this)),this.d5d_1=M(function(t){return function(){return t.t5c_1.q5a()}}(this)),this.e5d_1=M(function(t){return function(){return t.t5c_1.o5b()}}(this)),this.f5d_1=M(function(t){return function(){return t.u5c_1.o5b()}}(this)),this.g5d_1=M(function(t){return function(){return t.u5c_1.q5a()}}(this)),this.h5d_1=M(function(t){return function(){return t.v5c_1.o5b()}}(this)),this.i5d_1=M(function(t){return function(){return t.v5c_1.q5a()}}(this)),this.j5d_1=M(function(t){return function(){return t.t5c_1.m24()}}(this)),this.k5d_1=M(function(t){return function(){var n=H();return null!=t.r5c_1&&n.r5(t.r5c_1).s5(l(58)),Yt(n,t),t.v5c_1.t19()||n.s5(l(35)).r5(t.l5d()),n.toString()}}(this))}function Jt(t){var n=t.h5e_1;return Z("cachedString",1,J,(function(t){return Jt(t)}),null),n.j2()}function Zt(t,n,i){var e;this.m5d_1=t,this.n5d_1=n,this.o5d_1=null==i?Rt().s59_1:i,this.p5d_1=!1,this.q5d_1=null==this.m5d_1,this.r5d_1=M((e=this,function(){return e.n5d_1.q5a()})),this.s5d_1=M(function(t){return function(){return t.n5d_1.o5b()}}(this)),this.t5d_1=null,this.u5d_1=null,this.v5d_1=null,this.w5d_1=null,this.x5d_1=null,this.y5d_1=null,this.z5d_1=M(function(t){return function(){return t.o5d_1.o5b()}}(this)),this.a5e_1=M(function(t){return function(){return t.o5d_1.q5a()}}(this)),this.b5e_1=at(),this.c5e_1=null,this.d5e_1=null,this.e5e_1=null,this.f5e_1=null,this.g5e_1=-1,this.h5e_1=M(function(t){return function(){var n=H();return n.r5(t.m5d_1).s5(l(58)),n.r5(t.i5e()),t.o5d_1.t19()||n.s5(l(35)).r5(t.l5d()),n.toString()}}(this))}function Qt(t){var n=t.q5e_1;return Z("cachedSsi",1,J,(function(t){return Qt(t)}),null),n.j2()}function tn(t){var n=t.r5e_1;return Z("cachedFsi",1,J,(function(t){return tn(t)}),null),n.j2()}function nn(t){var n=t.v5e_1;return Z("ssp",1,J,(function(t){return nn(t)}),null),n.j2()}function en(t){var n=t.w5e_1;return Z("authorityPart",1,J,(function(t){return en(t)}),null),n.j2()}function rn(t){var n=t.z5e_1;return Z("pathPart",1,J,(function(t){return rn(t)}),null),n.j2()}function sn(t){var n=t.d5f_1;return Z("queryPart",1,J,(function(t){return sn(t)}),null),n.j2()}function un(t){var n=t.g5f_1;return Z("fragmentPart",1,J,(function(t){return un(t)}),null),n.j2()}function on(){}function _n(t){var n;Bt.call(this),this.p5e_1=t,this.q5e_1=M((n=this,function(){return D(n.p5e_1,l(58))})),this.r5e_1=M(function(t){return function(){return D(t.p5e_1,l(35),Qt(t))}}(this)),this.s5e_1=M(function(t){return function(){var n=Qt(t);return n===zt()||t.p5e_1.length!==(n+1|0)&&P(t.p5e_1,n+1|0)===l(47)}}(this)),this.t5e_1=M(function(t){return function(){return Qt(t)===zt()}}(this)),this.u5e_1=M(function(t){return function(){var n=Qt(t);return n===zt()?null:t.p5e_1.substring(0,n)}}(this)),this.v5e_1=M(function(t){return function(){var n,i=Qt(t),e=tn(t),r=Rt();if(e===zt()){var s=i+1|0;n=t.p5e_1.substring(s)}else{var u=i+1|0;n=t.p5e_1.substring(u,e)}return r.l5a(n)}}(this)),this.w5e_1=M(function(t){return function(){var n=h.j5f(t.p5e_1,Qt(t));return Rt().l5a(n)}}(this)),this.x5e_1=M(function(t){return function(){return en(t).o5b()}}(this)),this.y5e_1=M(function(t){return function(){return en(t).q5a()}}(this)),this.z5e_1=M(function(t){return function(){var n=Qt(t),i=n>-1&&((n+1|0)===t.p5e_1.length||P(t.p5e_1,n+1|0)!==l(47))?null:h.k5f(t.p5e_1,n);return Ft().l5a(i)}}(this)),this.a5f_1=M(function(t){return function(){return rn(t).o5b()}}(this)),this.b5f_1=M(function(t){return function(){return rn(t).q5a()}}(this)),this.c5f_1=M(function(t){return function(){return rn(t).m24()}}(this)),this.d5f_1=M(function(t){return function(){var n,i=D(t.p5e_1,l(63),Qt(t));if(i===zt())n=null;else{var e,r=tn(t);if(r===zt()){var s=i+1|0;e=t.p5e_1.substring(s)}else if(r=this.i59_1)throw m("Index "+t+" should be less than "+this.i59_1);if(null==this.h59_1)throw y(g("Required value was null."));return this.h59_1[t]},v(mt).l59=function(t){if(null!=this.j59_1){if((this.k59_1+1|0)===pt(this).length){for(var n=0,i=a(pt(this).length,2),e=x(Array(i),null);nr&&i.t7(t,r,u);for(var o=(r=u)+1|0;o>4]),i.s5(this.h5a_1[15&c[d]])}while(v-1&&(t.r5(" at index "),t.v7(this.k5b_1)),t.r5(": "),t.r5(this.i5b_1),t.toString()},v(Dt).o5b=function(){return Tt(this)},v(Dt).q5a=function(){return At(this)},v(Mt).t19=function(){return this.t5b_1},v(Nt).y5b=function(t){return null==t?this.s59_1:t},v(Nt).l5a=function(t){return this.z5b(t,ft().f59_1)},v(Nt).z5b=function(t,n){return null==t?this.s59_1:0===E(t)?this.t59_1:null==n?this.s59_1:0===E(n)?this.t59_1:new Pt(t,n)},v(Pt).t19=function(){return!1},v(Pt).n5b=function(t){return Ot().d5b(t)},v(Lt).l5a=function(t){return this.z5b(t,ft().f59_1)},v(Lt).z5b=function(t,n){return null==t?this.r5a_1:0===E(t)?this.s5a_1:new Ut(t,n)},v(Lt).t5a=function(t){var n=t.m5a_1?t.q5a():t.o5b();return null==n||0===E(n)||it(n,"/")?t:new Ut(t.m5a_1?"/"+t.q5a():ft().f59_1,t.n5a_1?"/"+t.o5b():ft().f59_1)},v(Ut).n5b=function(t){return Ot().k5a(t,"/")},v(Ut).m24=function(){var t=this.e5c_1;return Z("pathSegments",1,J,(function(t){return t.m24()}),null),t.j2()},v(Bt).d=function(t){return this.x5a(null!=t&&_t(t,bt)?t:ot())},v(Xt).w5a=function(){var t=this.c5d_1;return Z("encodedAuthority",1,J,(function(t){return t.w5a()}),null),t.j2()},v(Xt).l5d=function(){var t=this.i5d_1;return Z("encodedFragment",1,J,(function(t){return t.l5d()}),null),t.j2()},v(Xt).m24=function(){var t=this.j5d_1;return Z("pathSegments",1,J,(function(t){return t.m24()}),null),t.j2()},v(Xt).equals=function(t){return!(null==t||!_t(t,bt))&&this.toString()===g(t)},v(Xt).hashCode=function(){return ht(this.toString())},v(Xt).toString=function(){return Gt(this)},v(Xt).y5a=function(){return(new gt).u59(this.r5c_1).w59(this.s5c_1).x59(this.t5c_1).y59(this.u5c_1).z59(this.v5c_1)},v(Xt).d=function(t){return this.x5a(null!=t&&_t(t,bt)?t:ot())},v(Zt).i5e=function(){var t=this.r5d_1;return Z("encodedSchemeSpecificPart",1,J,(function(t){return t.i5e()}),null),t.j2()},v(Zt).l5d=function(){var t=this.a5e_1;return Z("encodedFragment",1,J,(function(t){return t.l5d()}),null),t.j2()},v(Zt).equals=function(t){return!(null==t||!_t(t,bt))&&this.toString()===g(t)},v(Zt).hashCode=function(){return ht(this.toString())},v(Zt).toString=function(){return Jt(this)},v(Zt).y5a=function(){return(new gt).u59(this.m5d_1).v59(this.n5d_1).z59(this.o5d_1)},v(Zt).d=function(t){return this.x5a(null!=t&&_t(t,bt)?t:ot())},v(on).j5f=function(t,n){var i,e=t.length;if(e>(n+2|0)&&P(t,n+1|0)===l(47)&&P(t,n+2|0)===l(47)){var r=n+3|0;t:for(;r(n+2|0)&&P(t,n+1|0)===l(47)&&P(t,n+2|0)===l(47)){i=n+3|0;t:for(;i=0&&!i.d1()&&t.z4b_1!==t.b4c_1){t.f4c("\n");try{t.s4b_1=pt();var e=t.b4c_1,r=0;if(r":"/>":">";t.d4i_1.s7(i)}function Ze(t,n){Ct.call(this,t,n)}function Qe(t,n,i,e){var r,s,u,o=i;if(i===mn(9)||i===mn(10)||i===mn(13))u=!0;else{var _=mn(32),h=mn(55295),a=new gn(_,h),l=a.lk_1;u=yn(i,a.mk_1)<=0&&0<=yn(i,l)}if(u)s=!0;else{var c=mn(57344),f=mn(65533),v=new gn(c,f),d=v.lk_1;s=yn(i,v.mk_1)<=0&&0<=yn(i,d)}if(s){var w=kn(i),p=bn(xn(w));r=$n(p)}else r=$n(bn(0));var m=r;if(o===mn(0))throw ht("XML documents may not contain null strings directly or indirectly");if(m===ut(38))t.s7("&");else if(m!==ut(60)||e.equals(hr()))if(m===ut(62)&&e.equals(cr()))t.s7(">");else if(m===ut(34)&&e.equals(ar()))t.s7(""");else if(m===ut(39)&&e.equals(lr()))t.s7("'");else{var g,y=mn(1),b=mn(8),$=new gn(y,b),k=$.lk_1;if(yn(o,$.mk_1)<=0&&0<=yn(o,k)||o===mn(11)||o===mn(12))g=!0;else{var x=mn(14),q=mn(31),S=new gn(x,q),C=S.lk_1;g=yn(o,S.mk_1)<=0&&0<=yn(o,C)}if(g){var E=n.g4i_1.y9_1;0===E?_r(n,o):1===E&&or(t,o)}else{var O,j=mn(127),z=mn(132),T=new gn(j,z),A=T.lk_1;if(yn(o,T.mk_1)<=0&&0<=yn(o,A))O=!0;else{var I=mn(134),D=mn(159),M=new gn(I,D),N=M.lk_1;O=yn(o,M.mk_1)<=0&&0<=yn(o,N)}if(O){var R=n.g4i_1.y9_1;0===R?t.s5(m):1===R&&or(t,o)}else{var P=mn(55296),L=mn(57343),F=new gn(P,L),U=F.lk_1;if(yn(o,F.mk_1)<=0&&0<=yn(o,U)||o===mn(65534)||o===mn(65535))_r(n,o);else{var H=mn(65535);if(qn(kn(o),kn(H))>0){var V=mn(65536),B=mn(kn(o)-kn(V)|0),W=mn(kn(B)>>>10|0),Y=mn(55296),G=mn(kn(W)+kn(Y)|0),K=mn(1023),X=mn(kn(B)&kn(K)),J=mn(56320),Z=mn(kn(X)+kn(J)|0),Q=kn(G),tt=bn(xn(Q));t.s5($n(tt));var nt=kn(Z),it=bn(xn(nt));t.s5($n(it))}else t.s5(m)}}}}else t.s7("<")}function tr(t,n,i){for(var e=pr(n).v();e.w();){var r=e.y().yj_1;Qe(t.d4i_1,t,r,i)}}function nr(t){0===t.k4i_1.y9_1&&(t.f4i_1.equals(Re())||t.x4c(null,null,null),t.k4i_1=vr())}function ir(t,n){var i=t.s4b_1;if(t.m4i_1>=0&&!i.d1()&&t.m4i_1!==t.b4b()){t.f4c("\n");try{t.s4b_1=pt();for(var e=function(t,n){if(!t.v().w())return pt();var i=rt(),e=null,r=0;if(r0&&null!=i&&t.l4i_1.n4i(i)!=n&&t.s4c(i,n)}function rr(t,n,i,e){t.d4i_1.s5(ut(32)),Q(n)>0&&t.d4i_1.s7(n).s5(ut(58)),t.d4i_1.s7(i).s5(ut(61));var r=-1===xt(e,ut(34))?new Cn(new Sn(ut(34)),ar()):new Cn(new Sn(ut(39)),lr()),s=r.ue().oa_1,u=r.ve();t.d4i_1.s5(s),tr(t,e,u),t.d4i_1.s5(s)}function sr(){this.o4i_1=-1,this.p4i_1=2147483647}function ur(t,n){Ct.call(this,t,n)}function or(t,n){t.s7("&#x").s7(En(n,16)).s5(ut(59))}function _r(t,n){throw ht("In xml "+t.g4i_1.s4i_1+" the character 0x"+En(n,16)+" is not valid")}function hr(){return We(),x}function ar(){return We(),q}function lr(){return We(),S}function cr(){return We(),C}function fr(){return Ye(),O}function vr(){return Ye(),j}function dr(){return Ye(),T}function wr(t,n,i,e){n=n===et||n,i=i===et?Re():i,e=e===et?$r():e,Ir.call(this),this.d4i_1=t,this.e4i_1=n,this.f4i_1=i,this.g4i_1=e,this.h4i_1=!0,this.i4i_1=!1,this.j4i_1=Bt(Array(12),null),this.k4i_1=fr(),this.l4i_1=new zr,this.m4i_1=-1}function pr(t){return new gr(t)}function mr(t){this.a4j_1=t,this.z4i_1=0}function gr(t){this.b4j_1=t}function yr(){if(N)return G;N=!0,D=new br("XML10",0,"1.0"),M=new br("XML11",1,"1.1")}function br(t,n,i){Ct.call(this,t,n),this.s4i_1=i}function $r(){return yr(),M}function kr(t,n){var i=0===n?0:xr(t,n-1|0)/2|0,e=xr(t,n)/2|0;return Z(i,e)}function xr(t,n){return W(t.o4g_1[n],2)}function qr(t,n){return W(n,2)}function Sr(t,n){return W(n,2)+1|0}function Cr(t,n){return ft(t.n4g_1[qr(0,n)])}function Er(t,n){return ft(t.n4g_1[Sr(0,n)])}function Or(t){this.c4j_1=t}function jr(t){this.e4j_1=t,this.d4j_1=0}function zr(){this.m4g_1=1,this.n4g_1=Bt(Array(10),null),this.o4g_1=new Int32Array(20),this.p4g_1=0,this.q4g_1=new Or(this)}function Tr(t,n){if(Q(t)>0){var i=t.toString();if(!Mr(i))throw Ce("Indents can only be whitespace or comments: "+i);n.s(new de(null,Pi(),i)),t.d8()}}function Ar(){this.g4j_1="\x3c!----\x3e"}function Ir(t){t=t===et?pt():t,this.s4b_1=Yt(t)}function Dr(){return Rr(),P}function Mr(t){var n;Rr();t:{for(var i=0;i=Dr().length)&&Dr()[t]}function Rr(){if(!L){L=!0;var t=Rn(33),n=ut(9);t[zn(n)]=!0;var i=ut(10);t[zn(i)]=!0;var e=ut(13);t[zn(e)]=!0;var r=ut(32);t[zn(r)]=!0,P=t}}function Pr(t,n){var i=t.item(n);return null==i||null!=i?i:X()}function Lr(){this.i4j_1=1,this.j4j_1=2,this.k4j_1=3,this.l4j_1=4,this.m4j_1=5,this.n4j_1=6,this.o4j_1=7,this.p4j_1=8,this.q4j_1=9,this.r4j_1=10,this.s4j_1=11,this.t4j_1=12}function Fr(t){this.u4j_1=t,this.v4j_1=0}function Ur(){}function Hr(){U=this,this.y4j_1=Fn("xmlBoolean",Ln())}function Vr(t,n){var i;if(1!==t.nodeType)i=null;else{var e=(null!=t?t:X()).attributes,r=rt(),s=e.length,u=0;if(u=d;){switch(null==w?-1:w.y9_1){case 1:var p=new di(l,!0);Ve(p,t,v),Ie(t,p),Be(p,v,t),p.e1j();break;case 9:case 4:l.appendChild(ft(l.ownerDocument).createTextNode(t.e4b()));break;case 5:l.appendChild(ft(l.ownerDocument).createCDATASection(t.e4b()));break;case 3:l.appendChild(ft(l.ownerDocument).createComment(t.e4b()));break;case 8:throw Ce("Entity references are not expected here");case 10:throw Bn("Attributes are not expected in the event stream")}w=t.w()?t.y():null}""===v.q2("")&&v.k2("");var m=Rt(v.f2()),g=tn(m,Jr),y=Lt(nn(g,(c=l,function(t){var n=t.i2(),i=t.j2();return c.setAttributeNS("http://www.w3.org/2000/xmlns/",""===n?"xmlns":"xmlns:"+n,i),new xe(n,i)}))),b=(new XMLSerializer).serializeToString(l instanceof Node?l:X()),$=xt(b,ut(62),19)+1|0,k=(b.length-19|0)-3|0;return us(y,b.substring($,k))}catch(t){if(t instanceof je)throw Oe("Failure to parse children into string at "+f,t);if(t instanceof fn)throw Oe("Failure to parse children into string at "+f,t);throw t}}function Jr(t){var n=t.i2(),i=t.j2();return""!==n||!(""===i)}function Zr(){}function Qr(t){return Wn(t),ts.call(t),t}function ts(){ln(this,ts)}function ns(t,n){t||console.error("Assertion failed: "+n())}function is(t){t||console.error("Assertion failed")}function es(){}function rs(t){return function(t,n){return ss(pt(),t,n),n}(t,wt(K(hs)))}function ss(t,n,i){return hs.call(i),i.a4k_1=ee().b4f(t),i.b4k_1=n,i}function us(t,n){return ss(t,n,wt(K(hs)))}function os(){V=this,this.c4k_1=new es}function _s(t){return'"'+t.z4a()+" -> "+t.x4a()+'"'}function hs(){null==V&&new os}function as(t){return t.prototype}function ls(t,n,i,e){return function(t,n,i){for(var e=0,r=W(t.length,2),s=Bt(Array(r),null);e");var _=e.toString()+n+"",h=(new DOMParser).parseFromString(_,"text/xml");return new oi(null!=h?h:X())}(0,t,n));this.k4k_1=cs(null,[],[]),this.er().g4b()===zi()&&vs(this)}function ps(t){var n=document.implementation,i=t.p4e(),e=n.createDocument(null==i?"":i,Pe(t));return null!=e?e:X()}return it(ii,"DomReader$$o$iterator$slambda",nt,Y,et,et,et,et,[1]),it(Wi,"IterableNamespaceContext",Nt),it(ui,et,nt,et,[Wi]),it(ze,"XmlReader",Nt),it(oi,"DomReader",nt,et,[ze]),it(fi,"Companion",yt),it(vi,et,nt),it(He,"XmlWriter",Nt),it(Ir,"PlatformXmlWriterBase",nt,et,[He]),it(di,"DomWriter",nt,Ir,[Ir,He],(function(t){return function(t,n){return t=t===et?Re():t,di.call(n,null,et,t),n}(t,wt(K(di)))})),it(Oi,"EventType",nt,Ct),it(wi,"START_DOCUMENT",nt,Oi),it(pi,"START_ELEMENT",nt,Oi),it(mi,"END_ELEMENT",nt,Oi),it(gi,"COMMENT",nt,Oi),it(yi,"TEXT",nt,Oi),it(bi,"CDSECT",nt,Oi),it($i,"DOCDECL",nt,Oi),it(ki,"END_DOCUMENT",nt,Oi),it(xi,"ENTITY_REF",nt,Oi),it(qi,"IGNORABLE_WHITESPACE",nt,Oi),it(Si,"ATTRIBUTE",nt,Oi),it(Ci,"PROCESSING_INSTRUCTION",nt,Oi),it(Hi,"Companion",yt,et,[At]),it(Bi,"Namespace",Nt),it(Gi,"QNameSerializer",yt,et,[At]),it(Xi,"SimpleIterator",nt),it(Ji,"SimpleNamespace",nt,et,[Bi]),it(ie,"Companion",yt,et,[At]),it(ue,"SimpleNamespaceContext",nt,et,[Wi],(function(){return t=wt(K(ue)),ue.call(t,[]),t;var t}),et,{0:ee}),it(oe,"XMLConstants",yt),it(le,"XmlBufferedReaderBase",nt,et,[ze]),it(_e,"XmlBufferedReader",nt,le),it(ce,"XmlDelegatingReader",nt,et,[ze]),it(ve,"Companion",yt),it(qe,"XmlEvent",nt),it(de,"TextEvent",nt,qe),it(we,"ProcessingInstructionEvent",nt,de),it(pe,"EntityRefEvent",nt,de),it(me,"EndDocumentEvent",nt,qe),it(be,"NamedEvent",nt,qe),it(ge,"EndElementEvent",nt,be),it(ye,"StartDocumentEvent",nt,qe),it($e,"StartElementEvent",nt,be),it(ke,"Attribute",nt,qe),it(xe,"NamespaceImpl",nt,et,[Bi]),it(ts,"IOException",nt,Kn,et,(function t(){var n=Qr(wt(K(ts)));return ln(n,t),n})),it(je,"XmlException",nt,ts,et,(function t(){var n,i=(Qr(n=wt(K(je))),je.call(n),n);return ln(i,t),i})),it(De,"Companion",yt),it(Ne,"XmlDeclMode",nt,Ct),it(Ze,"EscapeMode",nt,Ct),it(sr,"Companion",yt),it(ur,"WriteState",nt,Ct),it(wr,"KtXmlWriter",nt,Ir,[Ir,He]),it(mr,et,nt),it(gr,et,nt),it(br,"XmlVersion",nt,Ct),it(Or,et,nt,et,[Wi]),it(jr,et,nt),it(zr,"NamespaceHolder",nt,et,et,zr),it(Ar,"Companion",yt),it(Lr,"NodeConsts",yt),it(Fr,"NodeListIterator",nt),it(Ur,"ICompactFragment",Nt),it(Hr,"XmlBooleanSerializer",yt,et,[At]),it(Kr,"QName",nt),it(Zr,"XmlStreaming",yt),it(es,"Factory",nt,et,et,es),it(os,"Companion",yt),it(hs,"CompactFragment",nt,et,[Ur]),it(fs,"FragmentNamespaceContext",nt,ue),it(ds,"Companion",yt),it(ws,"XMLFragmentStreamReader",nt,ce),K(ii).j4a=function(t,n){var i=this.k4a(t,n);return i.ec_1=G,i.fc_1=null,i.pc()},K(ii).cd=function(t,n){return this.j4a(t instanceof J?t:X(),n)},K(ii).pc=function(){var t=this.ec_1;t:for(;;)try{switch(this.cc_1){case 0:this.dc_1=8,this.d4a_1=this.b4a_1.l4a_1,this.cc_1=1;continue t;case 1:if(null==this.d4a_1){this.cc_1=7;continue t}this.e4a_1=this.d4a_1.attributes,this.f4a_1=this.e4a_1.length,this.g4a_1=Z(0,this.f4a_1).v(),this.cc_1=2;continue t;case 2:if(!this.g4a_1.w()){this.cc_1=6;continue t}this.h4a_1=this.g4a_1.y();var n=this.e4a_1.item(this.h4a_1);if(this.i4a_1=null!=n&&null!=n?n:X(),"xmlns"===this.i4a_1.prefix){this.cc_1=4;var i=this.i4a_1.localName,e=null==i?this.i4a_1.name:i,r=this.i4a_1;if((t=this.c4a_1.ze(new xe(e,r.value),this))===tt())return t;continue t}var s=this.i4a_1.prefix;if((null==s||0===Q(s))&&"xmlns"===this.i4a_1.localName){this.cc_1=3;var u=this.i4a_1;if((t=this.c4a_1.ze(new xe("",u.value),this))===tt())return t;continue t}this.cc_1=5;continue t;case 3:case 4:this.cc_1=5;continue t;case 5:this.cc_1=2;continue t;case 6:this.d4a_1=this.d4a_1.parentElement,this.cc_1=1;continue t;case 7:return G;case 8:throw this.fc_1}}catch(t){var o=t;if(8===this.dc_1)throw o;this.cc_1=this.dc_1,this.fc_1=o}},K(ii).k4a=function(t,n){var i=new ii(this.b4a_1,n);return i.c4a_1=t,i},K(ui).t4a=function(t){var n=this.l4a_1;return null==n?null:Vr(n,t)},K(ui).u4a=function(t){var n=this.l4a_1;return null==n?null:Br(n,t)},K(ui).v4a=function(){return this},K(ui).v=function(){return ot((t=this,n=null,i=new ii(t,n),e=function(t,n){return i.j4a(t,n)},e.$arity=1,e)).v();var t,n,i,e},K(oi).x4a=function(){var t,n=this.s4a();if(null==n)t=null;else{var i=n.namespaceURI;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a namespace uri");return e},K(oi).y4a=function(){var t,n=this.s4a();if(null==n)t=null;else{var i=n.localName;t=null==i?n.tagName:i}var e=t;if(null==e)throw Ce("Only elements have a local name");return e},K(oi).z4a=function(){var t,n=this.s4a();if(null==n)t=null;else{var i=n.prefix;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a prefix");return e},K(oi).a4b=function(){return this.o4a_1},K(oi).b4b=function(){return this.q4a_1},K(oi).c4b=function(){var t=ei(this);if(7!==t.nodeType)throw ht(_t("Failed requirement."));return(null!=t?t:X()).target},K(oi).d4b=function(){var t=ei(this);if(7!==t.nodeType)throw ht(_t("Failed requirement."));return(null!=t?t:X()).data},K(oi).e4b=function(){var t,n=this.n4a_1,i=null==n?null:n.nodeType;if(5===(null==i?null:i)||8===(null==i?null:i)||3===(null==i?null:i)||4===(null==i?null:i)){var e=this.n4a_1;t=(null!=e&&null!=e?e:X()).data}else{if(7!==(null==i?null:i))throw Ce("Node is not a text node");var r=this.n4a_1,s=null!=r&&null!=r?r:X();t=s.nodeName+" "+s.data}return t},K(oi).f4b=function(){var t=this.n4a_1,n=null==t||null!=t?t:X(),i=null==n?null:n.attributes,e=null==i?null:i.length;return null==e?0:e},K(oi).g4b=function(){var t=this.n4a_1;return null==t?Ni():_i(t,this.p4a_1)},K(oi).h4b=function(){return si(this.n4a_1,at()).toString()},K(oi).s4a=function(){var t,n=this.n4a_1,i=null==n?null:n.nodeType;if(1===(null==i?null:i)){var e=this.n4a_1;t=null!=e&&null!=e?e:X()}else t=null;return t},K(oi).i4b=function(){return new ui(this)},K(oi).j4b=function(){for(var t=function(t){var n,i=t.r4a_1;if(null==i){var e=ri(t).attributes,r=rt(),s=e.length,u=0;if(u0&&function(t){for(var n=t,i=n.firstChild;null!=i;){var e=i.nextSibling;Wr(i)&&n.removeChild(i),i=e}}(this.r4c())}var h,a=function(t,n){return t.createElementNS(n.p4e(),Pe(n))}(this.r4c(),Fe(t,n,i));ft(this.x4b_1).appendChild(a),this.x4b_1=a},K(di).n4c=function(t){ai(this);var n,i,e=this.x4b_1;if(null==e)li(this,(n=this,i=t,function(t){return n.n4c(i),G}));else{var r=this.r4c().createComment(t);e.appendChild(r)}},K(di).u4c=function(t){this.z4b_1=-1;var n,i,e=this.x4b_1;if(null==e){if(!kt(t))throw Ce("Not in an element -- text");li(this,(n=this,i=t,function(t){return n.f4c(i),G}))}else{var r=this.r4c().createTextNode(t);e.appendChild(r)}},K(di).v4c=function(t){this.z4b_1=-1;var n=this.r4c().createCDATASection(t),i=this.x4b_1;if(null==(null==i?null:i.appendChild(n)))throw Ce("Not in an element -- cdsect")},K(di).o4c=function(t){hi(this,2147483647);var n,i,e=this.x4b_1,r=null==e?null:e.nodeType;if(1!==(null==r?null:r))throw Ce("Document already started");if(null==this.w4b_1)li(this,(n=this,i=t,function(t){return n.o4c(i),G}));else{var s,u=xt(t,ut(32));if(u<0)s=qt(t,"");else{var o=t.substring(0,u),_=u+1|0,h=t.substring(_);s=qt(o,h)}var a=s,l=a.ue(),c=a.ve(),f=this.r4c().createProcessingInstruction(l,c);this.r4c().appendChild(f)}},K(di).p4c=function(t,n){var i,e,r,s=this.x4b_1;if(null==s)li(this,(i=this,e=t,r=n,function(t){return i.p4c(e,r),G}));else{var u=this.r4c().createProcessingInstruction(t,n);s.appendChild(u)}this.z4b_1=-1},K(di).f4c=function(t){var n,i,e=this.x4b_1;if(null==e)li(this,(n=this,i=t,function(t){return n.f4c(i),G}));else if(9!==e.nodeType){var r=this.r4c().createTextNode(t);e.appendChild(r)}this.z4b_1=-1},K(di).w4c=function(t,n,i,e){var r,s=ci(this,"attribute");null!=t&&0!==Q(t)||null!=i&&0!==Q(i)?null==i||0===Q(i)?s.setAttributeNS(t,n,e):(r=null==t?"":t,s.setAttributeNS(r,i+":"+n,e)):s.setAttribute(n,e)},K(di).q4c=function(t){hi(this,2147483647);var n,i,e=this.w4b_1;if(null==e)li(this,(n=this,i=t,function(t){return n.q4c(i),G}));else{var r=St(t,[" "],et,3),s=r.h1(0),u=r.n()>1?r.h1(1):"",o=r.n()>2?r.h1(2):"",_=e.implementation.createDocumentType(s,u,o);e.appendChild(_)}},K(di).x4c=function(t,n,i){hi(this,2147483647),this.c4c_1=t,this.d4c_1=n,this.e4c_1=i},K(di).y4c=function(){this.x4b_1=null},K(di).z4c=function(t,n,i){this.b4c_1=this.b4c_1-1|0,hi(this,2147483647),this.x4b_1=ci(this,"No current element or no parent element").parentNode},K(di).a4d=function(t){var n=this.x4b_1;return null==n?null:Vr(n,t)},K(di).e1j=function(){var t;ns(0===this.b4c_1,(t=this,function(){return"Closing a dom writer but not all elements were closed (depth:"+t.b4c_1+")"})),this.x4b_1=null},K(wi).d4d=function(t){return new ye(t.h4b(),t.m2c(),t.k4b(),t.l4b())},K(wi).e4d=function(t,n){t.x4c(n.m2c(),n.k4b(),n.l4b())},K(pi).d4d=function(t){return new $e(t.h4b(),t.x4a(),t.y4a(),t.z4a(),function(t){for(var n=0,i=t.f4b(),e=Bt(Array(i),null);n")},K(wr).q4c=function(t){if(ir(this,2147483647),nr(this),!this.k4i_1.equals(vr()))throw Ce("Writing a DTD is only allowed once, in the prolog");this.k4i_1=(Ye(),z);var n=this.d4i_1.s7("")},K(wr).o4c=function(t){Je(this,!1),ir(this,2147483647),nr(this),this.d4i_1.s7("")},K(wr).p4c=function(t,n){Je(this,!1),ir(this,2147483647),nr(this),this.d4i_1.s7("0&&this.d4i_1.s5(ut(32)).s7(n),this.d4i_1.s7("?>")},K(wr).t4c=function(t,n,i){if(Je(this,!1),e=this,r=r===et?e.b4b():r,ir(e,r),nr(this),this.k4i_1.equals((Ye(),A)))throw Ce("Attempting to write tag after the document finished");var e,r,s;if(this.k4i_1=dr(),""===t)s="";else{var u=this.t4i(t);s=null!=u?u:null==i?this.l4i_1.u4i():i}var o=s;(function(t,n,i,e,r){var s=W(n,3);if(t.j4i_1.length<(s+3|0)){var u=t.j4i_1.length+12|0,o=Bt(Array(u),null),_=t.j4i_1;pn(_,o,0,0,s),t.j4i_1=o}var h=s;s=h+1|0,t.j4i_1[h]=i;var a=s;s=a+1|0,t.j4i_1[a]=e,t.j4i_1[s]=r})(this,this.b4b(),null==t?"":t,o,n),this.d4i_1.s5(ut(60)),Q(o)>0&&(this.d4i_1.s7(o),this.d4i_1.s5(ut(58))),this.d4i_1.s7(n),this.i4i_1=!0,this.l4i_1.b4g(),er(this,t,o)},K(wr).z4c=function(t,n,i){if(this.l4i_1.a4g(),ir(this,2147483647),(null==t?"":t)!==Ge(this,this.b4b())||Xe(this,this.b4b())!==n)throw ht(" does not match start");if(this.i4i_1)Je(this,!0);else{this.d4i_1.s7("0&&(this.d4i_1.s7(e),this.d4i_1.s5(ut(58))),this.d4i_1.s7(n),this.d4i_1.s5(ut(62))}},K(wr).n4c=function(t){Je(this,!1),ir(this,2147483647),nr(this);var n=!1;this.d4i_1.s7("\x3c!--");for(var i=pr(t).v();i.w();){var e=i.y().yj_1,r=ut(45),s=zn(r);e===mn(s)?n?(n=!1,this.d4i_1.s7("-")):(n=!0,this.d4i_1.s5(ut(45))):Qe(this.d4i_1,this,e,hr())}this.d4i_1.s7("--\x3e")},K(wr).u4c=function(t){Je(this,!1),tr(this,t,cr()),this.m4i_1=-1},K(wr).v4c=function(t){Je(this,!1);var n=0;this.d4i_1.s7(""),this.m4i_1=-1},K(wr).f4c=function(t){Je(this,!1),nr(this);for(var n=0,i=t.length;n0&&null!=t)&&Q(t)>0&&(this.v4i(i,t),er(this,t,i)),!this.i4i_1)throw st("illegal position for attribute");rr(this,null==(r=null!=i&&0!==Q(i)&&this.a4d(i)!=t?this.t4i(t):i)?"":r,n,e)},K(wr).s4c=function(t,n){var i=this.l4i_1.w4i(t);if(null!=i){if(this.e4i_1)return G;throw st(i!==n?"Attempting to set prefix to different values in the same tag":"Namespace attribute duplicated")}if(this.l4i_1.x4i(t,n),!this.i4i_1)throw st("illegal position for attribute");Q(t)>0?rr(this,"xmlns",t,n):rr(this,"","xmlns",n)},K(wr).y4c=function(){if(is(0===this.b4b()),!this.k4i_1.equals(dr()))throw Ce("Attempting to end document when in invalid state: "+this.k4i_1);for(;this.b4b()>0;)this.z4c(Ge(this,this.b4b()-1|0),Ke(this,this.b4b()-1|0),Xe(this,this.b4b()-1|0));this.v1f()},K(wr).v4i=function(t,n){n!==this.a4d(t)&&this.l4i_1.x4i(t,n)},K(wr).a4d=function(t){return this.l4i_1.n4i(t)},K(wr).t4i=function(t){return null==t?null:this.l4i_1.y4i(t)},K(wr).e1j=function(){this.l4i_1.b1()},K(mr).w=function(){return this.z4i_1=this.o4g_1.length&&(this.o4g_1=Dn(this.o4g_1,W(this.o4g_1.length,2))),this.o4g_1[this.p4g_1]=0===this.p4g_1?0:this.o4g_1[this.p4g_1-1|0]},K(zr).a4g=function(){var t=kr(this,this.p4g_1),n=t.ha_1,i=t.ia_1;if(n<=i)do{var e=n;n=n+1|0,this.n4g_1[qr(0,e)]=null,this.n4g_1[Sr(0,e)]=null}while(e!==i);this.o4g_1[this.p4g_1]=0,this.p4g_1=this.p4g_1-1|0},K(zr).f4j=function(){return this.o4g_1[this.p4g_1]},K(zr).b1=function(){this.n4g_1=Bt(Array(10),null),this.o4g_1=new Int32Array(20),this.p4g_1=0},K(zr).y4g=function(t){this.x4i(t.z4a(),t.x4a())},K(zr).x4i=function(t,n){var i=this.p4g_1>=1?this.o4g_1[this.p4g_1-1|0]:0,e=this.o4g_1[this.p4g_1];if(i=this.n4g_1.length&&((s=this).n4g_1=In(s.n4g_1,W(s.n4g_1.length,2))),function(t,n,i){var e=t.n4g_1,r=qr(0,n),s=null==i?null:_t(i);e[r]=null==s?"":s}(this,u,t),function(t,n,i){var e=t.n4g_1,r=Sr(0,n),s=null==i?null:_t(i);e[r]=null==s?"":s}(this,u,n);var o=this.o4g_1,_=this.p4g_1;o[_]=o[_]+1|0},K(zr).n4i=function(t){var n,i=_t(t);if("xml"===i)return"http://www.w3.org/XML/1998/namespace";if("xmlns"===i)return"http://www.w3.org/2000/xmlns/";t:{for(var e=Mn(this.f4j()-1|0,0).v();e.w();){var r=e.y();if(Cr(this,r)===i){n=r;break t}}n=null}var s=null==n?null:Er(this,n);return null==s?0===Q(i)?"":null:s},K(zr).y4i=function(t){var n,i=_t(t);if("http://www.w3.org/XML/1998/namespace"===i)n="xml";else if("http://www.w3.org/2000/xmlns/"===i)n="xmlns";else if(""===i){var e;t:{var r=Z(0,this.f4j());if(gt(r,Wt)&&r.d1())e=!0;else{for(var s=r.v();s.w();){var u=Cr(this,s.y());if(0===Q(u)){e=!1;break t}}e=!0}}n=e?"":null}else{var o;t:{for(var _=Mn(this.f4j()-1|0,0).v();_.w();){var h,a=_.y();if(Er(this,a)===i){var l;n:{var c=Z(a+1|0,this.f4j());if(gt(c,Wt)&&c.d1())l=!0;else{for(var f=c.v();f.w();){var v=f.y();if(Cr(this,a)===Cr(this,v)){l=!1;break n}}l=!0}}h=l}else h=!1;if(h){o=a;break t}}o=null}n=null==o?null:Cr(this,o)}return n},K(zr).v=function(){return new jr(this)},K(zr).u4i=function(){var t;do{t="n"+this.m4g_1}while(null!=this.n4i(t));return t},K(zr).w4i=function(t){var n=kr(this,this.p4g_1),i=n.ha_1,e=n.ia_1,r=i,s=Nn(i,e,2);if(r<=s)do{var u=r;if(r=r+2|0,this.n4g_1[qr(0,u)]===t)return this.n4g_1[Sr(0,u)]}while(u!==s);return null},K(Ar).h4j=function(t){for(var n=rt(),i=at(),e=0,r=0,s=t.length;r");break;default:i.s5(u)}else switch(e){case 1:case 2:case 3:i.t7("\x3c!----\x3e",0,e),e=0,i.s5(u);break;case 0:case 4:i.s5(u);break;case 5:e=4,i.s5(ut(45)).s5(u);break;case 6:throw Ce("-- is not allowed to occur inside xml comment text")}}if(e>0)throw Ce("Indent can not contain unclosed comment");return Tr(i,n),n},K(Ir).b4i=function(t){this.s4b_1=R.h4j(t)},K(Fr).w=function(){return this.v4j_1=0){if(vn(t,0)!==ut(123))throw ht("Not a valid qname literal");e=_t(dn(t,1,r));var s=r+1|0,u=Q(t);i=_t(dn(t,s,u))}else e=n.x4a(),i=_t(t);return Gr(e,i)},t.$_$.o1=function(t,n,i){if(i.g4b().equals(Ti()))throw ht("Cannot really validly write an end element here");Ie(i,t),i.g4b().equals(zi())&&Be(t,n,i)},t.$_$.p1=function(t){for(var n=t.length,i=wn(n),e=ut(32),r=0,s=t.length;r0&&i.f8(i.a()-1|0),i.toString()},t.$_$.q1=function(){return H},t})?e.apply(n,r):e)||(t.exports=s)},931:function(t,n,i){var e,r,s;r=[n,i(675),i(681),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,u,o,_,h,a,l,c,f,v,d,w,p,m,g,y,b,$,k,x,q,S,C,E,O,j,z,T,A,I,D,M=Math.imul,N=n.$_$.m,R=i.$_$.i,P=n.$_$.a5,L=i.$_$.k1,F=n.$_$.wa,U=n.$_$.r4,H=n.$_$.gh,V=n.$_$.a,B=e.$_$.u2,W=n.$_$.tg,Y=e.$_$.p2,G=i.$_$.q,K=e.$_$.u,X=e.$_$.m1,J=n.$_$.mb,Z=n.$_$.lb,Q=n.$_$.nb,tt=n.$_$.f,nt=(e.$_$.o,e.$_$.c),it=n.$_$.k8,et=e.$_$.i,rt=e.$_$.n1,st=n.$_$.p4,ut=e.$_$.x,ot=e.$_$.v,_t=e.$_$.g,ht=i.$_$.x,at=i.$_$.z,lt=i.$_$.o1,ct=(i.$_$.o,n.$_$.x1),ft=n.$_$.aa,vt=i.$_$.l,dt=n.$_$.kb,wt=e.$_$.w1,pt=n.$_$.ca,mt=e.$_$.a,gt=e.$_$.u1,yt=e.$_$.o2,bt=n.$_$.gg,$t=n.$_$.ma,kt=n.$_$.fa,xt=e.$_$.l2,qt=n.$_$.na,St=e.$_$.n2,Ct=i.$_$.q1,Et=i.$_$.l1,Ot=i.$_$.n,jt=i.$_$.i1,zt=i.$_$.a1,Tt=i.$_$.m,At=n.$_$.d5,It=e.$_$.m2,Dt=i.$_$.y,Mt=n.$_$.d,Nt=i.$_$.r,Rt=e.$_$.m,Pt=e.$_$.l,Lt=i.$_$.p1,Ft=n.$_$.se,Ut=n.$_$.df,Ht=i.$_$.p,Vt=n.$_$.ef,Bt=n.$_$.qf,Wt=n.$_$.f3,Yt=n.$_$.mf,Gt=n.$_$.tf,Kt=n.$_$.b4,Xt=n.$_$.jf,Jt=n.$_$.rf,Zt=n.$_$.n3,Qt=n.$_$.lf,tn=n.$_$.sf,nn=n.$_$.u3,en=n.$_$.hf,rn=n.$_$.pe,sn=e.$_$.v1,un=i.$_$.c,on=i.$_$.d,_n=i.$_$.f,hn=i.$_$.j1,an=i.$_$.e1,ln=i.$_$.f1,cn=n.$_$.qh,fn=n.$_$.i1,vn=n.$_$.rb,dn=n.$_$.o2,wn=e.$_$.d1,pn=e.$_$.k1,mn=e.$_$.l1,gn=e.$_$.t1,yn=n.$_$.v9,bn=n.$_$.k,$n=n.$_$.v,kn=i.$_$.k,xn=i.$_$.j,qn=e.$_$.x1,Sn=n.$_$.l,Cn=n.$_$.z7,En=n.$_$.i8,On=n.$_$.h7,jn=n.$_$.x5,zn=(i.$_$.s,n.$_$.n4),Tn=n.$_$.t6,An=e.$_$.h,In=i.$_$.g1,Dn=i.$_$.c1,Mn=e.$_$.s1,Nn=n.$_$.ph,Rn=n.$_$.oc,Pn=i.$_$.h1,Ln=i.$_$.t,Fn=i.$_$.u,Un=n.$_$.xh,Hn=n.$_$.k7,Vn=i.$_$.b,Bn=i.$_$.e,Wn=i.$_$.g,Yn=n.$_$.jh,Gn=i.$_$.b1,Kn=n.$_$.tc,Xn=n.$_$.ka,Jn=n.$_$.r2,Zn=n.$_$.we,Qn=i.$_$.n1,ti=n.$_$.ue,ni=n.$_$.fe,ii=n.$_$.a6,ei=i.$_$.h,ri=i.$_$.a,si=n.$_$.w9,ui=e.$_$.r2,oi=e.$_$.d,_i=n.$_$.la,hi=n.$_$.ia,ai=e.$_$.f,li=e.$_$.n,ci=e.$_$.j,fi=e.$_$.k,vi=e.$_$.c1,di=e.$_$.w,wi=n.$_$.y5,pi=n.$_$.u7,mi=n.$_$.zb,gi=n.$_$.u,yi=n.$_$.s,bi=n.$_$.ha,$i=n.$_$.r8,ki=n.$_$.u5,xi=n.$_$.ed,qi=n.$_$.yc,Si=n.$_$.wc,Ci=n.$_$.bd,Ei=n.$_$.hd,Oi=n.$_$.x9,ji=n.$_$.re,zi=n.$_$.wd,Ti=i.$_$.d1,Ai=n.$_$.cg,Ii=n.$_$.mg,Di=n.$_$.s7,Mi=n.$_$.sa,Ni=n.$_$.xf,Ri=n.$_$.b2,Pi=n.$_$.c,Li=n.$_$.f1,Fi=n.$_$.x,Ui=e.$_$.q1,Hi=e.$_$.o1,Vi=i.$_$.m1,Bi=n.$_$.w4,Wi=e.$_$.a1,Yi=n.$_$.z4,Gi=e.$_$.y,Ki=n.$_$.x4,Xi=e.$_$.z,Ji=n.$_$.y4,Zi=e.$_$.b1,Qi=n.$_$.t1,te=n.$_$.e8,ne=n.$_$.s8,ie=n.$_$.j7,ee=n.$_$.ye,re=n.$_$.od,se=n.$_$.qd,ue=i.$_$.v,oe=n.$_$.qg,_e=n.$_$.u8,he=n.$_$.da,ae=e.$_$.k2,le=e.$_$.t2,ce=i.$_$.w,fe=n.$_$.oe;function ve(t,n,i,e){return t=t===tt?this.q55():t,n=n===tt?this.n56():n,i=i===tt?this.i57():i,e===tt?this.p57(t,n,i):e.p57.call(this,t,n,i)}function de(t){t.x34("namespaces",pe().l4k_1.n34());var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();return t.x34("content",i),P}function we(){r=this,this.l4k_1=K(G()),this.m4k_1=X("compactFragment",[],de)}function pe(){return null==r&&new we,r}function me(t){var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();t.x34("text",i);var e=et();return t.x34("element",rt("element",e,[],ge)),P}function ge(t){return P}function ye(t){var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();return t.x34("type",i),t.x34("value",$e().p4k_1),P}function be(){s=this,this.o4k_1=ot(ut(st),ut(st));var t=et();this.p4k_1=rt("org.w3c.dom.Node",t,[],me);var n=_t();this.q4k_1=rt("node",n,[],ye)}function $e(){return null==s&&new be,s}function ke(t){var n=B(V(U().h7(),H([]),!1)),i=(F(n,Y)?n:W()).n34();t.x34("namespace",i,tt,!0);var e=B(V(U().h7(),H([]),!1)),r=(F(e,Y)?e:W()).n34();return t.x34("localname",r),t.x34("attributes",qe().t4k_1.n34()),t.x34("content",K($e()).n34()),P}function xe(){u=this,this.t4k_1=ot(ut(st),ut(st)),this.u4k_1=X("element",[],ke)}function qe(){return null==u&&new xe,u}function Se(t){return function(t,n){var i=ht(vt("dummy")),e=i.documentElement;return null==e||i.removeChild(e),Ce.call(n,t,i),n}(t,dt(J(Ce)))}function Ce(t,n){this.r4k_1=t,this.s4k_1=n}function Ee(t,n){this.v4k_1=t,this.w4k_1=n}function Oe(t,n){this.x4k_1=t,this.y4k_1=n}function je(t,n){return new Oe(t,n)}function ze(){De.call(this,"Element",0),o=this}function Te(){De.call(this,"Attribute",1),_=this}function Ae(){De.call(this,"Text",2),h=this}function Ie(){if(a)return P;a=!0,o=new ze,_=new Te,h=new Ae}function De(t,n){bt.call(this,t,n)}function Me(){return Ie(),o}function Ne(){return Ie(),_}function Re(){Fe.call(this,"Attribute",1),c=this}function Pe(){Fe.call(this,"Text",2),f=this}function Le(){if(d)return P;d=!0,l=new Fe("Element",0),c=new Re,f=new Pe,v=new Fe("Mixed",3),new Fe("Inline",4)}function Fe(t,n){bt.call(this,t,n)}function Ue(){return Le(),l}function He(){return Le(),c}function Ve(){return Le(),f}function Be(){return Le(),v}function We(t,n){this.r4l_1=t,this.s4l_1=n}function Ye(t){return P}function Ge(t,n,i){t=t===tt?xt():t,n=n===tt?Ze:n;var e=new Hr;return n(e),function(t,n,i){return n=n===tt?xt():n,Qe.call(i,(e=t,function(t,n){var i,e,r,s,u,o,_,h,a=(t=t===tt?new Hr:t).y53_1,l=t.z53_1,c=t.a54_1,f=t.c54_1;if(null==f){var v=t.j54(),d=null!=v&&v,w=t.e54_1,p=t.b54_1;e=!1,r=d,s=w,u=null==p?Br().u53_1:p,i=function(t,n,i,e,r,s,u,o){return n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().u53_1:e,r=r===tt?null:r,s=s!==tt&&s,u=u!==tt&&u,ls.call(o,t,n,i,e,r,s,u,!1),o}(e,r,s,u,o,_,h,dt(J(ls)))}else i=f;return Wr.call(n,a,l,c,i,t.g54_1,t.h54_1),n.v4r_1=t.f54_1,n.w4r_1=t.i54_1,n}(e,dt(J(Wr)))),n),i;var e}(e,t,i),i}function Ke(t,n){return Ge(t,n,dt(J(Qe)))}function Xe(){p=this,this.h4m_1=[Os(),$e(),qe(),pe()],this.i4m_1=Ke(tt,Ye)}function Je(){}function Ze(t){return P}function Qe(t,n){null==p&&new Xe,n=n===tt?xt():n,this.u4l_1=t,this.v4l_1=St(n,(sr(),w))}function tr(t,n,i){var e;if(sr(),t.p4n_1===fs()){var r;if(t.o4n_1===fs()){var s=null==i?null:Tt(i.x4a(),n);r=null==s?vt(n):s}else{var u=null==i?null:Tt(i.x4a(),t.o4n_1);r=null==u?vt(t.o4n_1):u}e=r}else e=t.o4n_1===fs()?t.q4n_1===fs()?Tt(n,t.p4n_1):new zt(n,t.p4n_1,t.q4n_1):t.q4n_1===fs()?Tt(t.p4n_1,t.o4n_1):new zt(t.p4n_1,t.o4n_1,t.q4n_1);return e}function nr(t){return sr(),t.s4n_1===fs()?vt(t.r4n_1):t.t4n_1===fs()?Tt(t.s4n_1,t.r4n_1):new zt(t.s4n_1,t.r4n_1,t.t4n_1)}function ir(t){sr();var n=0,i=t.o35();if(n":e)+" ("+n+")",r);return Tn()}function Lr(t,n,i,e,r){return Tn()}function Fr(t,n,i,e,r){if(!(t.x4a()!==i.s4m().p4e()||!!n.equals(Ne())&&"http://www.w3.org/2001/XMLSchema-instance"===(null==e?null:e.p4e())))throw new Yr(t.h4b(),"("+i.u4n().m35()+") "+i.s4m()+"/"+vn(null==e?"":e)+" ("+n+")",r);return Tn()}function Ur(t,n,i,e){var r=t.h4b(),s=null==i?null:i.toString();throw new Yr(r,null==s?"":s,e)}function Hr(t,n,i,e,r,s){t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,e=e===tt?null:e,r=r===tt?Br().u53_1:r,s=s===tt?null:s,this.y53_1=t,this.z53_1=n,this.a54_1=i,this.b54_1=r,this.c54_1=s,this.d54_1=e,this.e54_1=ns(),this.f54_1=!0,this.g54_1=null,this.h54_1=ri(),this.i54_1=!1}function Vr(){y=this,this.t53_1=["http://www.w3.org/2001/XMLSchema-instance","http://www.w3.org/XML/1998/namespace"];var t=Pr;this.u53_1=new Mr(t);var n=Lr;this.v53_1=new Nr(n);var i=Fr;this.w53_1=new Rr(i),this.x53_1=Ur}function Br(){return null==y&&new Vr,y}function Wr(t,n,i,e,r,s){Br(),t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,r=r===tt?null:r,s=s===tt?ri():s,this.p4r_1=t,this.q4r_1=n,this.r4r_1=i,this.s4r_1=e,this.t4r_1=r,this.u4r_1=s,this.v4r_1=!0,this.w4r_1=!1}function Yr(t,n,i){var e=function(t){return!0===t.v().w()?Hn(t,tt,"\n candidates: ",tt,tt,tt,Xr):""}(i=i===tt?Tn():i),r=null==t?null:" at position "+t;Gr.call(this,"Could not find a field for name "+n+e+(null==r?"":r)),si(this,Yr)}function Gr(t,n){oi(t,n=n===tt?null:n,this),si(this,Gr)}function Kr(t,n,i){i=i===tt?null:i,Gr.call(this,"Invalid XML value at position: "+t+": "+n,i),si(this,Kr)}function Xr(t){return t instanceof zr?t.v4p_1+" ("+t.x4p_1.j4l()+")":vn(t)}function Jr(t){return function(t,n){return Zr.call(n,t,null,!1),n}(t,dt(J(Zr)))}function Zr(t,n,i){if(this.u54_1=t,this.v54_1=n,this.w54_1=i,this.w54_1&&null==this.v54_1)throw ct(vn("Default namespace requires there to be an annotated name"))}function Qr(t,n){this.x54_1=t,this.y54_1=n}function ts(t,n){bt.call(this,t,n)}function ns(){return function(){if($)return P;$=!0,new ts("ALWAYS",0),b=new ts("ANNOTATED",1),new ts("NEVER",2)}(),b}function is(){}function es(){return t=dt(J(us)),us.call(t,!1),t;var t}function rs(t){return function(t,n){return us.call(n,t.k54_1,t.l54_1,t.m54_1,t.n54_1,t.o54_1,t.p54_1,t.h4v(),t.n4u()),n}(t,dt(J(us)))}function ss(t){return function(t,n){return ls.call(n,t.b56_1,t.c56_1,t.d56_1,t.e56_1,t.f56_1,t.g56_1,t.h56_1,t.i56_1,t.j56_1),n}(t,dt(J(ls)))}function us(t,n,i,e,r,s,u,o,_){t=t!==tt&&t,n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().u53_1:e,r=r===tt?null:r,s=s!==tt&&s,u=u!==tt&&u,o=o!==tt&&o,_=_!==tt&&_,this.b56_1=t,this.c56_1=n,this.d56_1=i,this.e56_1=e,this.f56_1=r,this.g56_1=s,this.h56_1=u,this.i56_1=o,this.j56_1=_}function os(t,n,i){var e;if("*"===t)e=-2;else{var r=n.q2(t);if(null==r)throw new Gr("Could not find the attribute in "+i.m35()+" with the name: "+t+"\n Candidates were: "+Hn(n.d2()));e=r}return e}function _s(){return"Type name info should match"}function hs(t){return t instanceof qs}function as(t){return function(t){for(var n=ji(t.b57_1,Oi([Jn(59)])),i=Sn(wi(n,10)),e=n.v();e.w();){var r,s=e.y(),u=zi(s,Jn(61));if(-1===u)r=new Ti("",s);else{var o=s.substring(0,u),_=u+1|0,h=s.substring(_);r=new Ti(o,h)}var a=r;i.s(a)}return i}(t)}function ls(t,n,i,e,r,s,u,o,_){n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().u53_1:e,r=r===tt?null:r,s=s!==tt&&s,u=u!==tt&&u,_=_!==tt&&_,this.k54_1=t,this.l54_1=n,this.m54_1=i,this.n54_1=e,this.o54_1=r,this.p54_1=s,this.q54_1=u,this.r54_1=o,this.s54_1=_}function cs(t,n,i){t=t===tt?"ZXCVBNBVCXZ":t,n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.o4n_1=t,this.p4n_1=n,this.q4n_1=i}function fs(){return k}function vs(){}function ds(t){t=t===tt||t,this.z56_1=t}function ws(){}function ps(t){t=t===tt||t,this.f4z_1=t}function ms(t,n,i){n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.r4n_1=t,this.s4n_1=n,this.t4n_1=i}function gs(){}function ys(t){this.a57_1=t}function bs(){}function $s(){}function ks(){}function xs(){}function qs(){}function Ss(t){this.c57_1=t}function Cs(t){return t.r34_1=Di(new cs("QName","http://www.w3.org/2001/XMLSchema","xsd")),P}function Es(){x=this;var t=An();this.l53_1=rt("javax.xml.namespace.QName",t,[],Cs)}function Os(){return null==x&&new Es,x}function js(){return $u(),q}function zs(t){var n=t.r4m_1;return Xn("element",1,Kn,(function(t){return zs(t)}),null),n.j2()}function Ts(t,n,i,e,r){var s,u,o;Is.call(this,t.s4r_1,new Ps(i,e,!0,null)),this.r4m_1=Nn((s=t,u=n,o=this,function(){return S.d57(s,u,o.w4l_1,tt,!1)}))}function As(){}function Is(t,n,i){var e,r,s;i=i===tt?n:i,this.w4l_1=i,this.x4l_1=n.i57(),this.y4l_1=n.q55(),this.z4l_1=n.o56(),this.a4m_1=t.y55(n),this.b4m_1=Nn((e=t,r=n,s=this,function(){return e.e55(r,s.w4l_1,s.j4l(),s.y4l_1)}))}function Ds(t){var n=t.g4n_1;return Xn("children",1,Kn,(function(t){return Ds(t)}),null),n.j2()}function Ms(t,n,i,e){var r;ou.call(this,t.s4r_1,i,e),this.c4n_1=t.s4r_1.m55(i,e,!1);t:{for(var s=e.l56().v();s.w();){var u=s.y();if(u instanceof vs){r=u;break t}}r=null}var o=r,_=t.s4r_1.h55(i,e);this.d4n_1=t.s4r_1.g55(i,e)?hu():null==_?lu():new cu(_);var h,a=$n(),l=this.d4n_1;kt(l,hu())?h=null:kt(l,lu())?h=S.d57(t,n,new vu(this,1),tt,!1).s4m():l instanceof cu?h=this.s4m():cn();var c=h;if(null!=o)for(var f=e.n34(),v=null==f?null:f.u4n(),d=null==v?null:v.m35(),w=null==d?"":d,p=e.n34(),m=null==p?null:p.s4m(),g=new Qr(w,null==m?Tt("",""):m),y=Hi(this.u4n()),b=null==y?U().x6():y,$=o.j57_1,k=0,x=$.length;k0&&(Q=Z,et=_t),Z=Z+1|0}while(Z=0){var l=a.h1(n);if(!kt(l.p56(),Pt())||!kt(l.s35(0).u4n(),pe().m4k_1)){var c;t:{for(var f=ie(a).v();f.w();){var v=f.y();if(v!==n&&a.h1(v).j4l().equals(Ue())){c=v;break t}}c=null}var d=c;if(null!=d)throw new Gr("Types with an @XmlValue member may not contain other child elements ("+s.u4n().s35(d))}}return a})),this.c4v_1=Nn(ru(this))}function uu(){}function ou(t,n,i){Is.call(this,t,n,i);var e;t:{for(var r=n.l56().v();r.w();){var s=r.y();if(s instanceof gs){e=s;break t}}e=null}var u,o=e;if(null==o){var _;t:{for(var h=i.l56().v();h.w();){var a=h.y();if(a instanceof gs){_=a;break t}}_=null}u=_}else u=o;var l,c=u;if(null==c){var f;t:{for(var v=n.m56().n35().v();v.w();){var d=v.y();if(d instanceof gs){f=d;break t}}f=null}l=f}else l=c;var w=l;this.s4p_1=!0===(null==w?null:w.r58_1);var p,m=yu(i.l56());this.t4p_1=null==m?(p=n.m56(),$u(),yu(p.n35())):m,this.u4p_1=E}function _u(){O=this,fu.call(this)}function hu(){return null==O&&new _u,O}function au(){j=this,fu.call(this)}function lu(){return null==j&&new au,j}function cu(t){fu.call(this),this.k53_1=t}function fu(){}function vu(t,n,i,e,r){i=i===tt?null:i,e=e===tt?null:e,r=r===tt?null:r,this.s58_1=t,this.t58_1=n,this.u58_1=r;var s;s=null==i?-1===this.t58_1?Jr(this.s58_1.u4n().m35()):function(t,n,i){$u();var e,r=t.u35(n);t:{for(var s=t.r35(n).v();s.w();){var u=s.y();if(u instanceof cs){e=u;break t}}e=null}var o=e;return new Zr(r,null==o?null:tr(o,r,i),(null==o?null:o.p4n_1)===fs())}(this.s58_1.u4n(),this.t58_1,Vi(this.s58_1.s4m())):i,this.v58_1=s;var u;u=null==e?-1===this.t58_1?null:function(t){$u();for(var n=null,i=t.v();i.w();){var e=i.y(),r=e instanceof ps?e:null;if(!0===(null==r?null:r.f4z_1))return Be();if(e instanceof ws||e instanceof bs)return He();if(e instanceof ds)return e.z56_1?Ue():He();if(e instanceof vs||e instanceof ms)return Ue();e instanceof gs&&(n=e)}return!0===(null==n?null:n.r58_1)?Ue():null}(this.s58_1.u4n().r35(this.t58_1)):e,this.w58_1=u}function du(t,n,i,e){$u();var r,s,u,o,_=ee(t.x54_1,Jn(46),""),h=t.y54_1,a=zi(n,Jn(61));if(a<0){var l;if(s=n,r=ni(n,Jn(46)),u=h.r4e(),r<0)l=n;else{var c=r+1|0;l=n.substring(c)}o=l}else{var f=n.substring(0,a);s=vn(Ni(Mi(f)?f:W())),r=ni(n,Jn(46),a-1|0);var v=zi(n,Jn(58),a+1|0);if(v<0){u=h.r4e();var d=a+1|0,w=n.substring(d);o=vn(Ni(Mi(w)?w:W()))}else{var p=a+1|0,m=n.substring(p,v);u=vn(Ni(Mi(m)?m:W()));var y=v+1|0,b=n.substring(y);o=vn(Ni(Mi(b)?b:W()))}}var $=0!==r||0===ft(_)?s:_+"."+s.substring(1),k=e.h38(i,$),x=null==k?null:k.n34();if(null==x)throw Ot("Missing descriptor for "+$+" in the serial context");var q,S=x;if(a<0){var C=g,E=h.p4e();q=C.o53(S,new Ti(u,E))}else{var O=h.p4e();q=new zt(O,o,u)}return new We(q,S)}function wu(t,n){var i;if($u(),t.i35()&&se(t.m35(),Jn(63)))i=re(t.m35(),1);else{var e=Hi(t),r=null==e?null:Fu(e);i=null==r?t.m35():r}var s,u=i;t:{for(var o=t.n35().v();o.w();){var _=o.y();if(_ instanceof cs){s=_;break t}}s=null}var h,a=s;if(null==a){var l,c=Hi(t),f=null==c?null:ue(c);if(null==f)l=null;else{var v;t:{for(var d=f.v();d.w();){var w=d.y();if(w instanceof cs){v=w;break t}}v=null}l=v}h=l}else h=a;var p=h;return new Zr(u,null==p?null:tr(p,u,n),(null==p?null:p.p4n_1)===fs())}function pu(t,n,i){i=i===tt?n:i,Is.call(this,t.s4r_1,n,i);var e;e=!(i instanceof Ps&&i.m57_1)&&t.s4r_1.f55(n,i),this.e4o_1=e}function mu(t,n){$u();var i=0;if(in&&(n=e)}return n}function Iu(t,n,i){for(var e=t.u56_1,r=N(),s=e.v();s.w();){var u=s.y();n[u.s56_1]||r.s(u)}for(var o=r,_=o.v();_.w();){var h=_.y();i.s(h),n[h.s56_1]=!0}for(var a=o.v();a.w();)Iu(a.y(),n,i)}function Du(t,n){if(null==t[n.s56_1]){t[n.s56_1]=n;for(var i=n.u56_1.v();i.w();)Du(t,i.y())}}function Mu(t){return function(n){return!t[n.s56_1]}}function Nu(t){return function(n){return!t[n.s56_1]}}function Ru(t){return t.t56_1.d1()}function Pu(t){var n=t.f4m_1;return Xn("children",1,Kn,(function(t){return Pu(t)}),null),n.j2()}function Lu(t,n){var i,e;this.d4m_1=t,this.e4m_1=wu(this.d4m_1,n),this.f4m_1=Nn((i=this,e=n,function(){for(var t=0,n=i.d4m_1.o35(),r=bi(Array(n),null);t=0;){var o=u;0===o?r=n.z37(t.m4k_1,u,t.l4k_1):1===o&&(s=n.w37(t.m4k_1,u)),u=n.d38(t.m4k_1)}i=R(r,s)}return i}(pe(),i);return i.n37(n),e},J(be).n34=function(){return this.q4k_1},J(be).o34=function(t){return function(t,n){for(var i={_v:null},e=t.q4k_1,r=n.m37(e),s=null,u=r.d38($e().q4k_1);-1!==u;){var o=u;if(0===o)s=r.w37($e().q4k_1,0);else if(1===o)switch(s){case null:throw nt("Missing type");case"element":i._v=r.z37($e().q4k_1,1,qe());break;case"attr":var _=r.z37($e().q4k_1,1,$e().o4k_1);if(1!==_.n())throw nt("Only a single attribute pair expected");var h=n.s4k_1.createAttribute(it(_.d2()));h.value=it(_.e2()),i._v=h;break;case"text":i._v=n.s4k_1.createTextNode(r.w37($e().q4k_1,1));break;case"comment":i._v=n.s4k_1.createComment(r.w37($e().q4k_1,1));break;default:throw nt("unsupported type: "+s)}u=r.d38($e().q4k_1)}r.n37(e);var a=i._v;if(null==a)throw nt("Missing value");return a}(this,t instanceof Ce?t:Se(t))},J(xe).n34=function(){return this.u4k_1},J(xe).o34=function(t){return F(t,Je)?function(t,n){var i=ht(n.n4k().m3u()).createDocumentFragment(),e=new at(i);lt(e,null,n.n4k());var r=i.firstChild;for(;null!=r&&1!==r.nodeType;)r=r.nextSibling;var s=null==r||null!=r?r:W();if(null==s)throw nt("Expected element, but did not find it");return s}(0,t):function(t,n){for(var i=t.u4k_1,e=n.m37(i),r=K($e()),s=e.d38(qe().u4k_1),u=null,o=null,_=null,h=null;-1!==s;){var a=s;if(0===a)u=e.w37(qe().u4k_1,0);else if(1===a)o=e.w37(qe().u4k_1,1);else if(2===a)_=qe().t4k_1.o34(n);else{if(3!==a)throw-3===a?nt("Found unexpected child at index: "+s):ct("Received an unexpected decoder value: "+s);h=r.o34(n)}s=e.d38(qe().u4k_1)}if(null==o)throw nt("Missing localName");if(null==_)throw nt("Missing attributes");if(null==h)throw nt("Missing content");for(var l=n.s4k_1,c=null==u||0===ft(u)?l.createElement(o):l.createElementNS(u,o),f=_.f2().v();f.w();){var v=f.y(),d=v.i2(),w=v.j2();c.setAttribute(d,w)}for(var p=h.v();p.w();){var m=p.y();c.appendChild(l.adoptNode(m))}var g=c;return e.n37(i),g}(this,t instanceof Ce?t:Se(t))},J(Ce).a37=function(){return this.r4k_1.a37()},J(Ce).b37=function(){return this.r4k_1.b37()},J(Ce).h37=function(){return this.r4k_1.h37()},J(Ce).g37=function(){return this.r4k_1.g37()},J(Ce).f37=function(){return this.r4k_1.f37()},J(Ce).j37=function(t){return this.r4k_1.j37(t)},J(Ce).d37=function(){return this.r4k_1.d37()},J(Ce).e37=function(){return this.r4k_1.e37()},J(Ce).y36=function(){return this.r4k_1.y36()},J(Ce).z36=function(){return this.r4k_1.z36()},J(Ce).l37=function(t){return this.r4k_1.l37(t)},J(Ce).c37=function(){return this.r4k_1.c37()},J(Ce).i37=function(){return this.r4k_1.i37()},J(Ce).m37=function(t){return new Ee(this.r4k_1.m37(t),this.s4k_1)},J(Ee).b38=function(){return this.v4k_1.b38()},J(Ee).o37=function(t,n){return this.v4k_1.o37(t,n)},J(Ee).p37=function(t,n){return this.v4k_1.p37(t,n)},J(Ee).v37=function(t,n){return this.v4k_1.v37(t,n)},J(Ee).e38=function(t){return this.v4k_1.e38(t)},J(Ee).u37=function(t,n){return this.v4k_1.u37(t,n)},J(Ee).d38=function(t){return this.v4k_1.d38(t)},J(Ee).t37=function(t,n){return this.v4k_1.t37(t,n)},J(Ee).x37=function(t,n){return this.v4k_1.x37(t,n)},J(Ee).r37=function(t,n){return this.v4k_1.r37(t,n)},J(Ee).s37=function(t,n){return this.v4k_1.s37(t,n)},J(Ee).c38=function(){return this.v4k_1.c38()},J(Ee).q37=function(t,n){return this.v4k_1.q37(t,n)},J(Ee).w37=function(t,n){return this.v4k_1.w37(t,n)},J(Ee).n37=function(t){this.v4k_1.n37(t)},J(Ee).y37=function(t,n,i,e){return this.v4k_1.y37(t,n,je(i,this.w4k_1),e)},J(Ee).a38=function(t,n,i,e){return this.v4k_1.a38(t,n,je(i,this.w4k_1),e)},J(Oe).n34=function(){return this.x4k_1.n34()},J(Oe).o34=function(t){return this.x4k_1.o34(new Ce(t,this.y4k_1))},J(ze).b4l=function(t){return t.equals(Ue())},J(Te).b4l=function(t){return t.equals(He())},J(Ae).b4l=function(t){return t.equals(Ve())},J(De).e4l=function(t){return this.b4l(t.j4l())},J(Re).m4l=function(){return!0},J(Pe).m4l=function(){return!0},J(Fe).m4l=function(){return!1},J(We).t4l=function(){return this.s4l_1.m35()},J(We).toString=function(){return"PolyBaseInfo(tagName="+this.r4l_1+", descriptor="+this.s4l_1+")"},J(We).hashCode=function(){var t=this.r4l_1.hashCode();return M(t,31)+$t(this.s4l_1)|0},J(We).equals=function(t){if(this===t)return!0;if(!(t instanceof We))return!1;var n=t instanceof We?t:W();return!!this.r4l_1.equals(n.r4l_1)&&!!kt(this.s4l_1,n.s4l_1)},J(Xe).b38=function(){return this.i4m_1.v4l_1},J(Xe).u41=function(t,n){return this.i4m_1.u41(t,n)},J(Qe).b38=function(){return this.v4l_1},J(Qe).u41=function(t,n){return this.j4m(t,Ct().z4j(n))},J(Qe).k4m=function(t,n,i){Et(n);var e,r=new jr(this.v4l_1,this.u4l_1,n),s=function(t,n,i,e){if(null!=i)return new Zr(e.q4e(),i,!1);var r=e.q4e(),s=new Ts(t.u4l_1,t.v4l_1,n,Jr(r),!1).c4m().g4m(),u=null==s?e:s;return new Zr(u.q4e(),u,!1)}(this,t.n34(),i,n.m3u()),u=new Ts(this.u4l_1,this.v4l_1,t.n34(),s,!1),o=u.s35(0);if(o instanceof Ms){var _,h=n.m3u();t:{for(var a=null,l=!1,c=o.e4n_1.e2().v();c.w();){var f=c.y();if(jt(h,f.s4m())){if(l){_=null;break t}a=f,l=!0}}_=l?a:null}e=null==_?null:new zr(h,0,_)}else{var v=u.s35(0).s4m();if(!jt(v,n.m3u()))throw Ot('Local name "'+n.m3u()+'" for root tag does not match expected name "'+v+'"');e=null}return new vr(r,o,e).l37(t)},J(Qe).j4m=function(t,n,i,e){return i=i===tt?null:i,e===tt?this.k4m(t,n,i):e.k4m.call(this,t,n,i)},J(ur).w4n=function(t){this.v4n_1=t},J(ur).x4n=function(){return this.v4n_1},J(fr).g29=function(){return this.h4r_1.j4r_1},J(fr).b38=function(){return this.h4r_1.i4r_1},J(fr).n4k=function(){return this.h4r_1.m4r_1},J(fr).z36=function(){return null},J(fr).a37=function(){return this.g29().s4r_1.x4r()?Ht().o34(this):Ut(this.o4r())},J(fr).b37=function(){var t;if(this.y4r_1.a4s()){var n=Bt(this.o4r());t=Wt(n)}else t=Vt(this.o4r());return t},J(fr).c37=function(){var t;if(this.y4r_1.a4s()){var n=Gt(this.o4r());t=Kt(n)}else t=Yt(this.o4r());return t},J(fr).d37=function(){var t;if(this.y4r_1.a4s()){var n=Jt(this.o4r());t=Zt(n)}else t=Xt(this.o4r());return t},J(fr).e37=function(){var t;if(this.y4r_1.a4s()){var n=tn(this.o4r());t=nn(n)}else t=Qt(this.o4r());return t},J(fr).f37=function(){var t=this.o4r();return en(t)},J(fr).g37=function(){return en(this.o4r())},J(fr).h37=function(){return rn(this.o4r())},J(fr).o4r=function(t,n){return t=t===tt||t,n===tt?this.b4s(t):n.b4s.call(this,t)},J(fr).i37=function(){return this.b4s(!1)},J(vr).c4s=function(){return null},J(vr).y36=function(){return!this.n4n_1.d4s()&&!this.n4k().g4b().equals(un())},J(vr).z36=function(){if(this.n4n_1.d4s()){this.n4k().g4g();var t=this.n4k(),n=on(),i=this.m35().p4e(),e=this.m35().q4e();return t.r4b(n,i,e),null}return J(fr).z36.call(this)},J(vr).j37=function(t){return this.m4n_1=!0,this},J(vr).b4s=function(t){var n,i=this.y4r_1,e=i instanceof ou?i:null,r=null==e?null:e.t4p_1,s=this.y4r_1.j4l();if(this.l4n_1>=0)n=this.n4k().p4b(this.l4n_1);else{var u;switch(s.y9_1){case 0:var o=this.n4k(),_=_n(),h=this.m35().p4e(),a=this.m35().q4e();o.r4b(_,h,a),u=hn(this.n4k());break;case 1:throw nt("Attribute parsing without a concrete index is unsupported");case 4:throw nt("Inline classes can not be decoded directly");case 3:u=an(this.n4k());break;case 2:u=this.y4r_1.e4s()?an(this.n4k()):ln(this.n4k());break;default:cn()}n=u}var l=n;return t&&0===ft(l)&&null!=r?r:l},J(vr).m37=function(t){throw fn("This should not happen as decodeSerializableValue should be called first")},J(vr).l37=function(t){var n=this.y4r_1.f4s(t),i=this.m4n_1&&this.y4r_1 instanceof Zs?this.y4r_1.s35(0):this.y4r_1,e=new wr(this.n4n_1,i,this.k4n_1,this.l4n_1,this.c4s()),r=n.o34(e),s=e.p4s_1,u=null==s?null:s.x4n();if(null!=u){if(null==r)throw ct(vn("Required value was null."));if(null!=this.n4n_1.n4r_1.g2(u,r))throw Ot("Duplicate use of id "+u)}return r},J(dr).m37=function(t){throw dn("Strings cannot be decoded to structures")},J(dr).y36=function(){return!0},J(dr).j37=function(t){return new dr(this.w4s_1,this.y4r_1.s35(0),this.v4s_1)},J(dr).b4s=function(t){var n,i=this.y4r_1,e=i instanceof ou?i:null,r=null==e?null:e.t4p_1;if(t&&null!=r){var s=this.v4s_1;n=0===ft(s)}else n=!1;return n?r:this.v4s_1},J(dr).l37=function(t){return this.y4r_1.f4s(t).o34(this)},J(wr).c4s=function(){return this.n4s_1},J(wr).x4s=function(t){this.q4s_1.s(t)},J(wr).b4s=function(t){var n=J(vr).b4s.call(this,t);if(this.l4n_1>=0&&this.y4r_1.y4s()){var i=this.p4s_1;null==i||i.w4n(n)}return n},J(wr).y36=function(){return this.o4s_1=!0,J(vr).y36.call(this)},J(wr).l37=function(t){return this.o4s_1?t.o34(this):J(vr).l37.call(this,t)},J(wr).j37=function(t){return this.p4s_1=new ur,J(vr).j37.call(this,t)},J(wr).m37=function(t){if(t.i35()){var n=new mr(this.r4s_1,this.y4r_1,this.c4s());return this.p4s_1=n,n}var i;if(this.y4r_1.q35()instanceof wn)throw fn("A primitive is not a composite");if(this.y4r_1 instanceof Ms){var e=new Or(this.r4s_1,this.y4r_1,this.k4n_1);this.p4s_1=e,i=e}else if(this.y4r_1 instanceof Hs){var r;if(this.y4r_1.j4l().equals(He())){var s=new $r(this.r4s_1,this.y4r_1,this.l4n_1);this.p4s_1=s,r=s}else if(this.y4r_1.j4l().equals(Ve()))r=new kr(this.r4s_1,this.y4r_1);else if(this.y4r_1.f4o()){var u=new xr(this.r4s_1,this.y4r_1,this.k4n_1,this.c4s());this.p4s_1=u,r=u}else{var o=new qr(this.r4s_1,this.y4r_1,this.c4s());this.p4s_1=o,r=o}i=r}else if(this.y4r_1 instanceof Gs){var _;if(this.y4r_1.f4o()){var h=new Cr(this.r4s_1,this.y4r_1,this.k4n_1,this.c4s());this.p4s_1=h,_=h}else{var a=new Er(this.r4s_1,this.y4r_1,this.k4n_1,this.c4s());this.p4s_1=a,_=a}i=_}else{var l=new mr(this.r4s_1,this.y4r_1,this.c4s());this.p4s_1=l,i=l}for(var c=i,f=this.q4s_1.v();f.w();){var v=f.y();c.x4s(v)}return c},J(pr).y36=function(){return!1},J(pr).y37=function(t,n,i,e){var r=this.y4r_1,s=r instanceof ou?r:null,u=null==s?null:s.h4t(this.g4t_1,i),o=null==u?e:u;return null==o||null!=o?o:W()},J(pr).a38=function(t,n,i,e){return null},J(pr).m37=function(t){return this},J(pr).n37=function(t){},J(pr).d38=function(t){var n=t.q35();if(n instanceof mn||n instanceof pn)return-1;throw fn("Null objects have no members")},J(pr).o37=function(t,n){throw fn("Null objects have no members")},J(pr).p37=function(t,n){throw fn("Null objects have no members")},J(pr).q37=function(t,n){throw fn("Null objects have no members")},J(pr).r37=function(t,n){throw fn("Null objects have no members")},J(pr).e38=function(t){return 0},J(pr).s37=function(t,n){throw fn("Null objects have no members")},J(pr).t37=function(t,n){throw fn("Null objects have no members")},J(pr).u37=function(t,n){throw fn("Null objects have no members")},J(pr).v37=function(t,n){throw fn("Null objects have no members")},J(pr).w37=function(t,n){throw fn("Null objects have no members")},J(pr).x37=function(t,n){throw fn("Null objects have no members")},J(mr).n37=function(t){if(!this.i4p_1&&-1!==this.d38(t))throw new Gr("Unexpected content in end structure");this.n4k().j4g(on(),this.a4u_1)},J(gr).w4n=function(t){this.v4o_1=t},J(gr).x4n=function(){return this.v4o_1},J(gr).n4k=function(){return this.j4p_1.m4r_1},J(gr).c4u=function(t,n,i){var e=this.k4p_1.s35(n),r=e.f4s(i);return this.d4p_1>=0?null:r.n34().q35()instanceof wn?new vr(this.j4p_1,e,this.f4p_1,this.e4p_1):new wr(this.j4p_1,e,this.f4p_1,this.e4p_1,null)},J(gr).y37=function(t,n,i,e){if(this.j4p_1,!this.h4p_1.d1()){var r=this.h4p_1.xd();if(r.k4u_1!==n)throw ct("Recovery state is inconsistent");var s=r.l4u_1,u=null==s||null!=s?s:W();return null==u||null!=u?u:W()}var o,_=this.k4p_1.s35(n),h=_.f4s(i);if(kt(F(h,yt)?h:W(),pe())&&ir(this.k4p_1)===n){if(this.d4p_1>=0){var a=kn("");return null!=a?a:W()}var l=L(this.n4k());this.n4k().v4f();var c=l instanceof Dt?l:null,f=null==c?xn(l):c;return null!=f?f:W()}if(this.e4p_1>=0&&_ instanceof Bs)o=new yr(this.j4p_1,_,this.e4p_1);else{var v=this.c4u(t,n,h);o=null==v?new pr(this.j4p_1,_):v}var d=o,w=h instanceof qn?h.t39(d,e):h.o34(d),p=d instanceof wr?d:null,m=null==p?null:p.p4s_1,g=null==m?null:m.x4n();if(null!=g){if(null==w)throw ct(vn("Required value was null."));if(null!=this.j4p_1.n4r_1.g2(g,w))throw Ot("Duplicate use of id "+g)}return this.c4p_1[n]=!0,w},J(gr).a38=function(t,n,i,e){if(this.j4p_1,!this.h4p_1.d1()){var r=this.h4p_1.xd();if(r.k4u_1!==n)throw ct("Recovery state is inconsistent");var s=r.l4u_1,u=null==s||null!=s?s:W();return null!=u?u:W()}if(this.j4p_1.d4s()){if(!this.n4k().g4g().equals(on()))throw nt("Elements with nil tags may not have content");return null}var o=this.c4u(t,n,i);if(null==o)return null;var _=o,h=this.k4p_1.s35(n).f4s(i),a=h instanceof qn?h.t39(_,e):h.o34(_),l=_ instanceof wr?_:null,c=null==l?null:l.p4s_1,f=null==c?null:c.x4n();if(null!=f){if(null==a)throw ct(vn("Required value was null."));if(null!=this.j4p_1.n4r_1.g2(f,a))throw Ot("Duplicate use of id "+f)}return this.c4p_1[n]=!0,a},J(gr).x37=function(t,n){if(this.j4p_1,!this.h4p_1.d1()){var i=this.h4p_1.xd();if(i.k4u_1!==n)throw ct("Recovery state is inconsistent");var e=i.l4u_1;return new Ss(null==e||null!=e?e:W())}var r=this.k4p_1.s35(n);return t.q35()instanceof wn?new vr(this.j4p_1,r,this.f4p_1,this.e4p_1):new wr(this.j4p_1,r,this.f4p_1,this.e4p_1,this.u4o_1)},J(gr).d4u=function(t,n){var i=n.equals(Ne());this.f4p_1=null;var e=this.y4o_1,r=this.x4o_1,s=this.i4u(t),u=r.q2(s),o=null==u?null:hr(u,n,this);if(null!=o)return this.f4u(o,n);var _=e.q2(s),h=null==_?null:ar(_,n);if(null!=h){var a=this.f4u(h.w4p_1,n);return this.f4p_1=h,a}var l,c=this.m35().p4e();if(i&&!this.g29().s4r_1.n4u()){var f=t.p4e();if(0===ft(f)){var v=er(s,c),d=r.q2(v),w=null==d?null:hr(d,n,this);if(null!=w)return this.e4u(w);var p=e.q2(v),m=null==p?null:ar(p,n);if(null!=m)return this.f4p_1=m,this.e4u(m.w4p_1)}var g=t.r4e();if(0===ft(g)){var y=this.n4k().t4a("");if(null!=y){var b=er(s,y),$=r.q2(b),k=null==$?null:hr($,n,this);if(null!=k)return this.e4u(k);var x=e.q2(b),q=null==x?null:ar(x,n);if(null!=q)return this.e4u(q.w4p_1)}}}if(!this.g29().s4r_1.n4u()&&ft(c)>0&&c===t.p4e()){var S=r.q2(vt(t.q4e())),C=null==S?null:hr(S,n,this);if(null!=C)return this.f4u(C,n)}if(n.equals(Ne())){var E=this.a4p_1,O=this.e4p_1;l=0<=O&&O=0?z:null))return j}else{var T=ir(this.k4p_1),A=T>=0?T:null;if(null==A);else{for(var I=this.k4p_1.s35(A);I instanceof Hs&&I.f4o()||I instanceof Zs;)I=I.s35(0);if(kt(I.u4n(),pe().m4k_1))return this.e4u(A)}}for(var D=this.g29().s4r_1,M=this.n4k(),N=Sn(r.n()),R=r.f2().v();R.w();){var P=R.y(),L=P.i2(),F=P.j2(),U=new zr(L,F,this.k4p_1.s35(F));N.s(U)}var H=D.o4u(M,n,this.k4p_1,t,Cn(N,e.e2())),V=En(H);return!0===(null==V?null:V.m4u_1)?V.k4u_1:(this.h4p_1.z(H),-3)},J(gr).e4u=function(t){if(t>=0&&this.c4p_1[t]){var n=this.k4p_1.s35(t);(!(n instanceof pu)||!n.f4o())&&this.g29().s4r_1.p4u(this.k4p_1,t)}return t},J(gr).f4u=function(t,n){if(this.e4u(t),this.g29().s4r_1.h4v()&&n.equals(Me())&&this.k4p_1 instanceof su){var i=this.k4p_1.d4v();if(null!=i&&!i.d1()){for(var e=yn(this.c4p_1.length),r=yn(this.c4p_1.length),s=i.v();s.w();){var u=s.y(),o=u.ue(),_=u.ve();-2===o&&(r[_]=!0),-2===_&&(e[o]=!0)}for(var h=i.v();h.w();){var a=h.y(),l=a.ue(),c=a.ve();if(l===t)if(-2===c){var f;t:{for(var v=0,d=On(this.c4p_1).v();d.w();){var w=d.y();if(jn(v),this.c4p_1[w]&&this.k4p_1.s35(w).g4v().equals(Ue())&&!e[w]){f=v;break t}v=v+1|0}f=-1}var p=f;if(p>=0)throw new Gr("Found element "+this.k4p_1.s35(p).s4m()+" before "+this.k4p_1.s35(t).s4m()+" in conflict with ordering constraints")}else if(this.c4p_1[c])throw new Gr("Found element "+this.k4p_1.s35(c).s4m()+" before "+this.k4p_1.s35(t).s4m()+" in conflict with ordering constraints");if(!r[t]){var m;t:{for(var g=0,y=On(this.c4p_1).v();y.w();){var b=y.y();if(jn(g),this.c4p_1[b]&&r[b]){m=g;break t}g=g+1|0}m=-1}var $=m;if($>0)throw new Gr("Found element "+this.k4p_1.s35(t).s4m()+" after "+this.k4p_1.s35($)+" in conflict with ordering constraints")}}}}return t},J(gr).d38=function(t){if(!this.i4p_1&&this.n4k().b4b()=0){if(this.n4k().j4g(on(),this.k4p_1.s4m()),this.d4p_1>=this.c4p_1.length)return-1;var n=this.d4p_1;return _r(this),n}this.e4p_1=this.e4p_1+1|0;t:for(;;){var i,e=this.a4p_1,r=this.e4p_1;if(0<=r&&r"),Tn());this.h4p_1.z(q),x=this.d38(t)}else this.c4p_1[$]=!0,x=$;return x}break;case 10:this.j4p_1;var S,C=this.d4u(this.n4k().m3u(),Ne());return-3===C?S=this.d38(t):(this.c4p_1[C]=!0,S=C),S;case 1:var E=this.d4u(this.n4k().m3u(),Me());if(-3!==E)return this.c4p_1[E]=!0,E;if(!this.h4p_1.d1())return this.h4p_1.td().k4u_1;In(this.n4k());break;case 7:throw new Gr("End document in unexpected location")}return-1},J(gr).n37=function(t){if(!this.i4p_1&&-1!==this.d38(t))throw new Gr("Unexpected content in end structure");null==this.u4o_1?this.n4k().j4g(on(),this.m35()):this.n4k().j4g(on(),null)},J(gr).g4u=function(t){return _r(this),this.d4p_1=0){var u=this.h4u(this.e4p_1);return this.k4p_1.s35(n).y4s()&&this.w4n(u),u}if(this.d4p_1>=0){var o,_=s instanceof ou?s:null,h=null==_?null:_.t4p_1;if(null!=h)o=h;else{if(n!==ir(this.k4p_1))throw new Gr("Missing child "+t.u35(n)+":"+n);o=""}return o}switch(s.j4l().y9_1){case 4:throw new Gr("Inline elements can not be directly decoded");case 0:r=hn(this.n4k());break;case 3:case 2:var a=an(this.n4k()),l=this.n4k().e4g();if(!(l instanceof Dn))throw new Gr("Missing end tag after text only content (found: "+l+")");var c=this.m35().q4e();if(l.h4h_1!==c)throw new Gr("Expected end tag local name "+this.m35().q4e()+", found "+l.h4h_1);r=a;break;case 1:throw ct(vn("Attributes should already be read now"));default:cn()}return r},J(gr).r37=function(t,n){return Xt(this.w37(t,n))},J(gr).o37=function(t,n){var i=this.w37(t,n);return this.g29().s4r_1.x4r()?Ht().o34(new dr(this.j4p_1,this.k4p_1.s35(n),i)):Ut(i)},J(gr).p37=function(t,n){return Vt(this.w37(t,n))},J(gr).q37=function(t,n){return Yt(this.w37(t,n))},J(gr).s37=function(t,n){return Qt(this.w37(t,n))},J(gr).t37=function(t,n){var i=this.w37(t,n);return en(i)},J(gr).u37=function(t,n){return en(this.w37(t,n))},J(gr).v37=function(t,n){return rn(this.w37(t,n))},J(gr).x4s=function(t){this.w4o_1.s(t)},J(yr).c38=function(){return!0},J(yr).e38=function(t){return 1},J(yr).d38=function(t){var n;switch(this.c4w_1){case 0:case 1:var i=this.c4w_1;this.c4w_1=i+1|0,n=i;break;default:n=-1}return n},J(yr).y37=function(t,n,i,e){this.b4w_1<0&&(this.b4w_1=n);var r=(n-this.b4w_1|0)%2|0,s=this.k4p_1.s35(r).f4s(i);if(0===r&&kt(s,Os())){var u=this.n4k().k4g(this.a4w_1);return null!=u?u:W()}return s.o34(new dr(this.d4w_1,this.k4p_1.p4w(),Lt(this.n4k().p4b(this.a4w_1))))},J(yr).w37=function(t,n){var i;if(0==(n%2|0)){var e,r=this.n4k().k4g(this.a4w_1),s=r.r4e();if(0===ft(s))e=!0;else{var u=r.p4e();e=0===ft(u)}if(!e)throw new Gr("A QName in a namespace cannot be converted to a string");i=r.q4e()}else i=this.n4k().p4b(this.a4w_1);return i},J(yr).n37=function(t){},J(yr).m37=function(t){return this},J(yr).a37=function(){throw dn("Expect map structure")},J(yr).b37=function(){throw dn("Expect map structure")},J(yr).h37=function(){throw dn("Expect map structure")},J(yr).g37=function(){throw dn("Expect map structure")},J(yr).f37=function(){throw dn("Expect map structure")},J(yr).j37=function(t){return this},J(yr).d37=function(){throw dn("Expect map structure")},J(yr).e37=function(){throw dn("Expect map structure")},J(yr).y36=function(){throw dn("Expect map structure")},J(yr).z36=function(){throw dn("Expect map structure")},J(yr).c37=function(){throw dn("Expect map structure")},J(yr).i37=function(){throw dn("Expect map structure")},J(br).c38=function(){return!0},J(br).e38=function(t){return lr(this).n()},J(br).y37=function(t,n,i,e){var r=this.k4p_1.s35(n),s=lr(this),u=this.q4q_1;return this.q4q_1=u+1|0,new dr(this.s4q_1,r,s.h1(u)).l37(i)},J(br).w37=function(t,n){var i=lr(this),e=this.q4q_1;return this.q4q_1=e+1|0,i.h1(e)},J(br).n37=function(t){},J($r).t4q=function(){return this.n4k().p4b(this.l4x_1)},J(kr).t4q=function(){return this.n4k().e4b()},J(xr).d38=function(t){var n;return this.d4z_1?n=-1:(this.d4z_1=!0,n=0),n},J(xr).y37=function(t,n,i,e){var r=this.k4p_1.s35(0),s=r.f4s(i);if(kt(F(s,yt)?s:W(),pe())&&ir(cr(this))===this.c4z_1){var u=Pn(this.n4k()),o=u instanceof Dt?u:null,_=null==o?xn(u):o;return null!=_?_:W()}var h=new wr(this.e4z_1,r,this.b4z_1,zn.MIN_VALUE,this.u4o_1),a=i.o34(h),l=h instanceof wr?h:null,c=null==l?null:l.p4s_1,f=null==c?null:c.x4n();if(null!=f){if(null==a)throw ct(vn("Required value was null."));if(null!=this.e4z_1.n4r_1.g2(f,a))throw Ot("Duplicate use of id "+f)}return a},J(xr).n37=function(t){},J(xr).e38=function(t){return 1},J(qr).d38=function(t){var n;if(this.i4p_1=!0,2===this.n4k().g4g().y9_1)n=-1;else{var i=this.y4z_1;this.y4z_1=i+1|0,n=i}return n},J(qr).y37=function(t,n,i,e){var r=this.k4p_1.s35(0),s=new wr(this.z4z_1,r,this.f4p_1,this.e4p_1,null),u=i instanceof qn?i.t39(s,e):i.o34(s),o=s instanceof wr?s:null,_=null==o?null:o.p4s_1,h=null==_?null:_.x4n();if(null!=h){if(null==u)throw ct(vn("Required value was null."));if(null!=this.z4z_1.n4r_1.g2(h,u))throw Ot("Duplicate use of id "+h)}return u},J(Sr).y37=function(t,n,i,e){this.t50_1=n;var r=this.k4p_1.s35(0);if(0==(n%2|0)){if(r.g4v().equals(He())){var s=this.n4k().i4g(r.s4m());if(null==s)throw new Gr("Missing key attribute ("+r.s4m()+") on "+this.n4k().m3u()+"@"+this.n4k().h4b());var u=s;return i.o34(new dr(this.u50_1,r,u))}if(Ln(!this.k4p_1.r4o()),!jt(this.n4k().m3u(),r.s4m())){var o=this.n4k().m3u()+" != "+this.k4p_1.e4r();throw ct(vn(o))}return J(gr).y37.call(this,t,n%2|0,i,e)}var _=this.k4p_1.s35(1),h=new wr(this.u50_1,_,this.s50_1,zn.MIN_VALUE,this.u4o_1);this.k4p_1.r4o()&&h.x4s(r.s4m());var a=i.o34(h),l=h instanceof wr?h:null,c=null==l?null:l.p4s_1,f=null==c?null:c.x4n();if(null!=f){if(null==a)throw ct(vn("Required value was null."));if(null!=this.u50_1.n4r_1.g2(f,a))throw Ot("Duplicate use of id "+f)}return a},J(Cr).d38=function(t){var n,i;if(this.k4p_1.r4o())return this.t50_1>=0&&1==(this.t50_1%2|0)?n=-1:(this.t50_1=this.t50_1+1|0,n=this.t50_1),n;if(this.t50_1<0){if(!this.n4k().g4b().equals(_n()))throw ct(vn("Check failed."));if(!jt(this.k4p_1.e4r(),this.n4k().m3u()))throw new Gr("Map entry not found. Found "+this.n4k().m3u()+"@"+this.n4k().h4b()+" instead")}if(0==(this.t50_1%2|0)){var e=jt(this.k4p_1.e4r(),this.n4k().m3u());Fn(e,(i=this,function(){return i.k4p_1.e4r()+" != "+i.n4k().m3u()}))}var r=J(Sr).d38.call(this,t);return r<0?r:(this.t50_1=(this.t50_1-(this.t50_1%2|0)|0)+(r%2|0)|0,this.t50_1)},J(Cr).n37=function(t){if(!this.k4p_1.r4o()&&!this.n4k().g4b().equals(on()))throw ct(vn("Check failed."));if(!jt(this.n4k().m3u(),this.k4p_1.e4r()))throw ct(vn("Check failed."))},J(Cr).e38=function(t){return 2},J(Er).e4u=function(t){return t},J(Er).d38=function(t){if(this.k4p_1.r4o()){var n=this.t50_1%2|0;if(1==(n+(2&((2^n)&(0|n|-n))>>31)|0)&&J(Sr).d38.call(this,t)<0)return-1}else{var i,e=this.t50_1%2|0;if(1==(e+(2&((2^e)&(0|e|-e))>>31)|0)){var r=this.n4k().e4g();i=kt(null==r?null:r.g4b(),_n())}else i=!1;if(i&&this.n4k().g4g(),J(Sr).d38.call(this,t)<0)return-1}return this.t50_1=this.t50_1+1|0,this.t50_1},J(Er).y37=function(t,n,i,e){var r=J(Sr).y37.call(this,t,n,i,e);if(1==(n%2|0)&&!this.k4p_1.r4o()){if(!this.n4k().g4g().equals(on()))throw ct(vn("Check failed."));Ln(jt(this.k4p_1.e4r(),this.n4k().m3u()))}return r},J(Er).n37=function(t){Ln(jt(this.k4p_1.s4m(),this.n4k().m3u())),J(Sr).n37.call(this,t)},J(Er).e38=function(t){return-1},J(Or).d38=function(t){var n,i,e,r=this.k4p_1.d4n_1;if(kt(r,hu())){var s;switch(this.g53_1){case 0:case 1:var u=this.g53_1;this.g53_1=u+1|0,s=u;break;default:s=-1}return s}if(null!=this.h53_1)return 1===this.g53_1?1:-1;if(0===this.g53_1){var o=0,_=this.a4p_1;if(o<_)do{var h=o;o=o+1|0;var a,l=this.n4k().k4g(h);if("http://www.w3.org/2001/XMLSchema-instance"===l.p4e()&&"type"===l.q4e())a=!0;else{var c=r instanceof cu?r:null;a=l.equals(null==c?null:c.k53_1)}if(a){for(var f=new dr(this.j53_1,this.k4p_1.s35(0),this.n4k().p4b(h)),v=Os().o34(f),d=this.k4p_1.e4n_1,w=Sn(d.n()),p=d.f2().v();p.w();){var m=p.y(),g=m.i2(),y=m.j2(),b=Un(g,(n=this.g29().s4r_1,e=void 0,null==(e=(i=y).c4m().g4m())?n.i55(i.c4m().e4m_1,i.w4l_1.w55()):e));w.s(b)}var $,k=w;t:{for(var x=k.v();x.w();){var q=x.y();if(q.te_1.equals(v)){$=q;break t}}$=null}var S,C=null==$?null:$.se_1;if(null==C)throw new Gr("Could not find child for type with qName: "+v+". Candidates are: "+Hn(k));return S=C,this.h53_1=S,this.i53_1=l,this.g53_1=1,0}}while(o<_)}var E=J(gr).d38.call(this,t);return this.g53_1=E+1|0,E},J(Or).w37=function(t,n){var i,e=this.k4p_1.c4n_1.equals(Be());if(0===n){var r;if(null!=this.h53_1)r=Yn(this.h53_1);else if(this.k4p_1.j4u())if(e&&(this.n4k().g4b().equals(Wn())||this.n4k().g4b().equals(Bn())||this.n4k().g4b().equals(Vn())))r="kotlin.String";else{if(null==this.f53_1)throw ct(vn("PolyInfo is null for a transparent polymorphic decoder"));r=this.f53_1.t4l()}else{var s=this.k4p_1.s35(0).s4m(),u=this.n4k(),o=s.p4e(),_=s.q4e(),h=u.q4b(o,_),a=null==h?null:g.m53(h,this.k4p_1.f4n_1);if(null==a)throw new Kr(this.n4k().h4b(),"Missing type for polymorphic value");r=a}i=r}else{if(!this.k4p_1.j4u())throw new Gr("NonTransparent polymorphic values cannot have text content only");i=e?an(this.n4k()):J(gr).w37.call(this,t,n)}return i},J(Or).c4u=function(t,n,i){var e=this.f53_1,r=null==e?null:e.x4p_1,s=null==r?this.k4p_1.n53(i.n34().m35()):r;return new wr(this.j53_1,s,this.f4p_1,this.e4p_1,this.i53_1)},J(Or).y37=function(t,n,i,e){var r,s=this.h53_1;if(null!=s){var u=this.k4p_1.n53(s),o=new wr(this.j53_1,u,this.f4p_1,this.e4p_1,this.i53_1);this.g53_1=2;var _=i.o34(o),h=o instanceof wr?o:null,a=null==h?null:h.p4s_1,l=null==a?null:a.x4n();if(null!=l){if(null==_)throw ct(vn("Required value was null."));if(null!=this.j53_1.n4r_1.g2(l,_))throw Ot("Duplicate use of id "+l)}return _}if(!this.k4p_1.j4u())return this.n4k().r4b(_n(),null,"value"),J(gr).y37.call(this,t,n,i,e);if(this.k4p_1.c4n_1.equals(Be())&&i.n34().q35()instanceof wn){var c=this.k4p_1.n53(i.n34().m35());r=i.o34(new vr(this.j53_1,c))}else r=J(gr).y37.call(this,t,n,i,e);return r},J(Or).n37=function(t){if(this.k4p_1.j4u()){if(!this.k4p_1.c4n_1.equals(Be())||!this.k4p_1.j4u()){var n=this.f53_1,i=null==n?null:n.v4p_1;if(null!=i){var e=this.n4k(),r=on(),s=i.p4e(),u=i.q4e();e.r4b(r,s,u)}else J(gr).n37.call(this,t)}}else{var o=this.n4k(),_=on(),h=this.m35().p4e(),a=this.m35().q4e();o.r4b(_,h,a)}},J(jr).d4s=function(){if(this.m4r_1.g4b().equals(_n())){var t;t:{var n=Rn(0,this.m4r_1.f4b());if(F(n,At)&&n.d1())t=!1;else{for(var i=n.v();i.w();){var e,r=i.y();if("http://www.w3.org/2001/XMLSchema-instance"===this.m4r_1.m4b(r)&&"nil"===this.m4r_1.o4b(r)&&"true"===this.m4r_1.p4b(r))e=!0;else{var s=this.m4r_1.k4g(r),u=this.j4r_1.t4r_1;e=!!s.equals(null==u?null:u.se_1)&&this.m4r_1.p4b(r)===this.j4r_1.t4r_1.te_1}if(e){t=!0;break t}}t=!1}}if(t)return!0}return!1},J(zr).t4l=function(){return this.x4p_1.u4n().m35()},J(zr).toString=function(){return"PolyInfo(tagName="+this.v4p_1+", index="+this.w4p_1+", descriptor="+this.x4p_1+")"},J(zr).hashCode=function(){var t=this.v4p_1.hashCode();return t=M(t,31)+this.w4p_1|0,M(t,31)+this.x4p_1.hashCode()|0},J(zr).equals=function(t){if(this===t)return!0;if(!(t instanceof zr))return!1;var n=t instanceof zr?t:W();return!!this.v4p_1.equals(n.v4p_1)&&this.w4p_1===n.w4p_1&&!!this.x4p_1.equals(n.x4p_1)},J(Tr).o53=function(t,n){var i;t:{for(var e=t.n35().v();e.w();){var r=e.y();if(r instanceof cs){i=r;break t}}i=null}return null!=i?tr(i,t.m35(),n):Qn(Zn(t.m35(),Jn(46)),n)},J(Tr).m53=function(t,n){if(null==n||!ti(t,Jn(46)))return t;var i=ni(n,Jn(46));return i<0?t.substring(1):n.substring(0,i)+t},J(Ar).m35=function(){return this.y4r_1.s4m()},J(Ir).g29=function(){return this.l4p_1.j4r_1},J(Ir).b38=function(){return this.l4p_1.i4r_1},J(Ir).m35=function(){return this.k4p_1.s4m()},J(Ir).i4u=function(t){return function(t,n){var i;if(n=n===tt?t.r4e():n,sr(),n===t.r4e())i=t;else{var e=t.p4e(),r=t.q4e();i=new zt(e,r,n)}return i}(t,"")},J(Mr).q53=function(t,n,i,e,r){return this.p53_1(t,n,i,e,r)},J(Nr).q53=function(t,n,i,e,r){return this.r53_1(t,n,i,e,r)},J(Rr).q53=function(t,n,i,e,r){return this.s53_1(t,n,i,e,r)},J(Hr).j54=function(){var t,n=this.d54_1;if(null==n){var i=this.c54_1,e=i instanceof ls?i:null;t=null==e?null:e.l54_1}else t=n;return t},J(Hr).t54=function(){var t=this.c54_1;return t instanceof ls?t.e39():es()},J(Zr).toString=function(){return"DeclaredNameInfo(serialName="+this.u54_1+", annotatedName="+this.v54_1+", isDefaultNamespace="+this.w54_1+")"},J(Zr).hashCode=function(){var t=_i(this.u54_1);return t=M(t,31)+(null==this.v54_1?0:this.v54_1.hashCode())|0,M(t,31)+hi(this.w54_1)|0},J(Zr).equals=function(t){if(this===t)return!0;if(!(t instanceof Zr))return!1;var n=t instanceof Zr?t:W();return this.u54_1===n.u54_1&&!!kt(this.v54_1,n.v54_1)&&this.w54_1===n.w54_1},J(Qr).toString=function(){return"ActualNameInfo(serialName="+this.x54_1+", annotatedName="+this.y54_1+")"},J(Qr).hashCode=function(){var t=_i(this.x54_1);return M(t,31)+this.y54_1.hashCode()|0},J(Qr).equals=function(t){if(this===t)return!0;if(!(t instanceof Qr))return!1;var n=t instanceof Qr?t:W();return this.x54_1===n.x54_1&&!!this.y54_1.equals(n.y54_1)},J(us).k56=function(){this.e56_1=Br().v53_1},J(us).y2=function(){return ss(this)},J(ls).h4v=function(){return this.q54_1},J(ls).n4u=function(){return this.r54_1},J(ls).x4r=function(){return this.s54_1},J(ls).h55=function(t,n){return this.o54_1},J(ls).f55=function(t,n){var i,e,r=n.l56();t:{for(var s=r.v();s.w();){var u=s.y();if(u instanceof ps){i=u;break t}}i=null}if(!0===(null==i?null:i.f4z_1))return!0;t:{for(var o=r.v();o.w();){var _=o.y();if(_ instanceof ms){e=_;break t}}e=null}return null==(null==e?null:nr(e))},J(ls).g55=function(t,n){var i;t:{for(var e=n.l56().v();e.w();){var r=e.y();if(r instanceof vs){i=r;break t}}i=null}var s=i;return!(!this.l54_1&&null==s)},J(ls).l55=function(t,n){return this.m55(t,n,!0)},J(ls).m55=function(t,n,i){var e,r=this.o55(t,n),s=null==r?null:r.n34(),u=null==s?t.m56():s,o=t.n56();switch(null==o?-1:o.y9_1){case-1:var _;t:{for(var h=n.l56().v();h.w();){var a=h.y();if(a instanceof ps){_=a;break t}}_=null}for(var l=!0===(null==_?null:_.f4z_1),c=n.m56();c.p35();)c=c.s35(0);var f,v=c.q35();if(kt(v,fi()))f=Ue();else if(l)f=Be();else if(!i&&kt(n.n56(),He()))f=this.n55(t,n,He());else if(i){var d=n.n56(),w=null==d?bu(u):d;f=null==w?this.b55(u.q35()):w}else f=Ue();e=f;break;case 3:var p;if(t.n34()instanceof Hs)p=kt(n.m56().q35(),fi())?Ue():Be();else{var m=n.n56(),g=null==m?bu(u):m,y=null==g?this.b55(u.q35()):g;p=1===y.y9_1?Ve():y}e=p;break;default:e=o}return e},J(ls).j55=function(t,n){var i;switch(t){case"kotlin.Boolean":i=new zt("http://www.w3.org/2001/XMLSchema","boolean","xsd");break;case"kotlin.Byte":i=new zt("http://www.w3.org/2001/XMLSchema","byte","xsd");break;case"kotlin.UByte":i=new zt("http://www.w3.org/2001/XMLSchema","unsignedByte","xsd");break;case"kotlin.Short":i=new zt("http://www.w3.org/2001/XMLSchema","short","xsd");break;case"kotlin.UShort":i=new zt("http://www.w3.org/2001/XMLSchema","unsignedShort","xsd");break;case"kotlin.Int":i=new zt("http://www.w3.org/2001/XMLSchema","int","xsd");break;case"kotlin.UInt":i=new zt("http://www.w3.org/2001/XMLSchema","unsignedInt","xsd");break;case"kotlin.Long":i=new zt("http://www.w3.org/2001/XMLSchema","long","xsd");break;case"kotlin.ULong":i=new zt("http://www.w3.org/2001/XMLSchema","unsignedLong","xsd");break;case"kotlin.Float":case"kotlin.Double":i=new zt("http://www.w3.org/2001/XMLSchema","double","xsd");break;case"kotlin.String":i=new zt("http://www.w3.org/2001/XMLSchema","string","xsd");break;default:i=Qn(Zn(t,Jn(46)),n)}return i},J(ls).e55=function(t,n,i,e){var r=t.o56(),s=r.d4m_1.q35(),u=r.e4m_1,o=n.w55(),_=u.equals(r.e4m_1);Fn(_,_s);var h,a=n.n34(),l=null==a?null:a.p56();if(i.equals(He())){var c;if(e.w54_1){var f=e.v54_1,v=null==f?null:f.q4e();c=vt(null==v?e.u54_1:v)}else c=null!=e.v54_1?e.v54_1:vt(e.u54_1);h=c}else h=null!=e.v54_1?e.v54_1:s instanceof wn||kt(s,Rt())||kt(s,Pt())||kt(s,ai())||"kotlin.Unit"===u.u54_1||l instanceof vi?this.k55(e,o):null!=u.v54_1?u.v54_1:this.i55(u,o);return h},J(ls).o4u=function(t,n,i,e,r){return this.n54_1.q53(t,n,i,e,r)},J(ls).p55=function(t,n,i,e){throw dn("this function should not be called")},J(ls).p4u=function(t,n){if(this.p54_1)throw new Gr("Duplicate child ("+t.s35(n)+" found in "+t+" outside of eluded list context")},J(ls).o55=function(t,n){switch(t.m56().m35()){case"javax.xml.namespace.QName?":case"javax.xml.namespace.QName":return t.m56().i35()?di(Os()):Os();default:return null}},J(ls).r55=function(t){for(var n=Rn(0,t.o35()),i=mi(pi(wi(n,10)),16),e=gi(i),r=n.v();r.w();){var s=r.y(),u=t.u35(s);e.g2(u,s)}var o=e,_=yi(),h=$n(),a=0,l=t.o35();if(a("),this.s35(0).e57(t,n+4|0,i),t.s7(")")},J(Ts).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Is).equals.call(this,t)&&(t instanceof Ts||W(),zs(this).equals(zs(t)))},J(Ts).hashCode=function(){var t=J(Is).hashCode.call(this);return M(31,t)+zs(this).hashCode()|0},J(As).g57=function(t,n,i,e,r){var s,u,o,_=t.s4r_1.o55(i,e);null==_?(s=i.m56(),u=i,o=e):(s=_.n34(),u=i.h57(tt,tt,_),o=e.h57(tt,tt,_));var h=t.s4r_1.s55(i,e),a=s.q35();if(kt(a,ci())||a instanceof wn)return new Vs(t.s4r_1,u,o,r,h);if(kt(a,Pt()))return new Hs(t,n,u,o);if(kt(a,Rt())){var l=i.n56();return 1===(null==l?-1:l.y9_1)?new Bs(t,n,u,o):new Gs(t,n,u,o)}return a instanceof vi?new Ms(t,n,u,o):t.v4r_1&&s.p35()?new Zs(t,n,u,o,r):new su(t,n,u,o,h)},J(As).d57=function(t,n,i,e,r,s){return e=e===tt?i:e,s===tt?this.g57(t,n,i,e,r):s.g57.call(this,t,n,i,e,r)},J(Is).g4v=function(){return 4===this.j4l().y9_1?this.s35(0).g4v():this.j4l()},J(Is).c4m=function(){return this.z4l_1},J(Is).a4s=function(){return!1},J(Is).s4m=function(){var t=this.b4m_1;return Xn("tagName",1,Kn,(function(t){return t.s4m()}),null),t.j2()},J(Is).f4s=function(t){var n=this.x4l_1,i=null==n?t:n;return F(i,yt)?i:W()},J(Is).u4n=function(){return this.c4m().d4m_1},J(Is).o35=function(){return this.c4m().d4m_1.o35()},J(Is).p56=function(){return this.c4m().d4m_1.q35()},J(Is).s35=function(t){throw Ri("There are no children")},J(Is).f57=function(t,n,i){return this instanceof Hs||this instanceof Vs?this.e57(t,n,i):i.r(this.u4n().m35())?t.s7(this.s4m().toString()).s7("<...> = ").s7(this.j4l().x9_1):(i.s(this.u4n().m35()),this.e57(t,n,i)),t},J(Is).toString=function(){var t=Li(),n=Fi();return this.f57(t,0,n).toString()},J(Is).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Is||W(),!!kt(this.x4l_1,t.x4l_1)&&!!this.y4l_1.equals(t.y4l_1)&&this.c4m().equals(t.c4m()))},J(Is).hashCode=function(){var t=this.y4l_1.hashCode();t=M(31,t)+this.c4m().hashCode()|0;var n=M(31,t),i=this.x4l_1,e=null==i?null:$t(i);return n+(null==e?0:e)|0},J(Ms).y4s=function(){return!1},J(Ms).e4s=function(){return!1},J(Ms).j4l=function(){return this.c4n_1},J(Ms).j4u=function(){return kt(this.d4n_1,hu())},J(Ms).s35=function(t){return Ds(this).h1(t)},J(Ms).n53=function(t){var n=this.e4n_1.q2(t);if(null==n)throw new Gr("Missing polymorphic information for "+t);return n},J(Ms).e57=function(t,n,i){if(t.s7(this.s4m().toString()),this.j4u()){t.s7(" <~(");for(var e=this.e4n_1.e2().v();e.w();){var r=e.y().f57(t,n+4|0,i),s=Jn(44);r.s5(s).s5(Jn(10))}}else{t.s7(" ("),t.s7(" [");for(var u=this.e4n_1.e2().v();u.w();){var o=u.y().f57(t,n+4|0,i),_=Jn(44);o.s5(_).s5(Jn(10))}t.s5(Jn(93))}},J(Ms).equals=function(t){return!!(this===t||null!=t&&Pi(this).equals(Pi(t))&&J(ou).equals.call(this,t)&&(t instanceof Ms||W(),this.c4n_1.equals(t.c4n_1)&&kt(this.d4n_1,t.d4n_1)&&kt(this.e4n_1,t.e4n_1)&&this.f4n_1==t.f4n_1))},J(Ms).hashCode=function(){var t=J(ou).hashCode.call(this);t=M(31,t)+this.c4n_1.hashCode()|0,t=M(31,t)+$t(this.d4n_1)|0,t=M(31,t)+$t(this.e4n_1)|0;var n=M(31,t),i=this.f4n_1,e=null==i?null:_i(i);return n+(null==e?0:e)|0},J(Ps).q55=function(){return this.l57_1},J(Ps).i57=function(){return this.n57_1},J(Ps).p57=function(t,n,i){return new Ps(this.k57_1,t,this.m57_1,n,i)},J(Ps).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Ps||W(),!!(kt(this.k57_1,t.k57_1)&&this.l57_1.equals(t.l57_1)&&this.m57_1===t.m57_1&&kt(this.n57_1,t.n57_1)&&kt(this.o57_1,t.o57_1)))},J(Ps).hashCode=function(){var t=$t(this.k57_1);t=M(31,t)+this.l57_1.hashCode()|0,t=M(31,t)+hi(this.m57_1)|0;var n=M(31,t),i=this.n57_1,e=null==i?null:$t(i),r=M(31,t=n+(null==e?0:e)|0),s=this.o57_1,u=null==s?null:s.hashCode();return r+(null==u?0:u)|0},J(Ps).n34=function(){return null},J(Ps).o56=function(){var t=this.n57_1,n=null==t?null:t.n34();return new Lu(null==n?this.k57_1:n,this.w55())},J(Ps).l56=function(){return Tn()},J(Ps).m56=function(){var t=this.n57_1,n=null==t?null:t.n34();return null==n?this.k57_1:n},J(Ps).n56=function(){return this.o57_1},J(Ps).w55=function(){var t=this.l57_1.v54_1,n=null==t?null:Vi(t);return null==n?js():n},J(Hs).j4l=function(){return this.b4r_1},J(Hs).y4s=function(){return!1},J(Hs).s35=function(t){return Us(this)},J(Hs).e57=function(t,n,i){t.s7(this.s4m().toString()),this.f4o()?(t.s7(": EludedList<"),Us(this).f57(t,n,i),t.s5(Jn(62))):(t.s7(": ExplicitList<"),Us(this).f57(t,n,i),t.s5(Jn(62)))},J(Hs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(pu).equals.call(this,t)&&(t instanceof Hs||W(),this.f4o()===t.f4o()&&!!this.b4r_1.equals(t.b4r_1)&&Us(this).equals(Us(t)))},J(Hs).hashCode=function(){var t=J(pu).hashCode.call(this);return t=M(31,t)+hi(this.f4o())|0,t=M(31,t)+this.b4r_1.hashCode()|0,M(31,t)+Us(this).hashCode()|0},J(Vs).e4s=function(){return this.a58_1},J(Vs).y4s=function(){return this.b58_1},J(Vs).j4l=function(){return this.c58_1},J(Vs).o35=function(){return 0},J(Vs).e57=function(t,n,i){t.s7(this.s4m().toString()).s5(Jn(58)).s7(this.q35().toString()).s7(" = ").s7(this.c58_1.toString())},J(Vs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(ou).equals.call(this,t)&&(t instanceof Vs||W(),this.c58_1.equals(t.c58_1))},J(Vs).hashCode=function(){var t=J(ou).hashCode.call(this);return M(31,t)+this.c58_1.hashCode()|0},J(Bs).y4s=function(){return!1},J(Bs).e4s=function(){return!0},J(Bs).j4l=function(){return He()},J(Bs).d58=function(){var t=this.n4w_1;return Xn("keyDescriptor",1,Kn,(function(t){return t.d58()}),null),t.j2()},J(Bs).p4w=function(){var t=this.o4w_1;return Xn("valueDescriptor",1,Kn,(function(t){return t.p4w()}),null),t.j2()},J(Bs).o35=function(){return 2},J(Bs).s35=function(t){return 0==(t%2|0)?this.d58():this.p4w()},J(Bs).e57=function(t,n,i){t.s7(this.s4m().toString()).s7(" (").s5(Jn(10)),mu(t,n),this.d58().f57(t,n+4|0,i).s7(",").s5(Jn(10)),mu(t,n),this.p4w().f57(t,n+4|0,i).s5(Jn(41))},J(Gs).j4l=function(){return Ue()},J(Gs).y4s=function(){return!1},J(Gs).r4o=function(){var t=this.n4o_1;return Xn("isValueCollapsed",1,Kn,(function(t){return t.r4o()}),null),t.j2()},J(Gs).e4r=function(){var t=this.o4o_1;return Xn("entryName",1,Kn,(function(t){return t.e4r()}),null),t.j2()},J(Gs).s35=function(t){return 0==(t%2|0)?Ws(this):Ys(this)},J(Gs).e57=function(t,n,i){t.s7(this.s4m().toString()).s7(this.f4o()?": TransparentMap<":": ExplicitMap<"),this.s35(0).e57(t,n+4|0,i),t.s7(", "),this.s35(1).e57(t,n+4|0,i),t.s5(Jn(62))},J(Zs).y4s=function(){return this.n58_1},J(Zs).e4s=function(){return Ks(this).e4s()},J(Zs).j4l=function(){return Ks(this).j4l()},J(Zs).s4m=function(){return Ks(this).s4m()},J(Zs).s35=function(t){if(0!==t)throw Qi("Inline classes only have one child");return Ks(this)},J(Zs).a4s=function(){var t=this.p58_1;return Xn("isUnsigned",1,Kn,(function(t){return t.a4s()}),null),t.j2()},J(Zs).e57=function(t,n,i){t.s7(this.s4m().toString()),t.s7(": Inline ("),Ks(this).f57(t,n+4|0,i),t.s5(Jn(41))},J(Zs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(ou).equals.call(this,t)&&(t instanceof Zs||W(),this.a4s()===t.a4s())},J(Zs).hashCode=function(){var t=J(ou).hashCode.call(this);return M(31,t)+hi(this.a4s())|0},J(su).e4s=function(){return this.z4u_1},J(su).y4s=function(){return!1},J(su).j4l=function(){return Ue()},J(su).s35=function(t){return Qs(this).h1(t)},J(su).d4v=function(){var t=iu(this);return null==t?null:t.se_1},J(su).e57=function(t,n,i){t.s7(this.s4m().toString()).s7(" (").s5(Jn(10));for(var e=!0,r=Qs(this).v();r.w();){var s=r.y();if(e)e=!1;else{var u=Jn(44);t.s5(u).s5(Jn(10))}mu(t,n),s.f57(t,n+4|0,i)}mu(t.s5(Jn(10)),n-4|0).s5(Jn(41))},J(su).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(ou).equals.call(this,t)&&(t instanceof su||W(),!!kt(this.a4v_1,t.a4v_1))},J(su).hashCode=function(){var t=J(ou).hashCode.call(this),n=M(31,t),i=this.a4v_1,e=null==i?null:$t(i);return n+(null==e?0:e)|0},J(ou).h4t=function(t,n){return function(t,n,i,e){var r,s=t.u4p_1;if(!kt(s,E))return null==s||null!=s?s:W();if(null==t.t4p_1)r=null;else{var u=new vr(new jr(n,i,kn(t.t4p_1).d4k()),t);r=e.o34(u)}var o=r;return t.u4p_1=o,null==o||null!=o?o:W()}(this,t.i4r_1,t.j4r_1,n)},J(ou).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Is).equals.call(this,t)&&(t instanceof ou||W(),this.s4p_1===t.s4p_1&&this.t4p_1==t.t4p_1&&kt(this.u4p_1,t.u4p_1))},J(ou).hashCode=function(){var t=J(Is).hashCode.call(this);t=M(31,t)+hi(this.s4p_1)|0;var n=M(31,t),i=this.t4p_1,e=null==i?null:_i(i),r=M(31,t=n+(null==e?0:e)|0),s=this.u4p_1,u=null==s?null:$t(s);return r+(null==u?0:u)|0},J(vu).n34=function(){return this.s58_1},J(vu).i57=function(){return this.u58_1},J(vu).p57=function(t,n,i){return new vu(this.s58_1,this.t58_1,t,n,i)},J(vu).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof vu||W(),!!this.s58_1.equals(t.s58_1)&&this.t58_1===t.t58_1&&!!kt(this.u58_1,t.u58_1)&&!!this.v58_1.equals(t.v58_1)&&kt(this.w58_1,t.w58_1))},J(vu).hashCode=function(){var t=this.s58_1.hashCode();t=M(31,t)+this.t58_1|0;var n=M(31,t),i=this.u58_1,e=null==i?null:$t(i);t=M(31,t=n+(null==e?0:e)|0)+this.v58_1.hashCode()|0;var r=M(31,t),s=this.w58_1,u=null==s?null:s.hashCode();return r+(null==u?0:u)|0},J(vu).w55=function(){return Vi(this.s58_1.s4m())},J(vu).o56=function(){return null!=this.u58_1?new Lu(this.u58_1.n34(),Vi(this.s58_1.s4m())):-1===this.t58_1||kt(this.m56().q35(),et())?this.s58_1.c4m():new Lu(this.m56(),this.s58_1.w4l_1.w55())},J(vu).q55=function(){return this.v58_1},J(vu).l56=function(){return-1===this.t58_1?Tn():this.s58_1.u4n().r35(this.t58_1)},J(vu).m56=function(){return null!=this.u58_1?this.u58_1.n34():kt(this.s58_1.p56(),et())||-1===this.t58_1?this.s58_1.u4n():this.s58_1.u4n().s35(this.t58_1)},J(vu).n56=function(){return this.w58_1},J(pu).f4o=function(){return this.e4o_1},J(pu).q57=function(){return!1},J(pu).e4s=function(){return!1},J(pu).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Is).equals.call(this,t)&&(t instanceof pu||W(),this.f4o()===t.f4o()&&this.q57()===t.q57()&&this.e4s()===t.e4s())},J(pu).hashCode=function(){var t=J(Is).hashCode.call(this);return t=M(31,t)+hi(this.f4o())|0,t=M(31,t)+hi(this.q57())|0,M(31,t)+hi(this.e4s())|0},J(gu).o56=function(){return this.y58_1},J(gu).q55=function(){return this.z58_1},J(gu).w55=function(){return this.a59_1},J(gu).n56=function(){return this.b59_1},J(gu).i57=function(){return this.c59_1},J(gu).n34=function(){return this.d59_1},J(gu).l56=function(){return Tn()},J(gu).m56=function(){return this.y58_1.d4m_1},J(gu).p57=function(t,n,i){return new gu(this.x58_1,this.y58_1,t,this.a59_1,n,i)},J(xu).ue=function(){return this.e4v_1},J(xu).ve=function(){return this.f4v_1},J(xu).toString=function(){return"XmlOrderConstraint(before="+this.e4v_1+", after="+this.f4v_1+")"},J(xu).hashCode=function(){var t=this.e4v_1;return M(t,31)+this.f4v_1|0},J(xu).equals=function(t){if(this===t)return!0;if(!(t instanceof xu))return!1;var n=t instanceof xu?t:W();return this.e4v_1===n.e4v_1&&this.f4v_1===n.f4v_1},J(zu).w56=function(t){for(var n=0,i=t.length;n{"use strict";t.exports=i.p+"a1015df118c0009bbaae.json"},918:(t,n,i)=>{"use strict";t.exports=i.p+"4e1313da42287d18ad5a.png"},513:(t,n,i)=>{"use strict";t.exports=i.p+"5de21dc9a6671d378dbe.png"},79:(t,n,i)=>{"use strict";t.exports=i.p+"b52705ec61511efb27b9.png"},926:(t,n,i)=>{"use strict";t.exports=i.p+"21c6d0bc8e5465644f8b.png"},105:(t,n,i)=>{"use strict";t.exports=i.p+"33c2ca54c6adbcd6a2e3.png"},36:(t,n,i)=>{"use strict";t.exports=i.p+"dd554b8af1ab5e3bc726.png"},257:(t,n,i)=>{"use strict";t.exports=i.p+"791bfb510d74390a8d5a.png"},520:(t,n,i)=>{"use strict";t.exports=i.p+"fbab3596911513c77182.png"},709:(t,n,i)=>{"use strict";t.exports=i.p+"4f486d36fd4835ea883d.png"}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,n)=>{for(var i in n)__webpack_require__.o(n,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;__webpack_require__.g.importScripts&&(t=__webpack_require__.g.location+"");var n=__webpack_require__.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");if(i.length)for(var e=i.length-1;e>-1&&!t;)t=i[e--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=t})();var __webpack_exports__=__webpack_require__(960);return __webpack_exports__})())); //# sourceMappingURL=worldwind-tutorials.js.map \ No newline at end of file diff --git a/worldwind-tutorials.js.map b/worldwind-tutorials.js.map index 9b9f4299c..fa744ce69 100644 --- a/worldwind-tutorials.js.map +++ b/worldwind-tutorials.js.map @@ -1 +1 @@ -{"version":3,"file":"worldwind-tutorials.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAQ,uBAAyBD,IAEjCD,EAAK,uBAAyBC,GAC/B,CATD,CASGK,MAAM,8DCAT,SAASC,EAAgBC,EAAMC,EAAMC,GAKnC,SAASC,EAAgBC,GAClBC,MAAMC,kBAGTD,MAAMC,kBAAkBR,KAAMA,KAAKS,aAFnCT,KAAKU,OAAQ,IAAIH,OAAQG,MAK3BV,KAAKM,QAAUA,EACfH,GAAQA,EAAKQ,MAAMX,KAAMY,WAEzBZ,KAAKa,SAAW,WACd,OAAOb,KAAKE,KAAO,KAAOF,KAAKM,OACjC,CACF,CAKA,YAtBwB,IAApBF,IACFA,EAAkBG,OAkBpBF,EAAgBS,UAAYC,OAAOC,OAAOZ,EAAgBU,WAC1DT,EAAgBS,UAAUZ,KAAOA,EACjCG,EAAgBS,UAAUL,YAAcJ,EACjCA,CACT,mnCAEA,IAAIY,EAAoBhB,EAAgB,qBAQxC,SAA0BK,EAASY,QACnB,IAAVA,IACFA,EAAQ,MAGV,IAAIC,EAAMb,GAAWN,KAAKE,KAEZ,OAAVgB,GAAkBA,aAAiBX,QACrCY,GAAO,yBAA2BD,EAAMR,MAAQ,eAGlDV,KAAKM,QAAUa,CACjB,IAnBIC,EAAyBnB,EAAgB,0BAqB7C,SAA0CK,EAASe,EAAMC,EAAOJ,QACjD,IAATG,IACFA,EAAO,SAGK,IAAVC,IACFA,EAAQ,QAGI,IAAVJ,IACFA,EAAQ,MAGV,IAAIC,EAAMb,GAAWN,KAAKE,KAC1BiB,GAAO,KAAOE,EAAO,eAAiBC,EAExB,OAAVJ,GAAkBA,aAAiBX,QACrCY,GAAO,yBAA2BD,EAAMR,MAAQ,eAGlDV,KAAKM,QAAUa,EAEfnB,KAAKuB,aAAe,WAClB,OAAOF,CACT,EAEArB,KAAKwB,WAAa,WAChB,OAAOF,CACT,CACF,IAjDIG,EAAmCxB,EAAgB,mCAAoC,KAAMgB,GAC7FS,EAAsBzB,EAAgB,uBACtC0B,EAA2B1B,EAAgB,4BAC3C2B,EAAwB3B,EAAgB,yBACxC4B,EAAuB5B,EAAgB,wBA+C3C,SAAS6B,EAAeC,EAAUC,GAChCD,EAASjB,UAAYC,OAAOC,OAAOgB,EAAWlB,WAC9CiB,EAASjB,UAAUL,YAAcsB,EACjCA,EAASE,UAAYD,CACvB,CAEA,SAASE,EAAuBC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,CACT,CAMA,SAASE,EAAOC,EAAWnB,EAAKoB,GAC9B,IAAKD,EACH,MAAIC,EACI,IAAIA,EAAMpB,GAEV,IAAIZ,MAAMY,EAGtB,CACA,SAASqB,EAAeC,EAAOC,GAC7B,GAAa,MAATD,EACF,MAAM,IAAIZ,EAAqBa,EAAgB,qBAGjD,OAAOD,CACT,CACA,SAASE,EAAgBF,EAAOG,EAAQF,GACtC,KAAMD,aAAiBG,GACrB,MAAM,IAAIjB,EAAyBe,EAAgB,4BAA8BE,EAAO1C,KAAO0C,EAAO1C,KAAO0C,IAAWH,GAASA,EAAMhC,aAAegC,EAAMhC,YAAYP,KAAO,YAAcuC,EAAMhC,YAAYP,KAAO,KAGxN,OAAOuC,CACT,CACA,SAASI,EAAmBC,GAC1B,MAAM,IAAIC,UAAU,oBAAsBD,EAAa,uBACzD,CAEA,IAAIE,EAAwBjC,OAAOkC,OAAO,CACtChB,UAAW,KACXI,OAAQA,EACRG,eAAgBA,EAChBG,gBAAiBA,EACjBE,mBAAoBA,IAQpBK,EAAmB,iBACnBC,GAAoB,iBACpBC,EAAW,WACb,SAASA,IAAY,CAqLrB,OAnLAA,EAASC,OAAS,SAAgBC,EAAGC,GACnC,IAAIC,EAAIF,EAAIC,EAEZ,OADAC,EAAIJ,EAASK,UAAUD,GAChBJ,EAASM,SAASF,EAC3B,EAEAJ,EAASO,OAAS,SAAgBL,EAAGC,GACnC,IAAIC,EAAIF,EAAIF,EAASC,OAAOC,EAAGC,GAAKA,EAEpC,OADAC,EAAIJ,EAASK,UAAUD,GAChBJ,EAASM,SAASF,EAC3B,EAEAJ,EAASK,UAAY,SAAmBD,GACtC,OAAIA,EAAI,EACCI,KAAKC,KAAKL,GAEVI,KAAKE,MAAMN,EAEtB,EAEAJ,EAASW,SAAW,SAAkBT,EAAGC,GACvC,IAAIC,EAAII,KAAKE,MAAMR,EAAIC,GACvB,OAAOH,EAASM,SAASF,EAC3B,EAEAJ,EAASY,SAAW,SAAkBV,EAAGC,GACvC,IAAIC,EAAIF,EAAIF,EAASW,SAAST,EAAGC,GAAKA,EACtC,OAAOH,EAASM,SAASF,EAC3B,EAEAJ,EAASa,QAAU,SAAiBX,EAAGC,GAIrC,GAHAH,EAASc,UAAUZ,GACnBF,EAASc,UAAUX,GAET,IAAND,EACF,OAAOF,EAASM,SAASH,GAG3B,GAAU,IAANA,EACF,OAAOH,EAASM,SAASJ,GAG3B,IAAIE,EAAIJ,EAASe,UAAUb,EAAIC,GAE/B,GAAIC,IAAMF,GAAKE,IAAMD,EACnB,MAAM,IAAI7B,EAAoB,6CAGhC,OAAO8B,CACT,EAEAJ,EAASgB,aAAe,SAAsBd,EAAGC,GAI/C,OAHAH,EAASc,UAAUZ,GACnBF,EAASc,UAAUX,GAET,IAAND,GAAiB,IAANC,EACN,EACQ,IAAND,EACFF,EAASM,UAAU,EAAIH,GACf,IAANA,EACFH,EAASM,SAASJ,GAGpBF,EAASe,UAAUb,EAAIC,EAChC,EAEAH,EAASiB,aAAe,SAAsBf,EAAGC,GAI/C,GAHAH,EAASc,UAAUZ,GACnBF,EAASc,UAAUX,GAET,IAAND,EACF,OAAOF,EAASM,SAASH,GAG3B,GAAU,IAANA,EACF,OAAOH,EAASM,SAASJ,GAG3B,GAAU,IAANA,GAAiB,IAANC,EACb,OAAO,EAGT,IAAIC,EAAIJ,EAASe,UAAUb,EAAIC,GAE/B,GAAIC,EAAID,IAAMD,GAAKA,IAAMH,IAA2B,IAAPI,GAAYA,IAAMJ,IAA2B,IAAPG,EACjF,MAAM,IAAI5B,EAAoB,6BAA+B4B,EAAI,MAAQC,GAG3E,OAAOC,CACT,EAEAJ,EAASkB,SAAW,SAAUC,GAC5B,SAASD,EAASE,GAChB,OAAOD,EAAU5D,MAAMX,KAAMY,UAC/B,CAMA,OAJA0D,EAASzD,SAAW,WAClB,OAAO0D,EAAU1D,UACnB,EAEOyD,CACT,CAVoB,EAUlB,SAAU7B,GACV,IAAIe,EAAIc,SAAS7B,GACjB,OAAOW,EAASe,UAAUX,EAC5B,IAEAJ,EAASe,UAAY,SAAmB1B,GAEtC,OADAW,EAASc,UAAUzB,GACZW,EAASM,SAASjB,EAC3B,EAEAW,EAASc,UAAY,SAAmBzB,GACtC,GAAa,MAATA,EACF,MAAM,IAAIf,EAAoB,mBAAqBe,EAAQ,0CAG7D,GAAIgC,MAAMhC,GACR,MAAM,IAAIf,EAAoB,4CAGhC,GAAIe,EAAQ,GAAM,EAChB,MAAM,IAAIf,EAAoB,mBAAqBe,EAAQ,gBAG7D,GAAIA,EAAQS,GAAoBT,EAAQU,EACtC,MAAM,IAAIzB,EAAoB,iCAAmCe,EAErE,EAEAW,EAASM,SAAW,SAAkBjB,GACpC,OAAiB,IAAVA,EAAc,GAAKA,CAC5B,EAEAW,EAASsB,eAAiB,SAAwBC,EAAGC,GACnD,OAAID,EAAIC,GACE,EAGND,EAAIC,EACC,EAGF,CACT,EAEAxB,EAASyB,IAAM,SAAaC,GAC1B,OAAOA,IAAQ,EAAI,WAAmB,WAANA,CAClC,EAEA1B,EAAS2B,KAAO,SAAcC,GAC5B,GAAIA,GAAWA,GAAUA,IAAWC,IAClC,OAAO,EAKT,IAFA,IAAIC,EAASF,EAENA,EAAS,YAEdE,GADAF,GAAU,WAIZ,OAAO5B,EAASyB,IAAIK,EACtB,EAEA9B,EAAS+B,SAAW,WAGlB,IAFA,IAAID,EAAS,GAEJE,EAAOxE,UAAUyE,OAAQC,EAAU,IAAIC,MAAMH,GAAOI,EAAO,EAAGA,EAAOJ,EAAMI,IAClFF,EAAQE,GAAQ5E,UAAU4E,GAG5B,IAAK,IAAIC,EAAK,EAAGC,EAAWJ,EAASG,EAAKC,EAASL,OAAQI,IAAM,CAC/D,IAAIE,EAAID,EAASD,GACjBP,GAAUA,GAAU,GAAKA,EAAS9B,EAAS2B,KAAKY,EAClD,CAEA,OAAOvC,EAAS2B,KAAKG,EACvB,EAEO9B,CACT,CAvLe,GAwLfA,EAASF,iBAAmBA,EAC5BE,EAASD,iBAAmBA,EAM5B,IAAIyC,EAAO,WACT,SAASA,EAAK1F,GACZF,KAAK6F,MAAQ3F,CACf,CAEA,IAAI4F,EAASF,EAAK9E,UAclB,OAZAgF,EAAOC,OAAS,SAAgBC,GAC9B,OAAOhG,OAASgG,CAClB,EAEAF,EAAOjF,SAAW,WAChB,OAAOb,KAAK6F,KACd,EAEAC,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEO+E,CACT,CApBW,GA2BPM,EAAiB,WACnB,SAASA,IAAkB,CAE3B,IAAIJ,EAASI,EAAepF,UAkB5B,OAhBAgF,EAAOK,IAAM,SAAaC,GACxBvD,EAAmB,MACrB,EAEAiD,EAAOO,MAAQ,WACbxD,EAAmB,QACrB,EAEAiD,EAAOQ,MAAQ,SAAeC,GAC5B1D,EAAmB,QACrB,EAEAiD,EAAOU,aAAe,SAAsBD,GAC1C1D,EAAmB,eACrB,EAEOqD,CACT,CAtBqB,GA6BjBO,EAAe,WACjB,SAASA,IAAgB,CAEzB,IAAIX,EAASW,EAAa3F,UA8B1B,OA5BAgF,EAAOY,SAAW,WAChB7D,EAAmB,WACrB,EAEAiD,EAAOa,oBAAsB,WAC3B9D,EAAmB,sBACrB,EAEAiD,EAAOc,YAAc,WACnB/D,EAAmB,cACrB,EAEAiD,EAAOe,YAAc,WACnBhE,EAAmB,cACrB,EAEAiD,EAAOgB,cAAgB,SAAuBP,GAC5C1D,EAAmB,gBACrB,EAEAiD,EAAOQ,MAAQ,SAAeS,EAAUC,GACtCnE,EAAmB,QACrB,EAEAiD,EAAOmB,QAAU,SAAiBC,EAAWC,GAC3CtE,EAAmB,UACrB,EAEO4D,CACT,CAlCmB,GAoCfW,EAAW,SAAUC,GAGvB,SAASD,EAASE,EAASC,GACzB,IAAIC,EAKJ,OAHAA,EAAQH,EAAgBI,KAAKzH,OAASA,MAChC0H,SAAWtE,EAASe,UAAUmD,GACpCE,EAAMG,OAASvE,EAASe,UAAUoD,GAC3BC,CACT,CATA1F,EAAesF,EAAUC,GAWzBD,EAASQ,OAAS,SAAgBC,GAChC,OAAOT,EAASU,QAAQ1E,EAASiB,aAAawD,EAAME,GAAUC,iBAAkB,EAClF,EAEAZ,EAASa,QAAU,SAAiBC,GAClC,OAAOd,EAASU,QAAQ1E,EAASiB,aAAa6D,EAAOH,GAAUI,kBAAmB,EACpF,EAEAf,EAASgB,UAAY,SAAmBC,GACtC,OAAOjB,EAASU,QAAQ1E,EAASiB,aAAagE,EAASN,GAAUO,oBAAqB,EACxF,EAEAlB,EAASmB,UAAY,SAAmBjB,EAASkB,QACxB,IAAnBA,IACFA,EAAiB,GAGnB,IAAIC,EAAOrF,EAASa,QAAQqD,EAASlE,EAASW,SAASyE,EAAgBT,GAAUW,mBAC7EC,EAAMvF,EAASY,SAASwE,EAAgBT,GAAUW,kBACtD,OAAOtB,EAASU,QAAQW,EAAME,EAChC,EAEAvB,EAASwB,SAAW,SAAkBC,GACpC,IAAIJ,EAAOrF,EAASC,OAAOwF,EAAQ,KAC/BC,EAAM1F,EAASO,OAAOkF,EAAQ,KAOlC,OALIC,EAAM,IACRA,GAAO,IACPL,KAGKrB,EAASU,QAAQW,EAAY,IAANK,EAChC,EAEA1B,EAAS2B,QAAU,SAAiBxB,GAClC,IAAIkB,EAAOrF,EAASC,OAAOkE,EAAOQ,GAAUW,kBACxCC,EAAMvF,EAASO,OAAO4D,EAAOQ,GAAUW,kBAO3C,OALIC,EAAM,IACRA,GAAOZ,GAAUW,iBACjBD,KAGKzI,KAAK8H,QAAQW,EAAME,EAC5B,EAEAvB,EAAS4B,GAAK,SAAYC,EAAQ7C,GAChC,OAAOgB,EAAS8B,KAAKC,KAAKF,EAAQ7C,EACpC,EAEAgB,EAASgC,KAAO,SAAcH,GAC5BzG,EAAeyG,EAAQ,UACvBtG,EAAgBsG,EAAQ/C,GACxB,IAAIQ,EAAWU,EAAS8B,KAIxB,OAHAD,EAAO5C,QAAQgD,SAAQ,SAAUjD,GAC/BM,EAAWA,EAASyC,KAAKF,EAAO9C,IAAIC,GAAOA,EAC7C,IACOM,CACT,EAEAU,EAASH,QAAU,SAAiBqC,EAAgBC,GAClD/G,EAAe8G,EAAgB,kBAC/B9G,EAAe+G,EAAc,gBAC7B,IAAId,EAAOa,EAAeE,MAAMD,EAAcE,EAAWC,SACrDnC,EAAQ,EAEZ,GAAI+B,EAAeK,YAAYC,EAAYC,iBAAmBN,EAAaI,YAAYC,EAAYC,gBACjG,IACE,IAAIC,EAAWR,EAAeS,QAAQH,EAAYC,gBAGlD,GAFAtC,EAAQgC,EAAaQ,QAAQH,EAAYC,gBAAkBC,EAEvDrB,EAAO,GAAKlB,EAAQ,EACtBA,GAASQ,GAAUW,sBACd,GAAID,EAAO,GAAKlB,EAAQ,EAC7BA,GAASQ,GAAUW,sBACd,GAAa,IAATD,GAAwB,IAAVlB,EAAa,CACpC,IAAIyC,EAAcT,EAAaU,KAAKL,EAAYC,eAAgBC,GAChErB,EAAOa,EAAeE,MAAMQ,EAAaP,EAAWC,QACtD,CACF,CAAE,MAAOQ,GAAI,CAGf,OAAOlK,KAAKuI,UAAUE,EAAMlB,EAC9B,EAEAH,EAAS+C,MAAQ,SAAe9I,GAC9BmB,EAAenB,EAAM,QACrB,IACI+I,EADU,IAAIC,OAAO,gHAAiH,KACpHC,KAAKjJ,GAE3B,GAAgB,OAAZ+I,GACE,MAAQA,EAAQ,IAAO,EAAO,CAChC,IAAIG,EAAS,MAAQH,EAAQ,GACzBI,EAAWJ,EAAQ,GACnBK,EAAYL,EAAQ,GACpBM,EAAcN,EAAQ,GACtBO,EAAcP,EAAQ,GACtBQ,EAAgBR,EAAQ,GAE5B,GAAgB,MAAZI,GAAiC,MAAbC,GAAoC,MAAfC,GAAsC,MAAfC,EAAqB,CACvF,IAAIE,EAAazD,EAAS0D,aAAazJ,EAAMmJ,EAAUzC,GAAUC,gBAAiB,QAE9E+C,EAAc3D,EAAS0D,aAAazJ,EAAMoJ,EAAW1C,GAAUI,iBAAkB,SAEjF6C,EAAa5D,EAAS0D,aAAazJ,EAAMqJ,EAAa3C,GAAUO,mBAAoB,WAEpFhB,EAAUF,EAAS0D,aAAazJ,EAAMsJ,EAAa,EAAG,WAEtDM,EAA8B,MAAfN,GAAiD,MAA1BA,EAAYO,OAAO,GAEzD3D,EAAQH,EAAS+D,eAAe9J,EAAMuJ,EAAeK,GAAgB,EAAI,GAE7E,IACE,OAAO7D,EAASU,QAAQyC,EAAQM,EAAYE,EAAaC,EAAY1D,EAASC,EAChF,CAAE,MAAO6D,GACP,MAAM,IAAIhK,EAAuB,gDAAiDC,EAAM,EAAG+J,EAC7F,CACF,CACF,CAGF,MAAM,IAAIhK,EAAuB,sCAAuCC,EAAM,EAChF,EAEA+F,EAAS0D,aAAe,SAAsBzJ,EAAMgK,EAAQC,EAAYC,GACtE,GAAc,MAAVF,EACF,OAAO,EAGT,IAKE,MAJkB,MAAdA,EAAO,KACTA,EAASA,EAAOG,UAAU,IAGrBpI,EAASiB,aAAaoH,WAAWJ,GAASC,EACnD,CAAE,MAAOF,GACP,MAAM,IAAIhK,EAAuB,wCAA0CmK,EAAWlK,EAAM,EAAG+J,EACjG,CACF,EAEAhE,EAAS+D,eAAiB,SAAwB9J,EAAMgK,EAAQd,GAC9D,OAAc,MAAVc,GAAoC,IAAlBA,EAAOhG,OACpB,GAGTgG,GAAUA,EAAS,aAAaG,UAAU,EAAG,GACtCC,WAAWJ,GAAUd,EAC9B,EAEAnD,EAASU,QAAU,WACjB,OAAIlH,UAAUyE,QAAU,EACf+B,EAASsE,oBAAoB9K,UAAU,GAAIA,UAAU,IAErDwG,EAASuE,0CAA0C/K,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAE9I,EAEAwG,EAASuE,0CAA4C,SAAmDpB,EAAQM,EAAYE,EAAaC,EAAYvC,EAAMlB,GACzJ,IAAID,EAAUlE,EAASa,QAAQ4G,EAAYzH,EAASa,QAAQ8G,EAAa3H,EAASa,QAAQ+G,EAAYvC,KAEtG,OAAI8B,EACKnD,EAASmB,UAAUjB,EAASC,GAAOqE,UAGrCxE,EAASmB,UAAUjB,EAASC,EACrC,EAEAH,EAASsE,oBAAsB,SAA6BpE,EAASkB,GASnE,YARgB,IAAZlB,IACFA,EAAU,QAGW,IAAnBkB,IACFA,EAAiB,GAGH,IAAZlB,GAAoC,IAAnBkB,EACZpB,EAAS8B,KAGX,IAAI9B,EAASE,EAASkB,EAC/B,EAEA,IAAI1C,EAASsB,EAAStG,UAqWtB,OAnWAgF,EAAOK,IAAM,SAAaC,GACxB,GAAIA,IAASqD,EAAWC,QACtB,OAAO1J,KAAK0H,SACP,GAAItB,IAASqD,EAAWoC,MAC7B,OAAO7L,KAAK2H,OAEZ,MAAM,IAAIlG,EAAiC,qBAAuB2E,EAEtE,EAEAN,EAAOO,MAAQ,WACb,MAAO,CAACoD,EAAWC,QAASD,EAAWoC,MACzC,EAEA/F,EAAOgG,OAAS,WACd,OAAyB,IAAlB9L,KAAK0H,UAAkC,IAAhB1H,KAAK2H,MACrC,EAEA7B,EAAOiG,WAAa,WAClB,OAAO/L,KAAK0H,SAAW,CACzB,EAEA5B,EAAOwB,QAAU,WACf,OAAOtH,KAAK0H,QACd,EAEA5B,EAAOkG,KAAO,WACZ,OAAOhM,KAAK2H,MACd,EAEA7B,EAAOmG,YAAc,SAAqB3E,GACxC,OAAOF,EAASU,QAAQR,EAAStH,KAAK2H,OACxC,EAEA7B,EAAOoG,UAAY,SAAmBC,GAEpC,OADAvC,EAAYC,eAAeuC,mBAAmBD,GACvC/E,EAASU,QAAQ9H,KAAK0H,SAAUyE,EACzC,EAEArG,EAAOuG,aAAe,SAAsB3F,GAE1C,OADAlE,EAAekE,EAAU,YAClB1G,KAAKmJ,KAAKzC,EAASY,UAAWZ,EAASsF,OAChD,EAEAlG,EAAOqD,KAAO,SAAcmD,EAAkBC,GAC5C,OAAyB,IAArB3L,UAAUyE,OACLrF,KAAKqM,aAAaC,GACK,IAArB1L,UAAUyE,QAAgBkH,aAAwB9F,EACpDzG,KAAKwM,eAAeF,EAAkBC,GAEtCvM,KAAKyM,iBAAiBH,EAAkBC,EAEnD,EAEAzG,EAAO0G,eAAiB,SAAwBE,EAAatG,GAI3D,GAHA5D,EAAekK,EAAa,eAC5BlK,EAAe4D,EAAM,QAEjBA,IAASqD,EAAWkD,KACtB,OAAO3M,KAAKyM,iBAAiBrJ,EAASiB,aAAaqI,EAAa3E,GAAUC,iBAAkB,GAG9F,GAAI5B,EAAKO,sBACP,MAAM,IAAIlF,EAAiC,4CAG7C,GAAoB,IAAhBiL,EACF,OAAO1M,KAGT,GAAIoG,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWoC,MACd,OAAO7L,KAAK4M,UAAUF,GAExB,KAAKjD,EAAWoD,OACd,OAAO7M,KAAKyM,iBAAgE,IAA/CrJ,EAASC,OAAOqJ,EAAa,KAAuE,IAA/CtJ,EAASO,OAAO+I,EAAa,MAEjH,KAAKjD,EAAWqD,OACd,OAAO9M,KAAK+M,WAAWL,GAEzB,KAAKjD,EAAWC,QACd,OAAO1J,KAAKgN,YAAYN,GAG5B,OAAO1M,KAAKyM,iBAAiBrJ,EAASiB,aAAa+B,EAAKM,WAAWY,UAAWoF,GAAc,EAC9F,CAEA,IAAIhG,EAAWN,EAAKM,WAAWuG,aAAaP,GAC5C,OAAO1M,KAAKyM,iBAAiB/F,EAASY,UAAWZ,EAASsF,OAC5D,EAEAlG,EAAOoH,SAAW,SAAkBC,GAClC,OAAOnN,KAAKyM,iBAAiBrJ,EAASiB,aAAa8I,EAAWpF,GAAUC,iBAAkB,EAC5F,EAEAlC,EAAOsH,UAAY,SAAmBC,GACpC,OAAOrN,KAAKyM,iBAAiBrJ,EAASiB,aAAagJ,EAAYtF,GAAUI,kBAAmB,EAC9F,EAEArC,EAAOwH,YAAc,SAAqBC,GACxC,OAAOvN,KAAKyM,iBAAiBrJ,EAASiB,aAAakJ,EAAcxF,GAAUO,oBAAqB,EAClG,EAEAxC,EAAOkH,YAAc,SAAqBQ,GACxC,OAAOxN,KAAKyM,iBAAiBe,EAAc,EAC7C,EAEA1H,EAAOiH,WAAa,SAAoBU,GACtC,OAAOzN,KAAKyM,iBAAiBrJ,EAASC,OAAOoK,EAAa,KAA4C,IAArCrK,EAASO,OAAO8J,EAAa,KAChG,EAEA3H,EAAO8G,UAAY,SAAmBc,GACpC,OAAO1N,KAAKyM,iBAAiB,EAAGiB,EAClC,EAEA5H,EAAO2G,iBAAmB,SAA0Be,EAAcE,GAIhE,GAHAlL,EAAegL,EAAc,gBAC7BhL,EAAekL,EAAY,cAEN,IAAjBF,GAAqC,IAAfE,EACxB,OAAO1N,KAGT,IAAI2N,EAAWvK,EAASa,QAAQjE,KAAK0H,SAAU8F,GAC/CG,EAAWvK,EAASa,QAAQ0J,EAAUvK,EAASC,OAAOqK,EAAY3F,GAAUW,mBAC5EgF,EAAatK,EAASO,OAAO+J,EAAY3F,GAAUW,kBACnD,IAAIF,EAAiBpF,EAASa,QAAQjE,KAAK2H,OAAQ+F,GACnD,OAAOtG,EAASmB,UAAUoF,EAAUnF,EACtC,EAEA1C,EAAO8H,MAAQ,SAAetB,EAAkBlG,GAC9C,OAAyB,IAArBxF,UAAUyE,OACLrF,KAAK6N,cAAcvB,GAEnBtM,KAAK8N,gBAAgBxB,EAAkBlG,EAElD,EAEAN,EAAO+H,cAAgB,SAAuBnH,GAC5ClE,EAAekE,EAAU,YACzB,IAAIqH,EAAiBrH,EAASY,UAC1B0G,EAAkBtH,EAASsF,OAE/B,OAAI+B,IAAmB5K,EACdnD,KAAKmJ,KAAKjG,GAAmB8K,GAG/BhO,KAAKmJ,MAAM4E,GAAiBC,EACrC,EAEAlI,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAGlE,OAFA5D,EAAeyL,EAAkB,oBACjCzL,EAAe4D,EAAM,QACd6H,IAAqB9K,EAAmBnD,KAAKwM,eAAetJ,EAAkBkD,GAAQpG,KAAKwM,gBAAgByB,EAAkB7H,EACtI,EAEAN,EAAOoI,UAAY,SAAmBC,GACpC,OAAOA,IAAmBhL,EAAmBnD,KAAKkN,SAAShK,GAAoBlD,KAAKkN,UAAUiB,EAChG,EAEArI,EAAOsI,WAAa,SAAoBC,GACtC,OAAOA,IAAoBlL,EAAmBnD,KAAKoN,UAAUlK,GAAoBlD,KAAKoN,WAAWiB,EACnG,EAEAvI,EAAOwI,aAAe,SAAsBC,GAC1C,OAAOA,IAAsBpL,EAAmBnD,KAAKsN,YAAYpK,GAAoBlD,KAAKsN,aAAaiB,EACzG,EAEAzI,EAAO0I,aAAe,SAAsBC,GAC1C,OAAOA,IAAsBtL,EAAmBnD,KAAKgN,YAAY9J,GAAoBlD,KAAKgN,aAAayB,EACzG,EAEA3I,EAAO4I,YAAc,SAAqBC,GACxC,OAAOA,IAAqBxL,EAAmBnD,KAAK+M,WAAW7J,GAAoBlD,KAAK+M,YAAY4B,EACtG,EAEA7I,EAAO8I,WAAa,SAAoBZ,GACtC,OAAOA,IAAoB7K,EAAmBnD,KAAK4M,UAAU1J,GAAoBlD,KAAK4M,WAAWoB,EACnG,EAEAlI,EAAOmH,aAAe,SAAsB4B,GAC1C,GAAqB,IAAjBA,EACF,OAAOzH,EAAS8B,KAGlB,GAAqB,IAAjB2F,EACF,OAAO7O,KAGT,IAAIyI,EAAOrF,EAASiB,aAAarE,KAAK0H,SAAUmH,GAC5ClG,EAAMvF,EAASiB,aAAarE,KAAK2H,OAAQkH,GAG7C,OAFApG,GAAcrF,EAASC,OAAOsF,EAAKZ,GAAUW,kBAC7CC,EAAMvF,EAASO,OAAOgF,EAAKZ,GAAUW,kBAC9BtB,EAASmB,UAAUE,EAAME,EAClC,EAEA7C,EAAOgJ,UAAY,SAAmBC,GACpC,GAAgB,IAAZA,EACF,MAAM,IAAIrN,EAAoB,yBAGhC,GAAgB,IAAZqN,EACF,OAAO/O,KAGT,IAAIyI,EAAOrF,EAASC,OAAOrD,KAAK0H,SAAUqH,GACtCC,EAAU5L,EAASK,WAAWzD,KAAK0H,SAAWqH,EAAUtG,GAAQV,GAAUW,kBAC1EC,EAAMvF,EAASC,OAAOrD,KAAK2H,OAAQoH,GAEvC,OADApG,EAAMqG,EAAUrG,EACTvB,EAASmB,UAAUE,EAAME,EAClC,EAEA7C,EAAO8F,QAAU,WACf,OAAO5L,KAAKiN,cAAc,EAC5B,EAEAnH,EAAOmJ,IAAM,WACX,OAAOjP,KAAK+L,aAAe/L,KAAK4L,UAAY5L,IAC9C,EAEA8F,EAAOQ,MAAQ,SAAeC,GAW5B,OAVA/D,EAAe+D,EAAU,YAEH,IAAlBvG,KAAK0H,WACPnB,EAAWA,EAAS4C,KAAKnJ,KAAK0H,SAAU+B,EAAWC,UAGjC,IAAhB1J,KAAK2H,SACPpB,EAAWA,EAAS4C,KAAKnJ,KAAK2H,OAAQ8B,EAAWoC,QAG5CtF,CACT,EAEAT,EAAOU,aAAe,SAAsBD,GAW1C,OAVA/D,EAAe+D,EAAU,YAEH,IAAlBvG,KAAK0H,WACPnB,EAAWA,EAASqH,MAAM5N,KAAK0H,SAAU+B,EAAWC,UAGlC,IAAhB1J,KAAK2H,SACPpB,EAAWA,EAASqH,MAAM5N,KAAK2H,OAAQ8B,EAAWoC,QAG7CtF,CACT,EAEAT,EAAOoJ,OAAS,WACd,OAAO9L,EAASC,OAAOrD,KAAK0H,SAAUK,GAAUC,gBAClD,EAEAlC,EAAOqJ,QAAU,WACf,OAAO/L,EAASC,OAAOrD,KAAK0H,SAAUK,GAAUI,iBAClD,EAEArC,EAAOsJ,UAAY,WACjB,OAAOhM,EAASC,OAAOrD,KAAK0H,SAAUK,GAAUO,mBAClD,EAEAxC,EAAOuJ,SAAW,WAChB,IAAIxG,EAASjF,KAAK0L,MAAMlM,EAASiB,aAAarE,KAAK0H,SAAU,MAE7D,OADStE,EAASa,QAAQ4E,EAAQzF,EAASC,OAAOrD,KAAK2H,OAAQ,KAEjE,EAEA7B,EAAOyJ,QAAU,WACf,IAAIC,EAAapM,EAASiB,aAAarE,KAAK0H,SAAUK,GAAUW,kBAEhE,OADatF,EAASa,QAAQuL,EAAYxP,KAAK2H,OAEjD,EAEA7B,EAAO2J,UAAY,SAAmBC,GACpClN,EAAekN,EAAe,iBAC9B/M,EAAgB+M,EAAetI,EAAU,iBACzC,IAAIuI,EAAMvM,EAASsB,eAAe1E,KAAK0H,SAAUgI,EAAcpI,WAE/D,OAAY,IAARqI,EACKA,EAGF3P,KAAK2H,OAAS+H,EAAc1D,MACrC,EAEAlG,EAAOC,OAAS,SAAgB2J,GAC9B,OAAI1P,OAAS0P,GAITA,aAAyBtI,GACpBpH,KAAKsH,YAAcoI,EAAcpI,WAAatH,KAAKgM,SAAW0D,EAAc1D,MAIvF,EAEAlG,EAAOjF,SAAW,WAChB,GAAIb,OAASoH,EAAS8B,KACpB,MAAO,OAGT,IA6BM0G,EA7BF1H,EAAQ9E,EAASC,OAAOrD,KAAK0H,SAAUK,GAAUI,kBACjDE,EAAUjF,EAASC,OAAOD,EAASO,OAAO3D,KAAK0H,SAAUK,GAAUI,kBAAmBJ,GAAUO,oBAChGG,EAAOrF,EAASO,OAAO3D,KAAK0H,SAAUK,GAAUO,oBAChDuH,EAAO,KAUX,GARc,IAAV3H,IACF2H,GAAQ3H,EAAQ,KAGF,IAAZG,IACFwH,GAAQxH,EAAU,KAGP,IAATI,GAA8B,IAAhBzI,KAAK2H,QAAgBkI,EAAKxK,OAAS,EACnD,OAAOwK,EAaT,GAVIpH,EAAO,GAAKzI,KAAK2H,OAAS,EAE1BkI,IADY,IAAVpH,EACM,KAEAA,EAAO,EAGjBoH,GAAQpH,EAGNzI,KAAK2H,OAAS,EAahB,IAZAkI,GAAQ,IAURA,GADAD,GALEA,EADEnH,EAAO,EACI,IAAM,EAAIV,GAAUW,iBAAmB1I,KAAK2H,QAE5C,IAAMI,GAAUW,iBAAmB1I,KAAK2H,SAG/BmI,MAAM,EAAGF,EAAWvK,QAGJ,MAAjCwK,EAAK3E,OAAO2E,EAAKxK,OAAS,IAC/BwK,EAAOA,EAAKC,MAAM,EAAGD,EAAKxK,OAAS,GAKvC,OADAwK,EAAQ,GAEV,EAEA/J,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEOuG,CACT,CAziBe,CAyiBblB,GASE6J,EAAgB,WAA0B,EAM1CtG,EAAa,SAAUuG,GAGzB,SAASvG,EAAWvJ,EAAM+P,GACxB,IAAIzI,EAKJ,OAHAA,EAAQwI,EAAcvI,KAAKzH,OAASA,MAC9B6F,MAAQ3F,EACdsH,EAAM0I,UAAYD,EACXzI,CACT,CATA1F,EAAe2H,EAAYuG,GAW3B,IAAIlK,EAAS2D,EAAW3I,UAoDxB,OAlDAgF,EAAOY,SAAW,WAChB,OAAO1G,KAAKkQ,SACd,EAEApK,EAAOa,oBAAsB,WAC3B,OAAO3G,KAAK4G,eAAiB5G,OAASyJ,EAAW0G,OACnD,EAEArK,EAAOc,YAAc,WACnB,OAAO5G,KAAKyP,UAAUhG,EAAWkD,OAAS,GAAK3M,OAASyJ,EAAW0G,OACrE,EAEArK,EAAOe,YAAc,WACnB,OAAO7G,KAAKyP,UAAUhG,EAAWkD,MAAQ,CAC3C,EAEA7G,EAAOgB,cAAgB,SAAuBP,GAC5C,GAAIvG,OAASyJ,EAAW0G,QACtB,OAAO,EAGT,IAEE,OADA5J,EAAS4C,KAAK,EAAGnJ,OACV,CACT,CAAE,MAAOkK,GACP,IAEE,OADA3D,EAAS4C,MAAM,EAAGnJ,OACX,CACT,CAAE,MAAOoQ,GACP,OAAO,CACT,CACF,CACF,EAEAtK,EAAOQ,MAAQ,SAAeC,EAAU0C,GACtC,OAAO1C,EAAS4C,KAAKF,EAAQjJ,KAC/B,EAEA8F,EAAOmB,QAAU,SAAiBC,EAAWC,GAC3C,OAAOD,EAAUsC,MAAMrC,EAAWnH,KACpC,EAEA8F,EAAOjF,SAAW,WAChB,OAAOb,KAAK6F,KACd,EAEAC,EAAO2J,UAAY,SAAmBzJ,GACpC,OAAOhG,KAAK0G,WAAW+I,UAAUzJ,EAAMU,WACzC,EAEO+C,CACT,CAjEiB,CAiEfhD,GA0BE4J,EAAgB,WAClB,SAASA,IAAiB,CAE1B,IAAIvK,EAASuK,EAAcvP,UAkD3B,OAhDAgF,EAAOc,YAAc,WACnB/D,EAAmB,cACrB,EAEAiD,EAAOe,YAAc,WACnBhE,EAAmB,cACrB,EAEAiD,EAAOwK,SAAW,WAChBzN,EAAmB,WACrB,EAEAiD,EAAOyK,UAAY,WACjB1N,EAAmB,YACrB,EAEAiD,EAAO0K,MAAQ,WACb3N,EAAmB,QACrB,EAEAiD,EAAO2K,eAAiB,SAAwBlK,GAC9C1D,EAAmB,iBACrB,EAEAiD,EAAO4K,QAAU,SAAiBnK,GAChC1D,EAAmB,UACrB,EAEAiD,EAAO6K,WAAa,SAAoBpK,EAAUqK,GAChD/N,EAAmB,aACrB,EAEAiD,EAAOgB,cAAgB,SAAuBP,GAC5C1D,EAAmB,gBACrB,EAEAiD,EAAO+K,YAAc,WACnBhO,EAAmB,cACrB,EAEAiD,EAAOC,OAAS,SAAgBC,GAC9BnD,EAAmB,SACrB,EAEAiD,EAAO5F,KAAO,WACZ2C,EAAmB,OACrB,EAEOwN,CACT,CAtDoB,GA6DhBS,EAAa,WACf,SAASA,EAAWC,EAAaC,EAAYC,EAAaC,GACxD7O,IAAS0O,EAAcC,GAAa,2BAA8BD,EAAc,8CAAkDC,EAAa,IAAMrP,GACrJU,IAAS4O,EAAcC,GAAa,2BAA8BD,EAAc,8CAAkDC,EAAa,IAAMvP,GACrJU,IAAS2O,EAAaE,GAAa,kBAAqBF,EAAa,sCAA0CE,EAAa,IAAMvP,GAClI3B,KAAKmR,aAAeJ,EACpB/Q,KAAKoR,YAAcJ,EACnBhR,KAAKqR,YAAcH,EACnBlR,KAAKsR,aAAeL,CACtB,CAEA,IAAInL,EAASgL,EAAWhQ,UA6FxB,OA3FAgF,EAAOyL,QAAU,WACf,OAAOvR,KAAKmR,eAAiBnR,KAAKoR,aAAepR,KAAKsR,eAAiBtR,KAAKqR,WAC9E,EAEAvL,EAAO0L,QAAU,WACf,OAAOxR,KAAKmR,YACd,EAEArL,EAAO2L,eAAiB,WACtB,OAAOzR,KAAKoR,WACd,EAEAtL,EAAO4L,QAAU,WACf,OAAO1R,KAAKqR,WACd,EAEAvL,EAAO6L,gBAAkB,WACvB,OAAO3R,KAAKsR,YACd,EAEAxL,EAAO8L,aAAe,SAAsBnP,GAC1C,OAAOzC,KAAKwR,WAAa/O,GAASA,GAASzC,KAAK0R,SAClD,EAEA5L,EAAO+L,gBAAkB,SAAyBpP,EAAOqP,GAGvD,OAAK9R,KAAK4R,aAAanP,GAUhBA,EAHEJ,GAAO,EAND,MAATyP,EACI,qBAAuBA,EAAQ,kBAAoB9R,KAAKa,WAAa,MAAQ4B,EAE7E,+BAAiCzC,KAAKa,WAAa,MAAQ4B,EAGzCxB,EAI9B,EAEA6E,EAAOsG,mBAAqB,SAA4B3J,EAAOqP,GAC7D,IAAoC,IAAhC9R,KAAK+R,gBAAgBtP,GACvB,MAAM,IAAIxB,EAAkB,yBAA2B6Q,EAAQ,KAAOrP,GAGxE,OAAOA,CACT,EAEAqD,EAAOiM,gBAAkB,SAAyBtP,GAChD,OAAOzC,KAAKgS,cAAgBhS,KAAK4R,aAAanP,EAChD,EAEAqD,EAAOkM,WAAa,WAClB,OAAOhS,KAAKwR,WAAapO,EAASD,kBAAoBnD,KAAK0R,WAAatO,EAASF,gBACnF,EAEA4C,EAAOC,OAAS,SAAgBC,GAC9B,OAAIA,IAAUhG,MAIVgG,aAAiB8K,GACZ9Q,KAAKmR,eAAiBnL,EAAMmL,cAAgBnR,KAAKoR,cAAgBpL,EAAMoL,aAAepR,KAAKsR,eAAiBtL,EAAMsL,cAAgBtR,KAAKqR,cAAgBrL,EAAMqL,WAIxK,EAEAvL,EAAOX,SAAW,WAChB,OAAO/B,EAAS+B,SAASnF,KAAKmR,aAAcnR,KAAKoR,YAAapR,KAAKsR,aAActR,KAAKqR,YACxF,EAEAvL,EAAOjF,SAAW,WAChB,IAAIoR,EAAMjS,KAAKwR,WAAaxR,KAAKwR,YAAcxR,KAAKyR,iBAAmB,IAAMzR,KAAKyR,iBAAmB,IAGrG,OAFAQ,GAAO,QACAjS,KAAK2R,mBAAqB3R,KAAK2R,oBAAsB3R,KAAK0R,UAAY,IAAM1R,KAAK0R,UAAY,IAEtG,EAEAZ,EAAW9H,GAAK,WACd,OAAyB,IAArBpI,UAAUyE,OACL,IAAIyL,EAAWlQ,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,IAC5C,IAArBA,UAAUyE,OACZ,IAAIyL,EAAWlQ,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,IAC5C,IAArBA,UAAUyE,OACZ,IAAIyL,EAAWlQ,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,IAEnEyB,GAAO,EAAO,+BAAiCzB,UAAUyE,OAAQ1D,EAE5E,EAEOmP,CACT,CAzGiB,GA2GblH,EAAc,SAAUsI,GAa1B,SAAStI,EAAY1J,EAAMoQ,EAAUC,EAAWC,GAC9C,IAAIhJ,EAOJ,OALAA,EAAQ0K,EAAezK,KAAKzH,OAASA,MAC/B6F,MAAQ3F,EACdsH,EAAM2K,UAAY7B,EAClB9I,EAAM4K,WAAa7B,EACnB/I,EAAM6K,OAAS7B,EACRhJ,CACT,CArBA1F,EAAe8H,EAAasI,GAE5BtI,EAAY0I,OAAS,SAAgBC,GACnC,IAAK,IAAIC,KAAQ5I,EACf,GAAIA,EAAY4I,IACV5I,EAAY4I,aAAiB5I,GAAeA,EAAY4I,GAAMtS,SAAWqS,EAC3E,OAAO3I,EAAY4I,EAI3B,EAaA,IAAI1M,EAAS8D,EAAY9I,UAgEzB,OA9DAgF,EAAO5F,KAAO,WACZ,OAAOF,KAAK6F,KACd,EAEAC,EAAOwK,SAAW,WAChB,OAAOtQ,KAAKmS,SACd,EAEArM,EAAOyK,UAAY,WACjB,OAAOvQ,KAAKoS,UACd,EAEAtM,EAAO0K,MAAQ,WACb,OAAOxQ,KAAKqS,MACd,EAEAvM,EAAO+K,YAAc,WACnB,OAAO7Q,KAAKa,UACd,EAEAiF,EAAO+L,gBAAkB,SAAyBpP,GAChD,OAAOzC,KAAKwQ,QAAQqB,gBAAgBpP,EAAOzC,KAC7C,EAEA8F,EAAOsG,mBAAqB,SAA4B3J,GACtD,OAAOzC,KAAKwQ,QAAQpE,mBAAmB3J,EAAOzC,KAChD,EAEA8F,EAAOc,YAAc,WAEnB,OADgB5G,OAAS4J,EAAY6I,aAAezS,OAAS4J,EAAY8I,8BAAgC1S,OAAS4J,EAAY+I,6BAA+B3S,OAAS4J,EAAYgJ,cAAgB5S,OAAS4J,EAAYiJ,aAAe7S,OAAS4J,EAAYkJ,WAAa9S,OAAS4J,EAAYmJ,uBAAyB/S,OAAS4J,EAAYoJ,sBAAwBhT,OAAS4J,EAAYqJ,eAAiBjT,OAAS4J,EAAYsJ,aAAelT,OAAS4J,EAAYuJ,MAAQnT,OAAS4J,EAAYwJ,GAEje,EAEAtN,EAAOe,YAAc,WAEnB,OADgB7G,OAAS4J,EAAYC,gBAAkB7J,OAAS4J,EAAYyJ,aAAerT,OAAS4J,EAAY0J,iBAAmBtT,OAAS4J,EAAY2J,cAAgBvT,OAAS4J,EAAY4J,iBAAmBxT,OAAS4J,EAAY6J,cAAgBzT,OAAS4J,EAAY8J,kBAAoB1T,OAAS4J,EAAY+J,eAAiB3T,OAAS4J,EAAYgK,gBAAkB5T,OAAS4J,EAAYiK,eAAiB7T,OAAS4J,EAAYkK,cAAgB9T,OAAS4J,EAAYmK,oBAAsB/T,OAAS4J,EAAYoK,aAAehU,OAAS4J,EAAYqK,mBAAqBjU,OAAS4J,EAAYsK,WAEtkB,EAEApO,EAAO2K,eAAiB,SAAwBlK,GAC9C,OAAOA,EAASiK,MAAMxQ,KACxB,EAEA8F,EAAO4K,QAAU,SAAiBnK,GAChC,OAAOA,EAASwD,QAAQ/J,KAC1B,EAEA8F,EAAOjF,SAAW,WAChB,OAAOb,KAAKE,MACd,EAEA4F,EAAOC,OAAS,SAAgBC,GAC9B,OAAOhG,OAASgG,CAClB,EAEAF,EAAO6K,WAAa,SAAoBpK,EAAUqK,GAChD,OAAOrK,EAAS0D,KAAKjK,KAAM4Q,EAC7B,EAEA9K,EAAOgB,cAAgB,SAAuBP,GAC5C,OAAOA,EAASoD,YAAY3J,KAC9B,EAEO4J,CACT,CAzFkB,CAyFhByG,GAuCE8D,EAAkB,WACpB,SAASA,IAAmB,CA8B5B,OA5BAA,EAAgBC,OAAS,WACvB,OAAOD,EAAgBE,OACzB,EAEAF,EAAgBG,WAAa,WAC3B,OAAOH,EAAgBI,MACzB,EAEAJ,EAAgBK,UAAY,WAC1B,OAAOL,EAAgBM,SACzB,EAEAN,EAAgBO,KAAO,WACrB,OAAOP,EAAgBQ,IACzB,EAEAR,EAAgBS,OAAS,WACvB,OAAOT,EAAgBU,MACzB,EAEAV,EAAgBW,UAAY,WAC1B,OAAOX,EAAgBY,UACzB,EAEAZ,EAAgBa,UAAY,WAC1B,OAAOb,EAAgBc,UACzB,EAEOd,CACT,CAhCsB,GAuClBe,EAAmB,WACrB,SAASA,IAAoB,CAE7B,IAAIpP,EAASoP,EAAiBpU,UA0B9B,OAxBAgF,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBG,cAAgBc,IAAWjB,EAAgBK,YACxG,KAGFY,EAAOC,UAAUrV,KAC1B,EAEA8F,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAKwQ,MAAMsB,GAAO1F,mBAAmBpM,KAAK+J,QAAQ+H,GAAQA,EACnE,EAEAhM,EAAO0K,MAAQ,SAAesB,GAC5B,GAAIA,aAAiBlI,EAAa,CAChC,GAAI5J,KAAK2J,YAAYmI,GACnB,OAAOA,EAAMtB,QAGf,MAAM,IAAI/O,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMrB,eAAezQ,KAC9B,EAEOkV,CACT,CA9BuB,GAgCnBI,EAAgB,SAAUC,GAG5B,SAASD,IACP,OAAOC,EAAM5U,MAAMX,KAAMY,YAAcZ,IACzC,CAQA,OAZA8B,EAAewT,EAAeC,GAMjBD,EAAcxU,UAEpBuU,UAAY,SAAmB9O,GACpC1D,EAAmB,YACrB,EAEOyS,CACT,CAdoB,CAclB1P,GACF,SAAS4P,EAAoBtV,EAAMuV,GACjC,IAAIC,EAAwB,SAAUC,GAGpC,SAASD,IACP,OAAOC,EAAehV,MAAMX,KAAMY,YAAcZ,IAClD,CAEA,OANA8B,EAAe4T,EAAuBC,GAM/BD,CACT,CAR4B,CAQ1BJ,GAGF,OADAI,EAAsB5U,UAAUuU,UAAYI,EACrC,IAAIC,EAAsBxV,EACnC,CAEA,IAyJI0V,EAyTAC,EAldAC,EAAY,SAAUC,GAGxB,SAASD,EAAUE,EAAS9V,GAC1B,IAAIsH,EAKJ,OAHAA,EAAQuO,EAAkBtO,KAAKzH,OAASA,MAClCiW,SAAWD,EACjBxO,EAAM3B,MAAQ3F,EACPsH,CACT,CATA1F,EAAegU,EAAWC,GAW1B,IAAIjQ,EAASgQ,EAAUhV,UA2IvB,OAzIAgF,EAAOkQ,QAAU,WACf,OAAOhW,KAAKiW,QACd,EAEAnQ,EAAO5F,KAAO,WACZ,OAAOF,KAAK6F,KACd,EAEAiQ,EAAUI,OAAS,WACjB,OAAON,EAAM9F,OACf,EAEAgG,EAAUK,QAAU,SAAiBjW,GAGnC,IAFA,IAAI8V,EAAU,EAEAA,EAAUJ,EAAMvQ,QACxBuQ,EAAMI,GAAS9V,SAAWA,EADM8V,KAMtC,OAAOF,EAAU9M,GAAGgN,EAAU,EAChC,EAEAF,EAAU9M,GAAK,SAAYoN,GACzB,GAAIA,EAAY,GAAKA,EAAY,EAC/B,MAAM,IAAInV,EAAkB,gCAAkCmV,GAGhE,OAAOR,EAAMQ,EAAY,EAC3B,EAEAN,EAAU1M,KAAO,SAAc7C,GAG7B,GAFAlE,EAAmB,MAAZkE,EAAkB,WAAY1E,GAEjC0E,aAAoBuP,EACtB,OAAOvP,EAGT,IACE,OAAOuP,EAAU9M,GAAGzC,EAASJ,IAAIyD,EAAY6I,aAC/C,CAAE,MAAOrH,GACP,MAAIA,aAAcnK,EACV,IAAIA,EAAkB,qDAAuDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IAAKkL,GAErKA,CAEV,CACF,EAEAtF,EAAOrD,MAAQ,WACb,OAAOzC,KAAKiW,SAAW,CACzB,EAEAnQ,EAAO+K,YAAc,SAAqBwF,EAAOC,GAC/C,MAAM,IAAI3U,EAAyB,sDACrC,EAEAmE,EAAO6D,YAAc,SAAqBmI,GACxC,OAAIA,aAAiBlI,EACZkI,IAAUlI,EAAY6I,YAGf,MAATX,GAAiBA,EAAMhL,cAAc9G,KAC9C,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,GAAIA,IAAUlI,EAAY6I,YACxB,OAAOX,EAAMtB,QACR,GAAIsB,aAAiBlI,EAC1B,MAAM,IAAInI,EAAiC,sBAAwBqQ,GAGrE,OAAOA,EAAMrB,eAAezQ,KAC9B,EAEA8F,EAAOK,IAAM,SAAa2L,GACxB,OAAIA,IAAUlI,EAAY6I,YACjBzS,KAAKyC,QAGPzC,KAAKwQ,MAAMsB,GAAO1F,mBAAmBpM,KAAK+J,QAAQ+H,GAAQA,EACnE,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,GAAIA,IAAUlI,EAAY6I,YACxB,OAAOzS,KAAKyC,QACP,GAAIqP,aAAiBlI,EAC1B,MAAM,IAAInI,EAAiC,sBAAwBqQ,GAGrE,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOqD,KAAO,SAActB,GAC1B,IAAIoB,EAAS7F,EAASY,SAAS6D,EAAM,GACrC,OAAO+N,EAAMxS,EAASY,SAAShE,KAAKiW,UAAYhN,EAAS,GAAI,GAC/D,EAEAnD,EAAO8H,MAAQ,SAAe/F,GAC5B,OAAO7H,KAAKmJ,MAAM,EAAI/F,EAASY,SAAS6D,EAAM,GAChD,EAEA/B,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBK,YACtB/K,EAAWkD,KACTyI,IAAWjB,EAAgBW,aAAeM,IAAWjB,EAAgBa,aAAeI,IAAWjB,EAAgBG,cAAgBc,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBS,SACxO,MAGTvS,EAAiB,MAAV+S,EAAgB,QAASvT,GACzBuT,EAAOC,UAAUrV,MAC1B,EAEA8F,EAAO6K,WAAa,SAAoBpK,GAEtC,OADA/D,EAAe+D,EAAU,YAClBA,EAAS0D,KAAKL,EAAY6I,YAAazS,KAAKyC,QACrD,EAEAqD,EAAOC,OAAS,SAAgBC,GAC9B,OAAOhG,OAASgG,CAClB,EAEAF,EAAOjF,SAAW,WAChB,OAAOb,KAAK6F,KACd,EAEAC,EAAO2J,UAAY,SAAmBzJ,GAGpC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAO8P,EAAW,SAC3B9V,KAAKiW,SAAWjQ,EAAMiQ,QAC/B,EAEAnQ,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEOiV,CACT,CAxJgB,CAwJdZ,GAgBEqB,EAAQ,SAAUR,GAGpB,SAASQ,EAAM9T,EAAOvC,GACpB,IAAIsH,EAKJ,OAHAA,EAAQuO,EAAkBtO,KAAKzH,OAASA,MAClCwW,OAASpT,EAASe,UAAU1B,GAClC+E,EAAM3B,MAAQ3F,EACPsH,CACT,CATA1F,EAAeyU,EAAOR,GAWtB,IAAIjQ,EAASyQ,EAAMzV,UA4RnB,OA1RAgF,EAAOrD,MAAQ,WACb,OAAOzC,KAAKwW,MACd,EAEA1Q,EAAOkQ,QAAU,WACf,OAAOhW,KAAKwW,OAAS,CACvB,EAEA1Q,EAAO5F,KAAO,WACZ,OAAOF,KAAK6F,KACd,EAEAC,EAAO+K,YAAc,SAAqBwF,EAAOC,GAC/C,MAAM,IAAI3U,EAAyB,sDACrC,EAEAmE,EAAO6D,YAAc,SAAqBmI,GACxC,OAAI,OAASA,IAITA,aAAiBlI,EACZkI,IAAUlI,EAAYqJ,cAGf,MAATnB,GAAiBA,EAAMhL,cAAc9G,MAC9C,EAEA8F,EAAOK,IAAM,SAAa2L,GACxB,OAAIA,IAAUlI,EAAYqJ,cACjBjT,KAAKyC,QAGPzC,KAAKwQ,MAAMsB,GAAO1F,mBAAmBpM,KAAK+J,QAAQ+H,GAAQA,EACnE,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,GAAIA,IAAUlI,EAAYqJ,cACxB,OAAOjT,KAAKyC,QACP,GAAIqP,aAAiBlI,EAC1B,MAAM,IAAInI,EAAiC,sBAAwBqQ,GAGrE,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOqD,KAAO,SAAcsN,GAC1B,IAAIxN,EAAS7F,EAASO,OAAO8S,EAAQ,IAAM,GACvCC,EAActT,EAASO,OAAO3D,KAAKyC,QAAUwG,EAAQ,IAEzD,OADAyN,EAA8B,IAAhBA,EAAoB,GAAKA,EAChCH,EAAMvN,GAAG0N,EAClB,EAEA5Q,EAAO8H,MAAQ,SAAe6I,GAC5B,OAAOzW,KAAKmJ,MAAM,EAAI/F,EAASO,OAAO8S,EAAQ,IAChD,EAEA3Q,EAAOT,OAAS,SAAgBsR,GAC9B,OAAQ3W,MACN,KAAKuW,EAAMK,SACT,OAAOD,EAAW,GAAK,GAEzB,KAAKJ,EAAMM,MACX,KAAKN,EAAMO,KACX,KAAKP,EAAMQ,UACX,KAAKR,EAAMS,SACT,OAAO,GAET,QACE,OAAO,GAEb,EAEAlR,EAAOmR,UAAY,WACjB,OAAQjX,MACN,KAAKuW,EAAMK,SACT,OAAO,GAET,KAAKL,EAAMM,MACX,KAAKN,EAAMO,KACX,KAAKP,EAAMQ,UACX,KAAKR,EAAMS,SACT,OAAO,GAET,QACE,OAAO,GAEb,EAEAlR,EAAOoR,UAAY,WACjB,OAAQlX,MACN,KAAKuW,EAAMK,SACT,OAAO,GAET,KAAKL,EAAMM,MACX,KAAKN,EAAMO,KACX,KAAKP,EAAMQ,UACX,KAAKR,EAAMS,SACT,OAAO,GAET,QACE,OAAO,GAEb,EAEAlR,EAAOqR,eAAiB,SAAwBR,GAC9C,IAAIS,EAAOT,EAAW,EAAI,EAE1B,OAAQ3W,MACN,KAAKuW,EAAMc,QACT,OAAO,EAET,KAAKd,EAAMK,SACT,OAAO,GAET,KAAKL,EAAMe,MACT,OAAO,GAAKF,EAEd,KAAKb,EAAMM,MACT,OAAO,GAAKO,EAEd,KAAKb,EAAMgB,IACT,OAAO,IAAMH,EAEf,KAAKb,EAAMO,KACT,OAAO,IAAMM,EAEf,KAAKb,EAAMiB,KACT,OAAO,IAAMJ,EAEf,KAAKb,EAAMkB,OACT,OAAO,IAAML,EAEf,KAAKb,EAAMQ,UACT,OAAO,IAAMK,EAEf,KAAKb,EAAMmB,QACT,OAAO,IAAMN,EAEf,KAAKb,EAAMS,SACT,OAAO,IAAMI,EAEf,KAAKb,EAAMoB,SACX,QACE,OAAO,IAAMP,EAEnB,EAEAtR,EAAO8R,oBAAsB,WAC3B,OAAQ5X,MACN,KAAKuW,EAAMc,QACX,KAAKd,EAAMK,SACX,KAAKL,EAAMe,MACT,OAAOf,EAAMc,QAEf,KAAKd,EAAMM,MACX,KAAKN,EAAMgB,IACX,KAAKhB,EAAMO,KACT,OAAOP,EAAMM,MAEf,KAAKN,EAAMiB,KACX,KAAKjB,EAAMkB,OACX,KAAKlB,EAAMQ,UACT,OAAOR,EAAMiB,KAEf,KAAKjB,EAAMmB,QACX,KAAKnB,EAAMS,SACX,KAAKT,EAAMoB,SACX,QACE,OAAOpB,EAAMmB,QAEnB,EAEA5R,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA/S,EAAiB,MAAV+S,EAAgB,qCAAsCnU,GAEzDmU,IAAWjB,EAAgBG,aACtBuD,GAAcC,SACZ1C,IAAWjB,EAAgBK,YAC7B/K,EAAWoM,OAGbE,EAAkBjV,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EACtD,EAEAtP,EAAOjF,SAAW,WAChB,OAAQb,MACN,KAAKuW,EAAMc,QACT,MAAO,UAET,KAAKd,EAAMK,SACT,MAAO,WAET,KAAKL,EAAMe,MACT,MAAO,QAET,KAAKf,EAAMM,MACT,MAAO,QAET,KAAKN,EAAMgB,IACT,MAAO,MAET,KAAKhB,EAAMO,KACT,MAAO,OAET,KAAKP,EAAMiB,KACT,MAAO,OAET,KAAKjB,EAAMkB,OACT,MAAO,SAET,KAAKlB,EAAMQ,UACT,MAAO,YAET,KAAKR,EAAMmB,QACT,MAAO,UAET,KAAKnB,EAAMS,SACT,MAAO,WAET,KAAKT,EAAMoB,SACT,MAAO,WAET,QACE,MAAO,yBAA2B3X,KAAKyC,QAE7C,EAEAqD,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKL,EAAYqJ,cAAejT,KAAKyC,QACvD,EAEAqD,EAAO2J,UAAY,SAAmBzJ,GAGpC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOuQ,EAAO,SACvBvW,KAAKwW,OAASxQ,EAAMwQ,MAC7B,EAEA1Q,EAAOC,OAAS,SAAgBC,GAC9B,OAAOhG,OAASgG,CAClB,EAEAuQ,EAAMJ,QAAU,SAAiBjW,GAG/B,IAFA,IAAI8V,EAAU,EAEAA,EAAUH,EAAOxQ,QACzBwQ,EAAOG,GAAS9V,SAAWA,EADM8V,KAMvC,OAAOO,EAAMvN,GAAGgN,EAAU,EAC5B,EAEAO,EAAML,OAAS,WACb,OAAOL,EAAO/F,OAChB,EAEAyG,EAAMvN,GAAK,SAAY+O,GAKrB,OAJIA,EAAQ,GAAKA,EAAQ,KACvB1V,GAAO,EAAO,kCAAoC0V,EAAO9W,GAGpD4U,EAAOkC,EAAQ,EACxB,EAEAxB,EAAMnN,KAAO,SAAc7C,GACzB,GAAIA,aAAoBgQ,EACtB,OAAOhQ,EAGT,IACE,OAAOgQ,EAAMvN,GAAGzC,EAASJ,IAAIyD,EAAYqJ,eAC3C,CAAE,MAAO7H,GACP,MAAM,IAAInK,EAAkB,iDAAmDsF,EAAW,aAAeA,GAAoC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IAAKkL,EACvL,CACF,EAEOmL,CACT,CAzSY,CAySVrB,GAkBE8C,EAAU,uFACVC,EAAS,SAAU5Q,GAGrB,SAAS4Q,EAAOC,EAAOzB,EAAQ5O,GAC7B,IAAIL,EAEJA,EAAQH,EAAgBI,KAAKzH,OAASA,KAEtC,IAAImY,EAAS/U,EAASe,UAAU+T,GAE5BE,EAAUhV,EAASe,UAAUsS,GAE7B4B,EAAQjV,EAASe,UAAU0D,GAE/B,OAAe,IAAXsQ,GAA4B,IAAZC,GAA2B,IAAVC,GAC9BJ,EAAO/O,OACV1B,EAAM2Q,OAASA,EACf3Q,EAAM4Q,QAAUA,EAChB5Q,EAAM6Q,MAAQA,EACdJ,EAAO/O,KAAOhH,EAAuBsF,IAGhCyQ,EAAO/O,MAAQhH,EAAuBsF,KAG/CA,EAAM2Q,OAASA,EACf3Q,EAAM4Q,QAAUA,EAChB5Q,EAAM6Q,MAAQA,EACP7Q,EACT,CA5BA1F,EAAemW,EAAQ5Q,GA8BvB4Q,EAAOK,QAAU,SAAiBJ,GAChC,OAAOD,EAAOjX,OAAOkX,EAAO,EAAG,EACjC,EAEAD,EAAOM,SAAW,SAAkB9B,GAClC,OAAOwB,EAAOjX,OAAO,EAAGyV,EAAQ,EAClC,EAEAwB,EAAOO,QAAU,SAAiBC,GAChC,OAAOR,EAAOjX,OAAO,EAAG,EAAGoC,EAASiB,aAAaoU,EAAO,GAC1D,EAEAR,EAAOrQ,OAAS,SAAgBC,GAC9B,OAAOoQ,EAAOjX,OAAO,EAAG,EAAG6G,EAC7B,EAEAoQ,EAAOjP,GAAK,SAAYkP,EAAOzB,EAAQ5O,GACrC,OAAOoQ,EAAOjX,OAAOkX,EAAOzB,EAAQ5O,EACtC,EAEAoQ,EAAO7O,KAAO,SAAcH,GAC1B,GAAIA,aAAkBgP,EACpB,OAAOhP,EAGTzG,EAAeyG,EAAQ,UAMvB,IALA,IAAIiP,EAAQ,EACRzB,EAAS,EACT5O,EAAO,EACPxB,EAAQ4C,EAAO5C,QAEVqS,EAAI,EAAGA,EAAIrS,EAAMhB,OAAQqT,IAAK,CACrC,IAAItS,EAAOC,EAAMqS,GACbC,EAAa1P,EAAO9C,IAAIC,GAE5B,GAAIA,IAASqD,EAAWmP,MACtBV,EAAQ9U,EAASe,UAAUwU,QACtB,GAAIvS,IAASqD,EAAWoM,OAC7BY,EAASrT,EAASe,UAAUwU,OACvB,IAAIvS,IAASqD,EAAWkD,KAG7B,MAAM,IAAI1L,EAAkB,+CAAiDmF,GAF7EyB,EAAOzE,EAASe,UAAUwU,EAG5B,CACF,CAEA,OAAOV,EAAOjX,OAAOkX,EAAOzB,EAAQ5O,EACtC,EAEAoQ,EAAOhR,QAAU,SAAiB4R,EAAWC,GAK3C,OAJAtW,EAAeqW,EAAW,aAC1BrW,EAAesW,EAAS,WACxBnW,EAAgBkW,EAAWE,GAAW,aACtCpW,EAAgBmW,EAASC,GAAW,WAC7BF,EAAUrP,MAAMsP,EACzB,EAEAb,EAAO9N,MAAQ,SAAe9I,GAC5BmB,EAAenB,EAAM,QAErB,IACE,OAAO4W,EAAOe,OAAO3X,EACvB,CAAE,MAAO+J,GACP,MAAIA,aAAc1J,EACV,IAAIN,EAAuB,oCAAqCC,EAAM,EAAG+J,GAEzEA,CAEV,CACF,EAEA6M,EAAOe,OAAS,SAAgB3X,GAC9B,IAAI+I,EAAU4N,EAAQ1N,KAAKjJ,GAE3B,GAAe,MAAX+I,EAAiB,CACnB,IAAIG,EAAS,MAAQH,EAAQ,IAAM,EAAI,EACnC6O,EAAY7O,EAAQ,GACpB8O,EAAa9O,EAAQ,GACrB+O,EAAY/O,EAAQ,GACpBI,EAAWJ,EAAQ,GAEvB,GAAiB,MAAb6O,GAAmC,MAAdC,GAAmC,MAAbC,GAAiC,MAAZ3O,EAAkB,CACpF,IAAI0N,EAAQD,EAAOnN,aAAazJ,EAAM4X,EAAW1O,GAE7CkM,EAASwB,EAAOnN,aAAazJ,EAAM6X,EAAY3O,GAE/CkO,EAAQR,EAAOnN,aAAazJ,EAAM8X,EAAW5O,GAE7C1C,EAAOoQ,EAAOnN,aAAazJ,EAAMmJ,EAAUD,GAG/C,OADA1C,EAAOzE,EAASa,QAAQ4D,EAAMzE,EAASiB,aAAaoU,EAAO,IACpDR,EAAOjX,OAAOkX,EAAOzB,EAAQ5O,EACtC,CACF,CAEA,MAAM,IAAIzG,EAAuB,oCAAqCC,EAAM,EAC9E,EAEA4W,EAAOnN,aAAe,SAAsBzJ,EAAM4Q,EAAK1H,GACrD,GAAW,MAAP0H,EACF,OAAO,EAGT,IAAImH,EAAMhW,EAASkB,SAAS2N,GAC5B,OAAO7O,EAASiB,aAAa+U,EAAK7O,EACpC,EAEA0N,EAAOjX,OAAS,SAAgBkX,EAAOzB,EAAQ5O,GAC7C,OAAO,IAAIoQ,EAAOC,EAAOzB,EAAQ5O,EACnC,EAEA,IAAI/B,EAASmS,EAAOnX,UAmOpB,OAjOAgF,EAAOO,MAAQ,WACb,MAAO,CAACoD,EAAWmP,MAAOnP,EAAWoM,OAAQpM,EAAWkD,KAC1D,EAEA7G,EAAOwO,WAAa,WAClB,OAAOuD,GAAcC,QACvB,EAEAhS,EAAOK,IAAM,SAAaC,GACxB,GAAIA,IAASqD,EAAWmP,MACtB,OAAO5Y,KAAKmY,OAGd,GAAI/R,IAASqD,EAAWoM,OACtB,OAAO7V,KAAKoY,QAGd,GAAIhS,IAASqD,EAAWkD,KACtB,OAAO3M,KAAKqY,MAGd,MAAM,IAAI5W,EAAiC,qBAAuB2E,EACpE,EAEAN,EAAOgG,OAAS,WACd,OAAO9L,OAASiY,EAAO/O,IACzB,EAEApD,EAAOiG,WAAa,WAClB,OAAO/L,KAAKmY,OAAS,GAAKnY,KAAKoY,QAAU,GAAKpY,KAAKqY,MAAQ,CAC7D,EAEAvS,EAAOoS,MAAQ,WACb,OAAOlY,KAAKmY,MACd,EAEArS,EAAO2Q,OAAS,WACd,OAAOzW,KAAKoY,OACd,EAEAtS,EAAO+B,KAAO,WACZ,OAAO7H,KAAKqY,KACd,EAEAvS,EAAOuT,UAAY,SAAmBnB,GACpC,OAAIA,IAAUlY,KAAKmY,OACVnY,KAGFiY,EAAOjX,OAAOkX,EAAOlY,KAAKoY,QAASpY,KAAKqY,MACjD,EAEAvS,EAAOwT,WAAa,SAAoB7C,GACtC,OAAIA,IAAWzW,KAAKoY,QACXpY,KAGFiY,EAAOjX,OAAOhB,KAAKmY,OAAQ1B,EAAQzW,KAAKqY,MACjD,EAEAvS,EAAOyT,SAAW,SAAkB1R,GAClC,OAAIA,IAAS7H,KAAKqY,MACTrY,KAGFiY,EAAOjX,OAAOhB,KAAKmY,OAAQnY,KAAKoY,QAASvQ,EAClD,EAEA/B,EAAOqD,KAAO,SAAcuD,GAC1B,IAAIzD,EAASgP,EAAO7O,KAAKsD,GACzB,OAAOuL,EAAOjX,OAAOoC,EAASa,QAAQjE,KAAKmY,OAAQlP,EAAOkP,QAAS/U,EAASa,QAAQjE,KAAKoY,QAASnP,EAAOmP,SAAUhV,EAASa,QAAQjE,KAAKqY,MAAOpP,EAAOoP,OACzJ,EAEAvS,EAAO0T,UAAY,SAAmBC,GACpC,OAAmB,IAAfA,EACKzZ,KAGFiY,EAAOjX,OAAOoC,EAASe,UAAUf,EAASa,QAAQjE,KAAKmY,OAAQsB,IAAczZ,KAAKoY,QAASpY,KAAKqY,MACzG,EAEAvS,EAAO4T,WAAa,SAAoBC,GACtC,OAAoB,IAAhBA,EACK3Z,KAGFiY,EAAOjX,OAAOhB,KAAKmY,OAAQ/U,EAASe,UAAUf,EAASa,QAAQjE,KAAKoY,QAASuB,IAAe3Z,KAAKqY,MAC1G,EAEAvS,EAAOoH,SAAW,SAAkBC,GAClC,OAAkB,IAAdA,EACKnN,KAGFiY,EAAOjX,OAAOhB,KAAKmY,OAAQnY,KAAKoY,QAAShV,EAASe,UAAUf,EAASa,QAAQjE,KAAKqY,MAAOlL,IAClG,EAEArH,EAAO8H,MAAQ,SAAeK,GAC5B,IAAIhF,EAASgP,EAAO7O,KAAK6E,GACzB,OAAOgK,EAAOjX,OAAOoC,EAASgB,aAAapE,KAAKmY,OAAQlP,EAAOkP,QAAS/U,EAASgB,aAAapE,KAAKoY,QAASnP,EAAOmP,SAAUhV,EAASgB,aAAapE,KAAKqY,MAAOpP,EAAOoP,OACxK,EAEAvS,EAAO8T,WAAa,SAAoBC,GACtC,OAAO7Z,KAAKwZ,WAAW,EAAIK,EAC7B,EAEA/T,EAAOgU,YAAc,SAAqBC,GACxC,OAAO/Z,KAAK0Z,YAAY,EAAIK,EAC9B,EAEAjU,EAAOoI,UAAY,SAAmBC,GACpC,OAAOnO,KAAKkN,UAAU,EAAIiB,EAC5B,EAEArI,EAAOmH,aAAe,SAAsB+M,GAC1C,OAAIha,OAASiY,EAAO/O,MAAmB,IAAX8Q,EACnBha,KAGFiY,EAAOjX,OAAOoC,EAASiB,aAAarE,KAAKmY,OAAQ6B,GAAS5W,EAASiB,aAAarE,KAAKoY,QAAS4B,GAAS5W,EAASiB,aAAarE,KAAKqY,MAAO2B,GAClJ,EAEAlU,EAAO8F,QAAU,WACf,OAAO5L,KAAKiN,cAAc,EAC5B,EAEAnH,EAAOmU,WAAa,WAClB,IAAIC,EAAcla,KAAKma,gBACnBC,EAAahX,EAASC,OAAO6W,EAAa,IAC1CG,EAAcjX,EAASO,OAAOuW,EAAa,IAE/C,OAAIE,IAAepa,KAAKmY,QAAUkC,IAAgBra,KAAKoY,QAC9CpY,KAGFiY,EAAOjX,OAAOoC,EAASe,UAAUiW,GAAaC,EAAara,KAAKqY,MACzE,EAEAvS,EAAOqU,cAAgB,WACrB,OAAqB,GAAdna,KAAKmY,OAAcnY,KAAKoY,OACjC,EAEAtS,EAAOQ,MAAQ,SAAeC,GAiB5B,OAhBA/D,EAAe+D,EAAU,YAEL,IAAhBvG,KAAKmY,OAEL5R,EADmB,IAAjBvG,KAAKoY,QACI7R,EAAS4C,KAAKnJ,KAAKma,gBAAiB1Q,EAAWoM,QAE/CtP,EAAS4C,KAAKnJ,KAAKmY,OAAQ1O,EAAWmP,OAEzB,IAAjB5Y,KAAKoY,UACd7R,EAAWA,EAAS4C,KAAKnJ,KAAKoY,QAAS3O,EAAWoM,SAGjC,IAAf7V,KAAKqY,QACP9R,EAAWA,EAAS4C,KAAKnJ,KAAKqY,MAAO5O,EAAWkD,OAG3CpG,CACT,EAEAT,EAAOU,aAAe,SAAsBD,GAiB1C,OAhBA/D,EAAe+D,EAAU,YAEL,IAAhBvG,KAAKmY,OAEL5R,EADmB,IAAjBvG,KAAKoY,QACI7R,EAASqH,MAAM5N,KAAKma,gBAAiB1Q,EAAWoM,QAEhDtP,EAASqH,MAAM5N,KAAKmY,OAAQ1O,EAAWmP,OAE1B,IAAjB5Y,KAAKoY,UACd7R,EAAWA,EAASqH,MAAM5N,KAAKoY,QAAS3O,EAAWoM,SAGlC,IAAf7V,KAAKqY,QACP9R,EAAWA,EAASqH,MAAM5N,KAAKqY,MAAO5O,EAAWkD,OAG5CpG,CACT,EAEAT,EAAOC,OAAS,SAAgBuU,GAC9B,GAAIta,OAASsa,EACX,OAAO,EAGT,GAAIA,aAAerC,EAAQ,CACzB,IAAIjS,EAAQsU,EACZ,OAAOta,KAAKmY,SAAWnS,EAAMmS,QAAUnY,KAAKoY,UAAYpS,EAAMoS,SAAWpY,KAAKqY,QAAUrS,EAAMqS,KAChG,CAEA,OAAO,CACT,EAEAvS,EAAOX,SAAW,WAChB,OAAO/B,EAAS+B,SAASnF,KAAKmY,OAAQnY,KAAKoY,QAASpY,KAAKqY,MAC3D,EAEAvS,EAAOjF,SAAW,WAChB,GAAIb,OAASiY,EAAO/O,KAClB,MAAO,MAEP,IAAIqR,EAAM,IAcV,OAZoB,IAAhBva,KAAKmY,SACPoC,GAAYva,KAAKmY,OAAS,KAGP,IAAjBnY,KAAKoY,UACPmC,GAAYva,KAAKoY,QAAU,KAGV,IAAfpY,KAAKqY,QACPkC,GAAYva,KAAKqY,MAAQ,KAGpBkC,CAEX,EAEAzU,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEOoX,CACT,CAlXa,CAkXX/R,GAUEsU,EAAgB,WAClB,SAASA,EAAclZ,GACrBtB,KAAKya,OAASnZ,EACdtB,KAAK0a,aAAe,CACtB,CAEA,IAAI5U,EAAS0U,EAAc1Z,UAkB3B,OAhBAgF,EAAO6U,SAAW,WAChB,OAAO3a,KAAKya,MACd,EAEA3U,EAAO8U,SAAW,SAAkBtZ,GAClCtB,KAAKya,OAASnZ,CAChB,EAEAwE,EAAO+U,cAAgB,WACrB,OAAO7a,KAAK0a,WACd,EAEA5U,EAAOgV,cAAgB,SAAuBtZ,GAC5CxB,KAAK0a,YAAclZ,CACrB,EAEOgZ,CACT,CAzBoB,GA+BhBO,EAAU,WACZ,SAASA,IACP/a,KAAKgb,KAAO,CAAC,CACf,CAEA,IAAIlV,EAASiV,EAAQja,UAsDrB,OApDAgF,EAAOmV,OAAS,SAAgBC,GAC9B,IAAK,IAAIC,KAAOD,EAASF,KACvBhb,KAAKgb,KAAKG,GAAOD,EAASF,KAAKG,GAGjC,OAAOnb,IACT,EAEA8F,EAAOsV,YAAc,SAAqBD,GACxC,OAAOnb,KAAKgb,KAAKK,eAAeF,EAAIjb,cAA6Bob,IAAlBtb,KAAKmG,IAAIgV,EAC1D,EAEArV,EAAOK,IAAM,SAAagV,GACxB,OAAOnb,KAAKgb,KAAKG,EAAIjb,OACvB,EAEA4F,EAAOyV,IAAM,SAAaJ,EAAK/B,GAC7B,OAAOpZ,KAAKwb,IAAIL,EAAK/B,EACvB,EAEAtT,EAAO0V,IAAM,SAAaL,EAAK/B,GAE7B,OADApZ,KAAKgb,KAAKG,EAAIjb,QAAUkZ,EACjBpZ,IACT,EAEA8F,EAAO2V,UAAY,SAAmBC,GAGpC,IAFA,IAAIC,EAAM,CAAC,EAEFjD,EAAI,EAAGA,EAAIgD,EAAQrW,OAAQqT,IAAK,CACvC,IAAIyC,EAAMO,EAAQhD,GAAGxY,OACrByb,EAAIR,GAAOnb,KAAKgb,KAAKG,EACvB,CAGA,OADAnb,KAAKgb,KAAOW,EACL3b,IACT,EAEA8F,EAAO8V,OAAS,SAAgBT,GAC9B,IAAIU,EAAUV,EAAIjb,OACdkZ,EAAMpZ,KAAKgb,KAAKa,GAEpB,OADA7b,KAAKgb,KAAKa,QAAWP,EACdlC,CACT,EAEAtT,EAAOgW,OAAS,WACd,OAAO9b,KAAKgb,IACd,EAEAlV,EAAOiW,MAAQ,WACb/b,KAAKgb,KAAO,CAAC,CACf,EAEOD,CACT,CA5Dc,GA8DViB,EAAgB,SAAUzG,GAG5B,SAASyG,IACP,OAAOzG,EAAM5U,MAAMX,KAAMY,YAAcZ,IACzC,CAEA,OANA8B,EAAeka,EAAezG,GAMvByG,CACT,CARoB,CAQlBpW,GACFoW,EAAcC,OAAS,IAAID,EAAc,UACzCA,EAAcE,MAAQ,IAAIF,EAAc,SACxCA,EAAcG,QAAU,IAAIH,EAAc,WAO1C,IAAII,EAAmB,WACrB,SAASA,IAAoB,CAQ7B,OANaA,EAAiBtb,UAEvB6P,WAAa,SAAoBpK,GACtC1D,EAAmB,aACrB,EAEOuZ,CACT,CAVuB,GAYnBC,EAAW,SAAUtG,GAGvB,SAASsG,IACP,OAAOtG,EAAkBpV,MAAMX,KAAMY,YAAcZ,IACrD,CAJA8B,EAAeua,EAAUtG,GAMzB,IAAIjQ,EAASuW,EAASvb,UA0DtB,OAxDAgF,EAAO6D,YAAc,SAAqBvD,GACxCvD,EAAmB,cACrB,EAEAiD,EAAO8H,MAAQ,SAAe0O,EAAIC,GAChC,OAAI3b,UAAUyE,OAAS,EACdrF,KAAKwc,YAAYF,GAEjBtc,KAAK8N,gBAAgBwO,EAAIC,EAEpC,EAEAzW,EAAO0W,YAAc,SAAqBvT,GACxCpG,EAAmB,cACrB,EAEAiD,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAClEvD,EAAmB,kBACrB,EAEAiD,EAAOqD,KAAO,SAAcmT,EAAIC,GAC9B,OAAI3b,UAAUyE,OAAS,EACdrF,KAAKyc,WAAWH,GAEhBtc,KAAKwM,eAAe8P,EAAIC,EAEnC,EAEAzW,EAAO2W,WAAa,SAAoBxT,GACtCpG,EAAmB,aACrB,EAEAiD,EAAO0G,eAAiB,SAAwBE,EAAatG,GAC3DvD,EAAmB,iBACrB,EAEAiD,EAAO0D,MAAQ,SAAekT,EAAatW,GACzCvD,EAAmB,QACrB,EAEAiD,EAAOmE,KAAO,SAAeqS,EAAIC,GAC/B,OAAI3b,UAAUyE,OAAS,EACdrF,KAAK2c,aAAaL,GAElBtc,KAAK4c,eAAeN,EAAIC,EAEnC,EAEAzW,EAAO6W,aAAe,SAAsBE,GAC1Cha,EAAmB,eACrB,EAEAiD,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GACrD/N,EAAmB,iBACrB,EAEOwZ,CACT,CAlEe,CAkEbnH,GAEE4H,EAA2B,SAAUC,GAGvC,SAASD,IACP,OAAOC,EAAUpc,MAAMX,KAAMY,YAAcZ,IAC7C,CAJA8B,EAAegb,EAA0BC,GAMzC,IAAIjX,EAASgX,EAAyBhc,UA2BtC,OAzBAgF,EAAO6W,aAAe,SAAsBE,GAG1C,OAFAra,EAAeqa,EAAU,YACzBla,EAAgBka,EAAUT,EAAkB,YACrCS,EAASlM,WAAW3Q,KAC7B,EAEA8F,EAAO2W,WAAa,SAAoBxT,GAGtC,OAFAzG,EAAeyG,EAAQ,UACvBtG,EAAgBsG,EAAQ/C,EAAgB,UACjC+C,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0W,YAAc,SAAqBvT,GAGxC,OAFAzG,EAAeyG,EAAQ,UACvBtG,EAAgBsG,EAAQ/C,EAAgB,UACjC+C,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAIlE,OAHA5D,EAAeyL,EAAkB,oBACjCzL,EAAe4D,EAAM,QACrBzD,EAAgByD,EAAMK,EAAc,QAC7BwH,IAAqB9K,EAAmBnD,KAAKwM,eAAetJ,EAAkBkD,GAAMoG,eAAe,EAAGpG,GAAQpG,KAAKyc,YAAYxO,EAAkB7H,EAC1J,EAEO0W,CACT,CAnC+B,CAmC7BT,GAEEW,EAAkB,SAAUC,GAG9B,SAASD,IACP,OAAOC,EAAsBtc,MAAMX,KAAMY,YAAcZ,IACzD,CAJA8B,EAAekb,EAAiBC,GAMhC,IAAInX,EAASkX,EAAgBlc,UAoC7B,OAlCAgF,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,GAEhBsT,aAAuBzT,EADzByT,EAAYtW,cAKC,MAAfsW,GAAuBA,EAAYpW,cAAc9G,KAC1D,EAEA8F,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBG,aACtBtU,KAAKsU,aACHc,IAAWjB,EAAgBK,YAC7B/K,EAAWkD,KACTyI,IAAWjB,EAAgBW,YAC7BiE,GAAUoE,WAAWnd,KAAKod,cACxBhI,IAAWjB,EAAgBa,aAAeI,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBS,SACnJ,KAGFqI,EAAsBnc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC1D,EAEAtP,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKL,EAAYkJ,UAAW9S,KAAKod,aACnD,EAEAtX,EAAOuX,OAAS,SAAgBC,GAG9B,OAFA9a,EAAe8a,EAAW,aAC1B3a,EAAgB2a,EAAWC,GAAmB,aACvCD,EAAUD,OAAOrd,KAC1B,EAEOgd,CACT,CA5CsB,CA4CpBF,GAMEU,EAAa,WACf,SAASA,IAAc,CAwBvB,OAtBAA,EAAWC,WAAa,SAAoBpc,EAAMqc,GAChD,OAAiC,IAA1Brc,EAAKsc,QAAQD,EACtB,EAEAF,EAAWrY,SAAW,SAAkB9D,GACtC,IAAIuc,EAAMvc,EAAKgE,OAEf,GAAY,IAARuY,EACF,OAAO,EAKT,IAFA,IAAI7Y,EAAO,EAEF2T,EAAI,EAAGA,EAAIkF,EAAKlF,IAEvB3T,GAAQA,GAAQ,GAAKA,EADX1D,EAAKwc,WAAWnF,GAE1B3T,GAAQ,EAGV,OAAO3B,EAASyB,IAAIE,EACtB,EAEOyY,CACT,CA1BiB,GAiCbM,EAAS,WACX,SAASA,IAAU,CAEnBA,EAAOC,cAAgB,WACrB,MAAM,IAAI9c,EAAkB,0BAC9B,EAEA6c,EAAOE,oBAAsB,WAC3B,MAAM,IAAI/c,EAAkB,0BAC9B,EAEA6c,EAAO9U,GAAK,SAAYoL,GACtB,MAAM,IAAInT,EAAkB,0BAA4BmT,EAC1D,EAEA0J,EAAOG,SAAW,SAAkBC,EAAQtJ,GAC1C,MAAM,IAAI3T,EAAkB,0BAA4Bid,EAAStJ,EACnE,EAEAkJ,EAAO1U,KAAO,SAAc7C,GAC1B,MAAM,IAAItF,EAAkB,0BAA4BsF,EAC1D,EAEA,IAAIT,EAASgY,EAAOhd,UA4CpB,OA1CAgF,EAAOqY,GAAK,WACVtb,EAAmB,YACrB,EAEAiD,EAAOsY,MAAQ,WACbvb,EAAmB,eACrB,EAEAiD,EAAOmU,WAAa,WAClB,IAAImE,EAAQpe,KAAKoe,QAEjB,OAAIA,EAAMC,gBACDD,EAAMxJ,OAAO0J,GAAQC,OAGvBve,IACT,EAEA8F,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiB8X,GACZ9d,KAAKme,OAASnY,EAAMmY,IAI/B,EAEArY,EAAOX,SAAW,WAChB,OAAOqY,EAAWrY,SAASnF,KAAKme,KAClC,EAEArY,EAAOjF,SAAW,WAChB,OAAOb,KAAKme,IACd,EAEArY,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEOid,CACT,CApEa,GAsETU,EAAY,WACd,SAASA,IAAa,CAEtBA,EAAUxV,GAAK,SAAY4L,GAEzB,OADApS,EAAeoS,EAAQ,UAChB,IAAI6J,EAAM7J,EACnB,EAEA,IAAI9O,EAAS0Y,EAAU1d,UA0EvB,OAxEAgF,EAAOuY,cAAgB,WACrBxb,EAAmB,0BACrB,EAEAiD,EAAO8O,OAAS,SAAgB8J,GAC9B,OAAIA,aAAkCJ,GAC7Bte,KAAK2e,gBAAgBD,GAErB1e,KAAK4e,sBAAsBF,EAEtC,EAEA5Y,EAAO6Y,gBAAkB,SAAyBE,GAChDhc,EAAmB,0BACrB,EAEAiD,EAAOgZ,mBAAqB,SAA4BC,GACtDlc,EAAmB,+BACrB,EAEAiD,EAAO8Y,sBAAwB,SAA+BI,GAC5Dnc,EAAmB,gCACrB,EAEAiD,EAAOmZ,aAAe,SAAsBD,GAC1Cnc,EAAmB,yBACrB,EAEAiD,EAAOoZ,WAAa,SAAoBF,GACtCnc,EAAmB,uBACrB,EAEAiD,EAAOqZ,eAAiB,SAAwBN,GAC9Chc,EAAmB,2BACrB,EAEAiD,EAAOsZ,gBAAkB,SAAyBP,GAChDhc,EAAmB,4BACrB,EAEAiD,EAAOuZ,kBAAoB,SAA2BR,GACpDhc,EAAmB,8BACrB,EAEAiD,EAAOwZ,cAAgB,SAAuBN,EAAepK,GAC3D/R,EAAmB,0BACrB,EAEAiD,EAAOyZ,eAAiB,SAAwBV,GAC9Chc,EAAmB,2BACrB,EAEAiD,EAAO0Z,mBAAqB,SAA4BX,GACtDhc,EAAmB,+BACrB,EAEAiD,EAAO2Z,YAAc,WACnB5c,EAAmB,wBACrB,EAEAiD,EAAO4Z,gBAAkB,WACvB7c,EAAmB,4BACrB,EAEAiD,EAAOjF,SAAW,WAChBgC,EAAmB,qBACrB,EAEAiD,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEO2d,CACT,CAnFgB,GAqFZC,EAAQ,SAAUkB,GAGpB,SAASlB,EAAM7J,GACb,IAAIpN,EAIJ,OAFAA,EAAQmY,EAAWlY,KAAKzH,OAASA,MAC3B4f,QAAUhL,EACTpN,CACT,CARA1F,EAAe2c,EAAOkB,GAUtB,IAAIE,EAAUpB,EAAM3d,UA0EpB,OAxEA+e,EAAQxB,cAAgB,WACtB,OAAO,CACT,EAEAwB,EAAQlB,gBAAkB,WACxB,OAAO3e,KAAK4f,OACd,EAEAC,EAAQf,mBAAqB,WAC3B,OAAO9e,KAAK4f,OACd,EAEAC,EAAQjB,sBAAwB,WAC9B,OAAO5e,KAAK4f,OACd,EAEAC,EAAQZ,aAAe,WACrB,MAAO,CAACjf,KAAK4f,QACf,EAEAC,EAAQX,WAAa,WACnB,OAAO,IACT,EAEAW,EAAQV,eAAiB,WACvB,OAAOnf,KAAK4f,OACd,EAEAC,EAAQT,gBAAkB,WACxB,OAAOhY,EAAS8B,IAClB,EAEA2W,EAAQR,kBAAoB,WAC1B,OAAO,CACT,EAEAQ,EAAQP,cAAgB,SAAuBN,EAAepK,GAC5D,OAAO5U,KAAK4f,QAAQ7Z,OAAO6O,EAC7B,EAEAiL,EAAQN,eAAiB,WACvB,OAAO,IACT,EAEAM,EAAQL,mBAAqB,WAC3B,OAAO,IACT,EAEAK,EAAQJ,YAAc,WACpB,MAAO,EACT,EAEAI,EAAQH,gBAAkB,WACxB,MAAO,EACT,EAEAG,EAAQ9Z,OAAS,SAAgBC,GAC/B,OAAIhG,OAASgG,GAITA,aAAiByY,GACZze,KAAK4f,QAAQ7Z,OAAOC,EAAM4Z,QAIrC,EAEAC,EAAQhf,SAAW,WACjB,MAAO,cAAgBb,KAAK4f,QAAQ/e,UACtC,EAEO4d,CACT,CAtFY,CAsFVD,GAEEsB,EAAgB,CAAC,EACjBC,EAAW,CAAC,EACZC,EAAa,SAAUC,GAGzB,SAASD,EAAWE,GAClB,IAAI1Y,EASJ,OAPAA,EAAQyY,EAAQxY,KAAKzH,OAASA,KAE9BggB,EAAWG,sBAAsBD,GAEjC1Y,EAAM4Y,cAAgBhd,EAASe,UAAU+b,GACzC1Y,EAAM6Y,OAAS7B,EAAUxV,GAAG9G,EAAuBsF,IACnDA,EAAM8Y,IAAMN,EAAWO,SAASL,GACzB1Y,CACT,CAbA1F,EAAeke,EAAYC,GAe3B,IAAIna,EAASka,EAAWlf,UA4OxB,OA1OAgF,EAAOoa,aAAe,WACpB,OAAOlgB,KAAKogB,aACd,EAEAta,EAAOqY,GAAK,WACV,OAAOne,KAAKsgB,GACd,EAEAN,EAAWO,SAAW,SAAkBL,GACtC,GAAqB,IAAjBA,EACF,MAAO,IAEP,IAAIM,EAAkB5c,KAAKqL,IAAIiR,GAC3BO,EAAWrd,EAASC,OAAOmd,EAAiBzY,GAAUI,kBACtDuY,EAAatd,EAASO,OAAOP,EAASC,OAAOmd,EAAiBzY,GAAUO,oBAAqBP,GAAU4Y,kBACvGpG,GAAY2F,EAAe,EAAI,IAAM,MAAQO,EAAW,GAAK,IAAM,IAAMA,GAAYC,EAAa,GAAK,KAAO,KAAOA,EACrHE,EAAaxd,EAASO,OAAO6c,EAAiBzY,GAAUO,oBAM5D,OAJmB,IAAfsY,IACFrG,IAAQqG,EAAa,GAAK,KAAO,KAAOA,GAGnCrG,CAEX,EAEAyF,EAAWG,sBAAwB,SAA+BD,GAChE,GAAItc,KAAKqL,IAAIiR,GAAgBF,EAAWa,YACtC,MAAM,IAAI5f,EAAkB,mDAEhC,EAEA+e,EAAWc,UAAY,SAAmB5Y,EAAOG,EAASf,GACxD,GAAIY,GAAS,IAAMA,EAAQ,GACzB,MAAM,IAAIjH,EAAkB,+CAAiDiH,EAAQ,kCAGvF,GAAIA,EAAQ,GACV,GAAIG,EAAU,GAAKf,EAAU,EAC3B,MAAM,IAAIrG,EAAkB,mFAEzB,GAAIiH,EAAQ,GACjB,GAAIG,EAAU,GAAKf,EAAU,EAC3B,MAAM,IAAIrG,EAAkB,mFAEzB,GAAIoH,EAAU,GAAKf,EAAU,GAAKe,EAAU,GAAKf,EAAU,EAChE,MAAM,IAAIrG,EAAkB,2DAG9B,GAAI2C,KAAKqL,IAAI5G,GAAW,GACtB,MAAM,IAAIpH,EAAkB,sDAAwD2C,KAAKqL,IAAI5G,GAAW,gCAG1G,GAAIzE,KAAKqL,IAAI3H,GAAW,GACtB,MAAM,IAAIrG,EAAkB,sDAAwD2C,KAAKqL,IAAI3H,GAAW,gCAG1G,GAAwB,KAApB1D,KAAKqL,IAAI/G,KAAkBtE,KAAKqL,IAAI5G,GAAW,GAAKzE,KAAKqL,IAAI3H,GAAW,GAC1E,MAAM,IAAIrG,EAAkB,mDAEhC,EAEA+e,EAAWhX,GAAK,SAAY+X,GAC1Bve,EAAeue,EAAU,YACzB,IAMI7Y,EAAOG,EAASf,EANhBsN,EAASmL,EAASgB,GAEtB,GAAc,MAAVnM,EACF,OAAOA,EAKT,OAAQmM,EAAS1b,QACf,KAAK,EACH0b,EAAWA,EAAS,GAAK,IAAMA,EAAS,GAE1C,KAAK,EACH7Y,EAAQ8X,EAAWlV,aAAaiW,EAAU,GAAG,GAC7C1Y,EAAU,EACVf,EAAU,EACV,MAEF,KAAK,EACHY,EAAQ8X,EAAWlV,aAAaiW,EAAU,GAAG,GAC7C1Y,EAAU2X,EAAWlV,aAAaiW,EAAU,GAAG,GAC/CzZ,EAAU,EACV,MAEF,KAAK,EACHY,EAAQ8X,EAAWlV,aAAaiW,EAAU,GAAG,GAC7C1Y,EAAU2X,EAAWlV,aAAaiW,EAAU,GAAG,GAC/CzZ,EAAU,EACV,MAEF,KAAK,EACHY,EAAQ8X,EAAWlV,aAAaiW,EAAU,GAAG,GAC7C1Y,EAAU2X,EAAWlV,aAAaiW,EAAU,GAAG,GAC/CzZ,EAAU0Y,EAAWlV,aAAaiW,EAAU,GAAG,GAC/C,MAEF,KAAK,EACH7Y,EAAQ8X,EAAWlV,aAAaiW,EAAU,GAAG,GAC7C1Y,EAAU2X,EAAWlV,aAAaiW,EAAU,GAAG,GAC/CzZ,EAAU0Y,EAAWlV,aAAaiW,EAAU,GAAG,GAC/C,MAEF,QACE,MAAM,IAAI9f,EAAkB,8CAAgD8f,GAGhF,IAAIC,EAAQD,EAAS,GAErB,GAAc,MAAVC,GAA2B,MAAVA,EACnB,MAAM,IAAI/f,EAAkB,kEAAoE8f,GAGlG,MAAc,MAAVC,EACKhB,EAAWiB,uBAAuB/Y,GAAQG,GAAUf,GAEpD0Y,EAAWiB,sBAAsB/Y,EAAOG,EAASf,EAE5D,EAEA0Y,EAAWlV,aAAe,SAAsBiW,EAAUG,EAAKC,GAC7D,GAAIA,GAAyC,MAAtBJ,EAASG,EAAM,GACpC,MAAM,IAAIjgB,EAAkB,6DAA+D8f,GAG7F,IAAIK,EAAML,EAASG,GACfG,EAAMN,EAASG,EAAM,GAEzB,GAAIE,EAAM,KAAOA,EAAM,KAAOC,EAAM,KAAOA,EAAM,IAC/C,MAAM,IAAIpgB,EAAkB,4DAA8D8f,GAG5F,OAAkC,IAA1BK,EAAIvD,WAAW,GAAK,KAAYwD,EAAIxD,WAAW,GAAK,GAC9D,EAEAmC,EAAW/X,QAAU,SAAiBC,GACpC,OAAO8X,EAAWiB,sBAAsB/Y,EAAO,EAAG,EACpD,EAEA8X,EAAWsB,eAAiB,SAAwBpZ,EAAOG,GACzD,OAAO2X,EAAWiB,sBAAsB/Y,EAAOG,EAAS,EAC1D,EAEA2X,EAAWiB,sBAAwB,SAA+B/Y,EAAOG,EAASf,GAChF0Y,EAAWc,UAAU5Y,EAAOG,EAASf,GAErC,IAAI4Y,EAAehY,EAAQH,GAAUI,iBAAmBE,EAAUN,GAAUO,mBAAqBhB,EACjG,OAAO0Y,EAAWuB,eAAerB,EACnC,EAEAF,EAAWwB,eAAiB,SAAwBC,GAClD,IAAIvB,EAAeuB,EAAe1Z,GAAUO,mBAC5C,OAAO0X,EAAWuB,eAAerB,EACnC,EAEAF,EAAWuB,eAAiB,SAAwBrB,GAClD,GAAIA,GAAgB,GAAKnY,GAAUO,qBAAwB,EAAG,CAC5D,IAAIoZ,EAAYxB,EACZhb,EAAS4a,EAAc4B,GAQ3B,OANc,MAAVxc,IACFA,EAAS,IAAI8a,EAAWE,GACxBJ,EAAc4B,GAAaxc,EAC3B6a,EAAS7a,EAAOiZ,MAAQjZ,GAGnBA,CACT,CACE,OAAO,IAAI8a,EAAWE,EAE1B,EAEApa,EAAOsY,MAAQ,WACb,OAAOpe,KAAKqgB,MACd,EAEAva,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAK+J,QAAQ+H,EACtB,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,GAAIA,IAAUlI,EAAY+X,eACxB,OAAO3hB,KAAKogB,cACP,GAAItO,aAAiBlI,EAC1B,MAAM,IAAI3I,EAAkB,sBAAwB6Q,GAGtD,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBS,UAAYQ,IAAWjB,EAAgBO,OAC7D1U,KACEoV,IAAWjB,EAAgBW,aAAeM,IAAWjB,EAAgBa,aAAeI,IAAWjB,EAAgBK,aAAeY,IAAWjB,EAAgBG,cAAgBc,IAAWjB,EAAgBC,SACtM,KAGFgB,EAAOC,UAAUrV,KAC1B,EAEA8F,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKL,EAAY+X,eAAgB3hB,KAAKogB,cACxD,EAEAta,EAAO2J,UAAY,SAAmBzJ,GAEpC,OADAxD,EAAewD,EAAO,SACfA,EAAMoa,cAAgBpgB,KAAKogB,aACpC,EAEAta,EAAOC,OAAS,SAAgBuU,GAC9B,OAAIta,OAASsa,GAITA,aAAe0F,GACVhgB,KAAKogB,gBAAkB9F,EAAI8F,aAItC,EAEAta,EAAOX,SAAW,WAChB,OAAOnF,KAAKogB,aACd,EAEAta,EAAOjF,SAAW,WAChB,OAAOb,KAAKsgB,GACd,EAEON,CACT,CA7PiB,CA6PflC,GAQE8D,GAAkB,SAAU7L,GAW9B,SAAS6L,IACP,IAAIpa,EAUJ,OARAA,EAAQuO,EAAkBtO,KAAKzH,OAASA,MAClC6hB,YAAc,IAAI9G,EACxBvT,EAAMsa,OAAS,KACfta,EAAMkN,KAAO,KACblN,EAAMua,KAAO,KACbva,EAAMwa,KAAO,KACbxa,EAAMya,YAAa,EACnBza,EAAM0a,WAAa,KACZ1a,CACT,CAtBA1F,EAAe8f,EAAiB7L,GAEhC6L,EAAgB5gB,OAAS,SAAgB8Q,EAAOrP,GAC9C,IAAI0f,EAAM,IAAIP,EAId,OAFAO,EAAIC,eAAetQ,EAAOrP,GAEnB0f,CACT,EAgBA,IAAIrc,EAAS8b,EAAgB9gB,UAmZ7B,OAjZAgF,EAAOuc,eAAiB,SAAwBvQ,GAC9C,OAAO9R,KAAK6hB,YAAY1b,IAAI2L,EAC9B,EAEAhM,EAAOsc,eAAiB,SAAwBtQ,EAAOrP,GACrDD,EAAesP,EAAO,SACtB,IAAIwQ,EAAMtiB,KAAKqiB,eAAevQ,GAE9B,GAAW,MAAPwQ,GAAeA,IAAQ7f,EACzB,MAAM,IAAIxB,EAAkB,mBAAqB6Q,EAAQ,IAAMwQ,EAAM,iBAAmBxQ,EAAQ,IAAMrP,EAAQ,KAAOzC,MAGvH,OAAOA,KAAKuiB,gBAAgBzQ,EAAOrP,EACrC,EAEAqD,EAAOyc,gBAAkB,SAAyBzQ,EAAOrP,GAEvD,OADAzC,KAAK6hB,YAAYtG,IAAIzJ,EAAOrP,GACrBzC,IACT,EAEA8F,EAAO0c,QAAU,SAAiBC,EAAeC,GAkB/C,OAjBsB,MAAlBA,GACF1iB,KAAK6hB,YAAYpG,UAAUiH,GAG7B1iB,KAAK2iB,WAAWF,GAEhBziB,KAAK4iB,WAAWH,GAEhBziB,KAAK6iB,wBAAwBJ,GAEN,MAAnBziB,KAAKkiB,aAAmD,IAA7BliB,KAAKkiB,WAAWpW,UAAmC,MAAb9L,KAAK+hB,MAA6B,MAAb/hB,KAAKgiB,OAC7FhiB,KAAK+hB,KAAO/hB,KAAK+hB,KAAK5Y,KAAKnJ,KAAKkiB,YAChCliB,KAAKkiB,WAAajK,EAAO/O,MAG3BlJ,KAAK8iB,kBAEE9iB,IACT,EAEA8F,EAAO6c,WAAa,SAAoBF,GACtCziB,KAAK+iB,WAAWlL,GAAcC,SAASkL,YAAYhjB,KAAK6hB,YAAaY,GACvE,EAEA3c,EAAOid,WAAa,SAAoBhB,GACtC,GAAY,MAARA,EAGF,IAAK,IAAIxP,KAFTvS,KAAKijB,WAAWlB,GAEM/hB,KAAK6hB,YAAY/F,SAAU,CAC/C,IAAIhK,EAAQlI,EAAY0I,OAAOC,GAE/B,GAAIT,QACkCwJ,IAAhCtb,KAAK6hB,YAAY1b,IAAI2L,IACnBA,EAAMlL,cAAe,CACvB,IAAIsc,OAAO,EAEX,IACEA,EAAOnB,EAAKhY,QAAQ+H,EACtB,CAAE,MAAO1G,GACP,GAAIA,aAAcnK,EAChB,SAEA,MAAMmK,CAEV,CAEA,IAAI+X,EAAOnjB,KAAK6hB,YAAY1b,IAAI2L,GAEhC,GAAIoR,IAASC,EACX,MAAM,IAAIliB,EAAkB,yBAA2B6Q,EAAQ,IAAMoR,EAAO,iBAAmBpR,EAAQ,IAAMqR,EAAO,iBAAmBpB,EAE3I,CAGN,CAEJ,EAEAjc,EAAO8c,WAAa,SAAoBH,GACtC,GAAIziB,KAAK6hB,YAAYzG,YAAYxR,EAAYqK,mBAAoB,CAC/D,IAAImP,EAAKpjB,KAAK6hB,YAAYjG,OAAOhS,EAAYqK,mBAEzCwO,IAAkBzG,EAAcG,UAC9BsG,IAAkBzG,EAAcE,OAAgB,IAAPkH,GAC3CxZ,EAAYqK,kBAAkBpC,gBAAgBuR,IAIlDpjB,KAAKoiB,eAAexY,EAAYoK,YAAoB,KAAPoP,EAAY,EAAIA,EAC/D,CAEA,GAAIpjB,KAAK6hB,YAAYzG,YAAYxR,EAAYmK,oBAAqB,CAChE,IAAIsP,EAAMrjB,KAAK6hB,YAAYjG,OAAOhS,EAAYmK,oBAE1C0O,IAAkBzG,EAAcG,UAC9BsG,IAAkBzG,EAAcE,OAAiB,IAARmH,GAC3CzZ,EAAYmK,mBAAmBlC,gBAAgBwR,IAInDrjB,KAAKoiB,eAAexY,EAAYkK,aAAsB,KAARuP,EAAa,EAAIA,EACjE,CAYA,GAVIZ,IAAkBzG,EAAcG,UAC9Bnc,KAAK6hB,YAAYzG,YAAYxR,EAAYsK,cAC3CtK,EAAYsK,YAAYrC,gBAAgB7R,KAAK6hB,YAAY1b,IAAIyD,EAAYsK,cAGvElU,KAAK6hB,YAAYzG,YAAYxR,EAAYkK,eAC3ClK,EAAYkK,aAAajC,gBAAgB7R,KAAK6hB,YAAY1b,IAAIyD,EAAYkK,gBAI1E9T,KAAK6hB,YAAYzG,YAAYxR,EAAYsK,cAAgBlU,KAAK6hB,YAAYzG,YAAYxR,EAAYkK,cAAe,CACnH,IAAIwP,EAAKtjB,KAAK6hB,YAAYjG,OAAOhS,EAAYsK,aACzCqP,EAAMvjB,KAAK6hB,YAAYjG,OAAOhS,EAAYkK,cAE9C9T,KAAKoiB,eAAexY,EAAYoK,YAAkB,GAALsP,EAAUC,EACzD,CAEA,GAAIvjB,KAAK6hB,YAAYzG,YAAYxR,EAAYyJ,aAAc,CACzD,IAAImQ,EAAMxjB,KAAK6hB,YAAYjG,OAAOhS,EAAYyJ,aAE1CoP,IAAkBzG,EAAcG,SAClCvS,EAAYyJ,YAAYxB,gBAAgB2R,GAG1CxjB,KAAKoiB,eAAexY,EAAY+J,cAAevQ,EAASC,OAAOmgB,EAAK,MAEpExjB,KAAKoiB,eAAexY,EAAYC,eAAgBzG,EAASO,OAAO6f,EAAK,KACvE,CAEA,GAAIxjB,KAAK6hB,YAAYzG,YAAYxR,EAAY2J,cAAe,CAC1D,IAAIkQ,EAAMzjB,KAAK6hB,YAAYjG,OAAOhS,EAAY2J,cAE1CkP,IAAkBzG,EAAcG,SAClCvS,EAAY2J,aAAa1B,gBAAgB4R,GAG3CzjB,KAAKoiB,eAAexY,EAAY+J,cAAevQ,EAASC,OAAOogB,EAAK,MAEpEzjB,KAAKoiB,eAAexY,EAAY0J,gBAAiBlQ,EAASO,OAAO8f,EAAK,KACxE,CAEA,GAAIzjB,KAAK6hB,YAAYzG,YAAYxR,EAAY6J,cAAe,CAC1D,IAAIiQ,EAAM1jB,KAAK6hB,YAAYjG,OAAOhS,EAAY6J,cAE1CgP,IAAkBzG,EAAcG,SAClCvS,EAAY6J,aAAa5B,gBAAgB6R,GAG3C1jB,KAAKoiB,eAAexY,EAAY+J,cAAevQ,EAASC,OAAOqgB,EAAK,MAEpE1jB,KAAKoiB,eAAexY,EAAY4J,gBAAiBpQ,EAASO,OAAO+f,EAAK,KACxE,CAEA,GAAI1jB,KAAK6hB,YAAYzG,YAAYxR,EAAY+J,eAAgB,CAC3D,IAAIgQ,EAAM3jB,KAAK6hB,YAAYjG,OAAOhS,EAAY+J,eAE1C8O,IAAkBzG,EAAcG,SAClCvS,EAAY+J,cAAc9B,gBAAgB8R,GAG5C3jB,KAAKoiB,eAAexY,EAAYoK,YAAa5Q,EAASC,OAAOsgB,EAAK,OAElE3jB,KAAKoiB,eAAexY,EAAYgK,eAAgBxQ,EAASO,OAAOP,EAASC,OAAOsgB,EAAK,IAAK,KAE1F3jB,KAAKoiB,eAAexY,EAAY8J,iBAAkBtQ,EAASO,OAAOggB,EAAK,IACzE,CAEA,GAAI3jB,KAAK6hB,YAAYzG,YAAYxR,EAAYiK,eAAgB,CAC3D,IAAI+P,EAAM5jB,KAAK6hB,YAAYjG,OAAOhS,EAAYiK,eAE1C4O,IAAkBzG,EAAcG,SAClCvS,EAAYiK,cAAchC,gBAAgB+R,GAG5C5jB,KAAKoiB,eAAexY,EAAYoK,YAAa5Q,EAASC,OAAOugB,EAAK,KAElE5jB,KAAKoiB,eAAexY,EAAYgK,eAAgBxQ,EAASO,OAAOigB,EAAK,IACvE,CAYA,GAVInB,IAAkBzG,EAAcG,UAC9Bnc,KAAK6hB,YAAYzG,YAAYxR,EAAY4J,kBAC3C5J,EAAY4J,gBAAgB3B,gBAAgB7R,KAAK6hB,YAAY1b,IAAIyD,EAAY4J,kBAG3ExT,KAAK6hB,YAAYzG,YAAYxR,EAAY0J,kBAC3C1J,EAAY0J,gBAAgBzB,gBAAgB7R,KAAK6hB,YAAY1b,IAAIyD,EAAY0J,mBAI7EtT,KAAK6hB,YAAYzG,YAAYxR,EAAY4J,kBAAoBxT,KAAK6hB,YAAYzG,YAAYxR,EAAY0J,iBAAkB,CAC1H,IAAIuQ,EAAM7jB,KAAK6hB,YAAYjG,OAAOhS,EAAY4J,iBAC1CsQ,EAAM9jB,KAAK6hB,YAAY1b,IAAIyD,EAAY0J,iBAE3CtT,KAAKuiB,gBAAgB3Y,EAAY0J,gBAAuB,IAANuQ,EAAazgB,EAASO,OAAOmgB,EAAK,KACtF,CAEA,GAAI9jB,KAAK6hB,YAAYzG,YAAYxR,EAAY0J,kBAAoBtT,KAAK6hB,YAAYzG,YAAYxR,EAAYC,gBAAiB,CACzH,IAAIlB,EAAM3I,KAAK6hB,YAAY1b,IAAIyD,EAAYC,gBAE3C7J,KAAKuiB,gBAAgB3Y,EAAY0J,gBAAiBlQ,EAASC,OAAOsF,EAAK,MAEvE3I,KAAK6hB,YAAYjG,OAAOhS,EAAY0J,gBACtC,CAEA,GAAItT,KAAK6hB,YAAYzG,YAAYxR,EAAY4J,kBAAoBxT,KAAK6hB,YAAYzG,YAAYxR,EAAYC,gBAAiB,CACzH,IAAIka,EAAO/jB,KAAK6hB,YAAY1b,IAAIyD,EAAYC,gBAE5C7J,KAAKuiB,gBAAgB3Y,EAAY4J,gBAAiBpQ,EAASC,OAAO0gB,EAAM,MAExE/jB,KAAK6hB,YAAYjG,OAAOhS,EAAY4J,gBACtC,CAEA,GAAIxT,KAAK6hB,YAAYzG,YAAYxR,EAAY0J,iBAAkB,CAC7D,IAAI0Q,EAAOhkB,KAAK6hB,YAAYjG,OAAOhS,EAAY0J,iBAE/CtT,KAAKuiB,gBAAgB3Y,EAAYC,eAAuB,IAAPma,EACnD,MAAO,GAAIhkB,KAAK6hB,YAAYzG,YAAYxR,EAAY4J,iBAAkB,CACpE,IAAIyQ,EAAOjkB,KAAK6hB,YAAYjG,OAAOhS,EAAY4J,iBAE/CxT,KAAKuiB,gBAAgB3Y,EAAYC,eAAuB,IAAPoa,EACnD,CACF,EAEAne,EAAO+c,wBAA0B,SAAiCJ,GAChE,IAAIyB,EAAMlkB,KAAK6hB,YAAY1b,IAAIyD,EAAYoK,aACvCmQ,EAAMnkB,KAAK6hB,YAAY1b,IAAIyD,EAAYgK,gBACvCwQ,EAAMpkB,KAAK6hB,YAAY1b,IAAIyD,EAAY8J,kBACvC/K,EAAM3I,KAAK6hB,YAAY1b,IAAIyD,EAAYC,gBAE3C,GAAW,MAAPqa,IAIO,MAAPC,GAAuB,MAAPC,GAAsB,MAAPzb,KAIxB,MAAPwb,GAAsB,MAAPC,GAAsB,MAAPzb,GAAlC,CAIA,GAAI8Z,IAAkBzG,EAAcG,SAClC,GAAW,MAAP+H,EAAa,CACXzB,IAAkBzG,EAAcE,OAAiB,KAARgI,GAAsB,MAAPC,GAAuB,IAARA,GAAsB,MAAPC,GAAuB,IAARA,GAAsB,MAAPzb,GAAuB,IAARA,IACrIub,EAAM,EACNlkB,KAAKkiB,WAAajK,EAAOrQ,OAAO,IAGlC,IAAIyc,EAASza,EAAYoK,YAAY5H,mBAAmB8X,GAExD,GAAW,MAAPC,EAAa,CACf,IAAIG,EAAS1a,EAAYgK,eAAexH,mBAAmB+X,GAE3D,GAAW,MAAPC,EAAa,CACf,IAAIG,EAAS3a,EAAY8J,iBAAiBtH,mBAAmBgY,GAE7D,GAAW,MAAPzb,EAAa,CACf,IAAI6b,EAAS5a,EAAYC,eAAeuC,mBAAmBzD,GAE3D3I,KAAKijB,WAAWlb,GAAUiB,GAAGqb,EAAQC,EAAQC,EAAQC,GACvD,MACExkB,KAAKijB,WAAWlb,GAAUiB,GAAGqb,EAAQC,EAAQC,GAEjD,MACa,MAAP5b,GACF3I,KAAKijB,WAAWlb,GAAUiB,GAAGqb,EAAQC,GAG3C,MACa,MAAPF,GAAsB,MAAPzb,GACjB3I,KAAKijB,WAAWlb,GAAUiB,GAAGqb,EAAQ,GAG3C,OAEA,GAAW,MAAPH,EAAa,CACf,IAAIO,EAAUP,EAEd,GAAW,MAAPC,EACF,GAAW,MAAPC,EAAa,CACJ,MAAPzb,IACFA,EAAM,GAGR,IAAI6G,EAAapM,EAASiB,aAAaogB,EAAS,OAChDjV,EAAapM,EAASa,QAAQuL,EAAYpM,EAASiB,aAAa8f,EAAK,OACrE3U,EAAapM,EAASa,QAAQuL,EAAYpM,EAASiB,aAAa+f,EAAK,MACrE5U,EAAapM,EAASa,QAAQuL,EAAY7G,GAC1C,IAAIuZ,EAAa9e,EAASW,SAASyL,EAAY,QAC3CgU,EAAMpgB,EAASY,SAASwL,EAAY,QAExCxP,KAAKijB,WAAWlb,GAAU2c,YAAYlB,IAEtCxjB,KAAKkiB,WAAajK,EAAOrQ,OAAOsa,EAClC,KAAO,CACL,IAAIR,EAAYte,EAASiB,aAAaogB,EAAS,MAC/C/C,EAAYte,EAASa,QAAQyd,EAAWte,EAASiB,aAAa8f,EAAK,KAEnE,IAAIQ,EAAcvhB,EAASW,SAAS2d,EAAW,OAE3CiC,EAAMvgB,EAASY,SAAS0d,EAAW,OAEvC1hB,KAAKijB,WAAWlb,GAAU6c,cAAcjB,IAExC3jB,KAAKkiB,WAAajK,EAAOrQ,OAAO+c,EAClC,KACK,CACL,IAAIE,EAAezhB,EAASe,UAAUf,EAASW,SAAS0gB,EAAS,KAEjEA,EAAUrhB,EAASY,SAASygB,EAAS,IAErCzkB,KAAKijB,WAAWlb,GAAUiB,GAAGyb,EAAS,IAEtCzkB,KAAKkiB,WAAajK,EAAOrQ,OAAOid,EAClC,CACF,CAGF7kB,KAAK6hB,YAAYjG,OAAOhS,EAAYoK,aACpChU,KAAK6hB,YAAYjG,OAAOhS,EAAYgK,gBACpC5T,KAAK6hB,YAAYjG,OAAOhS,EAAY8J,kBACpC1T,KAAK6hB,YAAYjG,OAAOhS,EAAYC,eAlFpC,CAmFF,EAEA/D,EAAOmd,WAAa,SAAoB6B,GAClCA,aAAsB9H,EACxBhd,KAAK+hB,KAAO+C,EACHA,aAAsB/c,KAC/B/H,KAAKgiB,KAAO8C,EAEhB,EAEAhf,EAAOgd,gBAAkB,WACvB,GAAiB,MAAb9iB,KAAK+hB,MAA6B,MAAb/hB,KAAKgiB,KAAc,CAC1C,IAAI+C,EAAa/kB,KAAK6hB,YAAY1b,IAAIyD,EAAY+X,gBAElD,GAAkB,MAAdoD,EAAoB,CACtB,IAAInQ,EAASoL,EAAWuB,eAAewD,GACnClG,EAAU7e,KAAK+hB,KAAKiD,OAAOhlB,KAAKgiB,MAAMiD,OAAOrQ,GAAQ7K,QAAQH,EAAYsb,iBAC7EllB,KAAK6hB,YAAYtG,IAAI3R,EAAYsb,gBAAiBrG,EACpD,MAAO,GAAiB,MAAb7e,KAAK0U,KAAc,CAC5B,IAAIyQ,EAAWnlB,KAAK+hB,KAAKiD,OAAOhlB,KAAKgiB,MAAMiD,OAAOjlB,KAAK0U,MAAM3K,QAAQH,EAAYsb,iBAEjFllB,KAAK6hB,YAAYtG,IAAI3R,EAAYsb,gBAAiBC,EACpD,CACF,CACF,EAEArf,EAAOsf,MAAQ,SAAeC,GAC5B,OAAOA,EAAKhQ,UAAUrV,KACxB,EAEA8F,EAAO6D,YAAc,SAAqBmI,GACxC,OAAa,MAATA,IAIG9R,KAAK6hB,YAAYzG,YAAYtJ,SAA0CwJ,IAAhCtb,KAAK6hB,YAAY1b,IAAI2L,IAAqC,MAAb9R,KAAK+hB,MAAgB/hB,KAAK+hB,KAAKpY,YAAYmI,IAAuB,MAAb9R,KAAKgiB,MAAgBhiB,KAAKgiB,KAAKrY,YAAYmI,GAC7L,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChCtP,EAAesP,EAAO,SACtB,IAAIrP,EAAQzC,KAAKqiB,eAAevQ,GAEhC,GAAa,MAATrP,EAAe,CACjB,GAAiB,MAAbzC,KAAK+hB,MAAgB/hB,KAAK+hB,KAAKpY,YAAYmI,GAC7C,OAAO9R,KAAK+hB,KAAKhY,QAAQ+H,GAG3B,GAAiB,MAAb9R,KAAKgiB,MAAgBhiB,KAAKgiB,KAAKrY,YAAYmI,GAC7C,OAAO9R,KAAKgiB,KAAKjY,QAAQ+H,GAG3B,MAAM,IAAI7Q,EAAkB,oBAAsB6Q,EACpD,CAEA,OAAOrP,CACT,EAEAqD,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBC,SACtBpU,KAAK0U,KACHU,IAAWjB,EAAgBG,aAC7BtU,KAAK8hB,OACH1M,IAAWjB,EAAgBW,YAChB,MAAb9U,KAAK+hB,KAAehJ,GAAU3P,KAAKpJ,KAAK+hB,MAAQ,KAC9C3M,IAAWjB,EAAgBa,YAC7BhV,KAAKgiB,KACH5M,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBS,SAClEQ,EAAOC,UAAUrV,MACfoV,IAAWjB,EAAgBK,YAC7B,KAGFY,EAAOC,UAAUrV,KAC1B,EAEO4hB,CACT,CA7asB,CA6apB1M,GAEEoQ,GAAuB,WACzB,SAASA,IACP,GAAyB,IAArB1kB,UAAUyE,OAAc,CAC1B,GAAIzE,UAAU,aAAc0kB,EAG1B,YAFAtlB,KAAKulB,iBAAiB5kB,MAAMX,KAAMY,WAIlCZ,KAAKwlB,sBAAsB7kB,MAAMX,KAAMY,UAE3C,MACEZ,KAAKylB,kBAAkB9kB,MAAMX,KAAMY,WAGrCZ,KAAK0lB,gBAAiB,EACtB1lB,KAAK2lB,SAAU,EACf3lB,KAAK4lB,QAAU,CAAC,IAAIC,GAAO7lB,MAC7B,CAEA,IAAI8F,EAASwf,EAAqBxkB,UAgJlC,OA9IAgF,EAAO2f,kBAAoB,SAA2BnP,EAAQwP,EAASxR,GACrEtU,KAAK+lB,QAAUzP,EACftW,KAAKgmB,SAAWF,EAChB9lB,KAAKimB,oBAAsB3R,CAC7B,EAEAxO,EAAO0f,sBAAwB,SAA+BlI,GAC5Dtd,KAAK+lB,QAAUzI,EAAUhH,SACzBtW,KAAKgmB,SAAW1I,EAAU4I,eAC1BlmB,KAAKimB,oBAAsB3I,EAAUhJ,YACvC,EAEAxO,EAAOyf,iBAAmB,SAA0Bvf,GAClDhG,KAAK+lB,QAAU/f,EAAM+f,QACrB/lB,KAAKgmB,SAAWhgB,EAAMggB,SACtBhmB,KAAKimB,oBAAsBjgB,EAAMigB,oBACjCjmB,KAAKmmB,cAAgBngB,EAAMmgB,cAC3BnmB,KAAK0lB,eAAiB1f,EAAM0f,eAC5B1lB,KAAK2lB,QAAU3f,EAAM2f,QACrB3lB,KAAK4lB,QAAU,CAAC,IAAIC,GAAO7lB,MAC7B,EAEA8F,EAAOsgB,KAAO,WACZ,OAAO,IAAId,EAAqBtlB,KAClC,EAEA8F,EAAOggB,QAAU,WACf,OAAO9lB,KAAKgmB,QACd,EAEAlgB,EAAOugB,SAAW,WAChB,OAAOrmB,KAAK2lB,OACd,EAEA7f,EAAOwgB,UAAY,SAAmBC,GACpCvmB,KAAK2lB,QAAUY,CACjB,EAEAzgB,EAAOwQ,OAAS,WACd,OAAOtW,KAAK+lB,OACd,EAEAjgB,EAAO0gB,UAAY,SAAmBlQ,GACpCtW,KAAK+lB,QAAUzP,CACjB,EAEAxQ,EAAO2gB,cAAgB,WACrBzmB,KAAK4lB,QAAQc,KAAK1mB,KAAK2mB,gBAAgBP,OACzC,EAEAtgB,EAAO8gB,YAAc,SAAqBC,GACpCA,EACF7mB,KAAK4lB,QAAQkB,OAAO9mB,KAAK4lB,QAAQvgB,OAAS,EAAG,GAE7CrF,KAAK4lB,QAAQkB,OAAO9mB,KAAK4lB,QAAQvgB,OAAS,EAAG,EAEjD,EAEAS,EAAOihB,gBAAkB,WACvB,OAAO/mB,KAAK0lB,cACd,EAEA5f,EAAOkhB,iBAAmB,SAA0BC,GAClDjnB,KAAK0lB,eAAiBuB,CACxB,EAEAnhB,EAAOohB,kBAAoB,SAA2BC,EAAKC,EAASC,EAAKC,EAASjiB,GAChF,GAAI+hB,EAAU/hB,EAAS8hB,EAAI9hB,QAAUiiB,EAAUjiB,EAASgiB,EAAIhiB,OAC1D,OAAO,EAGJrF,KAAK+mB,oBACRI,EAAMA,EAAII,cACVF,EAAMA,EAAIE,eAGZ,IAAK,IAAI7O,EAAI,EAAGA,EAAIrT,EAAQqT,IAI1B,GAHUyO,EAAIC,EAAU1O,KACd2O,EAAIC,EAAU5O,GAGtB,OAAO,EAIX,OAAO,CACT,EAEA5S,EAAO0hB,WAAa,SAAoBpG,EAAKC,GAC3C,OAAIrhB,KAAK+mB,kBACA3F,IAAQC,EAGVrhB,KAAKynB,qBAAqBrG,EAAKC,EACxC,EAEAvb,EAAO2hB,qBAAuB,SAA8BC,EAAIC,GAC9D,OAAOD,IAAOC,GAAMD,EAAGH,gBAAkBI,EAAGJ,aAC9C,EAEAzhB,EAAO8hB,eAAiB,SAAwB9V,EAAOrP,EAAOolB,EAAUC,GACtE,IAAIC,EAA2B/nB,KAAK2mB,gBAAgB9E,YAChDS,EAAMyF,EAAyB5hB,IAAI2L,GAEvC,OADAiW,EAAyBvM,IAAI1J,EAAOrP,GACtB,MAAP6f,GAAeA,IAAQ7f,GAASolB,EAAWC,CACpD,EAEAhiB,EAAOkiB,cAAgB,SAAuBtT,GAC5ClS,EAAekS,EAAM,QACrB1U,KAAK2mB,gBAAgBjS,KAAOA,CAC9B,EAEA5O,EAAOmiB,UAAY,SAAmBnW,GACpC,OAAO9R,KAAK2mB,gBAAgB9E,YAAY1b,IAAI2L,EAC9C,EAEAhM,EAAOoiB,SAAW,WAChB,OAAOloB,KAAK2mB,eACd,EAEA7gB,EAAO6gB,cAAgB,WACrB,OAAO3mB,KAAK4lB,QAAQ5lB,KAAK4lB,QAAQvgB,OAAS,EAC5C,EAEAS,EAAOqiB,oBAAsB,WAC3BnoB,KAAK2mB,gBAAgB1E,YAAa,CACpC,EAEAnc,EAAOsiB,uBAAyB,WAC9B,IAAItG,EAAS9hB,KAAK2mB,gBAAgB7E,OAUlC,OARc,MAAVA,GAGY,OAFdA,EAAS9hB,KAAKimB,uBAGZnE,EAASjK,GAAcC,UAIpBgK,CACT,EAEOwD,CACT,CApK2B,GAsKvBO,GAAS,SAAU9I,GAGrB,SAAS8I,EAAOwC,GACd,IAAI7gB,EAQJ,OANAA,EAAQuV,EAAUtV,KAAKzH,OAASA,MAC1B8hB,OAAS,KACfta,EAAMkN,KAAO,KACblN,EAAMqa,YAAc,IAAI9G,EACxBvT,EAAMya,YAAa,EACnBza,EAAM6gB,qBAAuBA,EACtB7gB,CACT,CAZA1F,EAAe+jB,EAAQ9I,GAcvB,IAAI8C,EAAUgG,EAAO/kB,UAsDrB,OApDA+e,EAAQuG,KAAO,WACb,IAAIkC,EAAS,IAAIzC,EAMjB,OALAyC,EAAOxG,OAAS9hB,KAAK8hB,OACrBwG,EAAO5T,KAAO1U,KAAK0U,KACnB4T,EAAOzG,YAAY5G,OAAOjb,KAAK6hB,aAC/ByG,EAAOrG,WAAajiB,KAAKiiB,WACzBqG,EAAOD,qBAAuBroB,KAAKqoB,qBAC5BC,CACT,EAEAzI,EAAQhf,SAAW,WACjB,OAAOb,KAAK6hB,YAAc,KAAO7hB,KAAK8hB,OAAS,KAAO9hB,KAAK0U,IAC7D,EAEAmL,EAAQlW,YAAc,SAAqBmI,GACzC,OAAO9R,KAAK6hB,YAAYzG,YAAYtJ,EACtC,EAEA+N,EAAQ1Z,IAAM,SAAa2L,GACzB,IAAIsH,EAAMpZ,KAAK6hB,YAAY1b,IAAI2L,GAE/B,OADAzP,EAAc,MAAP+W,GACAA,CACT,EAEAyG,EAAQ1K,MAAQ,SAAeC,GAC7B,OAAIA,IAAWjB,EAAgBG,aACtBtU,KAAK8hB,OAGV1M,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBO,OAC7D1U,KAAK0U,KAGPqI,EAAUjc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC9C,EAEAyK,EAAQ0I,UAAY,WAClB,IAAIC,EAAU,IAAI5G,GAYlB,OAXA4G,EAAQ3G,YAAY5G,OAAOjb,KAAK6hB,aAChC2G,EAAQ1G,OAAS9hB,KAAKqoB,qBAAqBD,yBAE1B,MAAbpoB,KAAK0U,KACP8T,EAAQ9T,KAAO1U,KAAK0U,KAEpB8T,EAAQ9T,KAAO1U,KAAKyoB,aAGtBD,EAAQvG,WAAajiB,KAAKiiB,WAC1BuG,EAAQtG,WAAaliB,KAAKkiB,WACnBsG,CACT,EAEO3C,CACT,CAtEa,CAsEXxJ,GAOEqM,GAAuB,WACzB,SAASA,EAAqBniB,EAAUoiB,EAAmB7C,GAChC,IAArBllB,UAAUyE,QAAgBzE,UAAU,aAAc2c,IACpDvd,KAAK4oB,UAAYF,EAAqBG,OAAOtiB,EAAUoiB,GACvD3oB,KAAK+lB,QAAU4C,EAAkBrS,SACjCtW,KAAKgmB,SAAW2C,EAAkBzC,iBAElClmB,KAAK4oB,UAAYriB,EACjBvG,KAAK+lB,QAAU4C,EACf3oB,KAAKgmB,SAAWF,GAGlB9lB,KAAK8oB,UAAY,CACnB,CAEAJ,EAAqBG,OAAS,SAAgBtiB,EAAU+W,GACtD,OAAO/W,CACT,EAEA,IAAIT,EAAS4iB,EAAqB5nB,UAoDlC,OAlDAgF,EAAOggB,QAAU,WACf,OAAO9lB,KAAKgmB,QACd,EAEAlgB,EAAO2gB,cAAgB,WACrBzmB,KAAK8oB,WACP,EAEAhjB,EAAO8gB,YAAc,WACnB5mB,KAAK8oB,WACP,EAEAhjB,EAAOijB,cAAgB,SAAuB5T,GAC5C,IAAIjQ,EAASlF,KAAK4oB,UAAUzT,MAAMA,GAElC,GAAc,MAAVjQ,GAAqC,IAAnBlF,KAAK8oB,UACzB,MAAM,IAAI7nB,EAAkB,4BAA8BjB,KAAK4oB,WAGjE,OAAO1jB,CACT,EAEAY,EAAOkjB,SAAW,SAAkBlX,GAClC,IACE,OAAO9R,KAAK4oB,UAAU7e,QAAQ+H,EAChC,CAAE,MAAO1G,GACP,GAAIA,aAAcnK,GAAqBjB,KAAK8oB,UAAY,EACtD,OAAO,KAGT,MAAM1d,CACR,CACF,EAEAtF,EAAOS,SAAW,WAChB,OAAOvG,KAAK4oB,SACd,EAEA9iB,EAAOwQ,OAAS,WACd,OAAOtW,KAAK+lB,OACd,EAEAjgB,EAAOmjB,YAAc,SAAqB1iB,GACxCvG,KAAK4oB,UAAYriB,CACnB,EAEAT,EAAO0gB,UAAY,SAAmBlQ,GACpCtW,KAAK+lB,QAAUzP,CACjB,EAEOoS,CACT,CAxE2B,GA0EvBQ,GAAY,CAAC,EACbC,GAAe,CAAC,EAAG,GAAI,IAAK,IAAK,EAAG,GAAI,IAAK,KAE7CC,GAAQ,SAAUlX,GAGpB,SAASkX,IACP,OAAOlX,EAAevR,MAAMX,KAAMY,YAAcZ,IAClD,CAJA8B,EAAesnB,EAAOlX,GAMtB,IAAIpM,EAASsjB,EAAMtoB,UA4FnB,OA1FAgF,EAAOc,YAAc,WACnB,OAAO,CACT,EAEAd,EAAOe,YAAc,WACnB,OAAO,CACT,EAEAf,EAAOujB,OAAS,WACd,OAAO,CACT,EAEAD,EAAME,yBAA2B,SAAkCvH,GACjE,IAAIwH,EAAMH,EAAMI,kBAAkBzH,GAElC,OAAOjR,EAAW9H,GAAG,EAAGogB,EAAMK,oBAAoBF,GACpD,EAEAH,EAAMK,oBAAsB,SAA6BF,GACvD,IAAIxH,EAAOhJ,GAAU/P,GAAGugB,EAAK,EAAG,GAEhC,OAAIxH,EAAK3L,cAAgBN,EAAU4T,UAAY3H,EAAK3L,cAAgBN,EAAU6T,WAAa5H,EAAK6H,aACvF,GAGF,EACT,EAEAR,EAAMS,SAAW,SAAkB9H,GACjC,IAAI+H,EAAO/H,EAAK3L,YAAYJ,UACxB+T,EAAOhI,EAAKiI,YAAc,EAC1BC,EAAUF,GAAQ,EAAID,GAGtBI,EADeD,EAAwB,EADzB7mB,EAASC,OAAO4mB,EAAS,GAET,EAMlC,GAJIC,GAAgB,IAClBA,GAAgB,GAGdH,EAAOG,EACT,OAAOd,EAAME,yBAAyBvH,EAAKoI,cAAc,KAAKvQ,WAAW,IAAIlI,UAG/E,IAAI0Y,EAAOhnB,EAASC,OAAO0mB,EAAOG,EAAc,GAAK,EAQrD,OANa,KAATE,IACwE,MAAnD,IAAlBF,IAAyC,IAAlBA,GAAuBnI,EAAK6H,gBACtDQ,EAAO,GAIJA,CACT,EAEAhB,EAAMI,kBAAoB,SAA2BzH,GACnD,IAAIsI,EAAOtI,EAAKsI,OACZC,EAAMvI,EAAKiI,YAEf,GAAIM,GAAO,EAGLA,EAFMvI,EAAK3L,YAAYJ,WAEV,GACfqU,SAEG,GAAIC,GAAO,IAAK,CACrB,IAAIC,EAAOxI,EAAK3L,YAAYJ,WAE5BsU,EAAMA,EAAM,KAAOvI,EAAK6H,aAAe,EAAI,IAEjCW,GAAQ,GAChBF,GAEJ,CAEA,OAAOA,CACT,EAEAvkB,EAAO+K,YAAc,WACnB,OAAO7Q,KAAKa,UACd,EAEAiF,EAAO0c,QAAU,WACf,OAAO,IACT,EAEA1c,EAAO5F,KAAO,WACZ,OAAOF,KAAKa,UACd,EAEOuoB,CACT,CApGY,CAoGV/Y,GAEEma,GAAuB,SAAUC,GAGnC,SAASD,IACP,OAAOC,EAAO9pB,MAAMX,KAAMY,YAAcZ,IAC1C,CAJA8B,EAAe0oB,EAAsBC,GAMrC,IAAI5K,EAAU2K,EAAqB1pB,UAqGnC,OAnGA+e,EAAQhf,SAAW,WACjB,MAAO,cACT,EAEAgf,EAAQvP,SAAW,WACjB,OAAO7G,EAAWkD,IACpB,EAEAkT,EAAQtP,UAAY,WAClB,OAAOma,EACT,EAEA7K,EAAQrP,MAAQ,WACd,OAAOM,EAAW9H,GAAG,EAAG,GAAI,GAC9B,EAEA6W,EAAQ/Y,cAAgB,SAAuBP,GAC7C,OAAOA,EAASoD,YAAYC,EAAYiJ,cAAgBtM,EAASoD,YAAYC,EAAYqJ,gBAAkB1M,EAASoD,YAAYC,EAAYuJ,OAASnT,KAAKqpB,OAAO9iB,EACnK,EAEAsZ,EAAQpP,eAAiB,SAAwBlK,GAC/C,IAAmC,IAA/BA,EAASoD,YAAY3J,MACvB,MAAM,IAAIyB,EAAiC,mCAG7C,IAAIkpB,EAAMpkB,EAASwD,QAAQ6gB,IAE3B,GAAY,IAARD,EAAW,CACb,IAAIN,EAAO9jB,EAASwD,QAAQH,EAAYuJ,MACxC,OAAO0E,GAAc+R,WAAWS,GAAQvZ,EAAW9H,GAAG,EAAG,IAAM8H,EAAW9H,GAAG,EAAG,GAClF,CAAO,OAAY,IAAR2hB,EACF7Z,EAAW9H,GAAG,EAAG,IACP,IAAR2hB,GAAqB,IAARA,EACf7Z,EAAW9H,GAAG,EAAG,IAGnBhJ,KAAKwQ,OACd,EAEAqP,EAAQnP,QAAU,SAAiBnK,GACjC,IAAmC,IAA/BA,EAASoD,YAAY3J,MACvB,MAAM,IAAIyB,EAAiC,mCAG7C,IAAI6oB,EAAM/jB,EAASJ,IAAIyD,EAAYiJ,aAC/BgY,EAAMtkB,EAASJ,IAAIyD,EAAYqJ,eAC/BoX,EAAO9jB,EAASwD,QAAQH,EAAYuJ,MACxC,OAAOmX,EAAMnB,GAAa/lB,EAASC,OAAOwnB,EAAM,EAAG,IAAMhT,GAAc+R,WAAWS,GAAQ,EAAI,GAChG,EAEAxK,EAAQlP,WAAa,SAAoBpK,EAAUqK,GACjD,IAAIka,EAAW9qB,KAAK0Q,QAAQnK,GAE5B,OADAvG,KAAKwQ,QAAQqB,gBAAgBjB,EAAU5Q,MAChCuG,EAAS0D,KAAKL,EAAYiJ,YAAatM,EAASwD,QAAQH,EAAYiJ,cAAgBjC,EAAWka,GACxG,EAEAjL,EAAQ2C,QAAU,SAAiBX,EAAakJ,EAAiBtI,GAC/D,IAAIuI,EAAWnJ,EAAY1b,IAAIyD,EAAYuJ,MACvC8X,EAAUpJ,EAAY1b,IAAIykB,IAE9B,GAAgB,MAAZI,GAA+B,MAAXC,EACtB,OAAO,KAGT,IAEIlJ,EAFAxe,EAAIqG,EAAYuJ,KAAK/G,mBAAmB4e,GACxCE,EAAMrJ,EAAY1b,IAAIglB,IAG1B,GAAI1I,IAAkBzG,EAAcG,QAAS,CAC3C,IAAIwO,EAAMM,EAGVlJ,GADAA,GADAA,EAAOhJ,GAAU/P,GAAGzF,EAAG,EAAG,IACdmW,WAAWtW,EAASiB,aAAajB,EAASgB,aAAaumB,EAAK,GAAI,KAChEzd,SAAS9J,EAASgB,aAAa8mB,EAAK,GAClD,KAAO,CACL,IAAIE,EAAOR,GAAgBpa,QAAQpE,mBAAmB6e,EAASL,IAE/D,GAAInI,IAAkBzG,EAAcC,OAAQ,CAC1C,IAAIoP,EAAM,GAEG,IAATD,EACFC,EAAMxT,GAAc+R,WAAWrmB,GAAK,GAAK,GACvB,IAAT6nB,IACTC,EAAM,IAGRva,EAAW9H,GAAG,EAAGqiB,GAAKxZ,gBAAgBqZ,EAAKlrB,KAC7C,MACEA,KAAKwQ,QAAQqB,gBAAgBqZ,EAAKlrB,MAGpC+hB,EAAOhJ,GAAU/P,GAAGzF,EAAgB,GAAZ6nB,EAAO,GAAS,EAAG,GAAGle,SAASge,EAAM,EAC/D,CAKA,OAHArJ,EAAYjG,OAAO5b,MACnB6hB,EAAYjG,OAAOhS,EAAYuJ,MAC/B0O,EAAYjG,OAAOgP,IACZ7I,CACT,EAEOyI,CACT,CA7G2B,CA6GzBpB,IAEEkC,GAAwB,SAAUC,GAGpC,SAASD,IACP,OAAOC,EAAQ5qB,MAAMX,KAAMY,YAAcZ,IAC3C,CAJA8B,EAAewpB,EAAuBC,GAMtC,IAAIC,EAAUF,EAAsBxqB,UAyCpC,OAvCA0qB,EAAQ3qB,SAAW,WACjB,MAAO,eACT,EAEA2qB,EAAQlb,SAAW,WACjB,OAAOoa,EACT,EAEAc,EAAQjb,UAAY,WAClB,OAAO9G,EAAWmP,KACpB,EAEA4S,EAAQhb,MAAQ,WACd,OAAOM,EAAW9H,GAAG,EAAG,EAC1B,EAEAwiB,EAAQ1kB,cAAgB,SAAuBP,GAC7C,OAAOA,EAASoD,YAAYC,EAAYqJ,gBAAkBjT,KAAKqpB,OAAO9iB,EACxE,EAEAilB,EAAQ/a,eAAiB,SAAwBlK,GAC/C,OAAOvG,KAAKwQ,OACd,EAEAgb,EAAQ9a,QAAU,SAAiBnK,GACjC,IAAmC,IAA/BA,EAASoD,YAAY3J,MACvB,MAAM,IAAIyB,EAAiC,oCAG7C,IAAIopB,EAAMtkB,EAASwD,QAAQH,EAAYqJ,eACvC,OAAO7P,EAASC,OAAOwnB,EAAM,EAAG,EAClC,EAEAW,EAAQ7a,WAAa,SAAoBpK,EAAUqK,GACjD,IAAIka,EAAW9qB,KAAK0Q,QAAQnK,GAE5B,OADAvG,KAAKwQ,QAAQqB,gBAAgBjB,EAAU5Q,MAChCuG,EAAS0D,KAAKL,EAAYqJ,cAAe1M,EAASwD,QAAQH,EAAYqJ,eAAyC,GAAvBrC,EAAWka,GAC5G,EAEOQ,CACT,CAjD4B,CAiD1BlC,IAEEqC,GAAgC,SAAUC,GAG5C,SAASD,IACP,OAAOC,EAAQ/qB,MAAMX,KAAMY,YAAcZ,IAC3C,CAJA8B,EAAe2pB,EAA+BC,GAM9C,IAAIC,EAAUF,EAA8B3qB,UA8F5C,OA5FA6qB,EAAQ9qB,SAAW,WACjB,MAAO,qBACT,EAEA8qB,EAAQrb,SAAW,WACjB,OAAO7G,EAAWmiB,KACpB,EAEAD,EAAQpb,UAAY,WAClB,OAAOsb,EACT,EAEAF,EAAQnb,MAAQ,WACd,OAAOM,EAAW9H,GAAG,EAAG,GAAI,GAC9B,EAEA2iB,EAAQ7kB,cAAgB,SAAuBP,GAC7C,OAAOA,EAASoD,YAAYC,EAAYkJ,YAAc9S,KAAKqpB,OAAO9iB,EACpE,EAEAolB,EAAQlb,eAAiB,SAAwBlK,GAC/C,IAAmC,IAA/BA,EAASoD,YAAY3J,MACvB,MAAM,IAAIyB,EAAiC,0CAG7C,OAAO2nB,GAAME,yBAAyBvQ,GAAU3P,KAAK7C,GACvD,EAEAolB,EAAQjb,QAAU,SAAiBnK,GACjC,IAAmC,IAA/BA,EAASoD,YAAY3J,MACvB,MAAM,IAAIyB,EAAiC,0CAG7C,OAAO2nB,GAAMS,SAAS9Q,GAAU3P,KAAK7C,GACvC,EAEAolB,EAAQhb,WAAa,SAAoBpK,EAAUqK,GAEjD,OADA5Q,KAAKwQ,QAAQqB,gBAAgBjB,EAAU5Q,MAChCuG,EAAS4C,KAAK/F,EAASgB,aAAawM,EAAU5Q,KAAK0Q,QAAQnK,IAAYkD,EAAWmiB,MAC3F,EAEAD,EAAQnJ,QAAU,SAAiBX,EAAakJ,EAAiBtI,GAC/D,IAAIqJ,EAAUjK,EAAY1b,IAAI4lB,IAC1BC,EAAUnK,EAAY1b,IAAIyD,EAAY6I,aAE1C,GAAe,MAAXqZ,GAA8B,MAAXE,EACrB,OAAO,KAGT,IAEIjK,EAFAwH,EAAMwC,GAAgBvb,QAAQpE,mBAAmB0f,EAASC,IAC1DE,EAAQpK,EAAY1b,IAAI+lB,IAG5B,GAAIzJ,IAAkBzG,EAAcG,QAAS,CAC3C,IAAIgQ,EAAMH,EACNvT,EAAQ,EAER0T,EAAM,GACR1T,EAAQrV,EAASC,OAAO8oB,EAAM,EAAG,GACjCA,EAAM/oB,EAASO,OAAOwoB,EAAM,EAAG,GAAK,GAC3BA,EAAM,IACf1T,EAAQrV,EAASC,OAAO8oB,EAAK,GAAK,EAClCA,EAAM/oB,EAASO,OAAOwoB,EAAK,GAAK,GAGlCpK,EAAOhJ,GAAU/P,GAAGugB,EAAK,EAAG,GAAG6C,UAAUH,EAAQ,GAAGG,UAAU3T,GAAOxO,KAAKL,EAAY6I,YAAa0Z,EACrG,KAAO,CACL,IAAIE,EAAQziB,EAAY6I,YAAYrG,mBAAmB4f,GAEvD,GAAIvJ,IAAkBzG,EAAcC,OAAQ,CAC1C,IAAIqQ,EAAOvT,GAAU/P,GAAGugB,EAAK,EAAG,GAEpBH,GAAME,yBAAyBgD,GAErCza,gBAAgBoa,EAAOjsB,KAC/B,MACEA,KAAKwQ,QAAQqB,gBAAgBoa,EAAOjsB,MAGtC+hB,EAAOhJ,GAAU/P,GAAGugB,EAAK,EAAG,GAAG6C,UAAUH,EAAQ,GAAGhiB,KAAKL,EAAY6I,YAAa4Z,EACpF,CAKA,OAHAxK,EAAYjG,OAAO5b,MACnB6hB,EAAYjG,OAAOmQ,IACnBlK,EAAYjG,OAAOhS,EAAY6I,aACxBsP,CACT,EAEA4J,EAAQ9a,YAAc,WACpB,MAAO,MACT,EAEO4a,CACT,CAtGoC,CAsGlCrC,IAEEmD,GAAwB,SAAUC,GAGpC,SAASD,IACP,OAAOC,EAAQ7rB,MAAMX,KAAMY,YAAcZ,IAC3C,CAJA8B,EAAeyqB,EAAuBC,GAMtC,IAAIC,EAAUF,EAAsBzrB,UAuDpC,OArDA2rB,EAAQ5rB,SAAW,WACjB,MAAO,eACT,EAEA4rB,EAAQnc,SAAW,WACjB,OAAOub,EACT,EAEAY,EAAQlc,UAAY,WAClB,OAAO9G,EAAW0G,OACpB,EAEAsc,EAAQjc,MAAQ,WACd,OAAO5G,EAAYuJ,KAAK3C,OAC1B,EAEAic,EAAQ3lB,cAAgB,SAAuBP,GAC7C,OAAOA,EAASoD,YAAYC,EAAYkJ,YAAc9S,KAAKqpB,OAAO9iB,EACpE,EAEAkmB,EAAQhc,eAAiB,SAAwBlK,GAC/C,OAAOqD,EAAYuJ,KAAK3C,OAC1B,EAEAic,EAAQ/b,QAAU,SAAiBnK,GACjC,IAAmC,IAA/BA,EAASoD,YAAY3J,MACvB,MAAM,IAAIyB,EAAiC,oCAG7C,OAAO2nB,GAAMI,kBAAkBzQ,GAAU3P,KAAK7C,GAChD,EAEAkmB,EAAQ9b,WAAa,SAAoBpK,EAAUqK,GACjD,IAAqC,IAAjC5Q,KAAK8G,cAAcP,GACrB,MAAM,IAAI9E,EAAiC,oCAG7C,IAAIirB,EAAS1sB,KAAKwQ,QAAQpE,mBAAmBwE,EAAUmb,IACnDhK,EAAOhJ,GAAU3P,KAAK7C,GACtB4lB,EAAMpK,EAAK5b,IAAIyD,EAAY6I,aAE3B2X,EAAOhB,GAAMS,SAAS9H,GAEb,KAATqI,GAAqD,KAAtChB,GAAMK,oBAAoBiD,KAC3CtC,EAAO,IAGT,IAAIuC,EAAW5T,GAAU/P,GAAG0jB,EAAQ,EAAG,GACnC7kB,EAAOskB,EAAMQ,EAASxmB,IAAIyD,EAAY6I,aAA4B,GAAZ2X,EAAO,GAEjE,OADAuC,EAAWA,EAASzf,SAASrF,GACtBtB,EAAS0D,KAAK0iB,EACvB,EAEOJ,CACT,CA/D4B,CA+D1BnD,IAEEwD,GAAO,SAAU5c,GAGnB,SAAS4c,EAAK1sB,EAAM+P,GAClB,IAAIzI,EAKJ,OAHAA,EAAQwI,EAAcvI,KAAKzH,OAASA,MAC9B6F,MAAQ3F,EACdsH,EAAM0I,UAAYD,EACXzI,CACT,CATA1F,EAAe8qB,EAAM5c,GAWrB,IAAI6c,EAAUD,EAAK9rB,UAuDnB,OArDA+rB,EAAQnmB,SAAW,WACjB,OAAO1G,KAAKkQ,SACd,EAEA2c,EAAQlmB,oBAAsB,WAC5B,OAAO,CACT,EAEAkmB,EAAQjmB,YAAc,WACpB,OAAO,CACT,EAEAimB,EAAQhmB,YAAc,WACpB,OAAO,CACT,EAEAgmB,EAAQ/lB,cAAgB,SAAuBP,GAC7C,OAAOA,EAASoD,YAAYC,EAAYkJ,UAC1C,EAEA+Z,EAAQvmB,MAAQ,SAAeC,EAAUS,GACvC,OAAQhH,MACN,KAAK6rB,GAED,IAAIiB,EAAQ1pB,EAASa,QAAQsC,EAASJ,IAAI4lB,IAAkB/kB,GAC5D,OAAOT,EAAS0D,KAAK8hB,GAAiBe,GAG1C,KAAKpC,GACH,OAAOnkB,EAAS4C,KAAK/F,EAASC,OAAO2D,EAAa,KAAMyC,EAAWmP,OAAOzP,KAAyC,EAApC/F,EAASO,OAAOqD,EAAa,KAAUyC,EAAWoM,QAEnI,QACE,MAAM,IAAIjU,EAAsB,eAEtC,EAEAirB,EAAQ5lB,QAAU,SAAiBC,EAAWC,GAC5C,OAAQnH,MACN,KAAK6rB,GACH,OAAOzoB,EAASgB,aAAa+C,EAAU4C,QAAQgiB,IAAkB7kB,EAAU6C,QAAQgiB,KAErF,KAAKrB,GACH,OAAOtnB,EAASC,OAAO6D,EAAUsC,MAAMrC,EAAWsC,EAAWoM,QAAS,GAExE,QACE,MAAM,IAAIjU,EAAsB,eAEtC,EAEAirB,EAAQhsB,SAAW,WACjB,OAAOX,IACT,EAEO0sB,CACT,CApEW,CAoETnmB,GAEE0kB,GAAiB,KACjBP,GAAkB,KAClBsB,GAA0B,KAC1BH,GAAkB,KAClBF,GAAmB,KACnBnB,GAAgB,KA6BhBqC,GAAe,WACjB,SAASA,EAAaC,EAAUC,EAAkBC,EAAkBC,GAClEntB,KAAKotB,WAAaJ,EAClBhtB,KAAKqtB,mBAAqBL,EAASnP,WAAW,GAC9C7d,KAAKstB,cAAgBL,EACrBjtB,KAAKutB,cAAgBL,EACrBltB,KAAKwtB,kBAAoBL,CAC3B,CAEA,IAAIrnB,EAASinB,EAAajsB,UAmG1B,OAjGAgF,EAAO2nB,aAAe,WACpB,OAAOztB,KAAKstB,aACd,EAEAxnB,EAAO4nB,iBAAmB,SAA0BD,GAClD,OAAIA,IAAiBztB,KAAKstB,cACjBttB,KAGF,IAAI+sB,EAAa/sB,KAAKotB,WAAYK,EAAcztB,KAAKutB,cAAevtB,KAAKwtB,kBAClF,EAEA1nB,EAAO6nB,aAAe,WACpB,OAAO3tB,KAAKutB,aACd,EAEAznB,EAAO8nB,iBAAmB,SAA0BD,GAClD,OAAIA,IAAiB3tB,KAAKutB,cACjBvtB,KAGF,IAAI+sB,EAAa/sB,KAAKotB,WAAYptB,KAAKstB,cAAeK,EAAc3tB,KAAKwtB,kBAClF,EAEA1nB,EAAO+nB,UAAY,WACjB,OAAO7tB,KAAKotB,UACd,EAEAtnB,EAAOgoB,cAAgB,SAAuBD,GAC5C,OAAIA,IAAc7tB,KAAKotB,WACdptB,KAGF,IAAI+sB,EAAac,EAAW7tB,KAAKstB,cAAettB,KAAKutB,cAAevtB,KAAKwtB,kBAClF,EAEA1nB,EAAOioB,iBAAmB,WACxB,OAAO/tB,KAAKwtB,iBACd,EAEA1nB,EAAOkoB,qBAAuB,SAA8BD,GAC1D,OAAIA,IAAqB/tB,KAAKwtB,kBACrBxtB,KAGF,IAAI+sB,EAAa/sB,KAAKotB,WAAYptB,KAAKstB,cAAettB,KAAKutB,cAAeQ,EACnF,EAEAjoB,EAAOmoB,eAAiB,SAAwBC,GAC9C,IAAI9U,EAAM8U,EAAKrQ,WAAW,GAAK7d,KAAKqtB,mBAEpC,OAAOjU,GAAO,GAAKA,GAAO,EAAIA,GAAO,CACvC,EAEAtT,EAAOqoB,oBAAsB,SAA6BC,GACxD,GAAwB,MAApBpuB,KAAKotB,WACP,OAAOgB,EAMT,IAHA,IAAIC,EAAOruB,KAAKqtB,mBAAqB,IAAIxP,WAAW,GAChDyQ,EAAgB,GAEX5V,EAAI,EAAGA,EAAI0V,EAAY/oB,OAAQqT,IACtC4V,GAAiBC,OAAOC,aAAaJ,EAAYvQ,WAAWnF,GAAK2V,GAGnE,OAAOC,CACT,EAEAxoB,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiB+mB,GACZ/sB,KAAKotB,aAAepnB,EAAMonB,YAAcptB,KAAKstB,gBAAkBtnB,EAAMsnB,eAAiBttB,KAAKutB,gBAAkBvnB,EAAMunB,eAAiBvtB,KAAKwtB,oBAAsBxnB,EAAMwnB,iBAIhL,EAEA1nB,EAAOX,SAAW,WAChB,OAAOnF,KAAKotB,WAAaptB,KAAKstB,cAAgBttB,KAAKutB,cAAgBvtB,KAAKwtB,iBAC1E,EAEA1nB,EAAOjF,SAAW,WAChB,MAAO,gBAAkBb,KAAKotB,WAAaptB,KAAKstB,cAAgBttB,KAAKutB,cAAgBvtB,KAAKwtB,kBAAoB,GAChH,EAEAT,EAAa/jB,GAAK,WAChB,MAAM,IAAIzI,MAAM,oBAClB,EAEAwsB,EAAa0B,iBAAmB,WAC9B,MAAM,IAAIluB,MAAM,oBAClB,EAEOwsB,CACT,CA7GmB,GA8GnBA,GAAa2B,SAAW,IAAI3B,GAAa,IAAK,IAAK,IAAK,KAExD,IAAI4B,GAAY,SAAUpZ,GAGxB,SAASoZ,IACP,OAAOpZ,EAAM5U,MAAMX,KAAMY,YAAcZ,IACzC,CAkBA,OAtBA8B,EAAe6sB,EAAWpZ,GAMboZ,EAAU7tB,UAEhBqJ,MAAQ,SAAeykB,EAAUrI,EAAQsI,GAC9C,OAAQ7uB,MACN,KAAK2uB,EAAUG,OACb,OAAQF,IAAarI,EAEvB,KAAKoI,EAAUI,OACf,KAAKJ,EAAUK,YACb,OAAO,EAET,QACE,OAAQzI,IAAWsI,EAEzB,EAEOF,CACT,CAxBgB,CAwBd/oB,GACF+oB,GAAUG,OAAS,IAAIH,GAAU,UACjCA,GAAUM,MAAQ,IAAIN,GAAU,SAChCA,GAAUI,OAAS,IAAIJ,GAAU,UACjCA,GAAUK,YAAc,IAAIL,GAAU,eACtCA,GAAUO,aAAe,IAAIP,GAAU,gBAEvC,IAAIQ,GAAY,SAAU5Z,GAGxB,SAAS4Z,IACP,OAAO5Z,EAAM5U,MAAMX,KAAMY,YAAcZ,IACzC,CAJA8B,EAAeqtB,EAAW5Z,GAM1B,IAAIzP,EAASqpB,EAAUruB,UA8CvB,OA5CAgF,EAAOspB,aAAe,WACpB,OAAQpvB,MACN,KAAKmvB,EAAUE,gBACf,KAAKF,EAAUG,iBACf,KAAKH,EAAUI,kBACb,OAAO,EAET,QACE,OAAO,EAEb,EAEAzpB,EAAO0pB,aAAe,WACpB,OAAQxvB,MACN,KAAKmvB,EAAUM,KACb,OAAON,EAAUE,gBAEnB,KAAKF,EAAUO,MACb,OAAOP,EAAUG,iBAEnB,KAAKH,EAAUQ,OACb,OAAOR,EAAUI,kBAEnB,QACE,OAAOvvB,KAEb,EAEA8F,EAAO8pB,SAAW,WAChB,OAAQ5vB,MACN,KAAKmvB,EAAUE,gBACb,OAAOF,EAAUM,KAEnB,KAAKN,EAAUG,iBACb,OAAOH,EAAUO,MAEnB,KAAKP,EAAUI,kBACb,OAAOJ,EAAUQ,OAEnB,QACE,OAAO3vB,KAEb,EAEOmvB,CACT,CAtDgB,CAsDdvpB,GACFupB,GAAUM,KAAO,IAAIN,GAAU,QAC/BA,GAAUE,gBAAkB,IAAIF,GAAU,mBAC1CA,GAAUO,MAAQ,IAAIP,GAAU,SAChCA,GAAUG,iBAAmB,IAAIH,GAAU,oBAC3CA,GAAUQ,OAAS,IAAIR,GAAU,UACjCA,GAAUI,kBAAoB,IAAIJ,GAAU,qBAO5C,IAAIU,GAA2B,WAC7B,SAASA,EAAyBC,GAChC,GAAIA,EAAQzqB,OAAS,EACnB,MAAM,IAAI1D,EAAyB,+BAAiCmuB,EAAU,KAGhF9vB,KAAK+vB,SAAWD,CAClB,CAEA,IAAIhqB,EAAS+pB,EAAyB/uB,UA+BtC,OA7BAgF,EAAOkqB,MAAQ,SAAeC,EAAS1V,GAErC,OADAA,EAAI2V,OAAOlwB,KAAK+vB,WACT,CACT,EAEAjqB,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAG3C,GAAIA,IAFS9uB,EAAKgE,OAGhB,OAAQ8qB,EAGV,IAAI/M,EAAK/hB,EAAK6J,OAAOilB,GAErB,OAA8C,IAA1CF,EAAQzI,WAAWxnB,KAAK+vB,SAAU3M,IAC5B+M,EAGHA,EAAWnwB,KAAK+vB,SAAS1qB,MAClC,EAEAS,EAAOjF,SAAW,WAChB,MAAsB,MAAlBb,KAAK+vB,SACA,KAGF,IAAM/vB,KAAK+vB,SAAW,GAC/B,EAEOF,CACT,CAzC+B,GAgD3BO,GAAyB,WAC3B,SAASA,EAAuBC,EAAgBC,GAC9CtwB,KAAKuwB,gBAAkBF,EACvBrwB,KAAK8oB,UAAYwH,CACnB,CAEA,IAAIxqB,EAASsqB,EAAuBtvB,UAmFpC,OAjFAgF,EAAO0qB,aAAe,SAAsBF,GAC1C,OAAIA,IAAatwB,KAAK8oB,UACb9oB,KAGF,IAAIowB,EAAuBpwB,KAAKuwB,gBAAiBD,EAC1D,EAEAxqB,EAAOkqB,MAAQ,SAAeC,EAAS1V,GACrC,IAAIlV,EAASkV,EAAIlV,SAEbrF,KAAK8oB,WACPmH,EAAQxJ,gBAGV,IACE,IAAK,IAAI/N,EAAI,EAAGA,EAAI1Y,KAAKuwB,gBAAgBlrB,OAAQqT,IAG/C,IAA+B,IAFtB1Y,KAAKuwB,gBAAgB7X,GAEvBsX,MAAMC,EAAS1V,GAEpB,OADAA,EAAIkW,UAAUprB,IACP,CAGb,CAAE,QACIrF,KAAK8oB,WACPmH,EAAQrJ,aAEZ,CAEA,OAAO,CACT,EAEA9gB,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,GAAInwB,KAAK8oB,UAAW,CAClBmH,EAAQxJ,gBAGR,IAFA,IAAIvF,EAAMiP,EAEDzX,EAAI,EAAGA,EAAI1Y,KAAKuwB,gBAAgBlrB,OAAQqT,IAI/C,IAFAwI,EADSlhB,KAAKuwB,gBAAgB7X,GACrBvO,MAAM8lB,EAAS5uB,EAAM6f,IAEpB,EAER,OADA+O,EAAQrJ,aAAY,GACbuJ,EAKX,OADAF,EAAQrJ,aAAY,GACb1F,CACT,CACE,IAAK,IAAIzb,EAAK,EAAGA,EAAKzF,KAAKuwB,gBAAgBlrB,WAEzC8qB,EADUnwB,KAAKuwB,gBAAgB9qB,GAChB0E,MAAM8lB,EAAS5uB,EAAM8uB,IAErB,GAJkC1qB,KASnD,OAAO0qB,CAEX,EAEArqB,EAAOjF,SAAW,WAChB,IAAI0Z,EAAM,GAEV,GAA4B,MAAxBva,KAAKuwB,gBAAyB,CAChChW,GAAOva,KAAK8oB,UAAY,IAAM,IAE9B,IAAK,IAAIpQ,EAAI,EAAGA,EAAI1Y,KAAKuwB,gBAAgBlrB,OAAQqT,IAE/C6B,GADSva,KAAKuwB,gBAAgB7X,GACpB7X,WAGZ0Z,GAAOva,KAAK8oB,UAAY,IAAM,GAChC,CAEA,OAAOvO,CACT,EAEO6V,CACT,CA1F6B,GAiGzBM,GAAwB,WAC1B,SAASA,EAAsB5e,EAAO6e,EAAUC,EAAUC,GAGxD,GAFAruB,EAAesP,EAAO,UAEU,IAA5BA,EAAMtB,QAAQe,UAChB,MAAM,IAAI5P,EAAyB,0CAA4CmQ,GAGjF,GAAI6e,EAAW,GAAKA,EAAW,EAC7B,MAAM,IAAIhvB,EAAyB,uDAAyDgvB,GAG9F,GAAIC,EAAW,GAAKA,EAAW,EAC7B,MAAM,IAAIjvB,EAAyB,uDAAyDivB,GAG9F,GAAIA,EAAWD,EACb,MAAM,IAAIhvB,EAAyB,4DAA8DivB,EAAW,MAAQD,GAGtH3wB,KAAK8R,MAAQA,EACb9R,KAAK2wB,SAAWA,EAChB3wB,KAAK4wB,SAAWA,EAChB5wB,KAAK6wB,aAAeA,CACtB,CAEA,IAAI/qB,EAAS4qB,EAAsB5vB,UAoInC,OAlIAgF,EAAOkqB,MAAQ,SAAeC,EAAS1V,GACrC,IAAI9X,EAAQwtB,EAAQjH,SAAShpB,KAAK8R,OAElC,GAAc,OAAVrP,EACF,OAAO,EAGT,IAAIqjB,EAAUmK,EAAQnK,UAEtB,GAAc,IAAVrjB,GACF,GAAIzC,KAAK2wB,SAAW,EAAG,CACjB3wB,KAAK6wB,cACPtW,EAAI2V,OAAOpK,EAAQiI,oBAGrB,IAAK,IAAIrV,EAAI,EAAGA,EAAI1Y,KAAK2wB,SAAUjY,IACjC6B,EAAI2V,OAAOpK,EAAQ+H,YAEvB,MACK,CACL,IAAIiD,EAAW9wB,KAAK+wB,kBAAkBtuB,EAAOqjB,EAAQ+H,aACjDmD,EAAcptB,KAAKqtB,IAAIrtB,KAAKynB,IAAIyF,EAASzrB,OAAQrF,KAAK2wB,UAAW3wB,KAAK4wB,UAG1E,GAAe,GAFfE,EAAWA,EAASI,OAAO,EAAGF,IAEX,EACjB,KAAOF,EAASzrB,OAASrF,KAAK2wB,UAA8C,MAAlCG,EAASA,EAASzrB,OAAS,IACnEyrB,EAAWA,EAASI,OAAO,EAAGJ,EAASzrB,OAAS,GAIpD,IAAI4M,EAAM6e,EACV7e,EAAM6T,EAAQqI,oBAAoBlc,GAE9BjS,KAAK6wB,cACPtW,EAAI2V,OAAOpK,EAAQiI,oBAGrBxT,EAAI2V,OAAOje,EACb,CAEA,OAAO,CACT,EAEAnM,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,IAAIgB,EAAelB,EAAQ5J,WAAarmB,KAAK2wB,SAAW,EACpDS,EAAenB,EAAQ5J,WAAarmB,KAAK4wB,SAAW,EACpDvrB,EAAShE,EAAKgE,OAElB,GAAI8qB,IAAa9qB,EACf,OAAO8rB,EAAe,GAAKhB,EAAWA,EAGxC,GAAInwB,KAAK6wB,aAAc,CACrB,GAAIxvB,EAAK8uB,KAAcF,EAAQnK,UAAUiI,mBACvC,OAAOoD,EAAe,GAAKhB,EAAWA,EAGxCA,GACF,CAEA,IAAIkB,EAAYlB,EAAWgB,EAE3B,GAAIE,EAAYhsB,EACd,OAAQ8qB,EAOV,IAJA,IAAImB,EAAY1tB,KAAKqtB,IAAId,EAAWiB,EAAc/rB,GAC9CksB,EAAQ,EACRrQ,EAAMiP,EAEHjP,EAAMoQ,GAAW,CACtB,IAAIlO,EAAK/hB,EAAK6J,OAAOgW,KACjBsQ,EAAQvB,EAAQnK,UAAUmI,eAAe7K,GAE7C,GAAIoO,EAAQ,EAAG,CACb,GAAItQ,EAAMmQ,EACR,OAAQlB,EAGVjP,IACA,KACF,CAEAqQ,EAAgB,GAARA,EAAaC,CACvB,CAEA,IAAIC,EAAWvQ,EAAMiP,EACjBuB,EAAQ9tB,KAAK+tB,IAAI,GAAIF,GACrBhvB,EAAQzC,KAAK4xB,oBAAoBL,EAAOG,GAC5C,OAAOzB,EAAQrI,eAAe5nB,KAAK8R,MAAOrP,EAAO0tB,EAAUjP,EAC7D,EAEApb,EAAOirB,kBAAoB,SAA2BtuB,EAAOorB,GAC3D,IAAIrd,EAAQxQ,KAAK8R,MAAMtB,QACvBA,EAAMqB,gBAAgBpP,EAAOzC,KAAK8R,OAYlC,IAVA,IAAI+f,EAAOrhB,EAAMgB,UAEba,EAAS7B,EAAMkB,UAAYmgB,EAAO,EAElCrb,EAAS/T,EAAQovB,EAIjBf,EAAW,GAFD1tB,EAASC,OAAgB,IAATmT,EAAqBnE,GAI5Cye,EAASzrB,OAAS,GACvByrB,EAAWjD,EAAYiD,EAGzB,OAAOA,CACT,EAEAhrB,EAAO8rB,oBAAsB,SAA6BL,EAAOG,GAC/D,IAAIlhB,EAAQxQ,KAAK8R,MAAMtB,QAEnBqhB,EAAOrhB,EAAMgB,UAEba,EAAS7B,EAAMkB,UAAYmgB,EAAO,EAItC,OAFazuB,EAASC,OAAOkuB,EAAQlf,EAAQqf,EAG/C,EAEA5rB,EAAOjF,SAAW,WAChB,IAAIixB,EAAU9xB,KAAK6wB,aAAe,gBAAkB,GACpD,MAAO,YAAc7wB,KAAK8R,MAAQ,IAAM9R,KAAK2wB,SAAW,IAAM3wB,KAAK4wB,SAAWkB,EAAU,GAC1F,EAEOpB,CACT,CA/J4B,GAkKxBqB,GAAgB,CAAC,EAAG,GAAI,IAAK,IAAM,IAAO,IAAQ,IAAS,IAAU,IAAW,KAChFC,GAAsB,WACxB,SAASA,EAAoBlgB,EAAO6e,EAAUC,EAAUqB,EAAWC,QACzC,IAApBA,IACFA,EAAkB,GAGpBlyB,KAAKmyB,OAASrgB,EACd9R,KAAKoyB,UAAYzB,EACjB3wB,KAAKqyB,UAAYzB,EACjB5wB,KAAKsyB,WAAaL,EAClBjyB,KAAKuyB,iBAAmBL,CAC1B,CAEA,IAAIpsB,EAASksB,EAAoBlxB,UAgNjC,OA9MAgF,EAAOgM,MAAQ,WACb,OAAO9R,KAAKmyB,MACd,EAEArsB,EAAO6qB,SAAW,WAChB,OAAO3wB,KAAKoyB,SACd,EAEAtsB,EAAO8qB,SAAW,WAChB,OAAO5wB,KAAKqyB,SACd,EAEAvsB,EAAOmsB,UAAY,WACjB,OAAOjyB,KAAKsyB,UACd,EAEAxsB,EAAO0sB,eAAiB,WACtB,OAA+B,IAA3BxyB,KAAKuyB,iBACAvyB,KAGF,IAAIgyB,EAAoBhyB,KAAKmyB,OAAQnyB,KAAKoyB,UAAWpyB,KAAKqyB,UAAWryB,KAAKsyB,YAAa,EAChG,EAEAxsB,EAAO2sB,oBAAsB,SAA6BP,GACxD,OAAO,IAAIF,EAAoBhyB,KAAKmyB,OAAQnyB,KAAKoyB,UAAWpyB,KAAKqyB,UAAWryB,KAAKsyB,WAAYtyB,KAAKuyB,iBAAmBL,EACvH,EAEApsB,EAAO4sB,cAAgB,WACrB,OAAkC,IAA3B1yB,KAAKuyB,kBAA2BvyB,KAAKuyB,iBAAmB,GAAKvyB,KAAKoyB,YAAcpyB,KAAKqyB,WAAaryB,KAAKsyB,aAAe3D,GAAUO,YACzI,EAEAppB,EAAOkqB,MAAQ,SAAeC,EAAS1V,GACrC,IAAIoY,EAAe1C,EAAQjH,SAAShpB,KAAKmyB,QAEzC,GAAoB,MAAhBQ,EACF,OAAO,EAGT,IAAIlwB,EAAQzC,KAAK4yB,UAAU3C,EAAS0C,GAEhC7M,EAAUmK,EAAQnK,UAClB7T,EAAM,GAAKrO,KAAKqL,IAAIxM,GAExB,GAAIwP,EAAI5M,OAASrF,KAAKqyB,UACpB,MAAM,IAAIpxB,EAAkB,SAAWjB,KAAKmyB,OAAS,mCAAqC1vB,EAAQ,uCAAyCzC,KAAKqyB,WAKlJ,GAFApgB,EAAM6T,EAAQqI,oBAAoBlc,GAE9BxP,GAAS,EACX,OAAQzC,KAAKsyB,YACX,KAAK3D,GAAUK,YACThvB,KAAKoyB,UAtEH,IAsE4B3vB,GAASsvB,GAAc/xB,KAAKoyB,YAC5D7X,EAAI2V,OAAOpK,EAAQ2H,gBAGrB,MAEF,KAAKkB,GAAUI,OACbxU,EAAI2V,OAAOpK,EAAQ2H,qBAIvB,OAAQztB,KAAKsyB,YACX,KAAK3D,GAAUG,OACf,KAAKH,GAAUK,YACf,KAAKL,GAAUI,OACbxU,EAAI2V,OAAOpK,EAAQ6H,gBACnB,MAEF,KAAKgB,GAAUO,aACb,MAAM,IAAIjuB,EAAkB,SAAWjB,KAAKmyB,OAAS,mCAAqC1vB,EAAQ,kDAIxG,IAAK,IAAIiW,EAAI,EAAGA,EAAI1Y,KAAKoyB,UAAYngB,EAAI5M,OAAQqT,IAC/C6B,EAAI2V,OAAOpK,EAAQ+H,aAIrB,OADAtT,EAAI2V,OAAOje,IACJ,CACT,EAEAnM,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,IAAI9qB,EAAShE,EAAKgE,OAElB,GAAI8qB,IAAa9qB,EACf,OAAQ8qB,EAGV9tB,EAAO8tB,GAAY,GAAKA,EAAW9qB,GACnC,IAAIwtB,EAAOxxB,EAAK6J,OAAOilB,GACnB2C,GAAW,EACXlE,GAAW,EAEf,GAAIiE,IAAS5C,EAAQnK,UAAU2H,eAAgB,CAC7C,IAA2F,IAAvFztB,KAAKsyB,WAAWnoB,OAAM,EAAM8lB,EAAQ5J,WAAYrmB,KAAKoyB,YAAcpyB,KAAKqyB,WAC1E,OAAQlC,EAGVvB,GAAW,EACXuB,GACF,MAAO,GAAI0C,IAAS5C,EAAQnK,UAAU6H,eAAgB,CACpD,IAA4F,IAAxF3tB,KAAKsyB,WAAWnoB,OAAM,EAAO8lB,EAAQ5J,WAAYrmB,KAAKoyB,YAAcpyB,KAAKqyB,WAC3E,OAAQlC,EAGV2C,GAAW,EACX3C,GACF,MACE,GAAInwB,KAAKsyB,aAAe3D,GAAUI,QAAUkB,EAAQ5J,WAClD,OAAQ8J,EAIZ,IAAI4C,EAAc9C,EAAQ5J,YAAcrmB,KAAK0yB,gBAAkB1yB,KAAKoyB,UAAY,EAC5Ef,EAAYlB,EAAW4C,EAE3B,GAAI1B,EAAYhsB,EACd,OAAQ8qB,EAOV,IAJA,IAAI6C,GAAe/C,EAAQ5J,YAAcrmB,KAAK0yB,gBAAkB1yB,KAAKqyB,UAAY,GAAKzuB,KAAKynB,IAAIrrB,KAAKuyB,iBAAkB,GAClHhB,EAAQ,EACRrQ,EAAMiP,EAED8C,EAAO,EAAGA,EAAO,EAAGA,IAAQ,CAGnC,IAFA,IAAI3B,EAAY1tB,KAAKqtB,IAAI/P,EAAM8R,EAAa3tB,GAErC6b,EAAMoQ,GAAW,CACtB,IAAIlO,EAAK/hB,EAAK6J,OAAOgW,KACjBsQ,EAAQvB,EAAQnK,UAAUmI,eAAe7K,GAE7C,GAAIoO,EAAQ,EAAG,CAGb,KAFAtQ,EAEUmQ,EACR,OAAQlB,EAGV,KACF,CAEA,GAAIjP,EAAMiP,EAjKF,GAkKN,MAAM,IAAIzuB,EAAoB,8BAE9B6vB,EAAgB,GAARA,EAAaC,CAEzB,CAEA,KAAIxxB,KAAKuyB,iBAAmB,GAAc,IAATU,GAM/B,MALA,IAAIC,EAAWhS,EAAMiP,EACrB6C,EAAcpvB,KAAKynB,IAAI0H,EAAaG,EAAWlzB,KAAKuyB,kBACpDrR,EAAMiP,EACNoB,EAAQ,CAIZ,CAEA,GAAIuB,EAAU,CACZ,GAAc,IAAVvB,GAAetB,EAAQ5J,WACzB,QAAS8J,EAAW,GAGR,IAAVoB,IACFA,GAASA,EAEb,MAAO,GAAIvxB,KAAKsyB,aAAe3D,GAAUK,aAAeiB,EAAQ5J,WAAY,CAC1E,IAAI8M,EAAYjS,EAAMiP,EAEtB,GAAIvB,GACF,GAAIuE,GAAanzB,KAAKoyB,UACpB,QAASjC,EAAW,QAGtB,GAAIgD,EAAYnzB,KAAKoyB,UACnB,OAAQjC,CAGd,CAEA,OAAOnwB,KAAKozB,UAAUnD,EAASsB,EAAOpB,EAAUjP,EAClD,EAEApb,EAAO8sB,UAAY,SAAmB3C,EAASxtB,GAC7C,OAAOA,CACT,EAEAqD,EAAOstB,UAAY,SAAmBnD,EAASxtB,EAAOolB,EAAUC,GAC9D,OAAOmI,EAAQrI,eAAe5nB,KAAKmyB,OAAQ1vB,EAAOolB,EAAUC,EAC9D,EAEAhiB,EAAOjF,SAAW,WAChB,OAAuB,IAAnBb,KAAKoyB,WApNG,KAoNgBpyB,KAAKqyB,WAA2BryB,KAAKsyB,aAAe3D,GAAUG,OACjF,SAAW9uB,KAAKmyB,OAAS,IAG9BnyB,KAAKoyB,YAAcpyB,KAAKqyB,WAAaryB,KAAKsyB,aAAe3D,GAAUO,aAC9D,SAAWlvB,KAAKmyB,OAAS,IAAMnyB,KAAKoyB,UAAY,IAGlD,SAAWpyB,KAAKmyB,OAAS,IAAMnyB,KAAKoyB,UAAY,IAAMpyB,KAAKqyB,UAAY,IAAMryB,KAAKsyB,WAAa,GACxG,EAEON,CACT,CA9N0B,GA+NtBqB,GAAuB,SAAUC,GAGnC,SAASD,EAAqBvhB,EAAOyhB,EAAO3C,EAAU4C,EAAWC,GAC/D,IAAIjsB,EAIJ,GAFAA,EAAQ8rB,EAAqB7rB,KAAKzH,KAAM8R,EAAOyhB,EAAO3C,EAAUjC,GAAUO,eAAiBlvB,KAEvFuzB,EAAQ,GAAKA,EAAQ,GACvB,MAAM,IAAI5xB,EAAyB,oDAAsD4xB,GAG3F,GAAI3C,EAAW,GAAKA,EAAW,GAC7B,MAAM,IAAIjvB,EAAyB,uDAAyDivB,GAG9F,GAAIA,EAAW2C,EACb,MAAM,IAAI5xB,EAAyB,+CAGrC,GAAiB,OAAb8xB,EAAmB,CACrB,IAA8C,IAA1C3hB,EAAMtB,QAAQoB,aAAa4hB,GAC7B,MAAM,IAAI7xB,EAAyB,wDAGrC,GAAI6xB,EAAYzB,GAAcwB,GAASnwB,EAASF,iBAC9C,MAAM,IAAIjC,EAAkB,2EAEhC,CAIA,OAFAuG,EAAMksB,WAAaF,EACnBhsB,EAAMmsB,UAAYF,EACXjsB,CACT,CAhCA1F,EAAeuxB,EAAsBC,GAkCrC,IAAIzT,EAAUwT,EAAqBvyB,UAwEnC,OAtEA+e,EAAQ+S,UAAY,SAAmB3C,EAASxtB,GAC9C,IAAImxB,EAAWhwB,KAAKqL,IAAIxM,GACpB+wB,EAAYxzB,KAAK0zB,WAQrB,OANuB,OAAnB1zB,KAAK2zB,YACP1D,EAAQ1pB,WAERitB,EADa3b,GAAcC,SACRiK,KAAK/hB,KAAK2zB,WAAWxtB,IAAInG,KAAKmyB,SAG/C1vB,GAAS+wB,GAAa/wB,EAAQ+wB,EAAYzB,GAAc/xB,KAAKoyB,WACxDwB,EAAW7B,GAAc/xB,KAAKoyB,WAGhCwB,EAAW7B,GAAc/xB,KAAKqyB,UACvC,EAEAxS,EAAQuT,UAAY,SAAmBnD,EAASxtB,EAAOolB,EAAUC,GAC/D,IAAI0L,EAAYxzB,KAAK0zB,WASrB,GAPsB,MAAlB1zB,KAAK2zB,YAEPH,EADavD,EAAQ7H,yBACFrG,KAAK/hB,KAAK2zB,WAAWxtB,IAAInG,KAAKmyB,SAGpCrK,EAAaD,IAEX7nB,KAAKoyB,WAAa3vB,GAAS,EAAG,CAC7C,IAAI+N,EAAQuhB,GAAc/xB,KAAKoyB,WAE3ByB,EAAWL,EADAA,EAAYhjB,GAIzB/N,EADE+wB,EAAY,EACNK,EAAWpxB,EAEXoxB,EAAWpxB,GAGT+wB,IACV/wB,GAAS+N,EAEb,CAEA,OAAOyf,EAAQrI,eAAe5nB,KAAKmyB,OAAQ1vB,EAAOolB,EAAUC,EAC9D,EAEAjI,EAAQ2S,eAAiB,WACvB,OAA+B,IAA3BxyB,KAAKuyB,iBACAvyB,KAGF,IAAIqzB,EAAqBrzB,KAAKmyB,OAAQnyB,KAAKoyB,UAAWpyB,KAAKqyB,UAAWryB,KAAK0zB,WAAY1zB,KAAK2zB,WAAY,EACjH,EAEA9T,EAAQ4S,oBAAsB,SAA6BP,GACzD,OAAO,IAAImB,EAAqBrzB,KAAKmyB,OAAQnyB,KAAKoyB,UAAWpyB,KAAKqyB,UAAWryB,KAAK0zB,WAAY1zB,KAAK2zB,UAAW3zB,KAAKuyB,iBAAmBL,EACxI,EAEArS,EAAQiU,aAAe,SAAsB7D,GAC3C,OAA2B,IAAvBA,EAAQ5J,YAILiN,EAAqBxyB,UAAUgzB,aAAarsB,KAAKzH,KAAMiwB,EAChE,EAEApQ,EAAQhf,SAAW,WACjB,MAAO,gBAAkBb,KAAKmyB,OAAS,IAAMnyB,KAAKoyB,UAAY,IAAMpyB,KAAKqyB,UAAY,KAAyB,MAAlBryB,KAAK2zB,UAAoB3zB,KAAK2zB,UAAY3zB,KAAK0zB,YAAc,GAC3J,EAEOL,CACT,CA5G2B,CA4GzBrB,IAOE+B,GAAW,CAAC,MAAO,QAAS,SAAU,QAAS,SAAU,UAAW,YAAa,UAAW,aAC5FC,GAAwB,WAC1B,SAASA,EAAsBC,EAAcvW,GAC3Clb,EAAeyxB,EAAc,gBAC7BzxB,EAAekb,EAAS,WACxB1d,KAAKi0B,aAAeA,EACpBj0B,KAAKqlB,KAAOrlB,KAAKk0B,cAAcxW,EACjC,CAEA,IAAI5X,EAASkuB,EAAsBlzB,UAkInC,OAhIAgF,EAAOouB,cAAgB,SAAuBxW,GAC5C,IAAK,IAAIhF,EAAI,EAAGA,EAAIqb,GAAS1uB,OAAQqT,IACnC,GAAIqb,GAASrb,KAAOgF,EAClB,OAAOhF,EAIX,MAAM,IAAI/W,EAAyB,gCAAkC+b,EACvE,EAEA5X,EAAOkqB,MAAQ,SAAeC,EAAS1V,GACrC,IAAIwK,EAAakL,EAAQjH,SAASpf,EAAY+X,gBAE9C,GAAkB,MAAdoD,EACF,OAAO,EAGT,IAAIrD,EAAYte,EAASe,UAAU4gB,GAEnC,GAAkB,IAAdrD,EACFnH,EAAI2V,OAAOlwB,KAAKi0B,kBACX,CACL,IAAIxT,EAAW7c,KAAKqL,IAAI7L,EAASO,OAAOP,EAASC,OAAOqe,EAAW,MAAO,MACtEhB,EAAa9c,KAAKqL,IAAI7L,EAASO,OAAOP,EAASC,OAAOqe,EAAW,IAAK,KACtEd,EAAahd,KAAKqL,IAAI7L,EAASO,OAAO+d,EAAW,KACjDyS,EAAS5Z,EAAIlV,SACb+uB,EAAS3T,EACblG,EAAI2V,OAAOxO,EAAY,EAAI,IAAM,KAAK2S,WAAWjxB,EAASC,OAAOod,EAAU,IAAM,KAAK4T,WAAWjxB,EAASO,OAAO8c,EAAU,IAAM,MAE7HzgB,KAAKqlB,MAAQ,GAAKrlB,KAAKqlB,MAAQ,GAAK3E,EAAa,KACnDnG,EAAI2V,OAAOlwB,KAAKqlB,KAAO,GAAM,EAAI,IAAM,IAAIgP,WAAWjxB,EAASC,OAAOqd,EAAY,IAAM,KAAK2T,WAAW3T,EAAa,GAAK,KAC1H0T,GAAU1T,GAEN1gB,KAAKqlB,MAAQ,GAAKrlB,KAAKqlB,MAAQ,GAAKzE,EAAa,KACnDrG,EAAI2V,OAAOlwB,KAAKqlB,KAAO,GAAM,EAAI,IAAM,IAAIgP,WAAWjxB,EAASC,OAAOud,EAAY,IAAM,KAAKyT,WAAWzT,EAAa,GAAK,KAC1HwT,GAAUxT,IAIC,IAAXwT,IACF7Z,EAAIkW,UAAU0D,GACd5Z,EAAI2V,OAAOlwB,KAAKi0B,cAEpB,CAEA,OAAO,CACT,EAEAnuB,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,IAAI9qB,EAAShE,EAAKgE,OACdivB,EAAct0B,KAAKi0B,aAAa5uB,OAEpC,GAAoB,IAAhBivB,GACF,GAAInE,IAAa9qB,EACf,OAAO4qB,EAAQrI,eAAehe,EAAY+X,eAAgB,EAAGwO,EAAUA,OAEpE,CACL,GAAIA,IAAa9qB,EACf,OAAQ8qB,EAGV,GAAIF,EAAQ/I,kBAAkB7lB,EAAM8uB,EAAUnwB,KAAKi0B,aAAc,EAAGK,GAClE,OAAOrE,EAAQrI,eAAehe,EAAY+X,eAAgB,EAAGwO,EAAUA,EAAWmE,EAEtF,CAEA,IAAIzB,EAAOxxB,EAAK8uB,GAEhB,GAAa,MAAT0C,GAAyB,MAATA,EAAc,CAChC,IAAIC,EAAoB,MAATD,GAAgB,EAAI,EAC/B0B,EAAQ,CAAC,EAAG,EAAG,EAAG,GAGtB,GAFAA,EAAM,GAAKpE,EAAW,GAE6H,KAA9InwB,KAAK8K,aAAaypB,EAAO,EAAGlzB,GAAM,IAASrB,KAAK8K,aAAaypB,EAAO,EAAGlzB,EAAMrB,KAAKqlB,MAAQ,IAAMrlB,KAAK8K,aAAaypB,EAAO,EAAGlzB,GAAM,IAAmB,CACxJ,IAAI0jB,EAAa3hB,EAASM,SAASovB,GAAuB,KAAXyB,EAAM,GAAuB,GAAXA,EAAM,GAAUA,EAAM,KACvF,OAAOtE,EAAQrI,eAAehe,EAAY+X,eAAgBoD,EAAYoL,EAAUoE,EAAM,GACxF,CACF,CAEA,OAAoB,IAAhBD,EACKrE,EAAQrI,eAAehe,EAAY+X,eAAgB,EAAGwO,EAAUA,EAAWmE,IAG5EnE,CACV,EAEArqB,EAAOgF,aAAe,SAAsBypB,EAAOC,EAAYC,EAAWC,GACxE,IAAK10B,KAAKqlB,KAAO,GAAK,EAAImP,EACxB,OAAO,EAGT,IAAItT,EAAMqT,EAAM,GAEhB,GAAIv0B,KAAKqlB,KAAO,GAAM,GAAKmP,EAAa,EAAG,CACzC,GAAItT,EAAM,EAAIuT,EAAUpvB,QAA6B,MAAnBovB,EAAUvT,GAC1C,OAAOwT,EAGTxT,GACF,CAEA,GAAIA,EAAM,EAAIuT,EAAUpvB,OACtB,OAAOqvB,EAGT,IAAItT,EAAMqT,EAAUvT,KAChBG,EAAMoT,EAAUvT,KAEpB,GAAIE,EAAM,KAAOA,EAAM,KAAOC,EAAM,KAAOA,EAAM,IAC/C,OAAOqT,EAGT,IAAIjyB,EAAmC,IAA1B2e,EAAIvD,WAAW,GAAK,KAAYwD,EAAIxD,WAAW,GAAK,IAEjE,OAAIpb,EAAQ,GAAKA,EAAQ,GAChBiyB,GAGTH,EAAMC,GAAc/xB,EACpB8xB,EAAM,GAAKrT,GACJ,EACT,EAEApb,EAAOjF,SAAW,WAChB,IAAI8zB,EAAY30B,KAAKi0B,aAAaW,QAAQ,IAAM,MAChD,MAAO,UAAYb,GAAS/zB,KAAKqlB,MAAQ,KAAQsP,EAAY,IAC/D,EAEOX,CACT,CA3I4B,GA4I5BA,GAAsBa,YAAc,IAAIb,GAAsB,IAAK,aACnEA,GAAsBD,SAAWA,GAOjC,IAAIe,GAA4B,WAC9B,SAASA,EAA0BC,EAAeC,EAAUC,GAC1Dj1B,KAAKk1B,eAAiBH,EACtB/0B,KAAKm1B,UAAYH,EACjBh1B,KAAKo1B,SAAWH,CAClB,CAEA,IAAInvB,EAASgvB,EAA0Bh0B,UA+DvC,OA7DAgF,EAAOkqB,MAAQ,SAAeC,EAAS1V,GACrC,IAAI8a,EAAS9a,EAAIlV,SAEjB,IAAgD,IAA5CrF,KAAKk1B,eAAelF,MAAMC,EAAS1V,GACrC,OAAO,EAGT,IAAIqD,EAAMrD,EAAIlV,SAAWgwB,EAEzB,GAAIzX,EAAM5d,KAAKm1B,UACb,MAAM,IAAIl0B,EAAkB,6BAA+B2c,EAAM,oCAAsC5d,KAAKm1B,WAG9G,IAAK,IAAIzc,EAAI,EAAGA,EAAI1Y,KAAKm1B,UAAYvX,EAAKlF,IACxC6B,EAAI+a,OAAOD,EAAQr1B,KAAKo1B,UAG1B,OAAO,CACT,EAEAtvB,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,IAAI5J,EAAS0J,EAAQ5J,WACjBY,EAAgBgJ,EAAQlJ,kBAI5B,GAHA1kB,IAAS8tB,EAAW9uB,EAAKgE,SACzBhD,EAAO8tB,GAAY,GAEfA,IAAa9uB,EAAKgE,OACpB,OAAQ8qB,EAGV,IAAIoF,EAASpF,EAAWnwB,KAAKm1B,UAE7B,GAAII,EAASl0B,EAAKgE,OAAQ,CACxB,GAAIkhB,EACF,OAAQ4J,EAGVoF,EAASl0B,EAAKgE,MAChB,CAIA,IAFA,IAAI6b,EAAMiP,EAEHjP,EAAMqU,IAAWtO,EAAgB5lB,EAAK6f,KAASlhB,KAAKo1B,SAAWnF,EAAQzI,WAAWnmB,EAAK6f,GAAMlhB,KAAKo1B,YACvGlU,IAGF7f,EAAOA,EAAKmK,UAAU,EAAG+pB,GAEzB,IAAIC,EAAYx1B,KAAKk1B,eAAe/qB,MAAM8lB,EAAS5uB,EAAM6f,GAEzD,OAAIsU,IAAcD,GAAUhP,IACjB4J,EAAWjP,GAGfsU,CACT,EAEA1vB,EAAOjF,SAAW,WAChB,MAAO,OAASb,KAAKk1B,eAAiB,IAAMl1B,KAAKm1B,WAA+B,MAAlBn1B,KAAKo1B,SAAmB,IAAM,KAAQp1B,KAAKo1B,SAAW,KACtH,EAEON,CACT,CAvEgC,GAyE5BW,GAAiB,SAAUlgB,GAG7B,SAASkgB,IACP,OAAOlgB,EAAM5U,MAAMX,KAAMY,YAAcZ,IACzC,CAJA8B,EAAe2zB,EAAgBlgB,GAM/B,IAAIzP,EAAS2vB,EAAe30B,UA4C5B,OA1CAgF,EAAOkqB,MAAQ,WACb,OAAO,CACT,EAEAlqB,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,OAAQnwB,MACN,KAAKy1B,EAAeC,UAClBzF,EAAQjJ,kBAAiB,GACzB,MAEF,KAAKyO,EAAeE,YAClB1F,EAAQjJ,kBAAiB,GACzB,MAEF,KAAKyO,EAAexZ,OAClBgU,EAAQ3J,WAAU,GAClB,MAEF,KAAKmP,EAAetZ,QAClB8T,EAAQ3J,WAAU,GAItB,OAAO6J,CACT,EAEArqB,EAAOjF,SAAW,WAChB,OAAQb,MACN,KAAKy1B,EAAeC,UAClB,MAAO,2BAET,KAAKD,EAAeE,YAClB,MAAO,4BAET,KAAKF,EAAexZ,OAClB,MAAO,oBAET,KAAKwZ,EAAetZ,QAClB,MAAO,qBAEb,EAEOsZ,CACT,CApDqB,CAoDnB7vB,GACF6vB,GAAeC,UAAY,IAAID,GAAe,aAC9CA,GAAeE,YAAc,IAAIF,GAAe,eAChDA,GAAexZ,OAAS,IAAIwZ,GAAe,UAC3CA,GAAetZ,QAAU,IAAIsZ,GAAe,WAO5C,IAwpDIG,GAsbAC,GAqYAC,GAn9EAC,GAA6B,WAC/B,SAASA,EAA2BjG,GAClC9vB,KAAK+vB,SAAWD,CAClB,CAEA,IAAIhqB,EAASiwB,EAA2Bj1B,UAwBxC,OAtBAgF,EAAOkqB,MAAQ,SAAeC,EAAS1V,GAErC,OADAA,EAAI2V,OAAOlwB,KAAK+vB,WACT,CACT,EAEAjqB,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAI3C,OAFA9tB,IAAS8tB,EADI9uB,EAAKgE,QACY8qB,EAAW,KAEiD,IAAtFF,EAAQ/I,kBAAkB7lB,EAAM8uB,EAAUnwB,KAAK+vB,SAAU,EAAG/vB,KAAK+vB,SAAS1qB,SACpE8qB,EAGHA,EAAWnwB,KAAK+vB,SAAS1qB,MAClC,EAEAS,EAAOjF,SAAW,WAGhB,MAAO,IAFSb,KAAK+vB,SAAS6E,QAAQ,IAAK,MAEjB,GAC5B,EAEOmB,CACT,CA9BiC,GAqC7BC,GAAoB,WACtB,SAASA,IAAqB,CAU9B,OARAA,EAAkBC,SAAW,SAAkB7hB,GAC7C,MAAM,IAAInT,EAAkB,sBAAwBmT,EACtD,EAEA4hB,EAAkBhY,oBAAsB,WACtC,MAAO,EACT,EAEOgY,CACT,CAZwB,GAcpBE,GAAa,SAAUjW,GAQzB,SAASiW,EAAW/X,EAAIC,GACtB,IAAI5W,EAKJ,OAHAA,EAAQyY,EAAQxY,KAAKzH,OAASA,MACxBsgB,IAAMnC,EACZ3W,EAAM6Y,OAASjC,EACR5W,CACT,CAdA1F,EAAeo0B,EAAYjW,GAE3BiW,EAAWC,KAAO,SAAc/hB,GAE9B,OAAO,IAAI8hB,EAAW9hB,EADV4hB,GAAkBC,SAAS7hB,GAEzC,EAWA,IAAItO,EAASowB,EAAWp1B,UAUxB,OARAgF,EAAOqY,GAAK,WACV,OAAOne,KAAKsgB,GACd,EAEAxa,EAAOsY,MAAQ,WACb,OAAOpe,KAAKqgB,MACd,EAEO6V,CACT,CA5BiB,CA4BfpY,GAOEsY,GAAsB,WACxB,SAASA,EAAoBjhB,EAAOkhB,GAClCr2B,KAAKmV,MAAQA,EACbnV,KAAKq2B,YAAcA,CACrB,CAEA,IAAIvwB,EAASswB,EAAoBt1B,UAqHjC,OAnHAgF,EAAOkqB,MAAQ,SAAeC,EAAS1V,GACrC,IAAI7F,EAAOub,EAAQlH,cAAc/oB,KAAKmV,OAEtC,OAAY,MAART,IAIJ6F,EAAI2V,OAAOxb,EAAKyJ,OACT,EACT,EAEArY,EAAOqE,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC3C,IAAI9qB,EAAShE,EAAKgE,OAElB,GAAI8qB,EAAW9qB,EACb,OAAQ8qB,EAGV,GAAIA,IAAa9qB,EACf,OAAQ8qB,EAGV,IAAImG,EAAWj1B,EAAK6J,OAAOilB,GAE3B,GAAiB,MAAbmG,GAAiC,MAAbA,EAAkB,CACxC,IAAIC,EAAatG,EAAQ7J,OACrBmP,EAASvB,GAAsBa,YAAY1qB,MAAMosB,EAAYl1B,EAAM8uB,GAEvE,GAAIoF,EAAS,EACX,OAAOA,EAGT,IAAI3gB,EAAS2hB,EAAWtO,UAAUre,EAAY+X,gBAC1CjN,EAAOsL,EAAWuB,eAAe3M,GAErC,OADAqb,EAAQjI,cAActT,GACf6gB,CACT,CAAO,GAAIlwB,GAAU8qB,EAAW,EAAG,CACjC,IAAIqG,EAAen1B,EAAK6J,OAAOilB,EAAW,GAE1C,GAAIF,EAAQzI,WAAW8O,EAAU,MAAQrG,EAAQzI,WAAWgP,EAAc,KACxE,OAAInxB,GAAU8qB,EAAW,GAAKF,EAAQzI,WAAWnmB,EAAK6J,OAAOilB,EAAW,GAAI,KACnEnwB,KAAKy2B,qBAAqBxG,EAAS5uB,EAAM8uB,EAAUA,EAAW,GAGhEnwB,KAAKy2B,qBAAqBxG,EAAS5uB,EAAM8uB,EAAUA,EAAW,GAChE,GAAIF,EAAQzI,WAAW8O,EAAU,MAAQjxB,GAAU8qB,EAAW,GAAKF,EAAQzI,WAAWgP,EAAc,MAAQvG,EAAQzI,WAAWnmB,EAAK6J,OAAOilB,EAAW,GAAI,KAC/J,OAAOnwB,KAAKy2B,qBAAqBxG,EAAS5uB,EAAM8uB,EAAUA,EAAW,EAEzE,CAEA,GAAiC,WAA7B9uB,EAAK6vB,OAAOf,EAAU,GAExB,OADAF,EAAQjI,cAAclK,EAAOC,iBACtBoS,EAAW,EAGpB,GAAIF,EAAQzI,WAAW8O,EAAU,KAE/B,OADArG,EAAQjI,cAAchI,EAAW0W,KAC1BvG,EAAW,EAGpB,IAAIwG,EAAmBX,GAAkBhY,sBAErC4Y,GAAWC,OAASF,EAAiBtxB,SACvCuxB,GAAaE,GAAWC,cAAcJ,IAQxC,IALA,IAAIK,EAAiB3xB,EAAS8qB,EAC1B8G,EAAUL,GAAWK,QACrBC,EAAe,KACfC,EAAc,EAEA,MAAXF,GAAiB,CACtB,IAAIG,EAAkB/1B,EAAK6vB,OAAOf,EAAUvsB,KAAKqtB,IAAIgG,EAAQ5xB,OAAQ2xB,IAGtD,OAFfC,EAAUA,EAAQ9wB,IAAIixB,KAECH,EAAQI,SAC7BH,EAAeE,EACfD,EAAcF,EAAQ5xB,OAE1B,CAEA,OAAoB,MAAhB6xB,GACFjH,EAAQjI,cAAckO,GAAWC,KAAKe,IAC/B/G,EAAWgH,IAGZhH,CACV,EAEArqB,EAAO2wB,qBAAuB,SAA8BxG,EAAS5uB,EAAMi2B,EAAWnH,GACpF,IAAIjS,EAAS7c,EAAKmK,UAAU8rB,EAAWnH,GAAUoH,cAC7ChB,EAAatG,EAAQ7J,OAEzB,GAAI+J,EAAW9uB,EAAKgE,QAAU4qB,EAAQzI,WAAWnmB,EAAK6J,OAAOilB,GAAW,KAEtE,OADAF,EAAQjI,cAAclK,EAAOG,SAASC,EAAQ8B,EAAW0W,MAClDvG,EAGT,IAAIoF,EAASvB,GAAsBa,YAAY1qB,MAAMosB,EAAYl1B,EAAM8uB,GAEvE,GAAIoF,EAAS,EAEX,OADAtF,EAAQjI,cAAclK,EAAOG,SAASC,EAAQ8B,EAAW0W,MAClDvG,EAGT,IAAIpL,EAAawR,EAAWtO,UAAUre,EAAY+X,gBAC9C/M,EAASoL,EAAWuB,eAAewD,GAEvC,OADAkL,EAAQjI,cAAclK,EAAOG,SAASC,EAAQtJ,IACvC2gB,CACT,EAEAzvB,EAAOjF,SAAW,WAChB,OAAOb,KAAKq2B,WACd,EAEOD,CACT,CA5H0B,GA8HtBU,GAAa,WAcf,SAASA,EAAWD,EAAMI,GACxBj3B,KAAK62B,KAAOA,EACZ72B,KAAKi3B,QAAUA,CACjB,CAEA,OAlBAH,EAAWC,cAAgB,SAAuBJ,GAMhD,IALA,IAAIa,EAAgBb,EAAiBc,MAAK,SAAU9yB,EAAGC,GACrD,OAAOD,EAAEU,OAAST,EAAES,MACtB,IACI4xB,EAAU,IAAIS,GAAcF,EAAc,GAAGnyB,QAAQ,GAEhDqT,EAAI,EAAGA,EAAI8e,EAAcnyB,OAAQqT,IACxCue,EAAQU,IAAIH,EAAc9e,IAG5B,OAAO,IAAIoe,EAAWU,EAAcnyB,OAAQ4xB,EAC9C,EAOOH,CACT,CApBiB,GAsBbY,GAAgB,WAClB,SAASA,EAAcryB,EAAQgyB,QACd,IAAXhyB,IACFA,EAAS,QAGI,IAAXgyB,IACFA,GAAS,GAGXr3B,KAAKqF,OAASA,EACdrF,KAAKq3B,OAASA,EACdr3B,KAAK43B,SAAW,CAAC,CACnB,CAEA,IAAI/X,EAAU6X,EAAc52B,UAwB5B,OAtBA+e,EAAQ8X,IAAM,SAAavjB,GACzB,IAAIyjB,EAAWzjB,EAAO/O,OAEtB,GAAIwyB,IAAa73B,KAAKqF,OACpBrF,KAAK43B,SAASxjB,GAAU,IAAIsjB,EAAcG,GAAU,QAC/C,GAAIA,EAAW73B,KAAKqF,OAAQ,CACjC,IAAIyyB,EAAY1jB,EAAO8c,OAAO,EAAGlxB,KAAKqF,QAClC0yB,EAAa/3B,KAAK43B,SAASE,GAEb,MAAdC,IACFA,EAAa,IAAIL,EAAcG,GAAU,GACzC73B,KAAK43B,SAASE,GAAaC,GAG7BA,EAAWJ,IAAIvjB,EACjB,CACF,EAEAyL,EAAQ1Z,IAAM,SAAaiO,GACzB,OAAOpU,KAAK43B,SAASxjB,EACvB,EAEOsjB,CACT,CAxCoB,GA0ChBd,GAAa,IAAIE,GAAW,IAO5BkB,GAAc,GACdC,GAA2B,WAC7B,SAASA,IACPj4B,KAAKk4B,QAAUl4B,KACfA,KAAKm4B,QAAU,KACfn4B,KAAKuwB,gBAAkB,GACvBvwB,KAAK8oB,WAAY,EACjB9oB,KAAKo4B,cAAgB,EACrBp4B,KAAKq4B,aAAe,KACpBr4B,KAAKs4B,mBAAqB,CAC5B,CAEAL,EAAyBM,IAAM,SAAaC,EAAQlI,GAClD9tB,EAAeg2B,EAAQ,UACvBh2B,EAAe8tB,EAAU,YACzB,IAAImI,EAAqB,IAAIR,EAG7B,OAFAQ,EAAmBN,QAAUK,EAC7BC,EAAmB3P,UAAYwH,EACxBmI,CACT,EAEA,IAAI3yB,EAASmyB,EAAyBn3B,UAyrBtC,OAvrBAgF,EAAO4yB,mBAAqB,WAG1B,OAFA14B,KAAK24B,6BAA6BlD,GAAeC,WAE1C11B,IACT,EAEA8F,EAAO8yB,qBAAuB,WAG5B,OAFA54B,KAAK24B,6BAA6BlD,GAAeE,aAE1C31B,IACT,EAEA8F,EAAO+yB,YAAc,WAGnB,OAFA74B,KAAK24B,6BAA6BlD,GAAexZ,QAE1Cjc,IACT,EAEA8F,EAAOgzB,aAAe,WAGpB,OAFA94B,KAAK24B,6BAA6BlD,GAAetZ,SAE1Cnc,IACT,EAEA8F,EAAOizB,YAAc,WACnB,OAAyB,IAArBn4B,UAAUyE,OACLrF,KAAKg5B,cAAcr4B,MAAMX,KAAMY,WACR,IAArBA,UAAUyE,OACZrF,KAAKi5B,cAAct4B,MAAMX,KAAMY,WAE/BZ,KAAKk5B,cAAcv4B,MAAMX,KAAMY,UAE1C,EAEAkF,EAAOkzB,cAAgB,SAAuBlnB,GAK5C,OAJAtP,EAAesP,GAEf9R,KAAKm5B,0BAA0B,IAAInH,GAAoBlgB,EAAO,EAAGkmB,GAAarJ,GAAUG,SAEjF9uB,IACT,EAEA8F,EAAOmzB,cAAgB,SAAuBnnB,EAAOyhB,GAGnD,GAFA/wB,EAAesP,GAEXyhB,EAAQ,GAAKA,EAAQyE,GACvB,MAAM,IAAIr2B,EAAyB,oDAAuE4xB,GAG5G,IAAI6F,EAAK,IAAIpH,GAAoBlgB,EAAOyhB,EAAOA,EAAO5E,GAAUO,cAIhE,OAFAlvB,KAAKm5B,0BAA0BC,GAExBp5B,IACT,EAEA8F,EAAOozB,cAAgB,SAAuBpnB,EAAO6e,EAAUC,EAAUqB,GAIvE,GAHAzvB,EAAesP,GACftP,EAAeyvB,GAEXtB,IAAaC,GAAYqB,IAActD,GAAUO,aACnD,OAAOlvB,KAAKi5B,cAAcnnB,EAAO8e,GAGnC,GAAID,EAAW,GAAKA,EAAWqH,GAC7B,MAAM,IAAIr2B,EAAyB,4DAA+EgvB,GAGpH,GAAIC,EAAW,GAAKA,EAAWoH,GAC7B,MAAM,IAAIr2B,EAAyB,4DAA+EivB,GAGpH,GAAIA,EAAWD,EACb,MAAM,IAAIhvB,EAAyB,gEAAkEivB,EAAW,MAAQD,GAG1H,IAAIyI,EAAK,IAAIpH,GAAoBlgB,EAAO6e,EAAUC,EAAUqB,GAI5D,OAFAjyB,KAAKm5B,0BAA0BC,GAExBp5B,IACT,EAEA8F,EAAOuzB,mBAAqB,WAC1B,OAAyB,IAArBz4B,UAAUyE,QAAgBzE,UAAU,aAAcoc,EAC7Chd,KAAKs5B,8CAA8C34B,MAAMX,KAAMY,WAE/DZ,KAAKu5B,+CAA+C54B,MAAMX,KAAMY,UAE3E,EAEAkF,EAAOyzB,+CAAiD,SAAwDznB,EAAOyhB,EAAO3C,EAAU4C,GACtIhxB,EAAesP,EAAO,SACtB,IAAIsnB,EAAK,IAAI/F,GAAqBvhB,EAAOyhB,EAAO3C,EAAU4C,EAAW,MAIrE,OAFAxzB,KAAKm5B,0BAA0BC,GAExBp5B,IACT,EAEA8F,EAAOwzB,8CAAgD,SAAuDxnB,EAAOyhB,EAAO3C,EAAU6C,GACpIjxB,EAAesP,EAAO,SACtBtP,EAAeixB,EAAU,YACzB9wB,EAAgB8wB,EAAUzW,EAAiB,YAC3C,IAAIoc,EAAK,IAAI/F,GAAqBvhB,EAAOyhB,EAAO3C,EAAU,EAAG6C,GAI7D,OAFAzzB,KAAKm5B,0BAA0BC,GAExBp5B,IACT,EAEA8F,EAAOqzB,0BAA4B,SAAmCC,GAGpE,GAFA/2B,EAAa,MAAN+2B,GAEHp5B,KAAKk4B,QAAQI,mBAAqB,GAAKt4B,KAAKk4B,QAAQ3H,gBAAgBvwB,KAAKk4B,QAAQI,6BAA8BtG,GAAqB,CACtI,IAAIwH,EAAoBx5B,KAAKk4B,QAAQI,kBACjCmB,EAASz5B,KAAKk4B,QAAQ3H,gBAAgBiJ,GAEtCJ,EAAGzI,aAAeyI,EAAGxI,YAAcwI,EAAGnH,cAAgBtD,GAAUO,cAClEuK,EAASA,EAAOhH,oBAAoB2G,EAAGxI,YAEvC5wB,KAAK05B,gBAAgBN,EAAG5G,kBAExBxyB,KAAKk4B,QAAQI,kBAAoBkB,IAEjCC,EAASA,EAAOjH,iBAChBxyB,KAAKk4B,QAAQI,kBAAoBt4B,KAAK05B,gBAAgBN,IAGxDp5B,KAAKk4B,QAAQ3H,gBAAgBiJ,GAAqBC,CACpD,MACEz5B,KAAKk4B,QAAQI,kBAAoBt4B,KAAK05B,gBAAgBN,GAGxD,OAAOp5B,IACT,EAEA8F,EAAO6zB,eAAiB,SAAwB7nB,EAAO6e,EAAUC,EAAUC,GAGzE,OAFA7wB,KAAK05B,gBAAgB,IAAIhJ,GAAsB5e,EAAO6e,EAAUC,EAAUC,IAEnE7wB,IACT,EAEA8F,EAAO8zB,cAAgB,SAAuBC,GAK5C,QAJyB,IAArBA,IACFA,GAAoB,GAGlBA,GAAoB,GAAKA,EAAmB,EAC9C,MAAM,IAAIl4B,EAAyB,8BAAgCk4B,GAKrE,OAFA75B,KAAK05B,gBAAgB,IAAII,GAAqBD,IAEvC75B,IACT,EAEA8F,EAAOi0B,eAAiB,WAGtB,OAFA/5B,KAAK05B,gBAAgB1F,GAAsBa,aAEpC70B,IACT,EAEA8F,EAAOk0B,aAAe,SAAsBtc,EAASuW,GAGnD,OAFAj0B,KAAK24B,6BAA6B,IAAI3E,GAAsBC,EAAcvW,IAEnE1d,IACT,EAEA8F,EAAOm0B,aAAe,WAGpB,OAFAj6B,KAAK05B,gBAAgB,IAAItD,GAAoBjiB,EAAgBC,SAAU,aAEhEpU,IACT,EAEA8F,EAAOo0B,cAAgB,SAAuBxc,GAK5C,OAJAlb,EAAekb,EAAS,WAExB1d,KAAKm6B,cAAczc,GAEZ1d,IACT,EAEA8F,EAAOs0B,eAAiB,WACtB,MAAM,IAAIz4B,EAAyB,6EACrC,EAEAmE,EAAOu0B,WAAa,WAClB,MAAM,IAAI14B,EAAyB,6EACrC,EAEAmE,EAAOw0B,sBAAwB,WAC7B,MAAM,IAAI34B,EAAyB,6EACrC,EAEAmE,EAAOy0B,gBAAkB,WACvB,MAAM,IAAI54B,EAAyB,6EACrC,EAEAmE,EAAOq0B,cAAgB,SAAuBzc,GA4B5C,IA3BA,IAAI8c,EAAY,CACd,EAAK5wB,EAAYwJ,IACjB,EAAKxJ,EAAYsJ,YACjB,EAAKtJ,EAAYuJ,KACjB,EAAK+V,GAAU0B,gBACf,EAAK1B,GAAU0B,gBACf,EAAKhhB,EAAYqJ,cACjB,EAAKrJ,EAAYqJ,cACjB,EAAKrJ,EAAYiJ,YACjB,EAAKjJ,EAAYgJ,aACjB,EAAKhJ,EAAY8I,6BACjB,EAAK9I,EAAY6I,YACjB,EAAK7I,EAAY6I,YACjB,EAAK7I,EAAY6I,YACjB,EAAK7I,EAAYsK,YACjB,EAAKtK,EAAYoK,YACjB,EAAKpK,EAAYqK,kBACjB,EAAKrK,EAAYkK,aACjB,EAAKlK,EAAYmK,mBACjB,EAAKnK,EAAYgK,eACjB,EAAKhK,EAAY8J,iBACjB,EAAK9J,EAAYC,eACjB,EAAKD,EAAY6J,aACjB,EAAK7J,EAAYC,eACjB,EAAKD,EAAYyJ,aAGV6N,EAAM,EAAGA,EAAMxD,EAAQrY,OAAQ6b,IAAO,CAC7C,IAAIuZ,EAAM/c,EAAQxS,OAAOgW,GAEzB,GAAIuZ,GAAO,KAAOA,GAAO,KAAOA,GAAO,KAAOA,GAAO,IAAK,CAGxD,IAFA,IAAIC,EAAQxZ,IAELA,EAAMxD,EAAQrY,QAAUqY,EAAQxS,OAAOgW,KAASuZ,EAAKvZ,KAG5D,IAAIyZ,EAAQzZ,EAAMwZ,EAElB,GAAY,MAARD,EAAa,CACf,IAAIG,EAAM,EAEV,GAAI1Z,EAAMxD,EAAQrY,UAChBo1B,EAAM/c,EAAQxS,OAAOgW,KAEV,KAAOuZ,GAAO,KAAOA,GAAO,KAAOA,GAAO,KAAK,CAIxD,IAHAG,EAAMD,EACND,EAAQxZ,IAEDA,EAAMxD,EAAQrY,QAAUqY,EAAQxS,OAAOgW,KAASuZ,EAAKvZ,KAG5DyZ,EAAQzZ,EAAMwZ,CAChB,CAGF,GAAY,IAARE,EACF,MAAM,IAAIj5B,EAAyB,yDAA6D+b,GAGlG1d,KAAK66B,QAAQD,EACf,CAEA,IAAI9oB,EAAQ0oB,EAAUC,GAEtB,GAAa,MAAT3oB,EACF9R,KAAK86B,YAAYL,EAAKE,EAAO7oB,QACxB,GAAY,MAAR2oB,EAAa,CACtB,GAAIE,EAAQ,EACV,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAC/C,IAAVE,EACT36B,KAAKo6B,eAAejL,GAAUM,MAE9BzvB,KAAKo6B,eAAejL,GAAUO,MAElC,MAAO,GAAY,MAAR+K,EAAa,CACtB,GAAc,IAAVE,EACF,MAAM,IAAIh5B,EAAyB,mCAAqC84B,GAG1Ez6B,KAAKi6B,cACP,MAAO,GAAY,MAARQ,EACT,GAAIE,EAAQ,EACV36B,KAAKg6B,aAAa,QAAS,cACtB,GAAc,IAAVW,EACT36B,KAAKs6B,sBAAsBnL,GAAUM,UAChC,IAAc,IAAVkL,EAGT,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAFlEz6B,KAAKg6B,aAAa,YAAa,IAGjC,MACK,GAAY,MAARS,EACT,GAAc,IAAVE,EACF36B,KAAKs6B,sBAAsBnL,GAAUO,WAChC,IAAc,IAAViL,EAGT,MAAM,IAAIh5B,EAAyB,wCAA0C84B,GAF7Ez6B,KAAKs6B,sBAAsBnL,GAAUM,KAGvC,MACK,GAAY,MAARgL,EAAa,CACtB,GAAIE,EAAQ,EACV,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAGpEz6B,KAAKg6B,aAAahG,GAAsBD,SAAS4G,GAAmB,IAAVA,EAAc,EAAI,IAAK,IACnF,MAAO,GAAY,MAARF,EAAa,CACtB,GAAIE,EAAQ,EACV,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAGpE,IAAIM,EAAiB,IAAVJ,EAAc,MAAQA,EAAQ,GAAM,EAAI,QAAU,SAC7D36B,KAAKg6B,aAAahG,GAAsBD,SAAS4G,GAAmB,IAAVA,EAAc,EAAI,IAAKI,EACnF,MAAO,GAAY,MAARN,EAAa,CACtB,GAAIE,EAAQ,EACV,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAGpEz6B,KAAKu6B,gBAAgB,IAAKI,EAC5B,MAAO,GAAY,MAARF,EAAa,CACtB,GAAIE,EAAQ,EACV,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAGpEz6B,KAAKu6B,gBAAgB,IAAKI,EAC5B,KAAO,IAAY,MAARF,EAGT,MAAM,IAAI94B,EAAyB,2BAA6B84B,GAFhEz6B,KAAKu6B,gBAAgB,IAAKI,EAG5B,CAEAzZ,GACF,MAAO,GAAY,MAARuZ,EAAc,CAGvB,IAFA,IAAIO,EAAS9Z,IAENA,EAAMxD,EAAQrY,OAAQ6b,IAC3B,GAA4B,MAAxBxD,EAAQxS,OAAOgW,GAAe,CAChC,KAAIA,EAAM,EAAIxD,EAAQrY,QAAsC,MAA5BqY,EAAQxS,OAAOgW,EAAM,IAGnD,MAFAA,GAIJ,CAGF,GAAIA,GAAOxD,EAAQrY,OACjB,MAAM,IAAI1D,EAAyB,mDAAqD+b,GAG1F,IAAIzL,EAAMyL,EAAQlS,UAAUwvB,EAAS,EAAG9Z,GAErB,IAAfjP,EAAI5M,OACNrF,KAAKi7B,cAAc,KAEnBj7B,KAAKi7B,cAAchpB,EAAI2iB,QAAQ,KAAQ,KAE3C,MAAO,GAAY,MAAR6F,EACTz6B,KAAKk7B,qBACA,GAAY,MAART,EAAa,CACtB,GAA6B,OAAzBz6B,KAAKk4B,QAAQC,QACf,MAAM,IAAIx2B,EAAyB,uDAGrC3B,KAAKm7B,aACP,KAAO,IAAY,MAARV,GAAuB,MAARA,GAAuB,MAARA,EACvC,MAAM,IAAI94B,EAAyB,yCAA4C84B,EAAM,KAErFz6B,KAAKi7B,cAAcR,EACrB,CACF,CACF,EAEA30B,EAAOg1B,YAAc,SAAqBL,EAAKE,EAAO7oB,GACpD,OAAQ2oB,GACN,IAAK,IACL,IAAK,IACW,IAAVE,EACF36B,KAAKq5B,mBAAmBvnB,EAAO,EAAG,EAAGuhB,GAAqB+H,WACjDT,EAAQ,EACjB36B,KAAK+4B,YAAYjnB,EAAO6oB,EAAO3C,GAAarJ,GAAUG,QAEtD9uB,KAAK+4B,YAAYjnB,EAAO6oB,EAAO3C,GAAarJ,GAAUK,aAGxD,MAEF,IAAK,IACL,IAAK,IACH,OAAQ2L,GACN,KAAK,EACH36B,KAAK+4B,YAAYjnB,GACjB,MAEF,KAAK,EACH9R,KAAK+4B,YAAYjnB,EAAO,GACxB,MAEF,KAAK,EACH9R,KAAKq6B,WAAWvoB,EAAOqd,GAAUO,OACjC,MAEF,KAAK,EACH1vB,KAAKq6B,WAAWvoB,EAAOqd,GAAUM,MACjC,MAEF,KAAK,EACHzvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUQ,QACjC,MAEF,QACE,MAAM,IAAIhuB,EAAyB,6BAA+B84B,GAGtE,MAEF,IAAK,IACL,IAAK,IACH,OAAQE,GACN,KAAK,EACH36B,KAAK+4B,YAAYjnB,GACjB,MAEF,KAAK,EACH9R,KAAK+4B,YAAYjnB,EAAO,GACxB,MAEF,KAAK,EACH9R,KAAKq6B,WAAWvoB,EAAOqd,GAAUG,kBACjC,MAEF,KAAK,EACHtvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUE,iBACjC,MAEF,KAAK,EACHrvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUI,mBACjC,MAEF,QACE,MAAM,IAAI5tB,EAAyB,6BAA+B84B,GAGtE,MAEF,IAAK,IACH,OAAQE,GACN,KAAK,EACL,KAAK,EACH36B,KAAKu6B,gBAAgB,IAAKI,GAC1B,MAEF,KAAK,EACH36B,KAAKq6B,WAAWvoB,EAAOqd,GAAUO,OACjC,MAEF,KAAK,EACH1vB,KAAKq6B,WAAWvoB,EAAOqd,GAAUM,MACjC,MAEF,KAAK,EACHzvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUQ,QACjC,MAEF,QACE,MAAM,IAAIhuB,EAAyB,6BAA+B84B,GAGtE,MAEF,IAAK,IACH,OAAQE,GACN,KAAK,EACH36B,KAAKu6B,gBAAgB,IAAKI,GAC1B,MAEF,KAAK,EACH,MAAM,IAAIh5B,EAAyB,sCAAwC84B,GAE7E,KAAK,EACHz6B,KAAKq6B,WAAWvoB,EAAOqd,GAAUG,kBACjC,MAEF,KAAK,EACHtvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUE,iBACjC,MAEF,KAAK,EACHrvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUI,mBACjC,MAEF,QACE,MAAM,IAAI5tB,EAAyB,6BAA+B84B,GAGtE,MAEF,IAAK,IACH,GAAc,IAAVE,EAGF,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAFlEz6B,KAAKq6B,WAAWvoB,EAAOqd,GAAUO,OAKnC,MAEF,IAAK,IACL,IAAK,IACH,OAAQiL,GACN,KAAK,EACL,KAAK,EACL,KAAK,EACH36B,KAAKq6B,WAAWvoB,EAAOqd,GAAUO,OACjC,MAEF,KAAK,EACH1vB,KAAKq6B,WAAWvoB,EAAOqd,GAAUM,MACjC,MAEF,KAAK,EACHzvB,KAAKq6B,WAAWvoB,EAAOqd,GAAUQ,QACjC,MAEF,QACE,MAAM,IAAIhuB,EAAyB,6BAA+B84B,GAGtE,MAEF,IAAK,IACHz6B,KAAK25B,eAAe/vB,EAAYC,eAAgB8wB,EAAOA,GAAO,GAC9D,MAEF,IAAK,IACH,GAAc,IAAVA,EAGF,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAFlEz6B,KAAK+4B,YAAYjnB,GAKnB,MAEF,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACH,GAAc,IAAV6oB,EACF36B,KAAK+4B,YAAYjnB,OACZ,IAAc,IAAV6oB,EAGT,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAFlEz6B,KAAK+4B,YAAYjnB,EAAO6oB,EAG1B,CAEA,MAEF,IAAK,IACH,GAAc,IAAVA,EACF36B,KAAK+4B,YAAYjnB,OACZ,MAAI6oB,GAAS,GAGlB,MAAM,IAAIh5B,EAAyB,6BAA+B84B,GAFlEz6B,KAAK+4B,YAAYjnB,EAAO6oB,EAG1B,CAEA,MAEF,QACgB,IAAVA,EACF36B,KAAK+4B,YAAYjnB,GAEjB9R,KAAK+4B,YAAYjnB,EAAO6oB,GAKhC,EAEA70B,EAAO+0B,QAAU,WACf,OAAyB,IAArBj6B,UAAUyE,OACLrF,KAAKq7B,UAAU16B,MAAMX,KAAMY,WAE3BZ,KAAKs7B,UAAU36B,MAAMX,KAAMY,UAEtC,EAEAkF,EAAOu1B,UAAY,SAAmBrG,GACpC,OAAOh1B,KAAKs7B,UAAUtG,EAAU,IAClC,EAEAlvB,EAAOw1B,UAAY,SAAmBtG,EAAUC,GAC9C,GAAID,EAAW,EACb,MAAM,IAAIrzB,EAAyB,8CAAgDqzB,GAMrF,OAHAh1B,KAAKk4B,QAAQE,cAAgBpD,EAC7Bh1B,KAAKk4B,QAAQG,aAAepD,EAC5Bj1B,KAAKk4B,QAAQI,mBAAqB,EAC3Bt4B,IACT,EAEA8F,EAAOo1B,cAAgB,WAGrB,OAFAl7B,KAAKk4B,QAAQI,mBAAqB,EAClCt4B,KAAKk4B,QAAUD,EAAyBM,IAAIv4B,KAAKk4B,SAAS,GACnDl4B,IACT,EAEA8F,EAAOq1B,YAAc,WACnB,GAA4B,MAAxBn7B,KAAKk4B,QAAQC,QACf,MAAM,IAAIv2B,EAAsB,8EAGlC,GAAI5B,KAAKk4B,QAAQ3H,gBAAgBlrB,OAAS,EAAG,CAC3C,IAAIk2B,EAAM,IAAInL,GAAuBpwB,KAAKk4B,QAAQ3H,gBAAiBvwB,KAAKk4B,QAAQpP,WAChF9oB,KAAKk4B,QAAUl4B,KAAKk4B,QAAQC,QAE5Bn4B,KAAK05B,gBAAgB6B,EACvB,MACEv7B,KAAKk4B,QAAUl4B,KAAKk4B,QAAQC,QAG9B,OAAOn4B,IACT,EAEA8F,EAAO4zB,gBAAkB,SAAyBN,GAehD,OAdA/2B,EAAa,MAAN+2B,GAEHp5B,KAAKk4B,QAAQE,cAAgB,IACrB,MAANgB,IACFA,EAAK,IAAItE,GAA0BsE,EAAIp5B,KAAKk4B,QAAQE,cAAep4B,KAAKk4B,QAAQG,eAGlFr4B,KAAKk4B,QAAQE,cAAgB,EAC7Bp4B,KAAKk4B,QAAQG,aAAe,GAG9Br4B,KAAKk4B,QAAQ3H,gBAAgB7J,KAAK0S,GAElCp5B,KAAKk4B,QAAQI,mBAAqB,EAC3Bt4B,KAAKk4B,QAAQ3H,gBAAgBlrB,OAAS,CAC/C,EAEAS,EAAOm1B,cAAgB,SAAuBnL,GAW5C,OAVAztB,EAAkB,MAAXytB,GAEHA,EAAQzqB,OAAS,IACI,IAAnByqB,EAAQzqB,OACVrF,KAAK24B,6BAA6B,IAAI9I,GAAyBC,EAAQ5kB,OAAO,KAE9ElL,KAAK24B,6BAA6B,IAAI5C,GAA2BjG,KAI9D9vB,IACT,EAEA8F,EAAO6yB,6BAA+B,SAAsCS,GAe1E,OAdA/2B,EAAa,MAAN+2B,GAEHp5B,KAAKk4B,QAAQE,cAAgB,IACrB,MAANgB,IACFA,EAAK,IAAItE,GAA0BsE,EAAIp5B,KAAKk4B,QAAQE,cAAep4B,KAAKk4B,QAAQG,eAGlFr4B,KAAKk4B,QAAQE,cAAgB,EAC7Bp4B,KAAKk4B,QAAQG,aAAe,GAG9Br4B,KAAKk4B,QAAQ3H,gBAAgB7J,KAAK0S,GAElCp5B,KAAKk4B,QAAQI,mBAAqB,EAC3Bt4B,KAAKk4B,QAAQ3H,gBAAgBlrB,OAAS,CAC/C,EAEAS,EAAOoqB,OAAS,SAAgB5S,GAK9B,OAJA9a,EAAe8a,EAAW,aAE1Btd,KAAK05B,gBAAgBpc,EAAUke,kBAAiB,IAEzCx7B,IACT,EAEA8F,EAAO21B,YAAc,SAAqBhZ,GAKxC,SAJsB,IAAlBA,IACFA,EAAgBzG,EAAcE,OAGD,MAAxBlc,KAAKk4B,QAAQC,SAClBn4B,KAAKm7B,cAGP,IAAI/B,EAAK,IAAIhJ,GAAuBpwB,KAAKuwB,iBAAiB,GAC1D,OAAO,IAAIhT,GAAkB6b,EAAI,KAAMrM,GAAa2B,SAAUjM,EAAe,KAAM,KAAM,KAC3F,EAEOwV,CACT,CA9sB+B,GA+sB3ByD,GAA0B,WAC1BC,GAAuB,YAEvB7B,GAAuB,WACzB,SAASA,EAAqBD,GAC5B75B,KAAK65B,iBAAmBA,CAC1B,CAEA,IAAIha,EAAUia,EAAqBh5B,UA2InC,OAzIA+e,EAAQmQ,MAAQ,SAAeC,EAAS1V,GACtC,IAAIqhB,EAAS3L,EAAQjH,SAASpf,EAAYsb,iBACtC2W,EAAU,EAMd,GAJI5L,EAAQ1pB,WAAWoD,YAAYC,EAAYC,kBAC7CgyB,EAAU5L,EAAQ1pB,WAAWwD,QAAQH,EAAYC,iBAGrC,MAAV+xB,EACF,OAAO,EAGT,IAAIE,EAAQF,EACRG,EAASnyB,EAAYC,eAAeuC,mBAAmByvB,GAE3D,GAAIC,IAAS,YAAuB,CAClC,IAAIE,EAAWF,EAAQJ,GAA0BC,GAC7CM,EAAK74B,EAASW,SAASi4B,EAAUN,IAA2B,EAC5DQ,EAAK94B,EAASY,SAASg4B,EAAUN,IACjCS,EAAMC,GAAcC,cAAcH,EAAKP,GAAsB,EAAG3b,EAAW0W,KAE3EuF,EAAK,GACP1hB,EAAI2V,OAAO,KAAKA,OAAO+L,GAGzB1hB,EAAI2V,OAAOiM,GAEU,IAAjBA,EAAIG,UACN/hB,EAAI2V,OAAO,MAEf,KAAO,CACL,IAAIqM,EAAYT,EAAQH,GAEpBa,EAAMp5B,EAASC,OAAOk5B,EAAWb,IAEjCe,EAAMr5B,EAASO,OAAO44B,EAAWb,IAEjCgB,EAAON,GAAcC,cAAcI,EAAMd,GAAsB,EAAG3b,EAAW0W,KAE7ExV,EAAM3G,EAAIlV,SACdkV,EAAI2V,OAAOwM,GAEW,IAAlBA,EAAKJ,UACP/hB,EAAI2V,OAAO,OAGTsM,EAAM,KACa,MAAjBE,EAAKrS,OACP9P,EAAIqa,QAAQ1T,EAAKA,EAAM,EAAG,IAAMsb,EAAM,IACrB,IAARC,EACTliB,EAAI+a,OAAOpU,EAAKsb,GAEhBjiB,EAAI+a,OAAOpU,EAAM,EAAGtd,KAAKqL,IAAIutB,IAGnC,CAEA,IAA+B,IAA3Bx8B,KAAK65B,iBACQ,IAAXkC,IACFxhB,EAAI2V,OAAO,KAE8B,IAArC9sB,EAASO,OAAOo4B,EAAQ,KAC1BxhB,EAAI2V,QAAQ,IAAM9sB,EAASC,OAAO04B,EAAQ,KAAW,MAAOvwB,UAAU,IAC3B,IAAlCpI,EAASO,OAAOo4B,EAAQ,KACjCxhB,EAAI2V,QAAQ,IAAM9sB,EAASC,OAAO04B,EAAQ,KAAQ,MAAUvwB,UAAU,IAEtE+O,EAAI2V,QAAQ,IAAM6L,EAAS,MAAavwB,UAAU,UAGjD,GAAIxL,KAAK65B,iBAAmB,IAAgC,IAA3B75B,KAAK65B,kBAA2BkC,EAAS,EAAG,CAClFxhB,EAAI2V,OAAO,KAGX,IAFA,IAAIyM,EAAM,IAEDjkB,EAAI,GAA8B,IAA3B1Y,KAAK65B,kBAA2BkC,EAAS,GAAKrjB,EAAI1Y,KAAK65B,iBAAkBnhB,IAAK,CAC5F,IAAI8Y,EAAQpuB,EAASC,OAAO04B,EAAQY,GACpCpiB,EAAI2V,OAAOsB,GACXuK,GAAkBvK,EAAQmL,EAC1BA,EAAMv5B,EAASC,OAAOs5B,EAAK,GAC7B,CACF,CAGA,OADApiB,EAAI2V,OAAO,MACJ,CACT,EAEArQ,EAAQ1V,MAAQ,SAAe8lB,EAAS5uB,EAAM8uB,GAC5C,IAAIoG,EAAatG,EAAQ7J,OACrBwW,EAAY58B,KAAK65B,iBAAmB,EAAI,EAAI75B,KAAK65B,iBACjDgD,EAAY78B,KAAK65B,iBAAmB,EAAI,EAAI75B,KAAK65B,iBAIjD3Y,GAFS,IAAI+W,IAA2B/H,OAAO3S,GAAkBuf,gBAAgB7B,cAAc,KAAKlC,YAAYnvB,EAAYoK,YAAa,GAAGinB,cAAc,KAAKlC,YAAYnvB,EAAYgK,eAAgB,GAAGqnB,cAAc,KAAKlC,YAAYnvB,EAAY8J,iBAAkB,GAAGimB,eAAe/vB,EAAYC,eAAgB+yB,EAAWC,GAAW,GAAM5B,cAAc,KAAKQ,cAAcD,kBAAiB,GAEtXrxB,MAAMosB,EAAYl1B,EAAM8uB,GAEzC,GAAIjP,EAAM,EACR,OAAOA,EAGT,IAoBI6b,EApBAC,EAAazG,EAAWtO,UAAUre,EAAYuJ,MAC9C4E,EAAQwe,EAAWtO,UAAUre,EAAYqJ,eACzCgqB,EAAM1G,EAAWtO,UAAUre,EAAYgJ,cACvCsqB,EAAO3G,EAAWtO,UAAUre,EAAYoK,aACxCid,EAAMsF,EAAWtO,UAAUre,EAAYgK,gBACvCupB,EAAS5G,EAAWtO,UAAUre,EAAY8J,kBAC1C0pB,EAAU7G,EAAWtO,UAAUre,EAAYC,gBAC3CwzB,EAAgB,MAAVF,EAAiBA,EAAS,EAChCnxB,EAAkB,MAAXoxB,EAAkBA,EAAU,EACnC/S,EAAOjnB,EAASO,OAAOq5B,EAAY,KACnCn1B,EAAO,EAEE,KAATq1B,GAAuB,IAARjM,GAAqB,IAARoM,GAAsB,IAATrxB,GAC3CkxB,EAAO,EACPr1B,EAAO,GACW,KAATq1B,GAAuB,KAARjM,GAAsB,KAARoM,IACtCpN,EAAQ9H,sBACRkV,EAAM,IAKR,IAEEN,EADUX,GAAcpzB,GAAGqhB,EAAMtS,EAAOklB,EAAKC,EAAMjM,EAAKoM,EAAK,GAAGnwB,SAASrF,GACvDy1B,cAActd,EAAW0W,KAC3CqG,GAAe35B,EAASiB,aAAajB,EAASC,OAAO25B,EAAY,KAAQtB,GAC3E,CAAE,MAAOtwB,GACP,OAAQ+kB,CACV,CAEA,IAAIrI,EAAa5G,EAEjB,OADA4G,EAAamI,EAAQrI,eAAehe,EAAYsb,gBAAiB6X,EAAa5M,EAAUrI,GACjFmI,EAAQrI,eAAehe,EAAYC,eAAgBmC,EAAMmkB,EAAUrI,EAC5E,EAEAjI,EAAQhf,SAAW,WACjB,MAAO,WACT,EAEOi5B,CACT,CAjJ2B,GAsKvByD,GAAgB,WAClB,SAASA,IACPv9B,KAAKw9B,KAAO,EACd,CAEA,IAAI13B,EAASy3B,EAAcz8B,UAmC3B,OAjCAgF,EAAOoqB,OAAS,SAAgBje,GAE9B,OADAjS,KAAKw9B,MAAQvrB,EACNjS,IACT,EAEA8F,EAAOuuB,WAAa,SAAoBpiB,GAEtC,OADAjS,KAAKw9B,MAAQvrB,EAAI,GACVjS,IACT,EAEA8F,EAAOwvB,OAAS,SAAgB1gB,EAAQ3C,GAEtC,OADAjS,KAAKw9B,KAAOx9B,KAAKw9B,KAAK1tB,MAAM,EAAG8E,GAAU3C,EAAMjS,KAAKw9B,KAAK1tB,MAAM8E,GACxD5U,IACT,EAEA8F,EAAO8uB,QAAU,SAAiB8F,EAAO+C,EAAKxrB,GAE5C,OADAjS,KAAKw9B,KAAOx9B,KAAKw9B,KAAK1tB,MAAM,EAAG4qB,GAASzoB,EAAMjS,KAAKw9B,KAAK1tB,MAAM2tB,GACvDz9B,IACT,EAEA8F,EAAOT,OAAS,WACd,OAAOrF,KAAKw9B,KAAKn4B,MACnB,EAEAS,EAAO2qB,UAAY,SAAmBprB,GAEpC,OADArF,KAAKw9B,KAAOx9B,KAAKw9B,KAAK1tB,MAAM,EAAGzK,GACxBrF,IACT,EAEA8F,EAAOjF,SAAW,WAChB,OAAOb,KAAKw9B,IACd,EAEOD,CACT,CAzCoB,GAgDhBhgB,GAAoB,WAatB,SAASA,EAAkBwX,EAAeze,EAAQ4P,EAAczD,EAAeC,EAAgBZ,EAAQpN,QACtF,IAAXoN,IACFA,EAASjK,GAAcC,UAGzBzV,EAAwB,MAAjB0yB,GACP1yB,EAAuB,MAAhB6jB,GACP7jB,EAAwB,MAAjBogB,GACPziB,KAAKk1B,eAAiBH,EACtB/0B,KAAK+lB,QAAUzP,EACftW,KAAK09B,cAAgBxX,EACrBlmB,KAAK29B,eAAiBlb,EACtBziB,KAAK49B,gBAAkBlb,EACvB1iB,KAAK69B,QAAU/b,EACf9hB,KAAK89B,MAAQppB,CACf,CA3BA6I,EAAkBwgB,iBAAmB,WACnC,OAAOxgB,EAAkBygB,kBAC3B,EAEAzgB,EAAkB0gB,iBAAmB,WACnC,OAAO1gB,EAAkB2gB,kBAC3B,EAEA3gB,EAAkB4gB,UAAY,SAAmBzgB,GAC/C,OAAO,IAAIua,IAA2BiC,cAAcxc,GAAS+d,aAC/D,EAmBA,IAAI31B,EAASyX,EAAkBzc,UA6J/B,OA3JAgF,EAAOwQ,OAAS,WACd,OAAOtW,KAAK+lB,OACd,EAEAjgB,EAAOogB,aAAe,WACpB,OAAOlmB,KAAK09B,aACd,EAEA53B,EAAOwO,WAAa,WAClB,OAAOtU,KAAK69B,OACd,EAEA/3B,EAAOs4B,eAAiB,SAAwBtc,GAC9C,OAAoB,MAAhB9hB,KAAK69B,SAAmB79B,KAAK69B,QAAQ93B,OAAO+b,GACvC9hB,KAGF,IAAIud,EAAkBvd,KAAKk1B,eAAgBl1B,KAAK+lB,QAAS/lB,KAAK09B,cAAe19B,KAAK29B,eAAgB39B,KAAK49B,gBAAiB9b,EAAQ9hB,KAAK89B,MAC9I,EAEAh4B,EAAOu4B,WAAa,WAClB,OAAOr+B,IACT,EAEA8F,EAAOw4B,kBAAoB,SAA2B7b,GAGpD,OAFAjgB,EAAeigB,EAAe,iBAE1BA,EAAc1c,OAAO/F,KAAK29B,gBACrB39B,KAGF,IAAIud,EAAkBvd,KAAKk1B,eAAgBl1B,KAAK+lB,QAAS/lB,KAAK09B,cAAejb,EAAeziB,KAAK49B,gBAAiB59B,KAAK69B,QAAS79B,KAAK89B,MAC9I,EAEAh4B,EAAOuX,OAAS,SAAgB9W,GAC9B,IAAIgU,EAAM,IAAIgjB,GAAc,IAI5B,OAFAv9B,KAAKu+B,UAAUh4B,EAAUgU,GAElBA,EAAI1Z,UACb,EAEAiF,EAAOy4B,UAAY,SAAmBh4B,EAAUi4B,GAC9Ch8B,EAAe+D,EAAU,YACzB/D,EAAeg8B,EAAY,cAC3B,IAAIvO,EAAU,IAAIvH,GAAqBniB,EAAUvG,MAEjDA,KAAKk1B,eAAelF,MAAMC,EAASuO,EACrC,EAEA14B,EAAOqE,MAAQ,SAAe9I,EAAMgkB,GAClC,OAAyB,IAArBzkB,UAAUyE,OACLrF,KAAKy+B,OAAOp9B,GAEZrB,KAAK0+B,OAAOr9B,EAAMgkB,EAE7B,EAEAvf,EAAO24B,OAAS,SAAgBp9B,GAC9BmB,EAAenB,EAAM,QAErB,IACE,OAAOrB,KAAK2+B,gBAAgBt9B,EAAM,MAAMmhB,QAAQxiB,KAAK29B,eAAgB39B,KAAK49B,gBAC5E,CAAE,MAAOxyB,GACP,MAAIA,aAAchK,EACVgK,EAEApL,KAAK4+B,aAAav9B,EAAM+J,EAElC,CACF,EAEAtF,EAAO44B,OAAS,SAAgBr9B,EAAMgkB,GACpC7iB,EAAenB,EAAM,QACrBmB,EAAe6iB,EAAM,QAErB,IAGE,OAFcrlB,KAAK2+B,gBAAgBt9B,EAAM,MAAMmhB,QAAQxiB,KAAK29B,eAAgB39B,KAAK49B,iBAElExY,MAAMC,EACvB,CAAE,MAAOja,GACP,MAAIA,aAAchK,EACVgK,EAEApL,KAAK4+B,aAAav9B,EAAM+J,EAElC,CACF,EAEAtF,EAAO84B,aAAe,SAAsBv9B,EAAM+J,GAChD,IAAIyzB,EAQJ,OALEA,EADEx9B,EAAKgE,OAAS,GACThE,EAAKmK,UAAU,EAAG,IAAM,MAExBnK,EAGF,IAAID,EAAuB,SAAYy9B,EAAO,0BAA6BzzB,EAAG9K,QAASe,EAAM,EAAG+J,EACzG,EAEAtF,EAAO64B,gBAAkB,SAAyBt9B,EAAM8uB,GACtD,IAAIjP,EAAkB,MAAZiP,EAAmBA,EAAW,IAAI3V,EAAc,GAEtDtV,EAASlF,KAAK8+B,kBAAkBz9B,EAAM6f,GAE1C,GAAc,MAAVhc,GAAkBgc,EAAIrG,iBAAmB,GAAiB,MAAZsV,GAAoBjP,EAAIvG,WAAatZ,EAAKgE,OAAQ,CAClG,IAAIw5B,EAQJ,MALEA,EADEx9B,EAAKgE,OAAS,GACThE,EAAK6vB,OAAO,EAAG,IAAIrwB,WAAa,MAEhCQ,EAGL6f,EAAIrG,iBAAmB,EACnB,IAAIzZ,EAAuB,SAAYy9B,EAAO,kCAAqC3d,EAAIrG,gBAAiBxZ,EAAM6f,EAAIrG,iBAElH,IAAIzZ,EAAuB,SAAYy9B,EAAO,uDAA0D3d,EAAIvG,WAAYtZ,EAAM6f,EAAIvG,WAE5I,CAEA,OAAOzV,EAAOqjB,WAChB,EAEAziB,EAAOi5B,gBAAkB,SAAyB19B,EAAM8uB,GACtD,OAAOnwB,KAAK8+B,kBAAkBz9B,EAAM8uB,EACtC,EAEArqB,EAAOg5B,kBAAoB,SAA2Bz9B,EAAM8uB,GAC1D9tB,EAAe,MAARhB,EAAc,OAAQQ,GAC7BQ,EAAmB,MAAZ8tB,EAAkB,WAAYtuB,GACrC,IAAIouB,EAAU,IAAI3K,GAAqBtlB,MACnCkhB,EAAMiP,EAASxV,WAGnB,OAFAuG,EAAMlhB,KAAKk1B,eAAe/qB,MAAM8lB,EAAS5uB,EAAM6f,IAErC,GACRiP,EAASrV,eAAeoG,GACjB,OAGTiP,EAASvV,SAASsG,GACX+O,EAAQ/H,WACjB,EAEApiB,EAAO01B,iBAAmB,SAA0BlL,GAClD,OAAOtwB,KAAKk1B,eAAe1E,aAAaF,EAC1C,EAEAxqB,EAAOjF,SAAW,WAChB,IAAI6c,EAAU1d,KAAKk1B,eAAer0B,WAElC,OAAgC,IAAzB6c,EAAQC,QAAQ,KAAaD,EAAUA,EAAQlS,UAAU,EAAGkS,EAAQrY,OAAS,EACtF,EAEOkY,CACT,CA5LwB,GAyNpByhB,GAAW,SAAUjpB,GAuFvB,SAASipB,EAASjnB,EAAOknB,GACvB,IAAIz3B,EAKJ,OAHAA,EAAQuO,EAAkBtO,KAAKzH,OAASA,MAClCk/B,OAAS97B,EAASe,UAAU4T,GAClCvQ,EAAM23B,KAAO/7B,EAASe,UAAU86B,GACzBz3B,CACT,CA7FA1F,EAAek9B,EAAUjpB,GAEzBipB,EAASI,IAAM,SAAaC,GAC1B,OAAyB,IAArBz+B,UAAUyE,OACL25B,EAASM,OACc,IAArB1+B,UAAUyE,QAAgBg6B,aAAyBvhB,EACrDkhB,EAASO,UAAUF,GAEnBL,EAASQ,SAASH,EAE7B,EAEAL,EAASM,KAAO,WACd,OAAOt/B,KAAKw/B,SAASC,GAAMC,oBAC7B,EAEAV,EAASO,UAAY,SAAmB7qB,GAEtC,OADAlS,EAAekS,EAAM,QACd1U,KAAKw/B,SAASC,GAAME,OAAOjrB,GACpC,EAEAsqB,EAASQ,SAAW,SAAkBI,GACpCp9B,EAAeo9B,EAAO,SACtB,IAAIR,EAAMrmB,GAAUqmB,IAAIQ,GACxB,OAAOZ,EAASh2B,GAAGo2B,EAAIrnB,QAASqnB,EAAIH,aACtC,EAEAD,EAASh2B,GAAK,SAAY62B,EAAe76B,GACvC,OAAyB,IAArBpE,UAAUyE,QAAgBw6B,aAAyBtpB,EAC9CyoB,EAASc,cAAcD,EAAe76B,GAEtCg6B,EAASe,eAAeF,EAAe76B,EAElD,EAEAg6B,EAASc,cAAgB,SAAuB/nB,EAAOknB,GAIrD,GAHAz8B,EAAeuV,EAAO,SACtBnO,EAAYgJ,aAAaf,gBAAgBotB,GAErCA,EAAalnB,EAAMb,YACrB,MAAM,IAAIjW,EAAkB,6CAA+Cg+B,EAAa,2BAA6BlnB,EAAMlX,YAG7H,OAAO,IAAIm+B,EAASjnB,EAAMtV,QAASw8B,EACrC,EAEAD,EAASe,eAAiB,SAAwBhoB,EAAOknB,GAGvD,OAFAz8B,EAAeuV,EAAO,SACtBvV,EAAey8B,EAAY,cACpBD,EAASh2B,GAAGuN,EAAMvN,GAAG+O,GAAQknB,EACtC,EAEAD,EAAS51B,KAAO,SAAc7C,GAI5B,GAHA/D,EAAe+D,EAAU,YACzB5D,EAAgB4D,EAAU2O,EAAkB,YAExC3O,aAAoBy4B,EACtB,OAAOz4B,EAGT,IACE,OAAOy4B,EAASh2B,GAAGzC,EAASJ,IAAIyD,EAAYqJ,eAAgB1M,EAASJ,IAAIyD,EAAYgJ,cACvF,CAAE,MAAOxH,GACP,MAAM,IAAInK,EAAkB,oDAAsDsF,EAAW,WAAaA,GAAoC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IACnL,CACF,EAEA8+B,EAAS70B,MAAQ,SAAe9I,EAAMic,GACpC,OAAyB,IAArB1c,UAAUyE,OACL25B,EAASgB,YAAY3+B,GAErB29B,EAASiB,qBAAqB5+B,EAAMic,EAE/C,EAEA0hB,EAASgB,YAAc,SAAqB3+B,GAC1C,OAAO29B,EAASiB,qBAAqB5+B,EAAMu0B,GAC7C,EAEAoJ,EAASiB,qBAAuB,SAA8B5+B,EAAMic,GAIlE,OAHA9a,EAAenB,EAAM,QACrBmB,EAAe8a,EAAW,aAC1B3a,EAAgB2a,EAAWC,GAAmB,aACvCD,EAAUnT,MAAM9I,EAAM29B,EAASkB,KACxC,EAWA,IAAIp6B,EAASk5B,EAASl+B,UAyJtB,OAvJAgF,EAAOq6B,WAAa,WAClB,OAAOngC,KAAKk/B,MACd,EAEAp5B,EAAOiS,MAAQ,WACb,OAAOxB,EAAMvN,GAAGhJ,KAAKk/B,OACvB,EAEAp5B,EAAOm5B,WAAa,WAClB,OAAOj/B,KAAKm/B,IACd,EAEAr5B,EAAO6D,YAAc,SAAqBmI,GACxC,OAAIA,aAAiBlI,EACZkI,IAAUlI,EAAYqJ,eAAiBnB,IAAUlI,EAAYgJ,aAGtD,MAATd,GAAiBA,EAAMhL,cAAc9G,KAC9C,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,OAAIA,IAAUlI,EAAYqJ,cACjBnB,EAAMtB,QACJsB,IAAUlI,EAAYgJ,aACxB9B,EAAW9H,GAAG,EAAGhJ,KAAK+X,QAAQd,YAAajX,KAAK+X,QAAQb,aAG1DnB,EAAkBjV,UAAU0P,MAAM/I,KAAKzH,KAAM8R,EACtD,EAEAhM,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAKwQ,MAAMsB,GAAO1F,mBAAmBpM,KAAK+J,QAAQ+H,GAAQA,EACnE,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAGhC,GAFAtP,EAAesP,EAAO,SAElBA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYgJ,aACf,OAAO5S,KAAKm/B,KAEd,KAAKv1B,EAAYqJ,cACf,OAAOjT,KAAKk/B,OAGhB,MAAM,IAAIz9B,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOs6B,YAAc,SAAqB/V,GACxC,OAAkF,IAA5D,KAAdrqB,KAAKm/B,MAA+B,IAAhBn/B,KAAKk/B,SAAsC,IAAtBmB,GAAKC,OAAOjW,GAC/D,EAEAvkB,EAAOy6B,UAAY,SAAmBxoB,GACpC,OAAO/X,KAAKiK,KAAKsM,EAAMvN,GAAG+O,GAC5B,EAEAjS,EAAOmE,KAAO,SAAe8N,GAG3B,GAFAvV,EAAeuV,EAAO,SAElBA,EAAMtV,UAAYzC,KAAKk/B,OACzB,OAAOl/B,KAGT,IAAIi9B,EAAMr5B,KAAKqtB,IAAIjxB,KAAKm/B,KAAMpnB,EAAMb,aACpC,OAAO,IAAI8nB,EAASjnB,EAAMtV,QAASw6B,EACrC,EAEAn3B,EAAO06B,eAAiB,SAAwBvB,GAC9C,OAAIA,IAAej/B,KAAKm/B,KACfn/B,KAGFg/B,EAASh2B,GAAGhJ,KAAKk/B,OAAQD,EAClC,EAEAn5B,EAAOqP,MAAQ,SAAeC,GAI5B,OAHA5S,EAAe4S,EAAQ,SACvBzS,EAAgByS,EAAQE,EAAe,SAEnCF,IAAWjB,EAAgBG,aACtBuD,GAAcC,SAGhB/B,EAAkBjV,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EACtD,EAEAtP,EAAO6K,WAAa,SAAoBpK,GAGtC,OAFA/D,EAAe+D,EAAU,aACzBA,EAAWA,EAAS0D,KAAKL,EAAYqJ,cAAejT,KAAKk/B,SACzCj1B,KAAKL,EAAYgJ,aAAchP,KAAKqtB,IAAI1qB,EAASiK,MAAM5G,EAAYgJ,cAAclB,UAAW1R,KAAKm/B,MACnH,EAEAr5B,EAAO26B,OAAS,SAAgBpW,GAC9B,OAAOtR,GAAU/P,GAAGqhB,EAAMrqB,KAAKk/B,OAAQl/B,KAAKogC,YAAY/V,GAAQrqB,KAAKm/B,KAAO,GAC9E,EAEAr5B,EAAO2J,UAAY,SAAmBzJ,GACpCxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOg5B,EAAU,SACjC,IAAIrvB,EAAM3P,KAAKk/B,OAASl5B,EAAMm6B,aAM9B,OAJY,IAARxwB,IACFA,EAAM3P,KAAKm/B,KAAOn5B,EAAMi5B,cAGnBtvB,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAGhC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOg5B,EAAU,SAC1Bh/B,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAO66B,SAAW,SAAkB36B,GAGlC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOg5B,EAAU,SAC1Bh/B,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAOC,OAAS,SAAgBuU,GAC9B,GAAIta,OAASsa,EACX,OAAO,EAGT,GAAIA,aAAe0kB,EAAU,CAC3B,IAAIh5B,EAAQsU,EACZ,OAAOta,KAAKmgC,eAAiBn6B,EAAMm6B,cAAgBngC,KAAKi/B,eAAiBj5B,EAAMi5B,YACjF,CAEA,OAAO,CACT,EAEAn5B,EAAOjF,SAAW,WAChB,MAAO,MAAQb,KAAKk/B,OAAS,GAAK,IAAM,IAAMl/B,KAAKk/B,QAAUl/B,KAAKm/B,KAAO,GAAK,KAAO,KAAOn/B,KAAKm/B,IACnG,EAEAr5B,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAG9B,OAFA9a,EAAe8a,EAAW,aAC1B3a,EAAgB2a,EAAWC,GAAmB,aACvCD,EAAUD,OAAOrd,KAC1B,EAEOg/B,CACT,CA1Pe,CA0Pb9pB,GASE0rB,GAAY,SAAU7jB,GA+ExB,SAAS6jB,EAAUvW,EAAMtS,GACvB,IAAIvQ,EAKJ,OAHAA,EAAQuV,EAAUtV,KAAKzH,OAASA,MAC1B6gC,MAAQz9B,EAASe,UAAUkmB,GACjC7iB,EAAM03B,OAAS97B,EAASe,UAAU4T,GAC3BvQ,CACT,CArFA1F,EAAe8+B,EAAW7jB,GAE1B6jB,EAAUxB,IAAM,SAAaC,GAC3B,OAAyB,IAArBz+B,UAAUyE,OACLu7B,EAAUtB,OACa,IAArB1+B,UAAUyE,QAAgBg6B,aAAyBvhB,EACrD8iB,EAAUrB,UAAUF,GAEpBuB,EAAUpB,SAASH,EAE9B,EAEAuB,EAAUtB,KAAO,WACf,OAAOsB,EAAUpB,SAASC,GAAMC,oBAClC,EAEAkB,EAAUrB,UAAY,SAAmB7qB,GACvC,OAAOksB,EAAUpB,SAASC,GAAME,OAAOjrB,GACzC,EAEAksB,EAAUpB,SAAW,SAAkBI,GACrC,IAAIR,EAAMrmB,GAAUqmB,IAAIQ,GACxB,OAAOgB,EAAU53B,GAAGo2B,EAAI/U,OAAQ+U,EAAIrnB,QACtC,EAEA6oB,EAAU53B,GAAK,SAAYqhB,EAAMwV,GAC/B,OAAyB,IAArBj/B,UAAUyE,QAAgBw6B,aAAyBtpB,EAC9CqqB,EAAUE,cAAczW,EAAMwV,GAE9Be,EAAUb,eAAe1V,EAAMwV,EAE1C,EAEAe,EAAUE,cAAgB,SAAuBzW,EAAMtS,GAGrD,OAFAvV,EAAeuV,EAAO,SACtBpV,EAAgBoV,EAAOxB,EAAO,SACvBqqB,EAAUb,eAAe1V,EAAMtS,EAAMtV,QAC9C,EAEAm+B,EAAUb,eAAiB,SAAwB1V,EAAMtS,GAKvD,OAJAvV,EAAe6nB,EAAM,QACrB7nB,EAAeuV,EAAO,SACtBnO,EAAYuJ,KAAKtB,gBAAgBwY,GACjCzgB,EAAYqJ,cAAcpB,gBAAgBkG,GACnC,IAAI6oB,EAAUvW,EAAMtS,EAC7B,EAEA6oB,EAAUx3B,KAAO,SAAc7C,GAG7B,GAFA/D,EAAe+D,EAAU,YAErBA,aAAoBq6B,EACtB,OAAOr6B,EAGT,IACE,OAAOq6B,EAAU53B,GAAGzC,EAASJ,IAAIyD,EAAYuJ,MAAO5M,EAASJ,IAAIyD,EAAYqJ,eAC/E,CAAE,MAAO7H,GACP,MAAM,IAAInK,EAAkB,qDAAuDsF,EAAW,WAAaA,GAAoC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IACpL,CACF,EAEA0gC,EAAUz2B,MAAQ,SAAe9I,EAAMic,GACrC,OAAyB,IAArB1c,UAAUyE,OACLu7B,EAAUZ,YAAY3+B,GAEtBu/B,EAAUX,qBAAqB5+B,EAAMic,EAEhD,EAEAsjB,EAAUZ,YAAc,SAAqB3+B,GAC3C,OAAOu/B,EAAUX,qBAAqB5+B,EAAMw0B,GAC9C,EAEA+K,EAAUX,qBAAuB,SAA8B5+B,EAAMic,GAEnE,OADA9a,EAAe8a,EAAW,aACnBA,EAAUnT,MAAM9I,EAAMu/B,EAAUV,KACzC,EAWA,IAAIp6B,EAAS86B,EAAU9/B,UAoVvB,OAlVAgF,EAAO6D,YAAc,SAAqBuT,GACxC,OAAyB,IAArBtc,UAAUyE,QAAgB6X,aAAuB7M,EAC5CrQ,KAAK+gC,iBAAiB7jB,GAEtBld,KAAKghC,gBAAgB9jB,EAEhC,EAEApX,EAAOi7B,iBAAmB,SAA0BjvB,GAClD,OAAIA,aAAiBlI,EACZkI,IAAUlI,EAAYuJ,MAAQrB,IAAUlI,EAAYqJ,eAAiBnB,IAAUlI,EAAYq3B,iBAAmBnvB,IAAUlI,EAAYsJ,aAAepB,IAAUlI,EAAYwJ,IAGlK,MAATtB,GAAiBA,EAAMhL,cAAc9G,KAC9C,EAEA8F,EAAOk7B,gBAAkB,SAAyB56B,GAChD,OAAIA,aAAgBqD,EACXrD,IAASqD,EAAWoM,QAAUzP,IAASqD,EAAWmP,OAASxS,IAASqD,EAAWy3B,SAAW96B,IAASqD,EAAW03B,WAAa/6B,IAASqD,EAAW23B,WAAah7B,IAASqD,EAAW43B,KAG1K,MAARj7B,GAAgBA,EAAKU,cAAc9G,KAC5C,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,OAAIA,IAAUlI,EAAYsJ,YACjBlT,KAAKqqB,QAAU,EAAIvZ,EAAW9H,GAAG,EAAGq3B,GAAKiB,UAAY,GAAKxwB,EAAW9H,GAAG,EAAGq3B,GAAKiB,WAGlFvkB,EAAUjc,UAAU0P,MAAM/I,KAAKzH,KAAM8R,EAC9C,EAEAhM,EAAOK,IAAM,SAAa2L,GAGxB,OAFAtP,EAAesP,EAAO,SACtBnP,EAAgBmP,EAAOzB,EAAe,SAC/BrQ,KAAKwQ,MAAMsB,GAAO1F,mBAAmBpM,KAAK+J,QAAQ+H,GAAQA,EACnE,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAIhC,GAHAtP,EAAesP,EAAO,SACtBnP,EAAgBmP,EAAOzB,EAAe,SAElCyB,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYqJ,cACf,OAAOjT,KAAKk/B,OAEd,KAAKt1B,EAAYq3B,gBACf,OAAOjhC,KAAKuhC,qBAEd,KAAK33B,EAAYsJ,YACf,OAAOlT,KAAK6gC,MAAQ,EAAI,EAAI7gC,KAAK6gC,MAAQ7gC,KAAK6gC,MAEhD,KAAKj3B,EAAYuJ,KACf,OAAOnT,KAAK6gC,MAEd,KAAKj3B,EAAYwJ,IACf,OAAOpT,KAAK6gC,MAAQ,EAAI,EAAI,EAGhC,MAAM,IAAIp/B,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOy7B,mBAAqB,WAC1B,OAAOn+B,EAASa,QAAQb,EAASiB,aAAarE,KAAK6gC,MAAO,IAAK7gC,KAAKk/B,OAAS,EAC/E,EAEAp5B,EAAOukB,KAAO,WACZ,OAAOrqB,KAAK6gC,KACd,EAEA/6B,EAAOq6B,WAAa,WAClB,OAAOngC,KAAKk/B,MACd,EAEAp5B,EAAOiS,MAAQ,WACb,OAAOxB,EAAMvN,GAAGhJ,KAAKk/B,OACvB,EAEAp5B,EAAO8jB,WAAa,WAClB,OAAO/R,GAAc+R,WAAW5pB,KAAK6gC,MACvC,EAEA/6B,EAAO07B,WAAa,SAAoBvC,GACtC,OAAOA,GAAc,GAAKA,GAAcj/B,KAAKyhC,eAC/C,EAEA37B,EAAO27B,cAAgB,WACrB,OAAOzhC,KAAK+X,QAAQ1S,OAAOrF,KAAK4pB,aAClC,EAEA9jB,EAAO47B,aAAe,WACpB,OAAO1hC,KAAK4pB,aAAe,IAAM,GACnC,EAEA9jB,EAAOmE,KAAO,SAAe03B,EAAiBl/B,GAC5C,OAAyB,IAArB7B,UAAUyE,OACLrF,KAAK2c,aAAaglB,GAElB3hC,KAAK4c,eAAe+kB,EAAiBl/B,EAEhD,EAEAqD,EAAO6W,aAAe,SAAsBE,GAE1C,OADAra,EAAeqa,EAAU,YAClBA,EAASlM,WAAW3Q,KAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAIrD,GAHApO,EAAesP,EAAO,SACtBnP,EAAgBmP,EAAOzB,EAAe,SAElCyB,aAAiBlI,EAAa,CAChC,IAAIg4B,EAAI9vB,EAGR,OAFA8vB,EAAE/vB,gBAAgBjB,GAEVgxB,GACN,KAAKh4B,EAAYqJ,cACf,OAAOjT,KAAKugC,UAAU3vB,GAExB,KAAKhH,EAAYq3B,gBACf,OAAOjhC,KAAK0Z,WAAW9I,EAAW5Q,KAAK+J,QAAQH,EAAYq3B,kBAE7D,KAAKr3B,EAAYsJ,YACf,OAAOlT,KAAK6hC,SAAS7hC,KAAK6gC,MAAQ,EAAI,EAAIjwB,EAAWA,GAEvD,KAAKhH,EAAYuJ,KACf,OAAOnT,KAAK6hC,SAASjxB,GAEvB,KAAKhH,EAAYwJ,IACf,OAAOpT,KAAK+J,QAAQH,EAAYwJ,OAASxC,EAAW5Q,KAAOA,KAAK6hC,SAAS,EAAI7hC,KAAK6gC,OAGtF,MAAM,IAAIp/B,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAO+7B,SAAW,SAAkBxX,GAElC,OADAzgB,EAAYuJ,KAAKtB,gBAAgBwY,GAC1B,IAAIuW,EAAUvW,EAAMrqB,KAAKk/B,OAClC,EAEAp5B,EAAOy6B,UAAY,SAAmBxoB,GAEpC,OADAnO,EAAYqJ,cAAcpB,gBAAgBkG,GACnC,IAAI6oB,EAAU5gC,KAAK6gC,MAAO9oB,EACnC,EAEAjS,EAAO2W,WAAa,SAAoBxT,GAGtC,OAFAzG,EAAeyG,EAAQ,UACvBtG,EAAgBsG,EAAQ/C,EAAgB,UACjC+C,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAI3D,GAHA5D,EAAe4D,EAAM,QACrBzD,EAAgByD,EAAMK,EAAc,QAEhCL,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWoM,OACd,OAAO7V,KAAK0Z,WAAWhN,GAEzB,KAAKjD,EAAWmP,MACd,OAAO5Y,KAAKwZ,UAAU9M,GAExB,KAAKjD,EAAWy3B,QACd,OAAOlhC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,KAE3D,KAAKjD,EAAW03B,UACd,OAAOnhC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,MAE3D,KAAKjD,EAAW23B,UACd,OAAOphC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,MAE3D,KAAKjD,EAAW43B,KACd,OAAOrhC,KAAKiK,KAAKL,EAAYwJ,IAAKhQ,EAASa,QAAQjE,KAAK+J,QAAQH,EAAYwJ,KAAM1G,IAGtF,MAAM,IAAIjL,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAO0T,UAAY,SAAmBC,GACpC,GAAmB,IAAfA,EACF,OAAOzZ,KAGT,IAAI8hC,EAAUl4B,EAAYuJ,KAAK/G,mBAAmBpM,KAAK6gC,MAAQpnB,GAC/D,OAAOzZ,KAAK6hC,SAASC,EACvB,EAEAh8B,EAAO4T,WAAa,SAAoBC,GACtC,GAAoB,IAAhBA,EACF,OAAO3Z,KAGT,IACI+hC,EAD0B,GAAb/hC,KAAK6gC,OAAc7gC,KAAKk/B,OAAS,GACpBvlB,EAG9B,OAAO,IAAIinB,EAFGh3B,EAAYuJ,KAAK/G,mBAAmBhJ,EAASW,SAASg+B,EAAY,KACjE3+B,EAASY,SAAS+9B,EAAY,IAAM,EAErD,EAEAj8B,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAClE,OAAO6H,IAAqB7K,EAASD,iBAAmBnD,KAAKwM,eAAepJ,EAASF,iBAAkBkD,GAAMoG,eAAe,EAAGpG,GAAQpG,KAAKwM,gBAAgByB,EAAkB7H,EAChL,EAEAN,EAAO8T,WAAa,SAAoBC,GACtC,OAAOA,IAAoBzW,EAASD,iBAAmBnD,KAAKwZ,UAAUpW,EAASD,kBAAkBqW,UAAU,GAAKxZ,KAAKwZ,WAAWK,EAClI,EAEA/T,EAAOgU,YAAc,SAAqBC,GACxC,OAAOA,IAAqB3W,EAASD,iBAAmBnD,KAAK0Z,WAAW9V,KAAKV,kBAAkBwW,WAAW,GAAK1Z,KAAK0Z,YAAYK,EAClI,EAEAjU,EAAOqP,MAAQ,SAAeC,GAI5B,OAHA5S,EAAe4S,EAAQ,SACvBzS,EAAgByS,EAAQE,EAAe,SAEnCF,IAAWjB,EAAgBG,aACtBuD,GAAcC,SACZ1C,IAAWjB,EAAgBK,YAC7B/K,EAAWoM,OACTT,IAAWjB,EAAgBW,aAAeM,IAAWjB,EAAgBa,aAAeI,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBS,SAC7L,KAGFmI,EAAUjc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC9C,EAEAtP,EAAO6K,WAAa,SAAoBpK,GAGtC,OAFA/D,EAAe+D,EAAU,YACzB5D,EAAgB4D,EAAU8V,EAAU,YAC7B9V,EAAS0D,KAAKL,EAAYq3B,gBAAiBjhC,KAAKuhC,qBACzD,EAEAz7B,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C5D,EAAe+G,EAAc,gBAC7B/G,EAAe4D,EAAM,QACrBzD,EAAgB4G,EAAc8S,EAAU,gBACxC1Z,EAAgByD,EAAMK,EAAc,QACpC,IAAIg3B,EAAMmD,EAAUx3B,KAAKG,GAEzB,GAAInD,aAAgBqD,EAAY,CAC9B,IAAIu4B,EAAcvE,EAAI8D,qBAAuBvhC,KAAKuhC,qBAElD,OAAQn7B,GACN,KAAKqD,EAAWoM,OACd,OAAOmsB,EAET,KAAKv4B,EAAWmP,MACd,OAAOopB,EAAc,GAEvB,KAAKv4B,EAAWy3B,QACd,OAAOc,EAAc,IAEvB,KAAKv4B,EAAW03B,UACd,OAAOa,EAAc,KAEvB,KAAKv4B,EAAW23B,UACd,OAAOY,EAAc,KAEvB,KAAKv4B,EAAW43B,KACd,OAAO5D,EAAI1zB,QAAQH,EAAYwJ,KAAOpT,KAAK+J,QAAQH,EAAYwJ,KAGnE,MAAM,IAAI3R,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAOm8B,MAAQ,SAAehD,GAC5B,OAAOlmB,GAAU/P,GAAGhJ,KAAK6gC,MAAO7gC,KAAKk/B,OAAQD,EAC/C,EAEAn5B,EAAOo8B,aAAe,WACpB,OAAOnpB,GAAU/P,GAAGhJ,KAAK6gC,MAAO7gC,KAAKk/B,OAAQl/B,KAAKyhC,gBACpD,EAEA37B,EAAO2J,UAAY,SAAmBzJ,GACpCxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAO46B,EAAW,SAClC,IAAIjxB,EAAM3P,KAAK6gC,MAAQ76B,EAAMqkB,OAM7B,OAJY,IAAR1a,IACFA,EAAM3P,KAAKk/B,OAASl5B,EAAMm6B,cAGrBxwB,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAChC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAO66B,SAAW,SAAkB36B,GAClC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAOC,OAAS,SAAgBuU,GAC9B,GAAIta,OAASsa,EACX,OAAO,EAGT,GAAIA,aAAesmB,EAAW,CAC5B,IAAI56B,EAAQsU,EACZ,OAAOta,KAAKqqB,SAAWrkB,EAAMqkB,QAAUrqB,KAAKmgC,eAAiBn6B,EAAMm6B,YACrE,CAEA,OAAO,CACT,EAEAr6B,EAAOjF,SAAW,WAChB,OAAOg1B,GAASxY,OAAOrd,KACzB,EAEA8F,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAE9B,OADA9a,EAAe8a,EAAW,aACnBA,EAAUD,OAAOrd,KAC1B,EAEO4gC,CACT,CA7agB,CA6advkB,GASEgkB,GAAO,SAAUtjB,GAGnB,SAASsjB,EAAK59B,GACZ,IAAI+E,EAIJ,OAFAA,EAAQuV,EAAUtV,KAAKzH,OAASA,MAC1B6gC,MAAQz9B,EAASe,UAAU1B,GAC1B+E,CACT,CARA1F,EAAeu+B,EAAMtjB,GAUrB,IAAIjX,EAASu6B,EAAKv/B,UAgXlB,OA9WAgF,EAAOrD,MAAQ,WACb,OAAOzC,KAAK6gC,KACd,EAEAR,EAAKjB,IAAM,SAAaC,GAKtB,YAJsB,IAAlBA,IACFA,OAAgB/jB,QAGIA,IAAlB+jB,EACKgB,EAAKf,OACHD,aAAyBvhB,EAC3BuiB,EAAKd,UAAUF,GAEfgB,EAAKb,SAASH,EAEzB,EAEAgB,EAAKf,KAAO,WACV,OAAOe,EAAKb,SAASC,GAAMC,oBAC7B,EAEAW,EAAKd,UAAY,SAAmB7qB,GAGlC,OAFAlS,EAAekS,EAAM,QACrB/R,EAAgB+R,EAAMoJ,EAAQ,QACvBuiB,EAAKb,SAASC,GAAME,OAAOjrB,GACpC,EAEA2rB,EAAKb,SAAW,SAAkBI,GAChCp9B,EAAeo9B,EAAO,SACtBj9B,EAAgBi9B,EAAOH,GAAO,SAC9B,IAAIL,EAAMrmB,GAAUqmB,IAAIQ,GACxB,OAAOS,EAAKr3B,GAAGo2B,EAAI/U,OACrB,EAEAgW,EAAKr3B,GAAK,SAAYm5B,GAGpB,OAFA3/B,EAAe2/B,EAAS,WACxBv4B,EAAYuJ,KAAKtB,gBAAgBswB,GAC1B,IAAI9B,EAAK8B,EAClB,EAEA9B,EAAKj3B,KAAO,SAAc7C,GAIxB,GAHA/D,EAAe+D,EAAU,YACzB5D,EAAgB4D,EAAU2O,EAAkB,YAExC3O,aAAoB85B,EACtB,OAAO95B,EAGT,IACE,OAAO85B,EAAKr3B,GAAGzC,EAASJ,IAAIyD,EAAYuJ,MAC1C,CAAE,MAAO/H,GACP,MAAM,IAAInK,EAAkB,gDAAkDsF,EAAW,WAAaA,GAAoC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IAC/K,CACF,EAEAmgC,EAAKl2B,MAAQ,SAAe9I,EAAMic,GAChC,OAAI1c,UAAUyE,QAAU,EACfg7B,EAAK5L,UAAUpzB,GAEfg/B,EAAK+B,mBAAmB/gC,EAAMic,EAEzC,EAEA+iB,EAAK5L,UAAY,SAAmBpzB,GAElC,OADAmB,EAAenB,EAAM,QACdg/B,EAAKl2B,MAAM9I,EAAMy0B,GAC1B,EAEAuK,EAAK+B,mBAAqB,SAA4B/gC,EAAMic,GAQ1D,YAPkB,IAAdA,IACFA,EAAYwY,IAGdtzB,EAAenB,EAAM,QACrBmB,EAAe8a,EAAW,aAC1B3a,EAAgB2a,EAAWC,GAAmB,aACvCD,EAAUnT,MAAM9I,EAAMg/B,EAAKH,KACpC,EAEAG,EAAKC,OAAS,SAAgBjW,GAC5B,OAAoC,IAA7BjnB,EAASO,OAAO0mB,EAAM,KAA4C,IAA/BjnB,EAASO,OAAO0mB,EAAM,MAA6C,IAA/BjnB,EAASO,OAAO0mB,EAAM,KACtG,EAEAvkB,EAAO6D,YAAc,SAAqBuT,GACxC,OAAyB,IAArBtc,UAAUyE,QAAgB6X,aAAuB7M,EAC5CrQ,KAAK+gC,iBAAiB7jB,GAEtBld,KAAKghC,gBAAgB9jB,EAEhC,EAEApX,EAAOi7B,iBAAmB,SAA0BjvB,GAClD,OAAIA,aAAiBlI,EACZkI,IAAUlI,EAAYuJ,MAAQrB,IAAUlI,EAAYsJ,aAAepB,IAAUlI,EAAYwJ,IAGlF,MAATtB,GAAiBA,EAAMhL,cAAc9G,KAC9C,EAEA8F,EAAOk7B,gBAAkB,SAAyB56B,GAChD,OAAIA,aAAgBqD,EACXrD,IAASqD,EAAWmP,OAASxS,IAASqD,EAAWy3B,SAAW96B,IAASqD,EAAW03B,WAAa/6B,IAASqD,EAAW23B,WAAah7B,IAASqD,EAAW43B,KAG5I,MAARj7B,GAAgBA,EAAKU,cAAc9G,KAC5C,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,GAAI9R,KAAK2J,YAAYmI,GACnB,OAAOA,EAAMtB,QACR,GAAIsB,aAAiBlI,EAC1B,MAAM,IAAInI,EAAiC,sBAAwBqQ,GAGrE,OAAOiL,EAAUjc,UAAU0P,MAAM/I,KAAKzH,KAAM8R,EAC9C,EAEAhM,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAKwQ,MAAMsB,GAAO1F,mBAAmBpM,KAAK+J,QAAQ+H,GAAQA,EACnE,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAGhC,GAFAtP,EAAesP,EAAO,SAElBA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYsJ,YACf,OAAOlT,KAAK6gC,MAAQ,EAAI,EAAI7gC,KAAK6gC,MAAQ7gC,KAAK6gC,MAEhD,KAAKj3B,EAAYuJ,KACf,OAAOnT,KAAK6gC,MAEd,KAAKj3B,EAAYwJ,IACf,OAAOpT,KAAK6gC,MAAQ,EAAI,EAAI,EAGhC,MAAM,IAAIp/B,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOw6B,OAAS,WACd,OAAOD,EAAKC,OAAOtgC,KAAK6gC,MAC1B,EAEA/6B,EAAO6W,aAAe,SAAsBE,GAE1C,OADAra,EAAeqa,EAAU,YAClBA,EAASlM,WAAW3Q,KAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAIrD,GAHApO,EAAesP,EAAO,SACtBnP,EAAgBmP,EAAOzB,EAAe,SAElCyB,aAAiBlI,EAAa,CAGhC,OAFAkI,EAAMD,gBAAgBjB,GAEdkB,GACN,KAAKlI,EAAYsJ,YACf,OAAOmtB,EAAKr3B,GAAGhJ,KAAK6gC,MAAQ,EAAI,EAAIjwB,EAAWA,GAEjD,KAAKhH,EAAYuJ,KACf,OAAOktB,EAAKr3B,GAAG4H,GAEjB,KAAKhH,EAAYwJ,IACf,OAAOpT,KAAK+J,QAAQH,EAAYwJ,OAASxC,EAAW5Q,KAAOqgC,EAAKr3B,GAAG,EAAIhJ,KAAK6gC,OAGhF,MAAM,IAAIp/B,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAO2W,WAAa,SAAoBxT,GAGtC,OAFAzG,EAAeyG,EAAQ,UACvBtG,EAAgBsG,EAAQ/C,EAAgB,UACjC+C,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAK3D,GAJA5D,EAAekK,EAAa,eAC5BlK,EAAe4D,EAAM,QACrBzD,EAAgByD,EAAMK,EAAc,QAEhCL,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWmP,MACd,OAAO5Y,KAAKwZ,UAAU9M,GAExB,KAAKjD,EAAWy3B,QACd,OAAOlhC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,KAE3D,KAAKjD,EAAW03B,UACd,OAAOnhC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,MAE3D,KAAKjD,EAAW23B,UACd,OAAOphC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,MAE3D,KAAKjD,EAAW43B,KACd,OAAOrhC,KAAKiK,KAAKL,EAAYwJ,IAAKhQ,EAASa,QAAQjE,KAAK+J,QAAQH,EAAYwJ,KAAM1G,IAGtF,MAAM,IAAIjL,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAO0T,UAAY,SAAmBC,GACpC,OAAmB,IAAfA,EACKzZ,KAGFqgC,EAAKr3B,GAAGY,EAAYuJ,KAAK/G,mBAAmBhJ,EAASa,QAAQjE,KAAK6gC,MAAOpnB,IAClF,EAEA3T,EAAO0W,YAAc,SAAqBvT,GAGxC,OAFAzG,EAAeyG,EAAQ,UACvBtG,EAAgBsG,EAAQ/C,EAAgB,UACjC+C,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAIlE,OAHA5D,EAAeyL,EAAkB,oBACjCzL,EAAe4D,EAAM,QACrBzD,EAAgByD,EAAMK,EAAc,QAC7BwH,IAAqB7K,EAASD,iBAAmBnD,KAAKmJ,KAAK/F,EAASF,iBAAkBkD,GAAM+C,KAAK,EAAG/C,GAAQpG,KAAKmJ,MAAM8E,EAAkB7H,EAClJ,EAEAN,EAAO8T,WAAa,SAAoBC,GACtC,OAAOA,IAAoBzW,EAASD,iBAAmBnD,KAAKwZ,UAAUpW,EAASF,kBAAkBsW,UAAU,GAAKxZ,KAAKwZ,WAAWK,EAClI,EAEA/T,EAAO6K,WAAa,SAAoBpK,GAEtC,OADA/D,EAAe+D,EAAU,YAClBA,EAAS0D,KAAKL,EAAYuJ,KAAMnT,KAAK6gC,MAC9C,EAEA/6B,EAAOu8B,gBAAkB,SAAyBC,GAChD,OAAmB,MAAZA,GAAoBA,EAASlC,YAAYpgC,KAAK6gC,MACvD,EAEA/6B,EAAOT,OAAS,WACd,OAAOrF,KAAKsgC,SAAW,IAAM,GAC/B,EAEAx6B,EAAOm8B,MAAQ,SAAejY,GAC5B,OAAOjR,GAAUwpB,UAAUviC,KAAK6gC,MAAO7W,EACzC,EAEAlkB,EAAO08B,QAAU,SAAiB3C,GAChC,OAAyB,IAArBj/B,UAAUyE,QAAgBw6B,aAAyBtpB,EAC9CvW,KAAKyiC,aAAa5C,GAElB7/B,KAAK0iC,cAAc7C,EAE9B,EAEA/5B,EAAO28B,aAAe,SAAsB1qB,GAG1C,OAFAvV,EAAeuV,EAAO,SACtBpV,EAAgBoV,EAAOxB,EAAO,SACvBqqB,GAAU53B,GAAGhJ,KAAK6gC,MAAO9oB,EAClC,EAEAjS,EAAO48B,cAAgB,SAAuB3qB,GAE5C,OADAvV,EAAeuV,EAAO,SACf6oB,GAAU53B,GAAGhJ,KAAK6gC,MAAO9oB,EAClC,EAEAjS,EAAO68B,WAAa,SAAoBL,GAGtC,OAFA9/B,EAAe8/B,EAAU,YACzB3/B,EAAgB2/B,EAAUtD,GAAU,YAC7BsD,EAAS7B,OAAOzgC,KAAK6gC,MAC9B,EAEA/6B,EAAOqP,MAAQ,SAAeC,GAI5B,OAHA5S,EAAe4S,EAAQ,WACvBzS,EAAgByS,EAAQE,EAAe,WAEnCF,IAAWjB,EAAgBG,aACtBuD,GAAcC,SACZ1C,IAAWjB,EAAgBK,YAC7B/K,EAAWmP,MACTxD,IAAWjB,EAAgBW,aAAeM,IAAWjB,EAAgBa,aAAeI,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBS,SAC7L,KAGFmI,EAAUjc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC9C,EAEAtP,EAAO2J,UAAY,SAAmBzJ,GAGpC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOq6B,EAAM,SACtBrgC,KAAK6gC,MAAQ76B,EAAM66B,KAC5B,EAEA/6B,EAAO46B,QAAU,SAAiB16B,GAGhC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOq6B,EAAM,SACtBrgC,KAAK6gC,MAAQ76B,EAAM66B,KAC5B,EAEA/6B,EAAO66B,SAAW,SAAkB36B,GAGlC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOq6B,EAAM,SACtBrgC,KAAK6gC,MAAQ76B,EAAM66B,KAC5B,EAEA/6B,EAAOuX,OAAS,SAAgBC,GAG9B,OAFA9a,EAAe8a,EAAW,aAC1B3a,EAAgB2a,EAAWC,GAAmB,aACvCD,EAAUD,OAAOrd,KAC1B,EAEA8F,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiBq6B,GACZrgC,KAAKyC,UAAYuD,EAAMvD,OAIlC,EAEAqD,EAAOjF,SAAW,WAChB,MAAO,GAAKb,KAAK6gC,KACnB,EAEA/6B,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C,IAAIq3B,EAAM4C,EAAKj3B,KAAKG,GAEpB,GAAInD,aAAgBqD,EAAY,CAC9B,IAAIm5B,EAAanF,EAAIh7B,QAAUzC,KAAKyC,QAEpC,OAAQ2D,GACN,KAAKqD,EAAWmP,MACd,OAAOgqB,EAET,KAAKn5B,EAAWy3B,QACd,OAAO99B,EAASC,OAAOu/B,EAAY,IAErC,KAAKn5B,EAAW03B,UACd,OAAO/9B,EAASC,OAAOu/B,EAAY,KAErC,KAAKn5B,EAAW23B,UACd,OAAOh+B,EAASC,OAAOu/B,EAAY,KAErC,KAAKn5B,EAAW43B,KACd,OAAO5D,EAAI1zB,QAAQH,EAAYwJ,KAAOpT,KAAK+J,QAAQH,EAAYwJ,KAGnE,MAAM,IAAI3R,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEO4C,CACT,CA5XW,CA4XThkB,GAWEwmB,GAAoB,WACtB,SAASA,IAAqB,CAyD9B,OAvDAA,EAAkBC,gBAAkB,WAClC,OAAOC,GAAKC,kBACd,EAEAH,EAAkBI,eAAiB,WACjC,OAAOF,GAAKG,iBACd,EAEAL,EAAkBM,oBAAsB,WACtC,OAAOJ,GAAKK,uBACd,EAEAP,EAAkB1rB,eAAiB,WACjC,OAAO4rB,GAAKM,iBACd,EAEAR,EAAkBS,cAAgB,WAChC,OAAOP,GAAKQ,gBACd,EAEAV,EAAkBW,mBAAqB,WACrC,OAAOT,GAAKU,sBACd,EAEAZ,EAAkBa,aAAe,SAAsBttB,GAErD,OADA5T,EAAe4T,EAAW,aACnB,IAAIutB,GAAiB,EAAGvtB,EACjC,EAEAysB,EAAkBe,YAAc,SAAqBxtB,GAEnD,OADA5T,EAAe4T,EAAW,aACnB,IAAIutB,IAAkB,EAAGvtB,EAClC,EAEAysB,EAAkBgB,iBAAmB,SAA0B7tB,EAASI,GAEtE,OADA5T,EAAe4T,EAAW,aACnB,IAAIutB,GAAiB3tB,EAASI,EACvC,EAEAysB,EAAkBiB,KAAO,SAAc1tB,GACrC,OAAO,IAAI2tB,GAAkB,EAAG3tB,EAClC,EAEAysB,EAAkBmB,WAAa,SAAoB5tB,GACjD,OAAO,IAAI2tB,GAAkB,EAAG3tB,EAClC,EAEAysB,EAAkBoB,SAAW,SAAkB7tB,GAC7C,OAAO,IAAI2tB,GAAkB,EAAG3tB,EAClC,EAEAysB,EAAkBqB,eAAiB,SAAwB9tB,GACzD,OAAO,IAAI2tB,GAAkB,EAAG3tB,EAClC,EAEOysB,CACT,CA3DwB,GA6DpBE,GAAO,SAAUoB,GAGnB,SAASpB,EAAK/sB,GACZ,IAAIxO,EAIJ,OAFAA,EAAQ28B,EAAkB18B,KAAKzH,OAASA,MAClCiW,SAAWD,EACVxO,CACT,CA4BA,OApCA1F,EAAeihC,EAAMoB,GAURpB,EAAKjiC,UAEX6P,WAAa,SAAoBpK,GACtC,OAAQvG,KAAKiW,UACX,KAAK,EACH,OAAO1P,EAAS0D,KAAKL,EAAYgJ,aAAc,GAEjD,KAAK,EACH,OAAOrM,EAAS0D,KAAKL,EAAYgJ,aAAcrM,EAASiK,MAAM5G,EAAYgJ,cAAclB,WAE1F,KAAK,EACH,OAAOnL,EAAS0D,KAAKL,EAAYgJ,aAAc,GAAGzJ,KAAK,EAAGM,EAAWoM,QAEvE,KAAK,EACH,OAAOtP,EAAS0D,KAAKL,EAAYiJ,YAAa,GAEhD,KAAK,EACH,OAAOtM,EAAS0D,KAAKL,EAAYiJ,YAAatM,EAASiK,MAAM5G,EAAYiJ,aAAanB,WAExF,KAAK,EACH,OAAOnL,EAAS0D,KAAKL,EAAYiJ,YAAa,GAAG1J,KAAK,EAAGM,EAAWmP,OAGxE,MAAM,IAAIhX,EAAsB,cAClC,EAEOmhC,CACT,CAtCW,CAsCT3mB,GAEF2mB,GAAKC,mBAAqB,IAAID,GAAK,GACnCA,GAAKG,kBAAoB,IAAIH,GAAK,GAClCA,GAAKK,wBAA0B,IAAIL,GAAK,GACxCA,GAAKM,kBAAoB,IAAIN,GAAK,GAClCA,GAAKQ,iBAAmB,IAAIR,GAAK,GACjCA,GAAKU,uBAAyB,IAAIV,GAAK,GAEvC,IAAIY,GAAmB,SAAUS,GAG/B,SAAST,EAAiB3tB,EAASmW,GACjC,IAAIkY,EAKJ,OAHAA,EAASD,EAAmB38B,KAAKzH,OAASA,MACnCiW,SAAWD,EAClBquB,EAAOC,UAAYnY,EAAI1pB,QAChB4hC,CACT,CAuBA,OAhCAviC,EAAe6hC,EAAkBS,GAWnBT,EAAiB7iC,UAEvB6P,WAAa,SAAoBpK,GACvC,GAAIvG,KAAKiW,UAAY,EAAG,CACtB,IAAIqW,EAAO/lB,EAAS0D,KAAKL,EAAYgJ,aAAc,GAC/C2xB,EAASjY,EAAKnmB,IAAIyD,EAAY6I,aAC9B+xB,EAAUphC,EAASO,OAAO3D,KAAKskC,UAAYC,EAAS,EAAG,GAE3D,OADAC,GAAiC,GAArBxkC,KAAKiW,SAAW,GACrBqW,EAAKnjB,KAAKq7B,EAAS/6B,EAAWkD,KACvC,CACE,IAAI83B,EAAQl+B,EAAS0D,KAAKL,EAAYgJ,aAAcrM,EAASiK,MAAM5G,EAAYgJ,cAAclB,WAEzFgzB,EAAUD,EAAMt+B,IAAIyD,EAAY6I,aAEhCkyB,EAAW3kC,KAAKskC,UAAYI,EAGhC,OAFAC,EAAwB,IAAbA,EAAiB,EAAIA,EAAW,EAAIA,EAAW,EAAIA,EAC9DA,GAAmC,IAArB3kC,KAAKiW,SAAW,GACvBwuB,EAAMt7B,KAAKw7B,EAAUl7B,EAAWkD,KAE3C,EAEOg3B,CACT,CAlCuB,CAkCrBvnB,GAEE2nB,GAAoB,SAAUa,GAGhC,SAASb,EAAkBc,EAAUzuB,GACnC,IAAI0uB,EAMJ,OAJAA,EAASF,EAAmBn9B,KAAKzH,OAASA,KAC1CwC,EAAe4T,EAAW,aAC1B0uB,EAAOC,UAAYF,EACnBC,EAAOR,UAAYluB,EAAU3T,QACtBqiC,CACT,CAqBA,OA/BAhjC,EAAeiiC,EAAmBa,GAYpBb,EAAkBjjC,UAExB6P,WAAa,SAAoBpK,GACvC,IAAIy+B,EAASz+B,EAASJ,IAAIyD,EAAY6I,aAEtC,GAAIzS,KAAK+kC,UAAY,GAAKC,IAAWhlC,KAAKskC,UACxC,OAAO/9B,EAGT,GAA6B,IAAP,EAAjBvG,KAAK+kC,WAAsB,CAC9B,IAAIJ,EAAWK,EAAShlC,KAAKskC,UAC7B,OAAO/9B,EAAS4C,KAAKw7B,GAAY,EAAI,EAAIA,GAAYA,EAAUl7B,EAAWkD,KAC5E,CACE,IAAIs4B,EAAYjlC,KAAKskC,UAAYU,EAEjC,OAAOz+B,EAASqH,MAAMq3B,GAAa,EAAI,EAAIA,GAAaA,EAAWx7B,EAAWkD,KAElF,EAEOo3B,CACT,CAjCwB,CAiCtB3nB,GAEEvE,GAAgB,SAAUtC,GAG5B,SAASsC,IACP,OAAOtC,EAAM5U,MAAMX,KAAMY,YAAcZ,IACzC,CAJA8B,EAAe+V,EAAetC,GAM9BsC,EAAc+R,WAAa,SAAoBsb,GAC7C,OAA+B,IAAP,EAAhBA,KAA6BA,EAAgB,KAAQ,GAAKA,EAAgB,KAAQ,EAC5F,EAEA,IAAIp/B,EAAS+R,EAAc/W,UA+J3B,OA7JAgF,EAAOq/B,kBAAoB,SAA2BtjB,EAAa/P,EAAOrP,GACxED,EAAeqf,EAAa,eAC5Brf,EAAesP,EAAO,SACtB,IAAIszB,EAAUvjB,EAAY1b,IAAI2L,GAE9B,GAAe,MAAXszB,GAAmBA,IAAY3iC,EACjC,MAAM,IAAIxB,EAAkB,yBAA2B6Q,EAAQ,IAAMszB,EAAU,mBAAqBtzB,EAAQ,IAAMrP,GAGpHof,EAAYtG,IAAIzJ,EAAOrP,EACzB,EAEAqD,EAAOkd,YAAc,SAAqBnB,EAAaY,GACrD,GAAIZ,EAAYzG,YAAYxR,EAAYkJ,WACtC,OAAOiG,GAAUoE,WAAW0E,EAAYjG,OAAOhS,EAAYkJ,YAG7D,IAAIuyB,EAAiBxjB,EAAYjG,OAAOhS,EAAYq3B,iBAE9B,MAAlBoE,IACE5iB,IAAkBzG,EAAcG,SAClCvS,EAAYq3B,gBAAgBpvB,gBAAgBwzB,GAG9CrlC,KAAKmlC,kBAAkBtjB,EAAajY,EAAYqJ,cAAe7P,EAASY,SAASqhC,EAAgB,IAAM,GAEvGrlC,KAAKmlC,kBAAkBtjB,EAAajY,EAAYuJ,KAAM/P,EAASW,SAASshC,EAAgB,MAG1F,IAAIC,EAAUzjB,EAAYjG,OAAOhS,EAAYsJ,aAE7C,GAAe,MAAXoyB,EAAiB,CACf7iB,IAAkBzG,EAAcG,SAClCvS,EAAYsJ,YAAYrB,gBAAgByzB,GAG1C,IAAIC,EAAM1jB,EAAYjG,OAAOhS,EAAYwJ,KAEzC,GAAW,MAAPmyB,EAAa,CACf,IAAIlb,EAAOxI,EAAY1b,IAAIyD,EAAYuJ,MAEnCsP,IAAkBzG,EAAcC,OACtB,MAARoO,EACFrqB,KAAKmlC,kBAAkBtjB,EAAajY,EAAYuJ,KAAMkX,EAAO,EAAIib,EAAUliC,EAASgB,aAAa,EAAGkhC,IAEpGzjB,EAAYtG,IAAI3R,EAAYsJ,YAAaoyB,GAG3CtlC,KAAKmlC,kBAAkBtjB,EAAajY,EAAYuJ,KAAc,MAARkX,GAAgBA,EAAO,EAAIib,EAAUliC,EAASgB,aAAa,EAAGkhC,GAExH,MAAO,GAAY,IAARC,EACTvlC,KAAKmlC,kBAAkBtjB,EAAajY,EAAYuJ,KAAMmyB,OACjD,IAAY,IAARC,EAGT,MAAM,IAAItkC,EAAkB,0BAA4BskC,GAFxDvlC,KAAKmlC,kBAAkBtjB,EAAajY,EAAYuJ,KAAM/P,EAASgB,aAAa,EAAGkhC,GAGjF,CACF,MAAWzjB,EAAYzG,YAAYxR,EAAYwJ,MAC7CxJ,EAAYwJ,IAAIvB,gBAAgBgQ,EAAY1b,IAAIyD,EAAYwJ,MAG9D,GAAIyO,EAAYzG,YAAYxR,EAAYuJ,MAAO,CAC7C,GAAI0O,EAAYzG,YAAYxR,EAAYqJ,gBAClC4O,EAAYzG,YAAYxR,EAAYgJ,cAAe,CACrD,IAAIrP,EAAIqG,EAAYuJ,KAAK/G,mBAAmByV,EAAYjG,OAAOhS,EAAYuJ,OACvE0X,EAAMhJ,EAAYjG,OAAOhS,EAAYqJ,eACrCuyB,EAAM3jB,EAAYjG,OAAOhS,EAAYgJ,cAEzC,GAAI6P,IAAkBzG,EAAcG,QAAS,CAC3C,IAAI1F,EAASoU,EAAM,EACfhjB,EAAO29B,EAAM,EACjB,OAAOzsB,GAAU/P,GAAGzF,EAAG,EAAG,GAAGmW,WAAWjD,GAAQvJ,SAASrF,EAC3D,CAAO,OAAI4a,IAAkBzG,EAAcE,OACzCtS,EAAYgJ,aAAaf,gBAAgB2zB,GAE7B,IAAR3a,GAAqB,IAARA,GAAqB,IAARA,GAAqB,KAARA,EACzC2a,EAAM5hC,KAAKqtB,IAAIuU,EAAK,IACH,IAAR3a,IACT2a,EAAM5hC,KAAKqtB,IAAIuU,EAAKjvB,EAAMK,SAASvR,OAAOg7B,GAAKC,OAAO/8B,MAGjDwV,GAAU/P,GAAGzF,EAAGsnB,EAAK2a,IAErBzsB,GAAU/P,GAAGzF,EAAGsnB,EAAK2a,EAEhC,CAGF,GAAI3jB,EAAYzG,YAAYxR,EAAYiJ,aAAc,CACpD,IAAI4yB,EAAK77B,EAAYuJ,KAAK/G,mBAAmByV,EAAYjG,OAAOhS,EAAYuJ,OAE5E,GAAIsP,IAAkBzG,EAAcG,QAAS,CAC3C,IAAI9D,EAAQjV,EAASgB,aAAayd,EAAYjG,OAAOhS,EAAYiJ,aAAc,GAE/E,OAAOkG,GAAUwpB,UAAUkD,EAAI,GAAGv4B,SAASmL,EAC7C,CAEA,IAAIiS,EAAM1gB,EAAYiJ,YAAYzG,mBAAmByV,EAAYjG,OAAOhS,EAAYiJ,cACpF,OAAOkG,GAAUwpB,UAAUkD,EAAInb,EACjC,CAEA,GAAIzI,EAAYzG,YAAYxR,EAAYoJ,sBAAuB,CAC7D,GAAI6O,EAAYzG,YAAYxR,EAAY+I,6BAA8B,CACpE,IAAI+yB,EAAM97B,EAAYuJ,KAAK/G,mBAAmByV,EAAYjG,OAAOhS,EAAYuJ,OAE7E,GAAIsP,IAAkBzG,EAAcG,QAAS,CAC3C,IAAI1D,EAAQrV,EAASgB,aAAayd,EAAYjG,OAAOhS,EAAYoJ,sBAAuB,GAEpF2yB,EAASviC,EAASgB,aAAayd,EAAYjG,OAAOhS,EAAY+I,6BAA8B,GAEhG,OAAOoG,GAAU/P,GAAG08B,EAAK,EAAG,GAAGtZ,UAAU3T,GAAOvL,SAASy4B,EAC3D,CAEA,IAAIC,EAAKh8B,EAAYoJ,qBAAqB5G,mBAAmByV,EAAYjG,OAAOhS,EAAYoJ,uBACxF6yB,EAAKj8B,EAAY+I,4BAA4BvG,mBAAmByV,EAAYjG,OAAOhS,EAAY+I,8BAC/FoP,EAAOhJ,GAAU/P,GAAG08B,EAAK,EAAG,GAAGx4B,SAAoB,GAAV04B,EAAK,IAAUC,EAAK,IAEjE,GAAIpjB,IAAkBzG,EAAcC,QAAU8F,EAAK5b,IAAIyD,EAAYuJ,QAAUuyB,EAC3E,MAAM,IAAIzkC,EAAkB,wDAG9B,OAAO8gB,CACT,CAEA,GAAIF,EAAYzG,YAAYxR,EAAY6I,aAAc,CACpD,IAAIqzB,EAAMl8B,EAAYuJ,KAAK/G,mBAAmByV,EAAYjG,OAAOhS,EAAYuJ,OAE7E,GAAIsP,IAAkBzG,EAAcG,QAAS,CAC3C,IAAI4pB,EAAS3iC,EAASgB,aAAayd,EAAYjG,OAAOhS,EAAYoJ,sBAAuB,GAErFgzB,EAAS5iC,EAASgB,aAAayd,EAAYjG,OAAOhS,EAAY6I,aAAc,GAEhF,OAAOsG,GAAU/P,GAAG88B,EAAK,EAAG,GAAG1Z,UAAU2Z,GAAQ74B,SAAS84B,EAC5D,CAEA,IAAIC,EAAMr8B,EAAYoJ,qBAAqB5G,mBAAmByV,EAAYjG,OAAOhS,EAAYoJ,uBAEzFmZ,EAAMviB,EAAY6I,YAAYrG,mBAAmByV,EAAYjG,OAAOhS,EAAY6I,cAEhFyzB,EAAQntB,GAAU/P,GAAG88B,EAAK,EAAG,GAAG1Z,UAAU6Z,EAAM,GAAGh8B,KAAK44B,GAAkBmB,WAAWluB,EAAU9M,GAAGmjB,KAEtG,GAAI1J,IAAkBzG,EAAcC,QAAUiqB,EAAM//B,IAAIyD,EAAYuJ,QAAU2yB,EAC5E,MAAM,IAAI7kC,EAAkB,yDAG9B,OAAOilC,CACT,CACF,CACF,CAEA,OAAO,IACT,EAEApgC,EAAOic,KAAO,SAAcxb,GAC1B,OAAOwS,GAAU3P,KAAK7C,EACxB,EAEOsR,CACT,CA3KoB,CA2KlBjS,GAKEugC,GAAa,SAAUlpB,GAiFzB,SAASkpB,EAAWnkB,EAAMpN,GACxB,IAAIpN,EASJ,OAPAA,EAAQyV,EAAsBxV,KAAKzH,OAASA,KAC5CwC,EAAewf,EAAM,QACrBrf,EAAgBqf,EAAMja,GAAW,QACjCvF,EAAeoS,EAAQ,UACvBjS,EAAgBiS,EAAQoL,EAAY,UACpCxY,EAAM4+B,MAAQpkB,EACdxa,EAAMoY,QAAUhL,EACTpN,CACT,CA3FA1F,EAAeqkC,EAAYlpB,GAE3BkpB,EAAW/8B,KAAO,SAAc7C,GAG9B,GAFA/D,EAAe+D,EAAU,YAErBA,aAAoB4/B,EACtB,OAAO5/B,EACF,GAAIA,aAAoB8/B,GAC7B,OAAO9/B,EAAS+/B,eAGlB,IAGE,OAAO,IAAIH,EAFAp+B,GAAUqB,KAAK7C,GACbyZ,EAAW5W,KAAK7C,GAE/B,CAAE,MAAO6E,GACP,MAAM,IAAInK,EAAkB,iDAAmDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IACpK,CACF,EAEAimC,EAAW/G,IAAM,SAAamH,GAC5B,OAAyB,IAArB3lC,UAAUyE,OACL8gC,EAAWK,KAAK/G,GAAMC,qBACpB6G,aAAuB9G,GACzB0G,EAAWK,KAAKD,GAEhBJ,EAAWK,KAAK/G,GAAME,OAAO4G,GAExC,EAEAJ,EAAWK,KAAO,SAAc5G,GAC9Bp9B,EAAeo9B,EAAO,SACtB,IAAIR,EAAMQ,EAAM/gB,UAChB,OAAOsnB,EAAWM,UAAUrH,EAAKQ,EAAMlrB,OAAO0J,QAAQxJ,OAAOwqB,GAC/D,EAEA+G,EAAWn9B,GAAK,WACd,OAAIpI,UAAUyE,QAAU,EACf8gC,EAAWO,gBAAgB/lC,MAAMX,KAAMY,WAEvCulC,EAAWQ,UAAUhmC,MAAMX,KAAMY,UAE5C,EAEAulC,EAAWQ,UAAY,SAAmBzJ,EAAM0J,EAAQtK,EAAQnwB,EAAcyI,GAE5E,OAAO,IAAIuxB,EADAp+B,GAAUiB,GAAGk0B,EAAM0J,EAAQtK,EAAQnwB,GAClByI,EAC9B,EAEAuxB,EAAWO,gBAAkB,SAAyB1kB,EAAMpN,GAC1D,OAAO,IAAIuxB,EAAWnkB,EAAMpN,EAC9B,EAEAuxB,EAAWM,UAAY,SAAmB5nB,EAASnK,GACjDlS,EAAeqc,EAAS,WACxBlc,EAAgBkc,EAASP,GAAS,WAClC9b,EAAekS,EAAM,QACrB/R,EAAgB+R,EAAMoJ,EAAQ,QAC9B,IACIlJ,EADQF,EAAK0J,QACExJ,OAAOiK,GACtBgoB,EAAYhoB,EAAQioB,cAAgB/+B,GAAUC,gBAQlD,OAPA6+B,GAAaA,EAAYjyB,EAAOsL,gBAAkBnY,GAAUC,iBAE5C,IACd6+B,GAAa9+B,GAAUC,iBAIlB,IAAIm+B,EADAp+B,GAAU6c,cAAciiB,EAAWhoB,EAAQ7S,QAC1B4I,EAC9B,EAEAuxB,EAAWh8B,MAAQ,SAAe9I,EAAMic,GAMtC,YALkB,IAAdA,IACFA,EAAYC,GAAkBwpB,iBAGhCvkC,EAAe8a,EAAW,aACnBA,EAAUnT,MAAM9I,EAAM8kC,EAAWjG,KAC1C,EAeA,IAAIp6B,EAASqgC,EAAWrlC,UAiUxB,OA/TAgF,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKL,EAAYyJ,YAAarT,KAAKomC,MAAMY,eAAe/8B,KAAKL,EAAY+X,eAAgB3hB,KAAK4U,SAASsL,eACzH,EAEApa,EAAOmhC,OAAS,SAAgBllB,GAC9B,OAAOskB,GAAer9B,GAAG+Y,EAAM/hB,KAAKomC,MAAOpmC,KAAK4f,QAClD,EAEA9Z,EAAOuX,OAAS,SAAgBC,GAE9B,OADA9a,EAAe8a,EAAW,aACnBA,EAAUD,OAAOrd,KAAMmmC,EAAWjG,KAC3C,EAEAp6B,EAAOK,IAAM,SAAa2L,GACxB,OAAOmL,EAAsBnc,UAAUqF,IAAIsB,KAAKzH,KAAM8R,EACxD,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,OAAIA,aAAiBlI,EACfkI,IAAUlI,EAAY+X,eACjB3hB,KAAK4f,QAAQM,eAGflgB,KAAKomC,MAAMr8B,QAAQ+H,GAGrBA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOo3B,KAAO,WACZ,OAAOl9B,KAAKomC,MAAMlJ,MACpB,EAEAp3B,EAAO8gC,OAAS,WACd,OAAO5mC,KAAKomC,MAAMQ,QACpB,EAEA9gC,EAAOw2B,OAAS,WACd,OAAOt8B,KAAKomC,MAAM9J,QACpB,EAEAx2B,EAAOkG,KAAO,WACZ,OAAOhM,KAAKomC,MAAMp6B,MACpB,EAEAlG,EAAO8O,OAAS,WACd,OAAO5U,KAAK4f,OACd,EAEA9Z,EAAO46B,QAAU,SAAiB16B,GAEhC,OADAxD,EAAewD,EAAO,SACfhG,KAAKknC,eAAiBlhC,EAAMkhC,cACrC,EAEAphC,EAAO66B,SAAW,SAAkB36B,GAElC,OADAxD,EAAewD,EAAO,SACfhG,KAAKknC,eAAiBlhC,EAAMkhC,cACrC,EAEAphC,EAAOqhC,QAAU,SAAiBnhC,GAEhC,OADAxD,EAAewD,EAAO,SACfhG,KAAKknC,iBAAmBlhC,EAAMkhC,cACvC,EAEAphC,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,EAClBsT,EAAYrW,eAAiBqW,IAAgBtT,EAAY+X,eACvDzE,aAAuBzT,EACzByT,EAAYrW,cAGC,MAAfqW,GAAuBA,EAAYpW,cAAc9G,KAC1D,EAEA8F,EAAOsI,WAAa,SAAoBlG,GACtC,OAAOlI,KAAKonC,qBAAqBpnC,KAAKomC,MAAMh4B,WAAWlG,GAAQlI,KAAK4f,QACtE,EAEA9Z,EAAOwI,aAAe,SAAsBjG,GAC1C,OAAOrI,KAAKonC,qBAAqBpnC,KAAKomC,MAAM93B,aAAajG,GAAUrI,KAAK4f,QAC1E,EAEA9Z,EAAO0I,aAAe,SAAsBlH,GAC1C,OAAOtH,KAAKonC,qBAAqBpnC,KAAKomC,MAAM53B,aAAalH,GAAUtH,KAAK4f,QAC1E,EAEA9Z,EAAO8I,WAAa,SAAoBrH,GACtC,OAAOvH,KAAKonC,qBAAqBpnC,KAAKomC,MAAMx3B,WAAWrH,GAAQvH,KAAK4f,QACtE,EAEA9Z,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,GACRA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAClE,OAAOpG,KAAKmJ,MAAM,EAAI8E,EAAkB7H,EAC1C,EAEAN,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,GACRA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAC3D,OAAIA,aAAgBqD,EACXzJ,KAAKonC,qBAAqBpnC,KAAKomC,MAAMj9B,KAAKuD,EAAatG,GAAOpG,KAAK4f,SAGrExZ,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAOsH,UAAY,SAAmBlF,GACpC,OAAOlI,KAAKonC,qBAAqBpnC,KAAKomC,MAAMh5B,UAAUlF,GAAQlI,KAAK4f,QACrE,EAEA9Z,EAAOwH,YAAc,SAAqBjF,GACxC,OAAOrI,KAAKonC,qBAAqBpnC,KAAKomC,MAAM94B,YAAYjF,GAAUrI,KAAK4f,QACzE,EAEA9Z,EAAOkH,YAAc,SAAqB1F,GACxC,OAAOtH,KAAKonC,qBAAqBpnC,KAAKomC,MAAMp5B,YAAY1F,GAAUtH,KAAK4f,QACzE,EAEA9Z,EAAO8G,UAAY,SAAmBrF,GACpC,OAAOvH,KAAKonC,qBAAqBpnC,KAAKomC,MAAMx5B,UAAUrF,GAAQvH,KAAK4f,QACrE,EAEA9Z,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBK,YACtB/K,EAAWoC,MACTuJ,IAAWjB,EAAgBS,UAAYQ,IAAWjB,EAAgBO,OACpE1U,KAAK4U,SACHQ,IAAWjB,EAAgBa,YAC7BhV,KAAKomC,MACHhxB,IAAWjB,EAAgBG,cAAgBc,IAAWjB,EAAgBW,aAAeM,IAAWjB,EAAgBC,SAClH,KAGF6I,EAAsBnc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC1D,EAEAtP,EAAO0K,MAAQ,SAAesB,GAC5B,OAAIA,aAAiBlI,EACfkI,IAAUlI,EAAY+X,eACjB7P,EAAMtB,QAGRxQ,KAAKomC,MAAM51B,MAAMsB,GAGnBA,EAAMrB,eAAezQ,KAC9B,EAEA8F,EAAOuhC,YAAc,WACnB,OAAOrnC,KAAKomC,KACd,EAEAtgC,EAAOwhC,YAAc,SAAqBlhC,GACxC,OAAOpG,KAAKonC,qBAAqBpnC,KAAKomC,MAAMkB,YAAYlhC,GAAOpG,KAAK4f,QACtE,EAEA9Z,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C5D,EAAe+G,EAAc,gBAC7B/G,EAAe4D,EAAM,QACrB,IAAIq3B,EAAM0I,EAAW/8B,KAAKG,GAE1B,GAAInD,aAAgBqD,EAAY,CAC9B,IAAI89B,EAAa9J,EAAIyJ,eAAiBlnC,KAAKknC,eAE3C,OAAQ9gC,GACN,KAAKqD,EAAWoC,MACd,OAAO07B,EAET,KAAK99B,EAAWoD,OACd,OAAOjJ,KAAKE,MAAMyjC,EAAa,KAEjC,KAAK99B,EAAWqD,OACd,OAAOlJ,KAAKE,MAAMyjC,EAAa,KAEjC,KAAK99B,EAAWC,QACd,OAAO9F,KAAKE,MAAMyjC,EAAax/B,GAAUW,kBAE3C,KAAKe,EAAW+9B,QACd,OAAO5jC,KAAKE,MAAMyjC,EAAax/B,GAAU0/B,kBAE3C,KAAKh+B,EAAWi+B,MACd,OAAO9jC,KAAKE,MAAMyjC,EAAax/B,GAAU4/B,gBAE3C,KAAKl+B,EAAWm+B,UACd,OAAOhkC,KAAKE,MAAMyjC,GAAc,GAAKx/B,GAAU4/B,iBAGnD,MAAM,IAAIlmC,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAO+hC,SAAW,SAAkB3K,GAClC,OAAOl9B,KAAKonC,qBAAqBpnC,KAAKomC,MAAMyB,SAAS3K,GAAOl9B,KAAK4f,QACnE,EAEA9Z,EAAOgiC,WAAa,SAAoBlB,GACtC,OAAO5mC,KAAKonC,qBAAqBpnC,KAAKomC,MAAM0B,WAAWlB,GAAS5mC,KAAK4f,QACvE,EAEA9Z,EAAOiiC,WAAa,SAAoBzL,GACtC,OAAOt8B,KAAKonC,qBAAqBpnC,KAAKomC,MAAM2B,WAAWzL,GAASt8B,KAAK4f,QACvE,EAEA9Z,EAAOkiC,SAAW,SAAkBh8B,GAClC,OAAOhM,KAAKonC,qBAAqBpnC,KAAKomC,MAAM4B,SAASh8B,GAAOhM,KAAK4f,QACnE,EAEA9Z,EAAOmiC,sBAAwB,SAA+BrzB,GAG5D,GAFApS,EAAeoS,EAAQ,UAEnBA,EAAO7O,OAAO/F,KAAK4f,SACrB,OAAO5f,KAGT,IAAIkoC,EAAatzB,EAAOsL,eAAiBlgB,KAAK4f,QAAQM,eAItD,OAAO,IAAIimB,EAFInmC,KAAKomC,MAAMp5B,YAAYk7B,GAENtzB,EAClC,EAEA9O,EAAOqiC,oBAAsB,SAA6BvzB,GACxD,OAAiB,MAAVA,GAAkBA,EAAO7O,OAAO/F,KAAK4f,SAAW5f,KAAO,IAAImmC,EAAWnmC,KAAKomC,MAAOxxB,EAC3F,EAEA9O,EAAOohC,aAAe,WAIpB,OAHUlnC,KAAKomC,MAAMY,cAEHhnC,KAAK4f,QAAQM,eAAiBnY,GAAUW,gBAE5D,EAEA5C,EAAO6W,aAAe,SAAsBE,GAG1C,OAFAra,EAAeqa,EAAU,YAErBA,aAAoB9U,GACf/H,KAAKonC,qBAAqBvqB,EAAU7c,KAAK4f,SACvC/C,aAAoBmD,EACtBhgB,KAAKonC,qBAAqBpnC,KAAKomC,MAAOvpB,GACpCA,aAAoBspB,EACtBtpB,EAGFA,EAASlM,WAAW3Q,KAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAGrD,OAFApO,EAAesP,EAAO,SAElBA,aAAiBlI,EACfkI,IAAUlI,EAAY+X,eACjB3hB,KAAKonC,qBAAqBpnC,KAAKomC,MAAOpmB,EAAWuB,eAAezP,EAAM1F,mBAAmBwE,KAG3F5Q,KAAKonC,qBAAqBpnC,KAAKomC,MAAMn8B,KAAK6H,EAAOlB,GAAW5Q,KAAK4f,SAGnE9N,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAOshC,qBAAuB,SAA8BplB,EAAMpN,GAChE,OAAI5U,KAAKomC,QAAUpkB,GAAQhiB,KAAK4f,QAAQ7Z,OAAO6O,GACtC5U,KAGF,IAAImmC,EAAWnkB,EAAMpN,EAC9B,EAEA9O,EAAO2J,UAAY,SAAmBzJ,GAIpC,GAHAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOmgC,EAAY,SAE/BnmC,KAAK4f,QAAQ7Z,OAAOC,EAAM4Z,SAC5B,OAAO5f,KAAKomC,MAAM32B,UAAUzJ,EAAMogC,OAGpC,IAAIgC,EAAUhlC,EAASsB,eAAe1E,KAAKknC,eAAgBlhC,EAAMkhC,gBAEjE,OAAgB,IAAZkB,EACKpoC,KAAKomC,MAAM32B,UAAUzJ,EAAMogC,OAG7BgC,CACT,EAEAtiC,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiBmgC,GACZnmC,KAAKomC,MAAMrgC,OAAOC,EAAMogC,QAAUpmC,KAAK4f,QAAQ7Z,OAAOC,EAAM4Z,QAIvE,EAEA9Z,EAAOX,SAAW,WAChB,OAAOnF,KAAKomC,MAAMjhC,WAAanF,KAAK4f,QAAQza,UAC9C,EAEAW,EAAOjF,SAAW,WAChB,OAAOb,KAAKomC,MAAMvlC,WAAab,KAAK4f,QAAQ/e,UAC9C,EAEAiF,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEOslC,CACT,CAhaiB,CAgafrpB,GASEurB,GAAsB,SAAUprB,GAGlC,SAASorB,IACP,OAAOprB,EAAsBtc,MAAMX,KAAMY,YAAcZ,IACzD,CAJA8B,EAAeumC,EAAqBprB,GAMpC,IAAInX,EAASuiC,EAAoBvnC,UAsFjC,OApFAgF,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBO,OAC7D1U,KAAK0U,OACHU,IAAWjB,EAAgBG,aAC7BtU,KAAKsoC,cAAch0B,aACjBc,IAAWjB,EAAgBK,YAC7B/K,EAAWoC,MACTuJ,IAAWjB,EAAgBS,SAC7B5U,KAAK4U,SACHQ,IAAWjB,EAAgBW,YAC7BiE,GAAUoE,WAAWnd,KAAKsoC,cAAclrB,cACtChI,IAAWjB,EAAgBa,YAC7BhV,KAAKqnC,cAGPpqB,EAAsBnc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC1D,EAEAtP,EAAOuX,OAAS,SAAgBC,GAE9B,OADA9a,EAAe8a,EAAW,aACnBA,EAAUD,OAAOrd,KAC1B,EAEA8F,EAAOyiC,UAAY,WACjB,OAAOjqB,GAAQ+d,cAAcr8B,KAAKs9B,gBAAiBt9B,KAAKqnC,cAAcr7B,OACxE,EAEAlG,EAAOw3B,cAAgB,WAIrB,OAFsB,MADPt9B,KAAKsoC,cAAclrB,aACJpd,KAAKqnC,cAAcmB,gBACzCxoC,KAAK4U,SAASsL,cAExB,EAEApa,EAAO2J,UAAY,SAAmBzJ,GACpCxD,EAAewD,EAAO,SACtB,IAmDYrB,EAAGC,EAnDX+K,EAAMvM,EAASsB,eAAe1E,KAAKs9B,gBAAiBt3B,EAAMs3B,iBAc9D,OAZY,IAAR3tB,GAGU,IAFZA,EAAM3P,KAAKqnC,cAAcr7B,OAAShG,EAAMqhC,cAAcr7B,SAKxC,KAFZ2D,EAAM3P,KAAKyoC,kBAAkBh5B,UAAUzJ,EAAMyiC,sBA6CrC9jC,EA1CO3E,KAAK0U,OAAOyJ,KA0ChBvZ,EA1CsBoB,EAAM0O,OAAOyJ,KAA5CxO,EA2CJhL,EAAIC,GACE,EAGND,EAAIC,EACC,EAGF,GA9CE+K,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAChCxD,EAAewD,EAAO,SACtB,IAAI0iC,EAAe1oC,KAAKs9B,gBACpBqL,EAAgB3iC,EAAMs3B,gBAC1B,OAAOoL,EAAeC,GAAiBD,IAAiBC,GAAiB3oC,KAAKqnC,cAAcr7B,OAAShG,EAAMqhC,cAAcr7B,MAC3H,EAEAlG,EAAO66B,SAAW,SAAkB36B,GAClCxD,EAAewD,EAAO,SACtB,IAAI0iC,EAAe1oC,KAAKs9B,gBACpBqL,EAAgB3iC,EAAMs3B,gBAC1B,OAAOoL,EAAeC,GAAiBD,IAAiBC,GAAiB3oC,KAAKqnC,cAAcr7B,OAAShG,EAAMqhC,cAAcr7B,MAC3H,EAEAlG,EAAOqhC,QAAU,SAAiBnhC,GAEhC,OADAxD,EAAewD,EAAO,SACfhG,KAAKs9B,kBAAoBt3B,EAAMs3B,iBAAmBt9B,KAAKqnC,cAAcr7B,SAAWhG,EAAMqhC,cAAcr7B,MAC7G,EAEAlG,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiBqiC,GACc,IAA1BroC,KAAKyP,UAAUzJ,EAI1B,EAEOqiC,CACT,CA9F0B,CA8FxBvrB,GAcE8rB,GAAgB,SAAUC,GA2K5B,SAASD,EAAc7hC,EAAU6N,EAAQF,GACvC,IAAIlN,EASJ,OAPAhF,EAAeuE,EAAU,YACzBvE,EAAeoS,EAAQ,UACvBpS,EAAekS,EAAM,SACrBlN,EAAQqhC,EAAqBphC,KAAKzH,OAASA,MACrC8oC,UAAY/hC,EAClBS,EAAMoY,QAAUhL,EAChBpN,EAAMs2B,MAAQppB,EACPlN,CACT,CArLA1F,EAAe8mC,EAAeC,GAE9BD,EAAcxJ,IAAM,SAAamH,GAC/B,IAAI3G,EAQJ,OALEA,EADE2G,aAAuBzoB,EACjB2hB,GAAME,OAAO4G,GAEE,MAAfA,EAAsB9G,GAAMC,oBAAsB6G,EAGrDqC,EAAcnC,UAAU7G,EAAM/gB,UAAW+gB,EAAMlrB,OACxD,EAEAk0B,EAAc5/B,GAAK,WACjB,OAAIpI,UAAUyE,QAAU,EACfujC,EAAcG,IAAIpoC,MAAMX,KAAMY,WACP,IAArBA,UAAUyE,QAAgBzE,UAAU,aAAcmY,GACpD6vB,EAAcI,IAAIroC,MAAMX,KAAMY,WAE9BgoC,EAAcK,IAAItoC,MAAMX,KAAMY,UAEzC,EAEAgoC,EAAcI,IAAM,SAAajnB,EAAMC,EAAMtN,GAC3C,OAAOk0B,EAAcG,IAAI3M,GAAcpzB,GAAG+Y,EAAMC,GAAOtN,EACzD,EAEAk0B,EAAcG,IAAM,SAAa/pB,EAAetK,GAC9C,OAAOk0B,EAAcM,QAAQlqB,EAAetK,EAAM,KACpD,EAEAk0B,EAAcK,IAAM,SAAa5e,EAAMtS,EAAOknB,EAAY/B,EAAM0J,EAAQtK,EAAQnwB,EAAcuI,GAC5F,IAAIy0B,EAAK/M,GAAcpzB,GAAGqhB,EAAMtS,EAAOknB,EAAY/B,EAAM0J,EAAQtK,EAAQnwB,GACzE,OAAOy8B,EAAcM,QAAQC,EAAIz0B,EAAM,KACzC,EAEAk0B,EAAcM,QAAU,SAAiBlqB,EAAetK,EAAM00B,GAI5D,GAHA5mC,EAAewc,EAAe,iBAC9Bxc,EAAekS,EAAM,QAEjBA,aAAgBsL,EAClB,OAAO,IAAI4oB,EAAc5pB,EAAetK,EAAMA,GAGhD,IAAIE,EAAS,KACTwJ,EAAQ1J,EAAK0J,QACba,EAAeb,EAAMa,aAAaD,GAEtC,GAA4B,IAAxBC,EAAa5Z,OACfuP,EAASqK,EAAa,QACjB,GAA4B,IAAxBA,EAAa5Z,OAAc,CACpC,IAAIgkC,EAAQjrB,EAAMc,WAAWF,GAC7BA,EAAgBA,EAAchS,YAAYq8B,EAAM3iC,WAAWY,WAC3DsN,EAASy0B,EAAMC,aACjB,MAII10B,EAHqB,MAAnBw0B,GAA2BnqB,EAAasqB,MAAK,SAAUC,GACzD,OAAOA,EAAYzjC,OAAOqjC,EAC5B,IACWA,EAEA5mC,EAAeyc,EAAa,GAAI,UAI7C,OAAO,IAAI2pB,EAAc5pB,EAAepK,EAAQF,EAClD,EAEAk0B,EAAcnC,UAAY,WACxB,OAAyB,IAArB7lC,UAAUyE,OACLujC,EAAca,WAAW9oC,MAAMX,KAAMY,WAErCgoC,EAAcc,WAAW/oC,MAAMX,KAAMY,UAEhD,EAEAgoC,EAAca,WAAa,SAAoB5qB,EAASnK,GAGtD,OAFAlS,EAAeqc,EAAS,WACxBrc,EAAekS,EAAM,QACdk0B,EAAc9gC,QAAQ+W,EAAQioB,cAAejoB,EAAQ7S,OAAQ0I,EACtE,EAEAk0B,EAAcc,WAAa,SAAoB1qB,EAAepK,EAAQF,GAIpE,OAHAlS,EAAewc,EAAe,iBAC9Bxc,EAAeoS,EAAQ,UACvBpS,EAAekS,EAAM,QACdk0B,EAAc9gC,QAAQkX,EAAcse,cAAc1oB,GAASoK,EAAchT,OAAQ0I,EAC1F,EAEAk0B,EAAc9gC,QAAU,SAAiBg/B,EAAa36B,EAAcuI,GAClE,IAAI0J,EAAQ1J,EAAK0J,QACbS,EAAUP,GAAQ+d,cAAcyK,EAAa36B,GAC7CyI,EAASwJ,EAAMxJ,OAAOiK,GAE1B,OAAO,IAAI+pB,EADDxM,GAAcC,cAAcyK,EAAa36B,EAAcyI,GACnCA,EAAQF,EACxC,EAEAk0B,EAAce,SAAW,SAAkB3qB,EAAepK,EAAQF,GAChElS,EAAewc,EAAe,iBAC9Bxc,EAAeoS,EAAQ,UACvBpS,EAAekS,EAAM,QACrB,IAAI0J,EAAQ1J,EAAK0J,QAEjB,IAAmD,IAA/CA,EAAMkB,cAAcN,EAAepK,GAAmB,CACxD,IAAIy0B,EAAQjrB,EAAMc,WAAWF,GAE7B,GAAa,MAATqqB,GAAiBA,EAAMO,QACzB,MAAM,IAAI3oC,EAAkB,iBAAmB+d,EAAgB,2BAA6BtK,EAAO,8EAGrG,MAAM,IAAIzT,EAAkB,eAAiB2T,EAAS,qCAAuCoK,EAAgB,cAAgBtK,EAAO,IACtI,CAEA,OAAO,IAAIk0B,EAAc5pB,EAAepK,EAAQF,EAClD,EAEAk0B,EAAciB,UAAY,SAAmB7qB,EAAepK,EAAQF,GAKlE,GAJAlS,EAAewc,EAAe,iBAC9Bxc,EAAeoS,EAAQ,UACvBpS,EAAekS,EAAM,QAEjBA,aAAgBsL,IAAsC,IAAxBpL,EAAO7O,OAAO2O,GAC9C,MAAM,IAAI/S,EAAyB,gCAGrC,OAAO,IAAIinC,EAAc5pB,EAAepK,EAAQF,EAClD,EAEAk0B,EAAcx/B,KAAO,SAAc7C,GAGjC,GAFA/D,EAAe+D,EAAU,YAErBA,aAAoBqiC,EACtB,OAAOriC,EAGT,IAAImO,EAAOoJ,EAAO1U,KAAK7C,GAEvB,GAAIA,EAASoD,YAAYC,EAAYsb,iBAAkB,CACrD,IAAI4kB,EAAMlB,EAAcmB,MAAMxjC,EAAUmO,GAExC,GAAW,MAAPo1B,EAAa,OAAOA,CAC1B,CAEA,IAAI3N,EAAMC,GAAchzB,KAAK7C,GAC7B,OAAOqiC,EAAcG,IAAI5M,EAAKznB,EAChC,EAEAk0B,EAAcmB,MAAQ,SAAexjC,EAAUmO,GAC7C,IACE,OAAOk0B,EAAcoB,OAAOzjC,EAAUmO,EACxC,CAAE,MAAOtJ,GACP,KAAMA,aAAcnK,GAAoB,MAAMmK,CAChD,CACF,EAEAw9B,EAAcoB,OAAS,SAAgBzjC,EAAUmO,GAC/C,IAAIoyB,EAAcvgC,EAASwD,QAAQH,EAAYsb,iBAC3C/Y,EAAe5F,EAASJ,IAAIyD,EAAYC,gBAC5C,OAAO++B,EAAc9gC,QAAQg/B,EAAa36B,EAAcuI,EAC1D,EAEAk0B,EAAcz+B,MAAQ,SAAe9I,EAAMic,GAMzC,YALkB,IAAdA,IACFA,EAAYC,GAAkB0sB,qBAGhCznC,EAAe8a,EAAW,aACnBA,EAAUnT,MAAM9I,EAAMunC,EAAc1I,KAC7C,EAeA,IAAIp6B,EAAS8iC,EAAc9nC,UA2Y3B,OAzYAgF,EAAOokC,cAAgB,SAAuBC,GAE5C,OADA3nC,EAAe2nC,EAAa,eACrBvB,EAAcM,QAAQiB,EAAanqC,KAAK89B,MAAO99B,KAAK4f,QAC7D,EAEA9Z,EAAOgd,gBAAkB,SAAyBqnB,GAChD,OAAOvB,EAAcc,WAAWS,EAAanqC,KAAK4f,QAAS5f,KAAK89B,MAClE,EAEAh4B,EAAOskC,eAAiB,SAAwBx1B,GAC9C,OAAoC,IAAhCA,EAAO7O,OAAO/F,KAAK4f,UAAsB5f,KAAK89B,MAAM1f,QAAQkB,cAActf,KAAK8oC,UAAWl0B,GACrF,IAAIg0B,EAAc5oC,KAAK8oC,UAAWl0B,EAAQ5U,KAAK89B,OAGjD99B,IACT,EAEA8F,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,IAEhBsT,aAAuBzT,EACzByT,EAAYtW,eAAiBsW,EAAYrW,cAG5B,MAAfqW,GAAuBA,EAAYpW,cAAc9G,MAC1D,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,OAAIA,aAAiBlI,EACfkI,IAAUlI,EAAYsb,iBAAmBpT,IAAUlI,EAAY+X,eAC1D7P,EAAMtB,QAGRxQ,KAAK8oC,UAAUt4B,MAAMsB,GAGvBA,EAAMrB,eAAezQ,KAC9B,EAEA8F,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAK+J,QAAQ+H,EACtB,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,GAAIA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYsb,gBACf,OAAOllB,KAAKs9B,gBAEd,KAAK1zB,EAAY+X,eACf,OAAO3hB,KAAK4f,QAAQM,eAGxB,OAAOlgB,KAAK8oC,UAAU/+B,QAAQ+H,EAChC,CAGA,OADAtP,EAAesP,EAAO,SACfA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAO8O,OAAS,WACd,OAAO5U,KAAK4f,OACd,EAEA9Z,EAAOukC,2BAA6B,WAClC,IAAIhB,EAAQrpC,KAAK89B,MAAM1f,QAAQc,WAAWlf,KAAK8oC,WAE/C,GAAa,MAATO,GAAiBA,EAAMiB,YAAa,CACtC,IAAIC,EAAgBlB,EAAMmB,eAE1B,IAA2C,IAAvCD,EAAcxkC,OAAO/F,KAAK4f,SAC5B,OAAO,IAAIgpB,EAAc5oC,KAAK8oC,UAAWyB,EAAevqC,KAAK89B,MAEjE,CAEA,OAAO99B,IACT,EAEA8F,EAAO2kC,yBAA2B,WAChC,IAAIpB,EAAQrpC,KAAK89B,MAAM1f,QAAQc,WAAWlf,KAAKyoC,mBAE/C,GAAa,MAATY,EAAe,CACjB,IAAIqB,EAAcrB,EAAMC,cAExB,IAAyC,IAArCoB,EAAY3kC,OAAO/F,KAAK4f,SAC1B,OAAO,IAAIgpB,EAAc5oC,KAAK8oC,UAAW4B,EAAa1qC,KAAK89B,MAE/D,CAEA,OAAO99B,IACT,EAEA8F,EAAO4O,KAAO,WACZ,OAAO1U,KAAK89B,KACd,EAEAh4B,EAAO6kC,kBAAoB,SAA2Bj2B,GAEpD,OADAlS,EAAekS,EAAM,QACd1U,KAAK89B,MAAM/3B,OAAO2O,GAAQ1U,KAAO4oC,EAAcM,QAAQlpC,KAAK8oC,UAAWp0B,EAAM1U,KAAK4f,QAC3F,EAEA9Z,EAAO8kC,oBAAsB,SAA6Bl2B,GAExD,OADAlS,EAAekS,EAAM,QACd1U,KAAK89B,MAAM/3B,OAAO2O,GAAQ1U,KAAO4oC,EAAc9gC,QAAQ9H,KAAK8oC,UAAUxL,cAAct9B,KAAK4f,SAAU5f,KAAK8oC,UAAU98B,OAAQ0I,EACnI,EAEA5O,EAAO+kC,oBAAsB,WAC3B,OAAO7qC,KAAK89B,MAAM/3B,OAAO/F,KAAK4f,SAAW5f,KAAO,IAAI4oC,EAAc5oC,KAAK8oC,UAAW9oC,KAAK4f,QAAS5f,KAAK4f,QACvG,EAEA9Z,EAAOukB,KAAO,WACZ,OAAOrqB,KAAK8oC,UAAUze,MACxB,EAEAvkB,EAAOq6B,WAAa,WAClB,OAAOngC,KAAK8oC,UAAU3I,YACxB,EAEAr6B,EAAOiS,MAAQ,WACb,OAAO/X,KAAK8oC,UAAU/wB,OACxB,EAEAjS,EAAOm5B,WAAa,WAClB,OAAOj/B,KAAK8oC,UAAU7J,YACxB,EAEAn5B,EAAOkkB,UAAY,WACjB,OAAOhqB,KAAK8oC,UAAU9e,WACxB,EAEAlkB,EAAOsQ,UAAY,WACjB,OAAOpW,KAAK8oC,UAAU1yB,WACxB,EAEAtQ,EAAOo3B,KAAO,WACZ,OAAOl9B,KAAK8oC,UAAU5L,MACxB,EAEAp3B,EAAO8gC,OAAS,WACd,OAAO5mC,KAAK8oC,UAAUlC,QACxB,EAEA9gC,EAAOw2B,OAAS,WACd,OAAOt8B,KAAK8oC,UAAUxM,QACxB,EAEAx2B,EAAOkG,KAAO,WACZ,OAAOhM,KAAK8oC,UAAU98B,MACxB,EAEAlG,EAAO6W,aAAe,SAAsBE,GAC1C,GAAIA,aAAoB9D,GACtB,OAAO/Y,KAAKkqC,cAAc9N,GAAcpzB,GAAG6T,EAAU7c,KAAK8oC,UAAUzB,gBAC/D,GAAIxqB,aAAoB9U,GAC7B,OAAO/H,KAAKkqC,cAAc9N,GAAcpzB,GAAGhJ,KAAK8oC,UAAUR,cAAezrB,IACpE,GAAIA,aAAoBuf,GAC7B,OAAOp8B,KAAKkqC,cAAcrtB,GACrB,GAAIA,aAAoByB,GAAS,CACtC,IAAIO,EAAUhC,EACd,OAAO+rB,EAAc9gC,QAAQ+W,EAAQioB,cAAejoB,EAAQ7S,OAAQhM,KAAK89B,MAC3E,CAAO,OAAIjhB,aAAoBmD,EACtBhgB,KAAKoqC,eAAevtB,IAG7Bra,EAAeqa,EAAU,YAClBA,EAASlM,WAAW3Q,MAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GACrD,GAAIkB,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYsb,gBACf,OAAO0jB,EAAc9gC,QAAQ8I,EAAU5Q,KAAKgM,OAAQhM,KAAK89B,OAE3D,KAAKl0B,EAAY+X,eAEb,IAAI/M,EAASoL,EAAWuB,eAAezP,EAAM1F,mBAAmBwE,IAChE,OAAO5Q,KAAKoqC,eAAex1B,GAIjC,OAAO5U,KAAKkqC,cAAclqC,KAAK8oC,UAAU7+B,KAAK6H,EAAOlB,GACvD,CAEA,OAAOkB,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAO+7B,SAAW,SAAkBxX,GAClC,OAAOrqB,KAAKkqC,cAAclqC,KAAK8oC,UAAUjH,SAASxX,GACpD,EAEAvkB,EAAOy6B,UAAY,SAAmBxoB,GACpC,OAAO/X,KAAKkqC,cAAclqC,KAAK8oC,UAAUvI,UAAUxoB,GACrD,EAEAjS,EAAO06B,eAAiB,SAAwBvB,GAC9C,OAAOj/B,KAAKkqC,cAAclqC,KAAK8oC,UAAUtI,eAAevB,GAC1D,EAEAn5B,EAAOqkB,cAAgB,SAAuBH,GAC5C,OAAOhqB,KAAKkqC,cAAclqC,KAAK8oC,UAAU3e,cAAcH,GACzD,EAEAlkB,EAAO+hC,SAAW,SAAkB3K,GAClC,OAAOl9B,KAAKkqC,cAAclqC,KAAK8oC,UAAUjB,SAAS3K,GACpD,EAEAp3B,EAAOgiC,WAAa,SAAoBlB,GACtC,OAAO5mC,KAAKkqC,cAAclqC,KAAK8oC,UAAUhB,WAAWlB,GACtD,EAEA9gC,EAAOiiC,WAAa,SAAoBzL,GACtC,OAAOt8B,KAAKkqC,cAAclqC,KAAK8oC,UAAUf,WAAWzL,GACtD,EAEAx2B,EAAOkiC,SAAW,SAAkB77B,GAClC,OAAOnM,KAAKkqC,cAAclqC,KAAK8oC,UAAUd,SAAS77B,GACpD,EAEArG,EAAOwhC,YAAc,SAAqBlhC,GACxC,OAAOpG,KAAKkqC,cAAclqC,KAAK8oC,UAAUxB,YAAYlhC,GACvD,EAEAN,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,GACRA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAC3D,OAAIA,aAAgBqD,EACdrD,EAAKQ,cACA5G,KAAKkqC,cAAclqC,KAAK8oC,UAAU3/B,KAAKuD,EAAatG,IAEpDpG,KAAK8iB,gBAAgB9iB,KAAK8oC,UAAU3/B,KAAKuD,EAAatG,KAIjE5D,EAAe4D,EAAM,QACdA,EAAKE,MAAMtG,KAAM0M,GAC1B,EAEA5G,EAAO0T,UAAY,SAAmBtB,GACpC,OAAOlY,KAAKkqC,cAAclqC,KAAK8oC,UAAUtvB,UAAUtB,GACrD,EAEApS,EAAO4T,WAAa,SAAoBjD,GACtC,OAAOzW,KAAKkqC,cAAclqC,KAAK8oC,UAAUpvB,WAAWjD,GACtD,EAEA3Q,EAAOsmB,UAAY,SAAmB3T,GACpC,OAAOzY,KAAKkqC,cAAclqC,KAAK8oC,UAAU1c,UAAU3T,GACrD,EAEA3S,EAAOoH,SAAW,SAAkBrF,GAClC,OAAO7H,KAAKkqC,cAAclqC,KAAK8oC,UAAU57B,SAASrF,GACpD,EAEA/B,EAAOsH,UAAY,SAAmBlF,GACpC,OAAOlI,KAAK8iB,gBAAgB9iB,KAAK8oC,UAAU17B,UAAUlF,GACvD,EAEApC,EAAOwH,YAAc,SAAqBjF,GACxC,OAAOrI,KAAK8iB,gBAAgB9iB,KAAK8oC,UAAUx7B,YAAYjF,GACzD,EAEAvC,EAAOkH,YAAc,SAAqB1F,GACxC,OAAOtH,KAAK8iB,gBAAgB9iB,KAAK8oC,UAAU97B,YAAY1F,GACzD,EAEAxB,EAAO8G,UAAY,SAAmBrF,GACpC,OAAOvH,KAAK8iB,gBAAgB9iB,KAAK8oC,UAAUl8B,UAAUrF,GACvD,EAEAzB,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAClE,OAAOpG,KAAKwM,gBAAgB,EAAIyB,EAAkB7H,EACpD,EAEAN,EAAO8T,WAAa,SAAoB1B,GACtC,OAAOlY,KAAKwZ,WAAW,EAAItB,EAC7B,EAEApS,EAAOgU,YAAc,SAAqBrD,GACxC,OAAOzW,KAAK0Z,YAAY,EAAIjD,EAC9B,EAEA3Q,EAAOglC,WAAa,SAAoBryB,GACtC,OAAOzY,KAAKosB,WAAW,EAAI3T,EAC7B,EAEA3S,EAAOoI,UAAY,SAAmBrG,GACpC,OAAO7H,KAAKkN,UAAU,EAAIrF,EAC5B,EAEA/B,EAAOsI,WAAa,SAAoBlG,GACtC,OAAOlI,KAAKoN,WAAW,EAAIlF,EAC7B,EAEApC,EAAOwI,aAAe,SAAsBjG,GAC1C,OAAOrI,KAAKsN,aAAa,EAAIjF,EAC/B,EAEAvC,EAAO0I,aAAe,SAAsBlH,GAC1C,OAAOtH,KAAKgN,aAAa,EAAI1F,EAC/B,EAEAxB,EAAO8I,WAAa,SAAoBrH,GACtC,OAAOvH,KAAK4M,WAAW,EAAIrF,EAC7B,EAEAzB,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBW,YACtB9U,KAAKsoC,eAGd9lC,EAAe4S,EAAQ,SAChByzB,EAAqB/nC,UAAUqU,MAAM1N,KAAKzH,KAAMoV,GACzD,EAEAtP,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C,IAAIq3B,EAAMmL,EAAcx/B,KAAKG,GAE7B,GAAInD,aAAgBqD,EAAY,CAG9B,GAFAg0B,EAAMA,EAAImN,oBAAoB5qC,KAAK89B,OAE/B13B,EAAKQ,cACP,OAAO5G,KAAK8oC,UAAUt/B,MAAMi0B,EAAIqL,UAAW1iC,GAE3C,IAAI8hC,EAAaloC,KAAK4f,QAAQM,eAAiBud,EAAI7d,QAAQM,eAEvDlW,EAAcyzB,EAAIqL,UAAU97B,YAAYk7B,GAE5C,OAAOloC,KAAK8oC,UAAUt/B,MAAMQ,EAAa5D,EAE7C,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAO2iC,gBAAkB,WACvB,OAAOzoC,KAAK8oC,SACd,EAEAhjC,EAAOwiC,YAAc,WACnB,OAAOtoC,KAAK8oC,UAAUR,aACxB,EAEAxiC,EAAOuhC,YAAc,WACnB,OAAOrnC,KAAK8oC,UAAUzB,aACxB,EAEAvhC,EAAOilC,iBAAmB,WACxB,OAAO1E,GAAer9B,GAAGhJ,KAAK8oC,UAAW9oC,KAAK4f,QAChD,EAEA9Z,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiB4iC,GACZ5oC,KAAK8oC,UAAU/iC,OAAOC,EAAM8iC,YAAc9oC,KAAK4f,QAAQ7Z,OAAOC,EAAM4Z,UAAY5f,KAAK89B,MAAM/3B,OAAOC,EAAM83B,MAInH,EAEAh4B,EAAOX,SAAW,WAChB,OAAO/B,EAAS+B,SAASnF,KAAK8oC,UAAU3jC,WAAYnF,KAAK4f,QAAQza,WAAYnF,KAAK89B,MAAM34B,WAC1F,EAEAW,EAAOjF,SAAW,WAChB,IAAIoR,EAAMjS,KAAK8oC,UAAUjoC,WAAab,KAAK4f,QAAQ/e,WAMnD,OAJIb,KAAK4f,UAAY5f,KAAK89B,QACxB7rB,GAAO,IAAMjS,KAAK89B,MAAMj9B,WAAa,KAGhCoR,CACT,EAEAnM,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAC9B,OAAOurB,EAAqB/nC,UAAUuc,OAAO5V,KAAKzH,KAAMsd,EAC1D,EAEOsrB,CACT,CApkBoB,CAokBlBP,IAOEhC,GAAiB,SAAUppB,GAoG7B,SAASopB,EAAet/B,EAAU6N,GAChC,IAAIpN,EASJ,OAPAA,EAAQyV,EAAsBxV,KAAKzH,OAASA,KAC5CwC,EAAeuE,EAAU,YACzBpE,EAAgBoE,EAAUq1B,GAAe,YACzC55B,EAAeoS,EAAQ,UACvBjS,EAAgBiS,EAAQoL,EAAY,UACpCxY,EAAMshC,UAAY/hC,EAClBS,EAAMoY,QAAUhL,EACTpN,CACT,CA9GA1F,EAAeukC,EAAgBppB,GAE/BopB,EAAej9B,KAAO,SAAc7C,GAGlC,GAFA/D,EAAe+D,EAAU,YAErBA,aAAoB8/B,EACtB,OAAO9/B,EAGT,IACE,IAAIqO,EAASoL,EAAW5W,KAAK7C,GAE7B,IACE,IAAI41B,EAAMC,GAAchzB,KAAK7C,GAC7B,OAAO8/B,EAAer9B,GAAGmzB,EAAKvnB,EAChC,CAAE,MAAOo2B,GACP,IAAInsB,EAAUP,GAAQlV,KAAK7C,GAC3B,OAAO8/B,EAAeI,UAAU5nB,EAASjK,EAC3C,CACF,CAAE,MAAOxJ,GACP,MAAM,IAAInK,EAAkB,qDAAuDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IACxK,CACF,EAEAmmC,EAAejH,IAAM,SAAamH,GAChC,GAAyB,IAArB3lC,UAAUyE,OACZ,OAAOghC,EAAejH,IAAIK,GAAMC,qBAIhC,GAFAl9B,EAAe+jC,EAAa,eAExBA,aAAuBzoB,EACzB,OAAOuoB,EAAejH,IAAIK,GAAME,OAAO4G,IAClC,GAAIA,aAAuB9G,GAAO,CACvC,IAAIL,EAAMmH,EAAY1nB,UACtB,OAAOwnB,EAAeI,UAAUrH,EAAKmH,EAAY7xB,OAAO0J,QAAQxJ,OAAOwqB,GACzE,CACE,MAAM,IAAIz9B,EAAyB,qDAGzC,EAEA0kC,EAAer9B,GAAK,WAClB,OAAIpI,UAAUyE,QAAU,EACfghC,EAAe4E,WAAWtqC,MAAMX,KAAMY,WACf,IAArBA,UAAUyE,OACZghC,EAAe6E,cAAcvqC,MAAMX,KAAMY,WAEzCylC,EAAeM,UAAUhmC,MAAMX,KAAMY,UAEhD,EAEAylC,EAAe4E,WAAa,SAAoBlkC,EAAU6N,GACxD,OAAO,IAAIyxB,EAAet/B,EAAU6N,EACtC,EAEAyxB,EAAe6E,cAAgB,SAAuBnpB,EAAMC,EAAMpN,GAEhE,OAAO,IAAIyxB,EADFjK,GAAcpzB,GAAG+Y,EAAMC,GACFpN,EAChC,EAEAyxB,EAAeM,UAAY,SAAmBtc,EAAMtS,EAAOknB,EAAY/B,EAAM0J,EAAQtK,EAAQnwB,EAAcyI,GAkBzG,YAjBa,IAATsoB,IACFA,EAAO,QAGM,IAAX0J,IACFA,EAAS,QAGI,IAAXtK,IACFA,EAAS,QAGU,IAAjBnwB,IACFA,EAAe,GAIV,IAAIk6B,EADFjK,GAAcpzB,GAAGqhB,EAAMtS,EAAOknB,EAAY/B,EAAM0J,EAAQtK,EAAQnwB,GAC3CyI,EAChC,EAEAyxB,EAAeI,UAAY,SAAmB5nB,EAASnK,GACrDlS,EAAeqc,EAAS,WACxBrc,EAAekS,EAAM,QACrB,IACIE,EADQF,EAAK0J,QACExJ,OAAOiK,GAE1B,OAAO,IAAIwnB,EADDjK,GAAcC,cAAcxd,EAAQioB,cAAejoB,EAAQ7S,OAAQ4I,GAC9CA,EACjC,EAEAyxB,EAAel8B,MAAQ,SAAe9I,EAAMic,GAM1C,YALkB,IAAdA,IACFA,EAAYC,GAAkB4tB,sBAGhC3oC,EAAe8a,EAAW,aACnBA,EAAUnT,MAAM9I,EAAMglC,EAAenG,KAC9C,EAeA,IAAIp6B,EAASugC,EAAevlC,UA6a5B,OA3aAgF,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKL,EAAYkJ,UAAW9S,KAAKsoC,cAAclrB,cAAcnT,KAAKL,EAAYyJ,YAAarT,KAAKqnC,cAAcL,eAAe/8B,KAAKL,EAAY+X,eAAgB3hB,KAAK4U,SAASsL,eAC9L,EAEApa,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C,IAAIq3B,EAAM4I,EAAej9B,KAAKG,GAE9B,OAAInD,aAAgBqD,GAClBg0B,EAAMA,EAAIwK,sBAAsBjoC,KAAK4f,SAC9B5f,KAAK8oC,UAAUt/B,MAAMi0B,EAAIqL,UAAW1iC,IAGtCA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAOslC,kBAAoB,SAA2B12B,GACpD,OAAOk0B,GAAcnC,UAAUzmC,KAAK8oC,UAAW9oC,KAAK4f,QAASlL,EAC/D,EAEA5O,EAAOulC,mBAAqB,SAA4B32B,GACtD,OAAOk0B,GAAcM,QAAQlpC,KAAK8oC,UAAWp0B,EAAM1U,KAAK4f,QAC1D,EAEA9Z,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBG,aACtBuD,GAAcC,SACZ1C,IAAWjB,EAAgBK,YAC7B/K,EAAWoC,MACTuJ,IAAWjB,EAAgBS,UAAYQ,IAAWjB,EAAgBO,OACpE1U,KAAK4U,SACHQ,IAAWjB,EAAgBW,YAC7B9U,KAAKsoC,cACHlzB,IAAWjB,EAAgBa,YAC7BhV,KAAKqnC,cACHjyB,IAAWjB,EAAgBC,SAC7B,KAGF6I,EAAsBnc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC1D,EAEAtP,EAAOK,IAAM,SAAa2L,GACxB,GAAIA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYsb,gBACf,MAAM,IAAIjkB,EAAkB,+BAAiC6Q,GAE/D,KAAKlI,EAAY+X,eACf,OAAO3hB,KAAK4U,SAASsL,eAGzB,OAAOlgB,KAAK8oC,UAAU3iC,IAAI2L,EAC5B,CAEA,OAAOmL,EAAsBnc,UAAUqF,IAAIsB,KAAKzH,KAAM8R,EACxD,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,GAAIA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYsb,gBACf,OAAOllB,KAAKs9B,gBAEd,KAAK1zB,EAAY+X,eACf,OAAO3hB,KAAK4U,SAASsL,eAGzB,OAAOlgB,KAAK8oC,UAAU/+B,QAAQ+H,EAChC,CAEA,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAO8O,OAAS,WACd,OAAO5U,KAAK4f,OACd,EAEA9Z,EAAOukB,KAAO,WACZ,OAAOrqB,KAAK8oC,UAAUze,MACxB,EAEAvkB,EAAOq6B,WAAa,WAClB,OAAOngC,KAAK8oC,UAAU3I,YACxB,EAEAr6B,EAAOiS,MAAQ,WACb,OAAO/X,KAAK8oC,UAAU/wB,OACxB,EAEAjS,EAAOm5B,WAAa,WAClB,OAAOj/B,KAAK8oC,UAAU7J,YACxB,EAEAn5B,EAAOkkB,UAAY,WACjB,OAAOhqB,KAAK8oC,UAAU9e,WACxB,EAEAlkB,EAAOsQ,UAAY,WACjB,OAAOpW,KAAK8oC,UAAU1yB,WACxB,EAEAtQ,EAAOo3B,KAAO,WACZ,OAAOl9B,KAAK8oC,UAAU5L,MACxB,EAEAp3B,EAAO8gC,OAAS,WACd,OAAO5mC,KAAK8oC,UAAUlC,QACxB,EAEA9gC,EAAOw2B,OAAS,WACd,OAAOt8B,KAAK8oC,UAAUxM,QACxB,EAEAx2B,EAAOkG,KAAO,WACZ,OAAOhM,KAAK8oC,UAAU98B,MACxB,EAEAlG,EAAO2iC,gBAAkB,WACvB,OAAOzoC,KAAK8oC,SACd,EAEAhjC,EAAOwiC,YAAc,WACnB,OAAOtoC,KAAK8oC,UAAUR,aACxB,EAEAxiC,EAAOuhC,YAAc,WACnB,OAAOrnC,KAAK8oC,UAAUzB,aACxB,EAEAvhC,EAAOwgC,aAAe,WACpB,OAAOH,GAAWn9B,GAAGhJ,KAAK8oC,UAAUzB,cAAernC,KAAK4f,QAC1D,EAEA9Z,EAAOwlC,gBAAkB,WACvB,OAAO1C,GAAc5/B,GAAGhJ,KAAK8oC,UAAW9oC,KAAK4f,QAC/C,EAEA9Z,EAAOyiC,UAAY,WACjB,OAAOvoC,KAAK8oC,UAAUP,UAAUvoC,KAAK4f,QACvC,EAEA9Z,EAAOw3B,cAAgB,WACrB,OAAOt9B,KAAK8oC,UAAUxL,cAAct9B,KAAK4f,QAC3C,EAEA9Z,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,GAIvBsT,aAAuBzT,EAHlByT,EAAYtW,eAAiBsW,EAAYrW,cAO5B,MAAfqW,GAAuBA,EAAYpW,cAAc9G,KAC1D,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,OAAIA,aAAiBlI,EACfkI,IAAUlI,EAAYsb,iBAAmBpT,IAAUlI,EAAY+X,eAC1D7P,EAAMtB,QAGRxQ,KAAK8oC,UAAUt4B,MAAMsB,GAGvBA,EAAMrB,eAAezQ,KAC9B,EAEA8F,EAAO6W,aAAe,SAAsBE,GAG1C,OAFAra,EAAeqa,GAEXA,aAAoB9D,IAAa8D,aAAoB9U,IAAa8U,aAAoBuf,GACjFp8B,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU7+B,KAAK4S,GAAW7c,KAAK4f,SAC3D/C,aAAoByB,GACtB+nB,EAAeI,UAAU5pB,EAAU7c,KAAK4f,SACtC/C,aAAoBmD,EACtBhgB,KAAKurC,oBAAoBvrC,KAAK8oC,UAAWjsB,GACvCA,aAAoBwpB,EACtBxpB,EAGFA,EAASlM,WAAW3Q,KAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAGrD,GAFApO,EAAesP,GAEXA,aAAiBlI,EAAa,CAChC,IAAIg4B,EAAI9vB,EAER,OAAQ8vB,GACN,KAAKh4B,EAAYsb,gBACf,OAAOmhB,EAAeI,UAAUnoB,GAAQ+d,cAAczrB,EAAU5Q,KAAKgM,QAAShM,KAAK4f,SAErF,KAAKhW,EAAY+X,eAEb,OAAO3hB,KAAKurC,oBAAoBvrC,KAAK8oC,UAAW9oB,EAAWuB,eAAeqgB,EAAEx1B,mBAAmBwE,KAIrG,OAAO5Q,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU7+B,KAAK6H,EAAOlB,GAAW5Q,KAAK4f,QAC7E,CAEA,OAAO9N,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAOylC,oBAAsB,SAA6BxkC,EAAU6N,GAClE,OAAI5U,KAAK8oC,YAAc/hC,GAAY/G,KAAK4f,QAAQ7Z,OAAO6O,GAC9C5U,KAGF,IAAIqmC,EAAet/B,EAAU6N,EACtC,EAEA9O,EAAO+7B,SAAW,SAAkBxX,GAClC,OAAOrqB,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUjH,SAASxX,GAAOrqB,KAAK4f,QACtE,EAEA9Z,EAAOy6B,UAAY,SAAmBxoB,GACpC,OAAO/X,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUvI,UAAUxoB,GAAQ/X,KAAK4f,QACxE,EAEA9Z,EAAO06B,eAAiB,SAAwBvB,GAC9C,OAAOj/B,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUtI,eAAevB,GAAaj/B,KAAK4f,QAClF,EAEA9Z,EAAOqkB,cAAgB,SAAuBH,GAC5C,OAAOhqB,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU3e,cAAcH,GAAYhqB,KAAK4f,QAChF,EAEA9Z,EAAO+hC,SAAW,SAAkB3K,GAClC,OAAOl9B,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUjB,SAAS3K,GAAOl9B,KAAK4f,QACtE,EAEA9Z,EAAOgiC,WAAa,SAAoBlB,GACtC,OAAO5mC,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUhB,WAAWlB,GAAS5mC,KAAK4f,QAC1E,EAEA9Z,EAAOiiC,WAAa,SAAoBzL,GACtC,OAAOt8B,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUf,WAAWzL,GAASt8B,KAAK4f,QAC1E,EAEA9Z,EAAOkiC,SAAW,SAAkB77B,GAClC,OAAOnM,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUd,SAAS77B,GAAenM,KAAK4f,QAC9E,EAEA9Z,EAAOqiC,oBAAsB,SAA6BvzB,GAExD,OADApS,EAAeoS,EAAQ,UAChB5U,KAAKurC,oBAAoBvrC,KAAK8oC,UAAWl0B,EAClD,EAEA9O,EAAOmiC,sBAAwB,SAA+BrzB,GAG5D,GAFApS,EAAeoS,EAAQ,UAEnBA,EAAO7O,OAAO/F,KAAK4f,SACrB,OAAO5f,KAGT,IAAIkoC,EAAatzB,EAAOsL,eAAiBlgB,KAAK4f,QAAQM,eAItD,OAAO,IAAImmB,EAFIrmC,KAAK8oC,UAAU97B,YAAYk7B,GAENtzB,EACtC,EAEA9O,EAAOwhC,YAAc,SAAqBlhC,GACxC,OAAOpG,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUxB,YAAYlhC,GAAOpG,KAAK4f,QACzE,EAEA9Z,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAC3D,OAAIA,aAAgBqD,EACXzJ,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU3/B,KAAKuD,EAAatG,GAAOpG,KAAK4f,SAGxExZ,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAO0T,UAAY,SAAmBtB,GACpC,OAAOlY,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUtvB,UAAUtB,GAAQlY,KAAK4f,QACxE,EAEA9Z,EAAO4T,WAAa,SAAoBjD,GACtC,OAAOzW,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUpvB,WAAWjD,GAASzW,KAAK4f,QAC1E,EAEA9Z,EAAOsmB,UAAY,SAAmB3T,GACpC,OAAOzY,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU1c,UAAU3T,GAAQzY,KAAK4f,QACxE,EAEA9Z,EAAOoH,SAAW,SAAkBrF,GAClC,OAAO7H,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU57B,SAASrF,GAAO7H,KAAK4f,QACtE,EAEA9Z,EAAOsH,UAAY,SAAmBlF,GACpC,OAAOlI,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU17B,UAAUlF,GAAQlI,KAAK4f,QACxE,EAEA9Z,EAAOwH,YAAc,SAAqBjF,GACxC,OAAOrI,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUx7B,YAAYjF,GAAUrI,KAAK4f,QAC5E,EAEA9Z,EAAOkH,YAAc,SAAqB1F,GACxC,OAAOtH,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU97B,YAAY1F,GAAUtH,KAAK4f,QAC5E,EAEA9Z,EAAO8G,UAAY,SAAmBrF,GACpC,OAAOvH,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUl8B,UAAUrF,GAAQvH,KAAK4f,QACxE,EAEA9Z,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,GACRA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAClE,OAAOpG,KAAKmJ,MAAM,EAAI8E,EAAkB7H,EAC1C,EAEAN,EAAO8T,WAAa,SAAoB1B,GACtC,OAAOlY,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUlvB,WAAW1B,GAAQlY,KAAK4f,QACzE,EAEA9Z,EAAOgU,YAAc,SAAqBrD,GACxC,OAAOzW,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUhvB,YAAYrD,GAASzW,KAAK4f,QAC3E,EAEA9Z,EAAOglC,WAAa,SAAoBryB,GACtC,OAAOzY,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUgC,WAAWryB,GAAQzY,KAAK4f,QACzE,EAEA9Z,EAAOoI,UAAY,SAAmBrG,GACpC,OAAO7H,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU56B,UAAUrG,GAAO7H,KAAK4f,QACvE,EAEA9Z,EAAOsI,WAAa,SAAoBlG,GACtC,OAAOlI,KAAKurC,oBAAoBvrC,KAAK8oC,UAAU16B,WAAWlG,GAAQlI,KAAK4f,QACzE,EAEA9Z,EAAOwI,aAAe,SAAsBjG,GAC1C,OAAOrI,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUx6B,aAAajG,GAAUrI,KAAK4f,QAC7E,EAEA9Z,EAAO0I,aAAe,SAAsBlH,GAC1C,OAAOtH,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUt6B,aAAalH,GAAUtH,KAAK4f,QAC7E,EAEA9Z,EAAO8I,WAAa,SAAoBrH,GACtC,OAAOvH,KAAKurC,oBAAoBvrC,KAAK8oC,UAAUl6B,WAAWrH,GAAQvH,KAAK4f,QACzE,EAEA9Z,EAAO2J,UAAY,SAAmBzJ,GAIpC,GAHAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOqgC,EAAgB,SAEnCrmC,KAAK4U,SAAS7O,OAAOC,EAAM4O,UAC7B,OAAO5U,KAAKyoC,kBAAkBh5B,UAAUzJ,EAAMyiC,mBAGhD,IAAI94B,EAAMvM,EAASsB,eAAe1E,KAAKs9B,gBAAiBt3B,EAAMs3B,iBAU9D,OARY,IAAR3tB,GAGU,IAFZA,EAAM3P,KAAKqnC,cAAcr7B,OAAShG,EAAMqhC,cAAcr7B,UAGpD2D,EAAM3P,KAAKyoC,kBAAkBh5B,UAAUzJ,EAAMyiC,oBAI1C94B,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAChCxD,EAAewD,EAAO,SACtB,IAAI0iC,EAAe1oC,KAAKs9B,gBACpBqL,EAAgB3iC,EAAMs3B,gBAC1B,OAAOoL,EAAeC,GAAiBD,IAAiBC,GAAiB3oC,KAAKqnC,cAAcr7B,OAAShG,EAAMqhC,cAAcr7B,MAC3H,EAEAlG,EAAO66B,SAAW,SAAkB36B,GAClCxD,EAAewD,EAAO,SACtB,IAAI0iC,EAAe1oC,KAAKs9B,gBACpBqL,EAAgB3iC,EAAMs3B,gBAC1B,OAAOoL,EAAeC,GAAiBD,IAAiBC,GAAiB3oC,KAAKqnC,cAAcr7B,OAAShG,EAAMqhC,cAAcr7B,MAC3H,EAEAlG,EAAOqhC,QAAU,SAAiBnhC,GAEhC,OADAxD,EAAewD,EAAO,SACfhG,KAAKs9B,kBAAoBt3B,EAAMs3B,iBAAmBt9B,KAAKqnC,cAAcr7B,SAAWhG,EAAMqhC,cAAcr7B,MAC7G,EAEAlG,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiBqgC,GACZrmC,KAAK8oC,UAAU/iC,OAAOC,EAAM8iC,YAAc9oC,KAAK4f,QAAQ7Z,OAAOC,EAAM4Z,QAI/E,EAEA9Z,EAAOX,SAAW,WAChB,OAAOnF,KAAK8oC,UAAU3jC,WAAanF,KAAK4f,QAAQza,UAClD,EAEAW,EAAOjF,SAAW,WAChB,OAAOb,KAAK8oC,UAAUjoC,WAAab,KAAK4f,QAAQ/e,UAClD,EAEAiF,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAE9B,OADA9a,EAAe8a,EAAW,aACnBA,EAAUD,OAAOrd,KAC1B,EAEOqmC,CACT,CA/hBqB,CA+hBnBvpB,GASE0uB,GAAiB,OACjBC,GAAoBD,OACpBzyB,GAAY,SAAU2yB,GA2HxB,SAAS3yB,EAAUsR,EAAMtS,EAAOknB,GAC9B,IAAIz3B,EAiBJ,OAfAA,EAAQkkC,EAAiBjkC,KAAKzH,OAASA,KACvCwC,EAAe6nB,EAAM,QACrB7nB,EAAeuV,EAAO,SACtBvV,EAAey8B,EAAY,cAEvBlnB,aAAiBxB,IACnBwB,EAAQA,EAAMtV,SAGhB+E,EAAMq5B,MAAQz9B,EAASe,UAAUkmB,GACjC7iB,EAAM03B,OAAS97B,EAASe,UAAU4T,GAClCvQ,EAAM23B,KAAO/7B,EAASe,UAAU86B,GAEhClmB,EAAU+H,UAAUtZ,EAAMq5B,MAAOr5B,EAAM03B,OAAQ13B,EAAM23B,MAE9C33B,CACT,CA7IA1F,EAAeiX,EAAW2yB,GAE1B3yB,EAAUqmB,IAAM,SAAamH,GAC3B,IAAI3G,EAUJ,OAPEA,EADiB,MAAf2G,EACM9G,GAAMC,oBACL6G,aAAuBzoB,EACxB2hB,GAAME,OAAO4G,GAEbA,EAGHxtB,EAAU0tB,UAAU7G,EAAM/gB,UAAW+gB,EAAMlrB,OACpD,EAEAqE,EAAU0tB,UAAY,SAAmB5nB,EAASnK,QACnC,IAATA,IACFA,EAAOoJ,EAAOC,iBAGhBvb,EAAeqc,EAAS,WACxB,IAAIjK,EAASF,EAAK0J,QAAQxJ,OAAOiK,GAC7BlR,EAAWkR,EAAQioB,cAAgBlyB,EAAOsL,eAC1CyrB,EAAWvoC,EAASW,SAAS4J,EAAU5F,GAAUC,iBACrD,OAAO+Q,EAAUoE,WAAWwuB,EAC9B,EAEA5yB,EAAU/P,GAAK,SAAYqhB,EAAMtS,EAAOknB,GACtC,OAAO,IAAIlmB,EAAUsR,EAAMtS,EAAOknB,EACpC,EAEAlmB,EAAUwpB,UAAY,SAAmBlY,EAAML,GAC7CpgB,EAAYuJ,KAAKtB,gBAAgBwY,GACjC,IAAIjT,EAAOS,GAAc+R,WAAWS,GAElB,MAAdL,IAA8B,IAAT5S,GACvB/U,GAAO,EAAO,oCAAyCgoB,EAAO,uBAAyBppB,GAGzF,IAAI4pB,EAAMtU,EAAMvN,GAAGpF,KAAKE,OAAOkmB,EAAY,GAAK,GAAK,IAGjDA,EAFWa,EAAI1T,eAAeC,GAAQyT,EAAIxlB,OAAO+R,GAAQ,IAG3DyT,EAAMA,EAAI1hB,KAAK,IAGjB,IAAIq8B,EAAMxb,EAAYa,EAAI1T,eAAeC,GAAQ,EACjD,OAAO,IAAI2B,EAAUsR,EAAMQ,EAAIpoB,QAAS+iC,EAC1C,EAEAzsB,EAAUoE,WAAa,SAAoBwuB,GAKzC,IAAI9iB,EAAQ+iB,EAAcC,EAAQC,EAASC,OAJ1B,IAAbJ,IACFA,EAAW,GAIbI,EAAUJ,EAAWF,GAErB5iB,EAAS,GADTkjB,GAAW,IAGG,IAEZljB,EAAwB,KADxB+iB,EAAexoC,EAASC,OAAO0oC,EAAU,EAAGP,IAAkB,GAE9DO,IAAYH,EAAeJ,KAI7BK,EAASE,GAAW,KADpBD,EAAU1oC,EAASC,OAAO,IAAM0oC,EAAU,IAAKP,KACXpoC,EAASC,OAAOyoC,EAAS,GAAK1oC,EAASC,OAAOyoC,EAAS,KAAO1oC,EAASC,OAAOyoC,EAAS,OAE9G,IAEXD,EAASE,GAAW,MADpBD,EACoC1oC,EAASC,OAAOyoC,EAAS,GAAK1oC,EAASC,OAAOyoC,EAAS,KAAO1oC,EAASC,OAAOyoC,EAAS,OAG7HA,GAAWjjB,EACX,IAAImjB,EAAYH,EACZI,EAAc7oC,EAASC,OAAmB,EAAZ2oC,EAAgB,EAAG,KACjDj0B,GAASk0B,EAAc,GAAK,GAAK,EACjCzG,EAAMwG,EAAY5oC,EAASC,OAAqB,IAAd4oC,EAAoB,EAAG,IAAM,EAGnE,OAAO,IAAIlzB,EAFX+yB,GAAW1oC,EAASC,OAAO4oC,EAAa,IAEbl0B,EAAOytB,EACpC,EAEAzsB,EAAU3P,KAAO,SAAc7C,GAC7B/D,EAAe+D,EAAU,YACzB,IAAIwb,EAAOxb,EAAS4O,MAAMhB,EAAgBW,aAE1C,GAAY,MAARiN,EACF,MAAM,IAAI9gB,EAAkB,qDAAuDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,KAGxK,OAAO6hB,CACT,EAEAhJ,EAAU5O,MAAQ,SAAe9I,EAAMic,GAMrC,YALkB,IAAdA,IACFA,EAAYC,GAAkBuf,gBAGhCz6B,EAAoB,MAAbib,EAAmB,YAAazb,GAChCyb,EAAUnT,MAAM9I,EAAM0X,EAAUmnB,KACzC,EAEAnnB,EAAUmzB,sBAAwB,SAA+B7hB,EAAMtS,EAAOklB,GAC5E,OAAQllB,GACN,KAAK,EACHklB,EAAMr5B,KAAKqtB,IAAIgM,EAAKplB,GAAc+R,WAAWS,GAAQ,GAAK,IAC1D,MAEF,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACH4S,EAAMr5B,KAAKqtB,IAAIgM,EAAK,IAIxB,OAAOlkB,EAAU/P,GAAGqhB,EAAMtS,EAAOklB,EACnC,EAuBAlkB,EAAU+H,UAAY,SAAmBuJ,EAAMtS,EAAOknB,GACpD,IAAIuG,EAKJ,GAJA57B,EAAYuJ,KAAKtB,gBAAgBwY,GACjCzgB,EAAYqJ,cAAcpB,gBAAgBkG,GAC1CnO,EAAYgJ,aAAaf,gBAAgBotB,GAErCA,EAAa,GAAI,CAGnB,OAFAuG,EAAM,GAEEztB,GACN,KAAK,EACHytB,EAAM3tB,GAAc+R,WAAWS,GAAQ,GAAK,GAC5C,MAEF,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACHmb,EAAM,GAGNvG,EAAauG,GAEbnjC,GAAO,EADU,KAAf48B,EACY,kCAAuC5U,EAAO,uBAE9C,iBAAoBA,EAAO,MAAUtS,EAAQ,MAAUknB,EAAa,IAFGh+B,EAK3F,CACF,EAEA,IAAI6E,EAASiT,EAAUjY,UA+mBvB,OA7mBAgF,EAAO6D,YAAc,SAAqBmI,GACxC,OAAO45B,EAAiB5qC,UAAU6I,YAAYlC,KAAKzH,KAAM8R,EAC3D,EAEAhM,EAAO0K,MAAQ,SAAesB,GAC5B,GAAIA,aAAiBlI,EAAa,CAChC,GAAIkI,EAAMlL,cAAe,CACvB,OAAQkL,GACN,KAAKlI,EAAYgJ,aACf,OAAO9B,EAAW9H,GAAG,EAAGhJ,KAAKyhC,iBAE/B,KAAK73B,EAAYiJ,YACf,OAAO/B,EAAW9H,GAAG,EAAGhJ,KAAK0hC,gBAE/B,KAAK93B,EAAYmJ,sBACf,OAAOjC,EAAW9H,GAAG,EAAGhJ,KAAK+X,UAAYxB,EAAMK,WAAkC,IAAtB5W,KAAK4pB,aAAyB,EAAI,GAE/F,KAAKhgB,EAAYsJ,YACf,OAAOlT,KAAK6gC,OAAS,EAAI/vB,EAAW9H,GAAG,EAAGq3B,GAAKiB,UAAY,GAAKxwB,EAAW9H,GAAG,EAAGq3B,GAAKiB,WAG1F,OAAOxvB,EAAMtB,OACf,CAEA,MAAM,IAAI/O,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMrB,eAAezQ,KAC9B,EAEA8F,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAK+J,QAAQ+H,EACtB,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAGhC,OAFAzP,EAAgB,MAATyP,EAAe,GAAIjQ,GAEtBiQ,aAAiBlI,EACZ5J,KAAKmsC,MAAMr6B,GAGbA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOqmC,MAAQ,SAAer6B,GAC5B,OAAQA,GACN,KAAKlI,EAAY6I,YACf,OAAOzS,KAAKoW,YAAY3T,QAE1B,KAAKmH,EAAY8I,6BACf,OAAOtP,EAASO,OAAO3D,KAAKm/B,KAAO,EAAG,GAAK,EAE7C,KAAKv1B,EAAY+I,4BACf,OAAOvP,EAASO,OAAO3D,KAAKgqB,YAAc,EAAG,GAAK,EAEpD,KAAKpgB,EAAYgJ,aACf,OAAO5S,KAAKm/B,KAEd,KAAKv1B,EAAYiJ,YACf,OAAO7S,KAAKgqB,YAEd,KAAKpgB,EAAYkJ,UACf,OAAO9S,KAAKod,aAEd,KAAKxT,EAAYmJ,sBACf,OAAO3P,EAASC,OAAOrD,KAAKm/B,KAAO,EAAG,GAAK,EAE7C,KAAKv1B,EAAYoJ,qBACf,OAAO5P,EAASC,OAAOrD,KAAKgqB,YAAc,EAAG,GAAK,EAEpD,KAAKpgB,EAAYqJ,cACf,OAAOjT,KAAKk/B,OAEd,KAAKt1B,EAAYq3B,gBACf,OAAOjhC,KAAKosC,kBAEd,KAAKxiC,EAAYsJ,YACf,OAAOlT,KAAK6gC,OAAS,EAAI7gC,KAAK6gC,MAAQ,EAAI7gC,KAAK6gC,MAEjD,KAAKj3B,EAAYuJ,KACf,OAAOnT,KAAK6gC,MAEd,KAAKj3B,EAAYwJ,IACf,OAAOpT,KAAK6gC,OAAS,EAAI,EAAI,EAGjC,MAAM,IAAIp/B,EAAiC,sBAAwBqQ,EACrE,EAEAhM,EAAOsmC,gBAAkB,WACvB,OAAoB,GAAbpsC,KAAK6gC,OAAc7gC,KAAKk/B,OAAS,EAC1C,EAEAp5B,EAAOwO,WAAa,WAClB,OAAOuD,GAAcC,QACvB,EAEAhS,EAAOukB,KAAO,WACZ,OAAOrqB,KAAK6gC,KACd,EAEA/6B,EAAOq6B,WAAa,WAClB,OAAOngC,KAAKk/B,MACd,EAEAp5B,EAAOiS,MAAQ,WACb,OAAOxB,EAAMvN,GAAGhJ,KAAKk/B,OACvB,EAEAp5B,EAAOm5B,WAAa,WAClB,OAAOj/B,KAAKm/B,IACd,EAEAr5B,EAAOkkB,UAAY,WACjB,OAAOhqB,KAAK+X,QAAQZ,eAAenX,KAAK4pB,cAAgB5pB,KAAKm/B,KAAO,CACtE,EAEAr5B,EAAOsQ,UAAY,WACjB,IAAI0T,EAAO1mB,EAASY,SAAShE,KAAKod,aAAe,EAAG,GACpD,OAAOtH,EAAU9M,GAAG8gB,EAAO,EAC7B,EAEAhkB,EAAO8jB,WAAa,WAClB,OAAO/R,GAAc+R,WAAW5pB,KAAK6gC,MACvC,EAEA/6B,EAAO27B,cAAgB,WACrB,OAAQzhC,KAAKk/B,QACX,KAAK,EACH,OAAOl/B,KAAK4pB,aAAe,GAAK,GAElC,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GACH,OAAO,GAET,QACE,OAAO,GAEb,EAEA9jB,EAAO47B,aAAe,WACpB,OAAO1hC,KAAK4pB,aAAe,IAAM,GACnC,EAEA9jB,EAAO6W,aAAe,SAAsBE,GAG1C,OAFAra,EAAeqa,EAAU,YAErBA,aAAoB9D,EACf8D,GAGTxa,EAAsC,mBAAxBwa,EAASlM,WAA2B,WAAYhP,GACvDkb,EAASlM,WAAW3Q,MAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAGrD,GAFAvO,EAAgB,MAATyP,EAAe,QAASjQ,GAE3BiQ,aAAiBlI,EAAa,CAChC,IAAIg4B,EAAI9vB,EAGR,OAFA8vB,EAAE/vB,gBAAgBjB,GAEVgxB,GACN,KAAKh4B,EAAY6I,YACf,OAAOzS,KAAKkN,SAAS0D,EAAW5Q,KAAKoW,YAAY3T,SAEnD,KAAKmH,EAAY8I,6BACf,OAAO1S,KAAKkN,SAAS0D,EAAW5Q,KAAK+J,QAAQH,EAAY8I,+BAE3D,KAAK9I,EAAY+I,4BACf,OAAO3S,KAAKkN,SAAS0D,EAAW5Q,KAAK+J,QAAQH,EAAY+I,8BAE3D,KAAK/I,EAAYgJ,aACf,OAAO5S,KAAKwgC,eAAe5vB,GAE7B,KAAKhH,EAAYiJ,YACf,OAAO7S,KAAKmqB,cAAcvZ,GAE5B,KAAKhH,EAAYkJ,UACf,OAAOiG,EAAUoE,WAAWvM,GAE9B,KAAKhH,EAAYmJ,sBACf,OAAO/S,KAAKosB,UAAUxb,EAAW5Q,KAAK+J,QAAQH,EAAYmJ,wBAE5D,KAAKnJ,EAAYoJ,qBACf,OAAOhT,KAAKosB,UAAUxb,EAAW5Q,KAAK+J,QAAQH,EAAYoJ,uBAE5D,KAAKpJ,EAAYqJ,cACf,OAAOjT,KAAKugC,UAAU3vB,GAExB,KAAKhH,EAAYq3B,gBACf,OAAOjhC,KAAK0Z,WAAW9I,EAAW5Q,KAAK+J,QAAQH,EAAYq3B,kBAE7D,KAAKr3B,EAAYsJ,YACf,OAAOlT,KAAK6hC,SAAS7hC,KAAK6gC,OAAS,EAAIjwB,EAAW,EAAIA,GAExD,KAAKhH,EAAYuJ,KACf,OAAOnT,KAAK6hC,SAASjxB,GAEvB,KAAKhH,EAAYwJ,IACf,OAAOpT,KAAK+J,QAAQH,EAAYwJ,OAASxC,EAAW5Q,KAAOA,KAAK6hC,SAAS,EAAI7hC,KAAK6gC,OAGtF,MAAM,IAAIp/B,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAO+7B,SAAW,SAAkBxX,GAClC,OAAIrqB,KAAK6gC,QAAUxW,EACVrqB,MAGT4J,EAAYuJ,KAAKtB,gBAAgBwY,GAC1BtR,EAAUmzB,sBAAsB7hB,EAAMrqB,KAAKk/B,OAAQl/B,KAAKm/B,MACjE,EAEAr5B,EAAOy6B,UAAY,SAAmBxoB,GACpC,IAAIs0B,EAAIt0B,aAAiBxB,EAAQwB,EAAMtV,QAAUsV,EAEjD,OAAI/X,KAAKk/B,SAAWmN,EACXrsC,MAGT4J,EAAYqJ,cAAcpB,gBAAgBw6B,GACnCtzB,EAAUmzB,sBAAsBlsC,KAAK6gC,MAAOwL,EAAGrsC,KAAKm/B,MAC7D,EAEAr5B,EAAO06B,eAAiB,SAAwBvB,GAC9C,OAAIj/B,KAAKm/B,OAASF,EACTj/B,KAGF+Y,EAAU/P,GAAGhJ,KAAK6gC,MAAO7gC,KAAKk/B,OAAQD,EAC/C,EAEAn5B,EAAOqkB,cAAgB,SAAuBH,GAC5C,OAAIhqB,KAAKgqB,cAAgBA,EAChBhqB,KAGF+Y,EAAUwpB,UAAUviC,KAAK6gC,MAAO7W,EACzC,EAEAlkB,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAI3D,GAHA5D,EAAekK,EAAa,eAC5BlK,EAAe4D,EAAM,QAEjBA,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWkD,KACd,OAAO3M,KAAKkN,SAASR,GAEvB,KAAKjD,EAAWmiB,MACd,OAAO5rB,KAAKosB,UAAU1f,GAExB,KAAKjD,EAAWoM,OACd,OAAO7V,KAAK0Z,WAAWhN,GAEzB,KAAKjD,EAAWmP,MACd,OAAO5Y,KAAKwZ,UAAU9M,GAExB,KAAKjD,EAAWy3B,QACd,OAAOlhC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,KAE3D,KAAKjD,EAAW03B,UACd,OAAOnhC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,MAE3D,KAAKjD,EAAW23B,UACd,OAAOphC,KAAKwZ,UAAUpW,EAASiB,aAAaqI,EAAa,MAE3D,KAAKjD,EAAW43B,KACd,OAAOrhC,KAAKiK,KAAKL,EAAYwJ,IAAKhQ,EAASa,QAAQjE,KAAK+J,QAAQH,EAAYwJ,KAAM1G,IAGtF,MAAM,IAAIjL,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAO0T,UAAY,SAAmBC,GACpC,GAAmB,IAAfA,EACF,OAAOzZ,KAGT,IAAI8hC,EAAUl4B,EAAYuJ,KAAK/G,mBAAmBpM,KAAK6gC,MAAQpnB,GAC/D,OAAOV,EAAUmzB,sBAAsBpK,EAAS9hC,KAAKk/B,OAAQl/B,KAAKm/B,KACpE,EAEAr5B,EAAO4T,WAAa,SAAoBC,GACtC,GAAoB,IAAhBA,EACF,OAAO3Z,KAGT,IACI+hC,EAD0B,GAAb/hC,KAAK6gC,OAAc7gC,KAAKk/B,OAAS,GACpBvlB,EAC1BmoB,EAAUl4B,EAAYuJ,KAAK/G,mBAAmBhJ,EAASW,SAASg+B,EAAY,KAC5EuK,EAAWlpC,EAASY,SAAS+9B,EAAY,IAAM,EACnD,OAAOhpB,EAAUmzB,sBAAsBpK,EAASwK,EAAUtsC,KAAKm/B,KACjE,EAEAr5B,EAAOsmB,UAAY,SAAmBmgB,GACpC,OAAOvsC,KAAKkN,SAAS9J,EAASiB,aAAakoC,EAAY,GACzD,EAEAzmC,EAAOoH,SAAW,SAAkBC,GAClC,GAAkB,IAAdA,EACF,OAAOnN,KAGT,IAAIwsC,EAAQppC,EAASa,QAAQjE,KAAKod,aAAcjQ,GAChD,OAAO4L,EAAUoE,WAAWqvB,EAC9B,EAEA1mC,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAGlE,OAFA5D,EAAeyL,EAAkB,oBACjCzL,EAAe4D,EAAM,QACdpG,KAAKwM,gBAAgB,EAAIyB,EAAkB7H,EACpD,EAEAN,EAAO8T,WAAa,SAAoBC,GACtC,OAAO7Z,KAAKwZ,WAA6B,EAAnBK,EACxB,EAEA/T,EAAOgU,YAAc,SAAqBC,GACxC,OAAO/Z,KAAK0Z,YAA+B,EAApBK,EACzB,EAEAjU,EAAOglC,WAAa,SAAoB2B,GACtC,OAAOzsC,KAAKosB,WAA6B,EAAnBqgB,EACxB,EAEA3mC,EAAOoI,UAAY,SAAmBC,GACpC,OAAOnO,KAAKkN,UAA2B,EAAlBiB,EACvB,EAEArI,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBW,YACtB9U,KAGF0rC,EAAiB5qC,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EACrD,EAEAtP,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOmlC,EAAiB5qC,UAAU6P,WAAWlJ,KAAKzH,KAAMuG,EAC1D,EAEAT,EAAO0D,MAAQ,SAAe8S,EAAIC,GAChC,OAAI3b,UAAUyE,OAAS,EACdrF,KAAK0sC,OAAOpwB,GAEZtc,KAAK2sC,OAAOrwB,EAAIC,EAE3B,EAEAzW,EAAO6mC,OAAS,SAAgBpjC,EAAcnD,GAC5C,IAAIq3B,EAAM1kB,EAAU3P,KAAKG,GAEzB,GAAInD,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWkD,KACd,OAAO3M,KAAK4sC,UAAUnP,GAExB,KAAKh0B,EAAWmiB,MACd,OAAOxoB,EAASC,OAAOrD,KAAK4sC,UAAUnP,GAAM,GAE9C,KAAKh0B,EAAWoM,OACd,OAAO7V,KAAK6sC,aAAapP,GAE3B,KAAKh0B,EAAWmP,MACd,OAAOxV,EAASC,OAAOrD,KAAK6sC,aAAapP,GAAM,IAEjD,KAAKh0B,EAAWy3B,QACd,OAAO99B,EAASC,OAAOrD,KAAK6sC,aAAapP,GAAM,KAEjD,KAAKh0B,EAAW03B,UACd,OAAO/9B,EAASC,OAAOrD,KAAK6sC,aAAapP,GAAM,MAEjD,KAAKh0B,EAAW23B,UACd,OAAOh+B,EAASC,OAAOrD,KAAK6sC,aAAapP,GAAM,MAEjD,KAAKh0B,EAAW43B,KACd,OAAO5D,EAAI1zB,QAAQH,EAAYwJ,KAAOpT,KAAK+J,QAAQH,EAAYwJ,KAGnE,MAAM,IAAI3R,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAO8mC,UAAY,SAAmBnP,GACpC,OAAOA,EAAIrgB,aAAepd,KAAKod,YACjC,EAEAtX,EAAO+mC,aAAe,SAAsBpP,GAC1C,IAAIqP,EAAmC,GAAzB9sC,KAAKosC,kBAAyBpsC,KAAKi/B,aAC7C8N,EAAkC,GAAxBtP,EAAI2O,kBAAyB3O,EAAIwB,aAC/C,OAAO77B,EAASC,OAAO0pC,EAAUD,EAAS,GAC5C,EAEAhnC,EAAO4mC,OAAS,SAAgB5zB,GAC9B,IAAI2kB,EAAM1kB,EAAU3P,KAAK0P,GAErBoB,EAAcujB,EAAI2O,kBAAoBpsC,KAAKosC,kBAE3CvkC,EAAO41B,EAAI0B,KAAOn/B,KAAKm/B,KAE3B,GAAIjlB,EAAc,GAAKrS,EAAO,EAAG,CAC/BqS,IACA,IAAI8yB,EAAWhtC,KAAK0Z,WAAWQ,GAC/BrS,EAAO41B,EAAIrgB,aAAe4vB,EAAS5vB,YACrC,MAAWlD,EAAc,GAAKrS,EAAO,IACnCqS,IACArS,GAAQ41B,EAAIgE,iBAGd,IAAIvpB,EAAQ9U,EAASC,OAAO6W,EAAa,IACrCzD,EAASrT,EAASO,OAAOuW,EAAa,IAC1C,OAAOjC,EAAOjP,GAAGkP,EAAOzB,EAAQ5O,EAClC,EAEA/B,EAAOkf,OAAS,WACd,OAAyB,IAArBpkB,UAAUyE,OACLrF,KAAKitC,QAAQtsC,MAAMX,KAAMY,WAEzBZ,KAAKktC,QAAQvsC,MAAMX,KAAMY,UAEpC,EAEAkF,EAAOmnC,QAAU,SAAiBjrB,GAGhC,GAFAxf,EAAewf,EAAM,QAEjBA,aAAgBja,GAClB,OAAOq0B,GAAcpzB,GAAGhJ,KAAMgiB,GACzB,GAAIA,aAAgBmkB,GACzB,OAAOnmC,KAAKmtC,kBAAkBnrB,GAE9B,MAAM,IAAIrgB,EAAyB,uDAAyDqgB,GAAQA,EAAKvhB,aAAeuhB,EAAKvhB,YAAYP,KAAO,YAAc8hB,EAAKvhB,YAAYP,KAAO,IAE1L,EAEA4F,EAAOonC,QAAU,SAAiBhQ,EAAM0J,EAAQtK,EAAQnwB,GAStD,YARe,IAAXmwB,IACFA,EAAS,QAGU,IAAjBnwB,IACFA,EAAe,GAGVnM,KAAKitC,QAAQllC,GAAUiB,GAAGk0B,EAAM0J,EAAQtK,EAAQnwB,GACzD,EAEArG,EAAOqnC,kBAAoB,SAA2BnrB,GACpD,OAAOqkB,GAAer9B,GAAGozB,GAAcpzB,GAAGhJ,KAAMgiB,EAAKqlB,eAAgBrlB,EAAKpN,SAC5E,EAEA9O,EAAOsnC,aAAe,SAAsB14B,GAC1C,OAAY,MAARA,EACK1U,KAAKqtC,qBAAqB34B,GAE1B0nB,GAAcpzB,GAAGhJ,KAAM+H,GAAUulC,SAE5C,EAEAxnC,EAAOunC,qBAAuB,SAA8B34B,GAC1DlS,EAAekS,EAAM,QACrB,IAAIynB,EAAMn8B,KAAKglB,OAAOjd,GAAUulC,UAEhC,GAAI54B,aAAgBsL,GAAe,EAAO,CACxC,IAAIqpB,EAAQ30B,EAAK0J,QAAQc,WAAWid,GAEvB,MAATkN,GAAiBA,EAAMO,UACzBzN,EAAMkN,EAAMkE,gBAEhB,CAEA,OAAO3E,GAAc5/B,GAAGmzB,EAAKznB,EAC/B,EAEA5O,EAAOsX,WAAa,WAClB,IAAI7Z,EAAIvD,KAAK6gC,MACTwL,EAAIrsC,KAAKk/B,OACT3N,EAAQ,EAoBZ,OAnBAA,GAAS,IAAMhuB,EAEXA,GAAK,EACPguB,GAASnuB,EAASC,OAAOE,EAAI,EAAG,GAAKH,EAASC,OAAOE,EAAI,GAAI,KAAOH,EAASC,OAAOE,EAAI,IAAK,KAE7FguB,GAASnuB,EAASC,OAAOE,GAAI,GAAKH,EAASC,OAAOE,GAAI,KAAOH,EAASC,OAAOE,GAAI,KAGnFguB,GAASnuB,EAASC,OAAO,IAAMgpC,EAAI,IAAK,IACxC9a,GAASvxB,KAAKi/B,aAAe,EAEzBoN,EAAI,IACN9a,IAEK1Z,GAAc+R,WAAWrmB,IAC5BguB,KAIGA,EAAQka,EACjB,EAEA3lC,EAAO2J,UAAY,SAAmBzJ,GAGpC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAO+S,EAAW,SAC3B/Y,KAAKwtC,YAAYxnC,EAC1B,EAEAF,EAAO0nC,YAAc,SAAqBC,GACxC,IAAI99B,EAAM3P,KAAK6gC,MAAQ4M,EAAU5M,MAUjC,OARY,IAARlxB,GAGU,IAFZA,EAAM3P,KAAKk/B,OAASuO,EAAUvO,UAG5BvvB,EAAM3P,KAAKm/B,KAAOsO,EAAUtO,MAIzBxvB,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAChC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAO66B,SAAW,SAAkB36B,GAClC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAOqhC,QAAU,SAAiBnhC,GAChC,OAAiC,IAA1BhG,KAAKyP,UAAUzJ,EACxB,EAEAF,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiB+S,GACgB,IAA5B/Y,KAAKwtC,YAAYxnC,EAI5B,EAEAF,EAAOX,SAAW,WAChB,IAAIuoC,EAAY1tC,KAAK6gC,MACjBV,EAAangC,KAAKk/B,OAClByO,EAAW3tC,KAAKm/B,KACpB,OAAO/7B,EAAS2B,KAAiB,WAAZ2oC,GAA0BA,GAAa,KAAOvN,GAAc,GAAKwN,EACxF,EAEA7nC,EAAOjF,SAAW,WAChB,IACI6sC,EAAY1tC,KAAK6gC,MACjBV,EAAangC,KAAKk/B,OAClByO,EAAW3tC,KAAKm/B,KA6BpB,OA5Bcv7B,KAAKqL,IAAIy+B,GAET,IACRA,EAAY,EACD,KAAO,IAAMA,EAAY,MAAQ59B,OAAO,IAEvC,IAAM49B,EAAY,MAAQ59B,OAAO,GAG7C49B,EAAY,KACD,IAAMA,EAEN,GAAKA,IAIlBvN,EAAa,GACD,KAAOA,EAEP,IAAMA,IAGlBwN,EAAW,GACD,KAAOA,EAEP,IAAMA,EAItB,EAEA7nC,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAG9B,OAFA9a,EAAe8a,EAAW,aAC1B3a,EAAgB2a,EAAWC,GAAmB,aACvCmuB,EAAiB5qC,UAAUuc,OAAO5V,KAAKzH,KAAMsd,EACtD,EAEOvE,CACT,CA/xBgB,CA+xBdiE,GAUE4wB,GAAsB,SAAU3wB,GAGlC,SAAS2wB,IACP,OAAO3wB,EAAsBtc,MAAMX,KAAMY,YAAcZ,IACzD,CAJA8B,EAAe8rC,EAAqB3wB,GAMpC,IAAInX,EAAS8nC,EAAoB9sC,UAuCjC,OArCAgF,EAAOwO,WAAa,WAClB,OAAOtU,KAAKsoC,cAAch0B,YAC5B,EAEAxO,EAAOqP,MAAQ,SAAeC,GAC5B,OAAIA,IAAWjB,EAAgBG,aACtBtU,KAAKsU,aACHc,IAAWjB,EAAgBK,YAC7B/K,EAAWoC,MACTuJ,IAAWjB,EAAgBW,YAC7BiE,GAAUoE,WAAWnd,KAAKsoC,cAAclrB,cACtChI,IAAWjB,EAAgBa,YAC7BhV,KAAKqnC,cACHjyB,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBS,SACzG,KAGFqI,EAAsBnc,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EAC1D,EAEAtP,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKL,EAAYkJ,UAAW9S,KAAKsoC,cAAclrB,cAAcnT,KAAKL,EAAYyJ,YAAarT,KAAKqnC,cAAcL,cAChI,EAEAlhC,EAAOyiC,UAAY,SAAmB3zB,GAEpC,OADAjS,EAAgBiS,EAAQoL,EAAY,UAC7B1B,GAAQ+d,cAAcr8B,KAAKs9B,cAAc1oB,GAAS5U,KAAKqnC,cAAcr7B,OAC9E,EAEAlG,EAAOw3B,cAAgB,SAAuB1oB,GAC5CpS,EAAeoS,EAAQ,UACvB,IACInM,EAAkB,MADPzI,KAAKsoC,cAAclrB,aACJpd,KAAKqnC,cAAcmB,gBAEjD,OADA//B,GAAQmM,EAAOsL,eACR9c,EAASe,UAAUsE,EAC5B,EAEOmlC,CACT,CA/C0B,CA+CxB9wB,GAEEsf,GAAgB,SAAUyR,GA8H5B,SAASzR,EAAcra,EAAMC,GAC3B,IAAIxa,EAOJ,OALAA,EAAQqmC,EAAqBpmC,KAAKzH,OAASA,KAC3C2C,EAAgBof,EAAMhJ,GAAW,QACjCpW,EAAgBqf,EAAMja,GAAW,QACjCP,EAAM0+B,MAAQnkB,EACdva,EAAM4+B,MAAQpkB,EACPxa,CACT,CAtIA1F,EAAes6B,EAAeyR,GAE9BzR,EAAcgD,IAAM,SAAamH,GAC/B,OAAmB,MAAfA,EACKnK,EAAcoK,KAAK/G,GAAMC,qBACvB6G,aAAuB9G,GACzBrD,EAAcoK,KAAKD,GAEnBnK,EAAcoK,KAAK/G,GAAME,OAAO4G,GAE3C,EAEAnK,EAAcoK,KAAO,SAAc5G,GAEjC,OADAp9B,EAAeo9B,EAAO,SACfxD,EAAcqK,UAAU7G,EAAM/gB,UAAW+gB,EAAMlrB,OACxD,EAEA0nB,EAAc0R,eAAiB,SAAwB/uB,EAAYnK,GACjE,IAAIm5B,EAAc3qC,EAASW,SAASgb,EAAY,KAAQnK,EAAOsL,eAC3D8tB,EAAgB5qC,EAASW,SAASgqC,EAAahmC,GAAUC,iBACzD6+B,EAAYzjC,EAASY,SAAS+pC,EAAahmC,GAAUC,iBACrDmE,EAAqD,IAAtC/I,EAASY,SAAS+a,EAAY,KAGjD,OAAO,IAAIqd,EAFArjB,GAAUoE,WAAW6wB,GACrBjmC,GAAU6c,cAAciiB,EAAW16B,GAEhD,EAEAiwB,EAAcpzB,GAAK,WACjB,OAAIpI,UAAUyE,QAAU,EACf+2B,EAAc8O,cAAcvqC,MAAMX,KAAMY,WAExCw7B,EAAcuK,UAAUhmC,MAAMX,KAAMY,UAE/C,EAEAw7B,EAAcuK,UAAY,SAAmBtc,EAAMtS,EAAOknB,EAAY/B,EAAM0J,EAAQtK,EAAQnwB,GAmB1F,YAlBa,IAAT+wB,IACFA,EAAO,QAGM,IAAX0J,IACFA,EAAS,QAGI,IAAXtK,IACFA,EAAS,QAGU,IAAjBnwB,IACFA,EAAe,GAKV,IAAIiwB,EAFArjB,GAAU/P,GAAGqhB,EAAMtS,EAAOknB,GAC1Bl3B,GAAUiB,GAAGk0B,EAAM0J,EAAQtK,EAAQnwB,GAEhD,EAEAiwB,EAAc8O,cAAgB,SAAuBnpB,EAAMC,GAGzD,OAFAxf,EAAeuf,EAAM,QACrBvf,EAAewf,EAAM,QACd,IAAIoa,EAAcra,EAAMC,EACjC,EAEAoa,EAAcqK,UAAY,SAAmB5nB,EAASnK,QACvC,IAATA,IACFA,EAAOoJ,EAAOC,iBAGhBvb,EAAeqc,EAAS,WACxBlc,EAAgBkc,EAASP,GAAS,WAClC9b,EAAekS,EAAM,QACrB,IAAIE,EAASF,EAAK0J,QAAQxJ,OAAOiK,GACjC,OAAOud,EAAcC,cAAcxd,EAAQioB,cAAejoB,EAAQ7S,OAAQ4I,EAC5E,EAEAwnB,EAAcC,cAAgB,SAAuByK,EAAa36B,EAAcyI,QAC1D,IAAhBkyB,IACFA,EAAc,QAGK,IAAjB36B,IACFA,EAAe,GAGQ,IAArBvL,UAAUyE,QAAgB8G,aAAwB6T,IACpDpL,EAASzI,EACTA,EAAe,GAGjB3J,EAAeoS,EAAQ,UACvB,IAAIm5B,EAAcjH,EAAclyB,EAAOsL,eACnC8tB,EAAgB5qC,EAASW,SAASgqC,EAAahmC,GAAUC,iBACzD6+B,EAAYzjC,EAASY,SAAS+pC,EAAahmC,GAAUC,iBAGzD,OAAO,IAAIo0B,EAFArjB,GAAUoE,WAAW6wB,GACrBjmC,GAAU6c,cAAciiB,EAAW16B,GAEhD,EAEAiwB,EAAchzB,KAAO,SAAc7C,GAGjC,GAFA/D,EAAe+D,EAAU,YAErBA,aAAoB61B,EACtB,OAAO71B,EACF,GAAIA,aAAoBqiC,GAC7B,OAAOriC,EAASkiC,kBAGlB,IAGE,OAAO,IAAIrM,EAFArjB,GAAU3P,KAAK7C,GACfwB,GAAUqB,KAAK7C,GAE5B,CAAE,MAAO6E,GACP,MAAM,IAAInK,EAAkB,oDAAsDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,IACvK,CACF,EAEAk8B,EAAcjyB,MAAQ,SAAe9I,EAAMic,GAMzC,YALkB,IAAdA,IACFA,EAAYC,GAAkB0wB,qBAGhCzrC,EAAe8a,EAAW,aACnBA,EAAUnT,MAAM9I,EAAM+6B,EAAc8D,KAC7C,EAaA,IAAIp6B,EAASs2B,EAAct7B,UAqc3B,OAncAgF,EAAOooC,cAAgB,SAAuBC,EAASC,GACrD,OAAIpuC,KAAKkmC,MAAMngC,OAAOooC,IAAYnuC,KAAKomC,MAAMrgC,OAAOqoC,GAC3CpuC,KAGF,IAAIo8B,EAAc+R,EAASC,EACpC,EAEAtoC,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,GAEhBsT,aAAuBzT,EADzByT,EAAYtW,eAAiBsW,EAAYrW,cAK5B,MAAfqW,GAAuBA,EAAYpW,cAAc9G,KAC1D,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,OAAIA,aAAiBlI,EACZkI,EAAMjL,cAAgB7G,KAAKomC,MAAM51B,MAAMsB,GAAS9R,KAAKkmC,MAAM11B,MAAMsB,GAGnEA,EAAMrB,eAAezQ,KAC9B,EAEA8F,EAAOK,IAAM,SAAa2L,GACxB,OAAIA,aAAiBlI,EACZkI,EAAMjL,cAAgB7G,KAAKomC,MAAMjgC,IAAI2L,GAAS9R,KAAKkmC,MAAM//B,IAAI2L,GAG/D+7B,EAAqB/sC,UAAUqF,IAAIsB,KAAKzH,KAAM8R,EACvD,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAGhC,OAFAtP,EAAesP,EAAO,SAElBA,aAAiBlI,EACZkI,EAAMjL,cAAgB7G,KAAKomC,MAAMr8B,QAAQ+H,GAAS9R,KAAKkmC,MAAMn8B,QAAQ+H,GAGvEA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOukB,KAAO,WACZ,OAAOrqB,KAAKkmC,MAAM7b,MACpB,EAEAvkB,EAAOq6B,WAAa,WAClB,OAAOngC,KAAKkmC,MAAM/F,YACpB,EAEAr6B,EAAOiS,MAAQ,WACb,OAAO/X,KAAKkmC,MAAMnuB,OACpB,EAEAjS,EAAOm5B,WAAa,WAClB,OAAOj/B,KAAKkmC,MAAMjH,YACpB,EAEAn5B,EAAOkkB,UAAY,WACjB,OAAOhqB,KAAKkmC,MAAMlc,WACpB,EAEAlkB,EAAOsQ,UAAY,WACjB,OAAOpW,KAAKkmC,MAAM9vB,WACpB,EAEAtQ,EAAOo3B,KAAO,WACZ,OAAOl9B,KAAKomC,MAAMlJ,MACpB,EAEAp3B,EAAO8gC,OAAS,WACd,OAAO5mC,KAAKomC,MAAMQ,QACpB,EAEA9gC,EAAOw2B,OAAS,WACd,OAAOt8B,KAAKomC,MAAM9J,QACpB,EAEAx2B,EAAOkG,KAAO,WACZ,OAAOhM,KAAKomC,MAAMp6B,MACpB,EAEAlG,EAAO6W,aAAe,SAAsBE,GAG1C,OAFAra,EAAeqa,EAAU,YAErBA,aAAoB9D,GACf/Y,KAAKkuC,cAAcrxB,EAAU7c,KAAKomC,OAChCvpB,aAAoB9U,GACtB/H,KAAKkuC,cAAcluC,KAAKkmC,MAAOrpB,GAC7BA,aAAoBuf,EACtBvf,GAGTxa,EAAsC,mBAAxBwa,EAASlM,WAA2B,WAAYhP,GACvDkb,EAASlM,WAAW3Q,MAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAGrD,OAFApO,EAAesP,EAAO,SAElBA,aAAiBlI,EACfkI,EAAMjL,cACD7G,KAAKkuC,cAAcluC,KAAKkmC,MAAOlmC,KAAKomC,MAAMn8B,KAAK6H,EAAOlB,IAEtD5Q,KAAKkuC,cAAcluC,KAAKkmC,MAAMj8B,KAAK6H,EAAOlB,GAAW5Q,KAAKomC,OAI9Dt0B,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAO+7B,SAAW,SAAkBxX,GAClC,OAAOrqB,KAAKkuC,cAAcluC,KAAKkmC,MAAMrE,SAASxX,GAAOrqB,KAAKomC,MAC5D,EAEAtgC,EAAOy6B,UAAY,SAAmBxoB,GACpC,OAAO/X,KAAKkuC,cAAcluC,KAAKkmC,MAAM3F,UAAUxoB,GAAQ/X,KAAKomC,MAC9D,EAEAtgC,EAAO06B,eAAiB,SAAwBvB,GAC9C,OAAOj/B,KAAKkuC,cAAcluC,KAAKkmC,MAAM1F,eAAevB,GAAaj/B,KAAKomC,MACxE,EAEAtgC,EAAOqkB,cAAgB,SAAuBH,GAC5C,OAAOhqB,KAAKkuC,cAAcluC,KAAKkmC,MAAM/b,cAAcH,GAAYhqB,KAAKomC,MACtE,EAEAtgC,EAAO+hC,SAAW,SAAkB3K,GAClC,IAAIkR,EAAUpuC,KAAKomC,MAAMyB,SAAS3K,GAElC,OAAOl9B,KAAKkuC,cAAcluC,KAAKkmC,MAAOkI,EACxC,EAEAtoC,EAAOgiC,WAAa,SAAoBlB,GACtC,IAAIwH,EAAUpuC,KAAKomC,MAAM0B,WAAWlB,GAEpC,OAAO5mC,KAAKkuC,cAAcluC,KAAKkmC,MAAOkI,EACxC,EAEAtoC,EAAOiiC,WAAa,SAAoBzL,GACtC,IAAI8R,EAAUpuC,KAAKomC,MAAM2B,WAAWzL,GAEpC,OAAOt8B,KAAKkuC,cAAcluC,KAAKkmC,MAAOkI,EACxC,EAEAtoC,EAAOkiC,SAAW,SAAkB77B,GAClC,IAAIiiC,EAAUpuC,KAAKomC,MAAM4B,SAAS77B,GAElC,OAAOnM,KAAKkuC,cAAcluC,KAAKkmC,MAAOkI,EACxC,EAEAtoC,EAAOwhC,YAAc,SAAqBlhC,GACxC,OAAOpG,KAAKkuC,cAAcluC,KAAKkmC,MAAOlmC,KAAKomC,MAAMkB,YAAYlhC,GAC/D,EAEAN,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAG3D,GAFA5D,EAAe4D,EAAM,QAEjBA,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWoC,MACd,OAAO7L,KAAK4M,UAAUF,GAExB,KAAKjD,EAAWoD,OACd,OAAO7M,KAAKkN,SAAS9J,EAASC,OAAOqJ,EAAa3E,GAAUsmC,iBAAiBzhC,UAAmE,IAAzDxJ,EAASO,OAAO+I,EAAa3E,GAAUsmC,iBAEhI,KAAK5kC,EAAWqD,OACd,OAAO9M,KAAKkN,SAAS9J,EAASC,OAAOqJ,EAAa3E,GAAUumC,iBAAiB1hC,UAAmE,IAAzDxJ,EAASO,OAAO+I,EAAa3E,GAAUumC,iBAEhI,KAAK7kC,EAAWC,QACd,OAAO1J,KAAKgN,YAAYN,GAE1B,KAAKjD,EAAW+9B,QACd,OAAOxnC,KAAKsN,YAAYZ,GAE1B,KAAKjD,EAAWi+B,MACd,OAAO1nC,KAAKoN,UAAUV,GAExB,KAAKjD,EAAWm+B,UACd,OAAO5nC,KAAKkN,SAAS9J,EAASC,OAAOqJ,EAAa,MAAMU,UAA8C,GAApChK,EAASO,OAAO+I,EAAa,MAGnG,OAAO1M,KAAKkuC,cAAcluC,KAAKkmC,MAAM/8B,KAAKuD,EAAatG,GAAOpG,KAAKomC,MACrE,CAEA,OAAOhgC,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAO0T,UAAY,SAAmBtB,GACpC,IAAIi2B,EAAUnuC,KAAKkmC,MAAM1sB,UAAUtB,GAEnC,OAAOlY,KAAKkuC,cAAcC,EAASnuC,KAAKomC,MAC1C,EAEAtgC,EAAO4T,WAAa,SAAoBjD,GACtC,IAAI03B,EAAUnuC,KAAKkmC,MAAMxsB,WAAWjD,GAEpC,OAAOzW,KAAKkuC,cAAcC,EAASnuC,KAAKomC,MAC1C,EAEAtgC,EAAOsmB,UAAY,SAAmB3T,GACpC,IAAI01B,EAAUnuC,KAAKkmC,MAAM9Z,UAAU3T,GAEnC,OAAOzY,KAAKkuC,cAAcC,EAASnuC,KAAKomC,MAC1C,EAEAtgC,EAAOoH,SAAW,SAAkBrF,GAClC,IAAIsmC,EAAUnuC,KAAKkmC,MAAMh5B,SAASrF,GAElC,OAAO7H,KAAKkuC,cAAcC,EAASnuC,KAAKomC,MAC1C,EAEAtgC,EAAOsH,UAAY,SAAmBlF,GACpC,OAAOlI,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAOh+B,EAAO,EAAG,EAAG,EAAG,EAC5D,EAEApC,EAAOwH,YAAc,SAAqBjF,GACxC,OAAOrI,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAO,EAAG79B,EAAS,EAAG,EAAG,EAC9D,EAEAvC,EAAOkH,YAAc,SAAqB1F,GACxC,OAAOtH,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAO,EAAG,EAAG5+B,EAAS,EAAG,EAC9D,EAEAxB,EAAO8G,UAAY,SAAmBrF,GACpC,OAAOvH,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAO,EAAG,EAAG,EAAG3+B,EAAO,EAC5D,EAEAzB,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAElE,OADA5D,EAAe4D,EAAM,QACdpG,KAAKwM,gBAAgB,EAAIyB,EAAkB7H,EACpD,EAEAN,EAAO8T,WAAa,SAAoB1B,GACtC,OAAOlY,KAAKwZ,WAAW,EAAItB,EAC7B,EAEApS,EAAOgU,YAAc,SAAqBrD,GACxC,OAAOzW,KAAK0Z,YAAY,EAAIjD,EAC9B,EAEA3Q,EAAOglC,WAAa,SAAoBryB,GACtC,OAAOzY,KAAKosB,WAAW,EAAI3T,EAC7B,EAEA3S,EAAOoI,UAAY,SAAmBrG,GACpC,OAAO7H,KAAKkN,UAAU,EAAIrF,EAC5B,EAEA/B,EAAOsI,WAAa,SAAoBlG,GACtC,OAAOlI,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAOh+B,EAAO,EAAG,EAAG,GAAI,EAC7D,EAEApC,EAAOwI,aAAe,SAAsBjG,GAC1C,OAAOrI,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAO,EAAG79B,EAAS,EAAG,GAAI,EAC/D,EAEAvC,EAAO0I,aAAe,SAAsBlH,GAC1C,OAAOtH,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAO,EAAG,EAAG5+B,EAAS,GAAI,EAC/D,EAEAxB,EAAO8I,WAAa,SAAoBrH,GACtC,OAAOvH,KAAKuuC,kBAAkBvuC,KAAKkmC,MAAO,EAAG,EAAG,EAAG3+B,GAAQ,EAC7D,EAEAzB,EAAOyoC,kBAAoB,SAA2BJ,EAASjmC,EAAOG,EAASf,EAASC,EAAOsrB,GAC7F,GAAc,IAAV3qB,GAA2B,IAAZG,GAA6B,IAAZf,GAA2B,IAAVC,EACnD,OAAOvH,KAAKkuC,cAAcC,EAASnuC,KAAKomC,OAG1C,IAAIoI,EAAUprC,EAASC,OAAOkE,EAAOQ,GAAU0mC,eAAiBrrC,EAASC,OAAOiE,EAASS,GAAUC,iBAAmB5E,EAASC,OAAOgF,EAASN,GAAU2mC,iBAAmBtrC,EAASC,OAAO6E,EAAOH,GAAU4mC,eAC7MH,GAAW3b,EACX,IAAI+b,EAAWxrC,EAASO,OAAO4D,EAAOQ,GAAU0mC,eAAiBrrC,EAASO,OAAO2D,EAASS,GAAUC,iBAAmBD,GAAUW,iBAAmBtF,EAASO,OAAO0E,EAASN,GAAU2mC,iBAAmB3mC,GAAU0/B,iBAAmBrkC,EAASO,OAAOuE,EAAOH,GAAU4mC,eAAiB5mC,GAAU4/B,eAE/RkH,EAAS7uC,KAAKomC,MAAMY,cAExB4H,EAAWA,EAAW/b,EAAOgc,EAC7BL,GAAWprC,EAASW,SAAS6qC,EAAU7mC,GAAU0mC,eACjD,IAAIK,EAAS1rC,EAASY,SAAS4qC,EAAU7mC,GAAU0mC,eAC/CL,EAAUU,IAAWD,EAAS7uC,KAAKomC,MAAQr+B,GAAU2c,YAAYoqB,GACrE,OAAO9uC,KAAKkuC,cAAcC,EAAQjhC,SAASshC,GAAUJ,EACvD,EAEAtoC,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBW,YACtB9U,KAAKsoC,cAGPuF,EAAqB/sC,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EACzD,EAEAtP,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOsnC,EAAqB/sC,UAAU6P,WAAWlJ,KAAKzH,KAAMuG,EAC9D,EAEAT,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C5D,EAAe+G,EAAc,gBAC7B/G,EAAe4D,EAAM,QACrB,IAAIq3B,EAAMrB,EAAchzB,KAAKG,GAE7B,GAAInD,aAAgBqD,EAAY,CAC9B,GAAIrD,EAAKS,cAAe,CACtB,IAAI+lC,EAAY5sC,KAAKkmC,MAAM0G,UAAUnP,EAAIyI,OAErC6I,EAAYtR,EAAI2I,MAAMY,cAAgBhnC,KAAKomC,MAAMY,cAEjD4F,EAAY,GAAKmC,EAAY,GAC/BnC,IACAmC,GAAahnC,GAAU0mC,eACd7B,EAAY,GAAKmC,EAAY,IACtCnC,IACAmC,GAAahnC,GAAU0mC,eAGzB,IAAIxlC,EAAS2jC,EAEb,OAAQxmC,GACN,KAAKqD,EAAWoC,MAEd,OADA5C,EAAS7F,EAASiB,aAAa4E,EAAQlB,GAAU0mC,eAC1CrrC,EAASa,QAAQgF,EAAQ8lC,GAElC,KAAKtlC,EAAWoD,OAEd,OADA5D,EAAS7F,EAASiB,aAAa4E,EAAQlB,GAAUsmC,gBAC1CjrC,EAASa,QAAQgF,EAAQ7F,EAASC,OAAO0rC,EAAW,MAE7D,KAAKtlC,EAAWqD,OAEd,OADA7D,EAAS7F,EAASiB,aAAa4E,EAAQlB,GAAUumC,gBAC1ClrC,EAASa,QAAQgF,EAAQ7F,EAASC,OAAO0rC,EAAW,MAE7D,KAAKtlC,EAAWC,QAEd,OADAT,EAAS7F,EAASiB,aAAa4E,EAAQlB,GAAUC,iBAC1C5E,EAASa,QAAQgF,EAAQ7F,EAASC,OAAO0rC,EAAWhnC,GAAUW,mBAEvE,KAAKe,EAAW+9B,QAEd,OADAv+B,EAAS7F,EAASiB,aAAa4E,EAAQlB,GAAU2mC,iBAC1CtrC,EAASa,QAAQgF,EAAQ7F,EAASC,OAAO0rC,EAAWhnC,GAAU0/B,mBAEvE,KAAKh+B,EAAWi+B,MAEd,OADAz+B,EAAS7F,EAASiB,aAAa4E,EAAQlB,GAAU4mC,eAC1CvrC,EAASa,QAAQgF,EAAQ7F,EAASC,OAAO0rC,EAAWhnC,GAAU4/B,iBAEvE,KAAKl+B,EAAWm+B,UAEd,OADA3+B,EAAS7F,EAASiB,aAAa4E,EAAQ,GAChC7F,EAASa,QAAQgF,EAAQ7F,EAASC,OAAO0rC,EAAsC,GAA3BhnC,GAAU4/B,iBAGzE,MAAM,IAAIlmC,EAAiC,qBAAuB2E,EACpE,CAEA,IAAI0S,EAAU2kB,EAAIyI,MACd8I,EAAUvR,EAAI2I,MAQlB,OANIttB,EAAQ4nB,QAAQ1gC,KAAKkmC,QAAU8I,EAAQrO,SAAS3gC,KAAKomC,OACvDttB,EAAUA,EAAQ5K,UAAU,GACnB4K,EAAQ6nB,SAAS3gC,KAAKkmC,QAAU8I,EAAQtO,QAAQ1gC,KAAKomC,SAC9DttB,EAAUA,EAAQ5L,SAAS,IAGtBlN,KAAKkmC,MAAM18B,MAAMsP,EAAS1S,EACnC,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAOmpC,SAAW,SAAkBr6B,GAClC,OAAOyxB,GAAer9B,GAAGhJ,KAAM4U,EACjC,EAEA9O,EAAOmf,OAAS,SAAgBvQ,GAC9B,OAAOk0B,GAAc5/B,GAAGhJ,KAAM0U,EAChC,EAEA5O,EAAOwiC,YAAc,WACnB,OAAOtoC,KAAKkmC,KACd,EAEApgC,EAAOuhC,YAAc,WACnB,OAAOrnC,KAAKomC,KACd,EAEAtgC,EAAO2J,UAAY,SAAmBzJ,GAGpC,OAFAxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAOo2B,EAAe,SAC/Bp8B,KAAKwtC,YAAYxnC,EAC1B,EAEAF,EAAO0nC,YAAc,SAAqBxnC,GACxC,IAAI2J,EAAM3P,KAAKkmC,MAAMz2B,UAAUzJ,EAAMsiC,eAMrC,OAJY,IAAR34B,IACFA,EAAM3P,KAAKomC,MAAM32B,UAAUzJ,EAAMqhC,gBAG5B13B,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAChC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAO66B,SAAW,SAAkB36B,GAClC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAOqhC,QAAU,SAAiBnhC,GAChC,OAAiC,IAA1BhG,KAAKyP,UAAUzJ,EACxB,EAEAF,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiBo2B,GACZp8B,KAAKkmC,MAAMngC,OAAOC,EAAMkgC,QAAUlmC,KAAKomC,MAAMrgC,OAAOC,EAAMogC,MAIrE,EAEAtgC,EAAOX,SAAW,WAChB,OAAOnF,KAAKkmC,MAAM/gC,WAAanF,KAAKomC,MAAMjhC,UAC5C,EAEAW,EAAOjF,SAAW,WAChB,OAAOb,KAAKkmC,MAAMrlC,WAAa,IAAMb,KAAKomC,MAAMvlC,UAClD,EAEAiF,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAE9B,OADA9a,EAAe8a,EAAW,aACnBA,EAAUD,OAAOrd,KAC1B,EAEOo8B,CACT,CA/kBoB,CA+kBlBwR,IASE7lC,GAAY,SAAUgV,GA+FxB,SAAShV,EAAUm1B,EAAM0J,EAAQtK,EAAQnwB,GACvC,IAAI3E,OAES,IAAT01B,IACFA,EAAO,QAGM,IAAX0J,IACFA,EAAS,QAGI,IAAXtK,IACFA,EAAS,QAGU,IAAjBnwB,IACFA,EAAe,GAGjB3E,EAAQuV,EAAUtV,KAAKzH,OAASA,KAEhC,IAAIkvC,EAAQ9rC,EAASe,UAAU+4B,GAE3BiS,EAAU/rC,EAASe,UAAUyiC,GAE7BwI,EAAUhsC,EAASe,UAAUm4B,GAE7B+S,EAAgBjsC,EAASe,UAAUgI,GAIvC,OAFApE,EAAU+Y,UAAUouB,EAAOC,EAASC,EAASC,GAE7B,IAAZF,GAA6B,IAAZC,GAAmC,IAAlBC,GAC/BtnC,EAAU2/B,MAAMwH,KACnB1nC,EAAM0nC,MAAQA,EACd1nC,EAAM2nC,QAAUA,EAChB3nC,EAAM4nC,QAAUA,EAChB5nC,EAAM8nC,MAAQD,EACdtnC,EAAU2/B,MAAMwH,GAAShtC,EAAuBsF,IAG3CO,EAAU2/B,MAAMwH,IAAUhtC,EAAuBsF,KAG1DA,EAAM0nC,MAAQA,EACd1nC,EAAM2nC,QAAUA,EAChB3nC,EAAM4nC,QAAUA,EAChB5nC,EAAM8nC,MAAQD,EACP7nC,EACT,CA9IA1F,EAAeiG,EAAWgV,GAE1BhV,EAAUq3B,IAAM,SAAamH,GAC3B,OAAmB,MAAfA,EACKx+B,EAAUy+B,KAAK/G,GAAMC,qBACnB6G,aAAuB9G,GACzB13B,EAAUy+B,KAAKD,GAEfx+B,EAAUy+B,KAAK/G,GAAME,OAAO4G,GAEvC,EAEAx+B,EAAUy+B,KAAO,SAAc5G,GAM7B,YALc,IAAVA,IACFA,EAAQH,GAAMC,qBAGhBl9B,EAAeo9B,EAAO,SACf73B,EAAU0+B,UAAU7G,EAAM/gB,UAAW+gB,EAAMlrB,OACpD,EAEA3M,EAAU0+B,UAAY,SAAmB5nB,EAASnK,QACnC,IAATA,IACFA,EAAOoJ,EAAOC,iBAGhB,IAAInJ,EAASF,EAAK0J,QAAQxJ,OAAOiK,GAC7BgoB,EAAYzjC,EAASO,OAAOkb,EAAQioB,cAAe/+B,EAAUC,iBAOjE,OANA6+B,EAAYzjC,EAASO,OAAOkjC,EAAYjyB,EAAOsL,eAAgBnY,EAAUC,kBAEzD,IACd6+B,GAAa9+B,EAAUC,iBAGlBD,EAAU6c,cAAciiB,EAAWhoB,EAAQ7S,OACpD,EAEAjE,EAAUiB,GAAK,SAAYk0B,EAAM0J,EAAQtK,EAAQnwB,GAC/C,OAAO,IAAIpE,EAAUm1B,EAAM0J,EAAQtK,EAAQnwB,EAC7C,EAEApE,EAAU6c,cAAgB,SAAuB2qB,EAAapjC,QACxC,IAAhBojC,IACFA,EAAc,QAGK,IAAjBpjC,IACFA,EAAe,GAGjBvC,EAAY+J,cAAc9B,gBAAgB09B,GAC1C3lC,EAAYC,eAAegI,gBAAgB1F,GAC3C,IAAIjE,EAAQ9E,EAASC,OAAOksC,EAAaxnC,EAAUI,kBACnDonC,GAAernC,EAAQH,EAAUI,iBACjC,IAAIE,EAAUjF,EAASC,OAAOksC,EAAaxnC,EAAUO,oBAErD,OAAO,IAAIP,EAAUG,EAAOG,EAD5BknC,GAAelnC,EAAUN,EAAUO,mBACe6D,EACpD,EAEApE,EAAU2c,YAAc,SAAqB8qB,QACzB,IAAdA,IACFA,EAAY,GAGd5lC,EAAYyJ,YAAYxB,gBAAgB29B,GACxC,IAAItnC,EAAQ9E,EAASC,OAAOmsC,EAAWznC,EAAU4/B,gBACjD6H,GAAatnC,EAAQH,EAAU4/B,eAC/B,IAAIt/B,EAAUjF,EAASC,OAAOmsC,EAAWznC,EAAU0/B,kBACnD+H,GAAannC,EAAUN,EAAU0/B,iBACjC,IAAIngC,EAAUlE,EAASC,OAAOmsC,EAAWznC,EAAUW,kBAEnD,OAAO,IAAIX,EAAUG,EAAOG,EAASf,EADrCkoC,GAAaloC,EAAUS,EAAUW,iBAEnC,EAEAX,EAAUqB,KAAO,SAAc7C,GAC7B/D,EAAe+D,EAAU,YACzB,IAAIyb,EAAOzb,EAAS4O,MAAMhB,EAAgBa,aAE1C,GAAY,MAARgN,EACF,MAAM,IAAI/gB,EAAkB,gDAAkDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,KAGnK,OAAO8hB,CACT,EAEAja,EAAUoC,MAAQ,SAAe9I,EAAMic,GAMrC,YALkB,IAAdA,IACFA,EAAYC,GAAkBkyB,gBAGhCjtC,EAAe8a,EAAW,aACnBA,EAAUnT,MAAM9I,EAAM0G,EAAUm4B,KACzC,EAoDAn4B,EAAU+Y,UAAY,SAAmBoc,EAAM0J,EAAQtK,EAAQnwB,GAC7DvC,EAAYoK,YAAYnC,gBAAgBqrB,GACxCtzB,EAAYgK,eAAe/B,gBAAgB+0B,GAC3Ch9B,EAAY8J,iBAAiB7B,gBAAgByqB,GAC7C1yB,EAAYC,eAAegI,gBAAgB1F,EAC7C,EAEA,IAAIrG,EAASiC,EAAUjH,UAmhBvB,OAjhBAgF,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,GAEhBsT,aAAuBzT,EADzByT,EAAYrW,cAKC,MAAfqW,GAAuBA,EAAYpW,cAAc9G,KAC1D,EAEA8F,EAAO0K,MAAQ,SAAesB,GAE5B,OADAtP,EAAesP,GACRiL,EAAUjc,UAAU0P,MAAM/I,KAAKzH,KAAM8R,EAC9C,EAEAhM,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAK+J,QAAQ+H,EACtB,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAGhC,OAFAtP,EAAesP,EAAO,SAElBA,aAAiBlI,EACZ5J,KAAKmsC,MAAMr6B,GAGbA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOqmC,MAAQ,SAAer6B,GAC5B,OAAQA,GACN,KAAKlI,EAAYC,eACf,OAAO7J,KAAKsvC,MAEd,KAAK1lC,EAAYyJ,YACf,OAAOrT,KAAKgnC,cAEd,KAAKp9B,EAAY0J,gBACf,OAAOlQ,EAASC,OAAOrD,KAAKsvC,MAAO,KAErC,KAAK1lC,EAAY2J,aACf,OAAOnQ,EAASC,OAAOrD,KAAKgnC,cAAe,KAE7C,KAAKp9B,EAAY4J,gBACf,OAAOpQ,EAASC,OAAOrD,KAAKsvC,MAAO,KAErC,KAAK1lC,EAAY6J,aACf,OAAOrQ,EAASC,OAAOrD,KAAKgnC,cAAe,KAE7C,KAAKp9B,EAAY8J,iBACf,OAAO1T,KAAKovC,QAEd,KAAKxlC,EAAY+J,cACf,OAAO3T,KAAKwoC,gBAEd,KAAK5+B,EAAYgK,eACf,OAAO5T,KAAKmvC,QAEd,KAAKvlC,EAAYiK,cACf,OAAoB,GAAb7T,KAAKkvC,MAAalvC,KAAKmvC,QAEhC,KAAKvlC,EAAYkK,aACf,OAAO1Q,EAASO,OAAO3D,KAAKkvC,MAAO,IAErC,KAAKtlC,EAAYmK,mBAEb,IAAI27B,EAAMtsC,EAASO,OAAO3D,KAAKkvC,MAAO,IACtC,OAAOQ,EAAM,IAAO,EAAI,GAAKA,EAGjC,KAAK9lC,EAAYoK,YACf,OAAOhU,KAAKkvC,MAEd,KAAKtlC,EAAYqK,kBACf,OAAsB,IAAfjU,KAAKkvC,MAAc,GAAKlvC,KAAKkvC,MAEtC,KAAKtlC,EAAYsK,YACf,OAAO9Q,EAASC,OAAOrD,KAAKkvC,MAAO,IAGvC,MAAM,IAAIztC,EAAiC,sBAAwBqQ,EACrE,EAEAhM,EAAOo3B,KAAO,WACZ,OAAOl9B,KAAKkvC,KACd,EAEAppC,EAAO8gC,OAAS,WACd,OAAO5mC,KAAKmvC,OACd,EAEArpC,EAAOw2B,OAAS,WACd,OAAOt8B,KAAKovC,OACd,EAEAtpC,EAAOkG,KAAO,WACZ,OAAOhM,KAAKsvC,KACd,EAEAxpC,EAAO6W,aAAe,SAAsBE,GAG1C,OAFAra,EAAeqa,EAAU,YAErBA,aAAoB9U,EACf8U,GAGTxa,EAAsC,mBAAxBwa,EAASlM,WAA2B,WAAYhP,GACvDkb,EAASlM,WAAW3Q,MAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAIrD,GAHApO,EAAesP,EAAO,SACtBnP,EAAgBmP,EAAOzB,EAAe,SAElCyB,aAAiBlI,EAAa,CAGhC,OAFAkI,EAAMD,gBAAgBjB,GAEdkB,GACN,KAAKlI,EAAYC,eACf,OAAO7J,KAAKgoC,SAASp3B,GAEvB,KAAKhH,EAAYyJ,YACf,OAAOtL,EAAU2c,YAAY9T,GAE/B,KAAKhH,EAAY0J,gBACf,OAAOtT,KAAKgoC,SAAoB,IAAXp3B,GAEvB,KAAKhH,EAAY2J,aACf,OAAOxL,EAAU2c,YAAuB,IAAX9T,GAE/B,KAAKhH,EAAY4J,gBACf,OAAOxT,KAAKgoC,SAAoB,IAAXp3B,GAEvB,KAAKhH,EAAY6J,aACf,OAAO1L,EAAU2c,YAAuB,IAAX9T,GAE/B,KAAKhH,EAAY8J,iBACf,OAAO1T,KAAK+nC,WAAWn3B,GAEzB,KAAKhH,EAAY+J,cACf,OAAO3T,KAAKgN,YAAY4D,EAAW5Q,KAAKwoC,iBAE1C,KAAK5+B,EAAYgK,eACf,OAAO5T,KAAK8nC,WAAWl3B,GAEzB,KAAKhH,EAAYiK,cACf,OAAO7T,KAAKsN,YAAYsD,GAAyB,GAAb5Q,KAAKkvC,MAAalvC,KAAKmvC,UAE7D,KAAKvlC,EAAYkK,aACf,OAAO9T,KAAKoN,UAAUwD,EAAWxN,EAASO,OAAO3D,KAAKkvC,MAAO,KAE/D,KAAKtlC,EAAYmK,mBACf,OAAO/T,KAAKoN,WAAwB,KAAbwD,EAAkB,EAAIA,GAAYxN,EAASO,OAAO3D,KAAKkvC,MAAO,KAEvF,KAAKtlC,EAAYoK,YACf,OAAOhU,KAAK6nC,SAASj3B,GAEvB,KAAKhH,EAAYqK,kBACf,OAAOjU,KAAK6nC,SAAsB,KAAbj3B,EAAkB,EAAIA,GAE7C,KAAKhH,EAAYsK,YACf,OAAOlU,KAAKoN,UAAyD,IAA9CwD,EAAWxN,EAASC,OAAOrD,KAAKkvC,MAAO,MAGlE,MAAM,IAAIztC,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAO+hC,SAAW,SAAkB3K,GAKlC,YAJa,IAATA,IACFA,EAAO,GAGLl9B,KAAKkvC,QAAUhS,EACVl9B,KAGF,IAAI+H,EAAUm1B,EAAMl9B,KAAKmvC,QAASnvC,KAAKovC,QAASpvC,KAAKsvC,MAC9D,EAEAxpC,EAAOgiC,WAAa,SAAoBlB,GAKtC,YAJe,IAAXA,IACFA,EAAS,GAGP5mC,KAAKmvC,UAAYvI,EACZ5mC,KAGF,IAAI+H,EAAU/H,KAAKkvC,MAAOtI,EAAQ5mC,KAAKovC,QAASpvC,KAAKsvC,MAC9D,EAEAxpC,EAAOiiC,WAAa,SAAoBzL,GAKtC,YAJe,IAAXA,IACFA,EAAS,GAGPt8B,KAAKovC,UAAY9S,EACZt8B,KAGF,IAAI+H,EAAU/H,KAAKkvC,MAAOlvC,KAAKmvC,QAAS7S,EAAQt8B,KAAKsvC,MAC9D,EAEAxpC,EAAOkiC,SAAW,SAAkB77B,GAKlC,YAJqB,IAAjBA,IACFA,EAAe,GAGbnM,KAAKsvC,QAAUnjC,EACVnM,KAGF,IAAI+H,EAAU/H,KAAKkvC,MAAOlvC,KAAKmvC,QAASnvC,KAAKovC,QAASjjC,EAC/D,EAEArG,EAAOwhC,YAAc,SAAqBlhC,GAGxC,GAFA5D,EAAe4D,EAAM,QAEjBA,IAASqD,EAAWoC,MACtB,OAAO7L,KAGT,IAAI2vC,EAAUvpC,EAAKM,WAEnB,GAAIipC,EAAQroC,UAAYS,EAAUC,gBAChC,MAAM,IAAI/G,EAAkB,+CAG9B,IAAI2uC,EAAMD,EAAQpgC,UAElB,GAAsD,IAAlDnM,EAASO,OAAOoE,EAAU0mC,cAAemB,GAC3C,MAAM,IAAI3uC,EAAkB,0DAG9B,IAAIuiB,EAAMxjB,KAAKgnC,cACf,OAAOj/B,EAAU2c,YAAYthB,EAASC,OAAOmgB,EAAKosB,GAAOA,EAC3D,EAEA9pC,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAG3D,GAFA5D,EAAe4D,EAAM,QAEjBA,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWoC,MACd,OAAO7L,KAAK4M,UAAUF,GAExB,KAAKjD,EAAWoD,OACd,OAAO7M,KAAK4M,UAAmE,IAAzDxJ,EAASO,OAAO+I,EAAa3E,EAAUsmC,iBAE/D,KAAK5kC,EAAWqD,OACd,OAAO9M,KAAK4M,UAAmE,IAAzDxJ,EAASO,OAAO+I,EAAa3E,EAAUumC,iBAE/D,KAAK7kC,EAAWC,QACd,OAAO1J,KAAKgN,YAAYN,GAE1B,KAAKjD,EAAW+9B,QACd,OAAOxnC,KAAKsN,YAAYZ,GAE1B,KAAKjD,EAAWi+B,MACd,OAAO1nC,KAAKoN,UAAUV,GAExB,KAAKjD,EAAWm+B,UACd,OAAO5nC,KAAKoN,UAA4C,GAAlChK,EAASO,OAAO+I,EAAa,IAGvD,MAAM,IAAIjL,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAOsH,UAAY,SAAmBC,GACpC,OAAmB,IAAfA,EACKrN,KAIF,IAAI+H,EADG3E,EAASO,OAAOP,EAASO,OAAO0J,EAAYtF,EAAU4mC,eAAiB3uC,KAAKkvC,MAAQnnC,EAAU4mC,cAAe5mC,EAAU4mC,eACvG3uC,KAAKmvC,QAASnvC,KAAKovC,QAASpvC,KAAKsvC,MACjE,EAEAxpC,EAAOwH,YAAc,SAAqBC,GACxC,GAAqB,IAAjBA,EACF,OAAOvN,KAGT,IAAI6vC,EAAO7vC,KAAKkvC,MAAQnnC,EAAU4Y,iBAAmB3gB,KAAKmvC,QACtDW,EAAU1sC,EAASO,OAAOP,EAASO,OAAO4J,EAAcxF,EAAU2mC,iBAAmBmB,EAAO9nC,EAAU2mC,gBAAiB3mC,EAAU2mC,iBAErI,OAAImB,IAASC,EACJ9vC,KAKF,IAAI+H,EAFG3E,EAASC,OAAOysC,EAAS/nC,EAAU4Y,kBACjCvd,EAASO,OAAOmsC,EAAS/nC,EAAU4Y,kBACV3gB,KAAKovC,QAASpvC,KAAKsvC,MAC9D,EAEAxpC,EAAOkH,YAAc,SAAqBQ,GACxC,GAAqB,IAAjBA,EACF,OAAOxN,KAGT,IAAI+vC,EAAO/vC,KAAKkvC,MAAQnnC,EAAUI,iBAAmBnI,KAAKmvC,QAAUpnC,EAAUO,mBAAqBtI,KAAKovC,QACpGY,EAAU5sC,EAASO,OAAOP,EAASO,OAAO6J,EAAczF,EAAUC,iBAAmB+nC,EAAOhoC,EAAUC,gBAAiBD,EAAUC,iBAErI,OAAI+nC,IAASC,EACJhwC,KAMF,IAAI+H,EAHG3E,EAASC,OAAO2sC,EAASjoC,EAAUI,kBACjC/E,EAASO,OAAOP,EAASC,OAAO2sC,EAASjoC,EAAUO,oBAAqBP,EAAU4Y,kBAClFvd,EAASO,OAAOqsC,EAASjoC,EAAUO,oBACCtI,KAAKsvC,MAC3D,EAEAxpC,EAAO8G,UAAY,SAAmBc,GACpC,GAAmB,IAAfA,EACF,OAAO1N,KAGT,IAAIiwC,EAAOjwC,KAAKgnC,cACZkJ,EAAU9sC,EAASO,OAAOP,EAASO,OAAO+J,EAAY3F,EAAU0mC,eAAiBwB,EAAOloC,EAAU0mC,cAAe1mC,EAAU0mC,eAE/H,OAAIwB,IAASC,EACJlwC,KAOF,IAAI+H,EAJG3E,EAASC,OAAO6sC,EAASnoC,EAAU4/B,gBACjCvkC,EAASO,OAAOP,EAASC,OAAO6sC,EAASnoC,EAAU0/B,kBAAmB1/B,EAAU4Y,kBAChFvd,EAASO,OAAOP,EAASC,OAAO6sC,EAASnoC,EAAUW,kBAAmBX,EAAUO,oBAClFlF,EAASO,OAAOusC,EAASnoC,EAAUW,kBAEnD,EAEA5C,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAElE,OADA5D,EAAe4D,EAAM,QACdpG,KAAKwM,gBAAgB,EAAIyB,EAAkB7H,EACpD,EAEAN,EAAOsI,WAAa,SAAoBC,GACtC,OAAOrO,KAAKoN,WAAW,EAAIhK,EAASO,OAAO0K,EAAiBtG,EAAU4mC,eACxE,EAEA7oC,EAAOwI,aAAe,SAAsBC,GAC1C,OAAOvO,KAAKsN,aAAa,EAAIlK,EAASO,OAAO4K,EAAmBxG,EAAU2mC,iBAC5E,EAEA5oC,EAAO0I,aAAe,SAAsBC,GAC1C,OAAOzO,KAAKgN,aAAa,EAAI5J,EAASO,OAAO8K,EAAmB1G,EAAUC,iBAC5E,EAEAlC,EAAO8I,WAAa,SAAoBZ,GACtC,OAAOhO,KAAK4M,WAAW,EAAIxJ,EAASO,OAAOqK,EAAiBjG,EAAU0mC,eACxE,EAEA3oC,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBK,YACtB/K,EAAWoC,MACTuJ,IAAWjB,EAAgBa,YAC7BhV,KAGLoV,IAAWjB,EAAgBG,cAAgBc,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBS,UAAYQ,IAAWjB,EAAgBW,YACpL,KAGFM,EAAOC,UAAUrV,KAC1B,EAEA8F,EAAO6K,WAAa,SAAoBpK,GACtC,OAAOA,EAAS0D,KAAKlC,EAAUsL,YAAarT,KAAKgnC,cACnD,EAEAlhC,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C5D,EAAe+G,EAAc,gBAC7B/G,EAAe4D,EAAM,QACrB,IAAIq3B,EAAM11B,EAAUqB,KAAKG,GAEzB,GAAInD,aAAgBqD,EAAY,CAC9B,IAAI89B,EAAa9J,EAAIuJ,cAAgBhnC,KAAKgnC,cAE1C,OAAQ5gC,GACN,KAAKqD,EAAWoC,MACd,OAAO07B,EAET,KAAK99B,EAAWoD,OACd,OAAOzJ,EAASC,OAAOkkC,EAAY,KAErC,KAAK99B,EAAWqD,OACd,OAAO1J,EAASC,OAAOkkC,EAAY,KAErC,KAAK99B,EAAWC,QACd,OAAOtG,EAASC,OAAOkkC,EAAYx/B,EAAUW,kBAE/C,KAAKe,EAAW+9B,QACd,OAAOpkC,EAASC,OAAOkkC,EAAYx/B,EAAU0/B,kBAE/C,KAAKh+B,EAAWi+B,MACd,OAAOtkC,EAASC,OAAOkkC,EAAYx/B,EAAU4/B,gBAE/C,KAAKl+B,EAAWm+B,UACd,OAAOxkC,EAASC,OAAOkkC,EAAY,GAAKx/B,EAAU4/B,gBAGtD,MAAM,IAAIlmC,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAOmhC,OAAS,SAAgBllB,GAC9B,OAAOqa,GAAcpzB,GAAG+Y,EAAM/hB,KAChC,EAEA8F,EAAO0iC,cAAgB,WACrB,IAAIjX,EAAQvxB,KAAKkvC,MAAQnnC,EAAUI,iBAGnC,OAFAopB,GAASvxB,KAAKmvC,QAAUpnC,EAAUO,oBACzBtI,KAAKovC,OAEhB,EAEAtpC,EAAOkhC,YAAc,WACnB,IAAIzV,EAAQvxB,KAAKkvC,MAAQnnC,EAAU4/B,eAInC,OAHApW,GAASvxB,KAAKmvC,QAAUpnC,EAAU0/B,kBAClClW,GAASvxB,KAAKovC,QAAUrnC,EAAUW,kBACzB1I,KAAKsvC,KAEhB,EAEAxpC,EAAO2J,UAAY,SAAmBzJ,GACpCxD,EAAewD,EAAO,SACtBrD,EAAgBqD,EAAO+B,EAAW,SAClC,IAAI4H,EAAMvM,EAASsB,eAAe1E,KAAKkvC,MAAOlpC,EAAMkpC,OAcpD,OAZY,IAARv/B,GAGU,KAFZA,EAAMvM,EAASsB,eAAe1E,KAAKmvC,QAASnpC,EAAMmpC,WAKpC,KAFZx/B,EAAMvM,EAASsB,eAAe1E,KAAKovC,QAASppC,EAAMopC,YAGhDz/B,EAAMvM,EAASsB,eAAe1E,KAAKsvC,MAAOtpC,EAAMspC,QAK/C3/B,CACT,EAEA7J,EAAO46B,QAAU,SAAiB16B,GAChC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAO66B,SAAW,SAAkB36B,GAClC,OAAOhG,KAAKyP,UAAUzJ,GAAS,CACjC,EAEAF,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiB+B,GACZ/H,KAAKkvC,QAAUlpC,EAAMkpC,OAASlvC,KAAKmvC,UAAYnpC,EAAMmpC,SAAWnvC,KAAKovC,UAAYppC,EAAMopC,SAAWpvC,KAAKsvC,QAAUtpC,EAAMspC,KAIlI,EAEAxpC,EAAOX,SAAW,WAChB,IAAIqe,EAAMxjB,KAAKgnC,cACf,OAAO5jC,EAAS2B,KAAKye,EACvB,EAEA1d,EAAOjF,SAAW,WAChB,IAAI0Z,EAAM,GACN41B,EAAYnwC,KAAKkvC,MACjBkB,EAAcpwC,KAAKmvC,QACnBkB,EAAcrwC,KAAKovC,QACnBkB,EAAYtwC,KAAKsvC,MAuBrB,OAtBA/0B,GAAO41B,EAAY,GAAK,IAAM,GAC9B51B,GAAO41B,EACP51B,GAAO61B,EAAc,GAAK,KAAO,IACjC71B,GAAO61B,GAEHC,EAAc,GAAKC,EAAY,KACjC/1B,GAAO81B,EAAc,GAAK,KAAO,IACjC91B,GAAO81B,EAEHC,EAAY,IACd/1B,GAAO,IAEqC,IAAxCnX,EAASO,OAAO2sC,EAAW,KAC7B/1B,IAAQ,IAAMnX,EAASC,OAAOitC,EAAW,KAAW,MAAO9kC,UAAU,GACvB,IAArCpI,EAASO,OAAO2sC,EAAW,KACpC/1B,IAAQ,IAAMnX,EAASC,OAAOitC,EAAW,KAAQ,MAAU9kC,UAAU,GAErE+O,IAAQ,IAAM+1B,EAAY,MAAa9kC,UAAU,KAKhD+O,CACT,EAEAzU,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEAiF,EAAOuX,OAAS,SAAgBC,GAE9B,OADA9a,EAAe8a,EAAW,aACnBA,EAAUD,OAAOrd,KAC1B,EAEO+H,CACT,CA5qBgB,CA4qBdsU,GAgBFtU,GAAU4mC,cAAgB,GAC1B5mC,GAAU4Y,iBAAmB,GAC7B5Y,GAAU2mC,gBAAkB3mC,GAAU4Y,iBAAmB5Y,GAAU4mC,cACnE5mC,GAAUO,mBAAqB,GAC/BP,GAAUI,iBAAmBJ,GAAUO,mBAAqBP,GAAU4Y,iBACtE5Y,GAAUC,gBAAkBD,GAAUI,iBAAmBJ,GAAU4mC,cACnE5mC,GAAUumC,eAA6C,IAA5BvmC,GAAUC,gBACrCD,GAAUsmC,eAA6C,IAA5BtmC,GAAUC,gBACrCD,GAAUW,iBAAmB,IAC7BX,GAAU0/B,iBAAmB1/B,GAAUW,iBAAmBX,GAAUO,mBACpEP,GAAU4/B,eAAiB5/B,GAAU0/B,iBAAmB1/B,GAAU4Y,iBAClE5Y,GAAU0mC,cAAgB1mC,GAAU4/B,eAAiB5/B,GAAU4mC,cAE/D,IAAI4B,GAAkB,IAClBjyB,GAAU,SAAUvB,GA2DtB,SAASuB,EAAQhX,EAAS6E,GACxB,IAAI3E,EAQJ,OANAA,EAAQuV,EAAUtV,KAAKzH,OAASA,KAEhCse,EAAQwC,UAAUxZ,EAAS6E,GAE3B3E,EAAME,SAAWtE,EAASe,UAAUmD,GACpCE,EAAMG,OAASvE,EAASe,UAAUgI,GAC3B3E,CACT,CApEA1F,EAAewc,EAASvB,GAExBuB,EAAQ8gB,IAAM,SAAaQ,GAKzB,YAJc,IAAVA,IACFA,EAAQH,GAAM+Q,aAGT5Q,EAAM/gB,SACf,EAEAP,EAAQ+d,cAAgB,SAAuByK,EAAat+B,QACnC,IAAnBA,IACFA,EAAiB,GAGnB,IAAIC,EAAOq+B,EAAc1jC,EAASW,SAASyE,EAAgBT,GAAUW,kBACjEC,EAAMvF,EAASY,SAASwE,EAAgBT,GAAUW,kBACtD,OAAO4V,EAAQxW,QAAQW,EAAME,EAC/B,EAEA2V,EAAQmyB,aAAe,SAAsB1xB,GAC3C,IAAItW,EAAOrF,EAASW,SAASgb,EAAY,KACrCjW,EAAM1F,EAASY,SAAS+a,EAAY,KACxC,OAAOT,EAAQxW,QAAQW,EAAY,IAANK,EAC/B,EAEAwV,EAAQlV,KAAO,SAAc7C,GAC3B,IACE,IAAIw2B,EAAcx2B,EAASwD,QAAQH,EAAYsb,iBAC3C/Y,EAAe5F,EAASJ,IAAIyD,EAAYC,gBAC5C,OAAOyU,EAAQ+d,cAAcU,EAAa5wB,EAC5C,CAAE,MAAOf,GACP,MAAM,IAAInK,EAAkB,mDAAqDsF,EAAW,iBAAmBA,EAAU6E,EAC3H,CACF,EAEAkT,EAAQnU,MAAQ,SAAe9I,GAC7B,OAAOkc,GAAkBmzB,YAAYvmC,MAAM9I,EAAMid,EAAQ4hB,KAC3D,EAEA5hB,EAAQxW,QAAU,SAAiBR,EAAS6E,GAC1C,OAAgB,IAAZ7E,GAAkC,IAAjB6E,EACZmS,EAAQC,MAGV,IAAID,EAAQhX,EAAS6E,EAC9B,EAEAmS,EAAQwC,UAAY,SAAmBxZ,EAAS6E,GAC9C,GAAI7E,EAAUgX,EAAQqyB,aAAerpC,EAAUgX,EAAQuC,YACrD,MAAM,IAAI5f,EAAkB,8CAG9B,GAAIkL,EAAe,GAAKA,EAAepE,GAAUW,iBAC/C,MAAM,IAAIzH,EAAkB,6CAEhC,EAcA,IAAI6E,EAASwY,EAAQxd,UA+UrB,OA7UAgF,EAAO6D,YAAc,SAAqBuT,GACxC,OAAIA,aAAuBtT,EAClBsT,IAAgBtT,EAAYsb,iBAAmBhI,IAAgBtT,EAAYC,gBAAkBqT,IAAgBtT,EAAY0J,iBAAmB4J,IAAgBtT,EAAY4J,gBAG7K0J,aAAuBzT,EAClByT,EAAYrW,eAAiBqW,IAAgBzT,EAAWkD,KAG3C,MAAfuQ,GAAuBA,EAAYpW,cAAc9G,KAC1D,EAEA8F,EAAO0K,MAAQ,SAAesB,GAC5B,OAAOiL,EAAUjc,UAAU0P,MAAM/I,KAAKzH,KAAM8R,EAC9C,EAEAhM,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAK+J,QAAQ+H,EACtB,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAChC,GAAIA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYC,eACf,OAAO7J,KAAK2H,OAEd,KAAKiC,EAAY0J,gBACf,OAAOlQ,EAASC,OAAOrD,KAAK2H,OAAQ,KAEtC,KAAKiC,EAAY4J,gBACf,OAAOpQ,EAASC,OAAOrD,KAAK2H,OAAQ4oC,IAEtC,KAAK3mC,EAAYsb,gBACf,OAAOllB,KAAK0H,SAGhB,MAAM,IAAIjG,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAOghC,YAAc,WACnB,OAAO9mC,KAAK0H,QACd,EAEA5B,EAAOkG,KAAO,WACZ,OAAOhM,KAAK2H,MACd,EAEA7B,EAAO6W,aAAe,SAAsBE,GAE1C,OADAra,EAAeqa,EAAU,YAClBA,EAASlM,WAAW3Q,KAC7B,EAEA8F,EAAO8W,eAAiB,SAAwB9K,EAAOlB,GAGrD,GAFApO,EAAesP,EAAO,SAElBA,aAAiBlI,EAAa,CAGhC,OAFAkI,EAAMD,gBAAgBjB,GAEdkB,GACN,KAAKlI,EAAY4J,gBAEb,IAAIo9B,EAAOhgC,EAAW2/B,GACtB,OAAOK,IAAS5wC,KAAK2H,OAAS2W,EAAQxW,QAAQ9H,KAAK0H,SAAUkpC,GAAQ5wC,KAGzE,KAAK4J,EAAY0J,gBAEb,IAAIu9B,EAAmB,IAAXjgC,EAEZ,OAAOigC,IAAU7wC,KAAK2H,OAAS2W,EAAQxW,QAAQ9H,KAAK0H,SAAUmpC,GAAS7wC,KAG3E,KAAK4J,EAAYC,eACf,OAAO+G,IAAa5Q,KAAK2H,OAAS2W,EAAQxW,QAAQ9H,KAAK0H,SAAUkJ,GAAY5Q,KAE/E,KAAK4J,EAAYsb,gBACf,OAAOtU,IAAa5Q,KAAK0H,SAAW4W,EAAQxW,QAAQ8I,EAAU5Q,KAAK2H,QAAU3H,KAGjF,MAAM,IAAIyB,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMnB,WAAW3Q,KAAM4Q,EAChC,EAEA9K,EAAOwhC,YAAc,SAAqBlhC,GAGxC,GAFA5D,EAAe4D,EAAM,QAEjBA,IAASqD,EAAWoC,MACtB,OAAO7L,KAGT,IAAI2vC,EAAUvpC,EAAKM,WAEnB,GAAIipC,EAAQroC,UAAYS,GAAUC,gBAChC,MAAM,IAAI/G,EAAkB,+CAG9B,IAAI2uC,EAAMD,EAAQpgC,UAElB,GAAsD,IAAlDnM,EAASO,OAAOoE,GAAU0mC,cAAemB,GAC3C,MAAM,IAAI3uC,EAAkB,0DAG9B,IAAIuiB,EAAMpgB,EAASO,OAAO3D,KAAK0H,SAAUK,GAAUC,iBAAmBD,GAAUW,iBAAmB1I,KAAK2H,OAEpGzC,EAAS9B,EAASC,OAAOmgB,EAAKosB,GAAOA,EACzC,OAAO5vC,KAAK4M,UAAU1H,EAASse,EACjC,EAEA1d,EAAO2W,WAAa,SAAoBxT,GAEtC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAO3C,MAAMtG,KACtB,EAEA8F,EAAO0G,eAAiB,SAAwBE,EAAatG,GAK3D,GAJA5D,EAAekK,EAAa,eAC5BlK,EAAe4D,EAAM,QACrBzD,EAAgByD,EAAMK,GAElBL,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWoC,MACd,OAAO7L,KAAK4M,UAAUF,GAExB,KAAKjD,EAAWoD,OACd,OAAO7M,KAAK8wC,MAAM1tC,EAASC,OAAOqJ,EAAa,KAAkD,IAAxCtJ,EAASO,OAAO+I,EAAa,MAExF,KAAKjD,EAAWqD,OACd,OAAO9M,KAAK+M,WAAWL,GAEzB,KAAKjD,EAAWC,QACd,OAAO1J,KAAKgN,YAAYN,GAE1B,KAAKjD,EAAW+9B,QACd,OAAOxnC,KAAKgN,YAAY5J,EAASiB,aAAaqI,EAAa3E,GAAUO,qBAEvE,KAAKmB,EAAWi+B,MACd,OAAO1nC,KAAKgN,YAAY5J,EAASiB,aAAaqI,EAAa3E,GAAUI,mBAEvE,KAAKsB,EAAWm+B,UACd,OAAO5nC,KAAKgN,YAAY5J,EAASiB,aAAaqI,EAAa3E,GAAUC,gBAAkB,IAEzF,KAAKyB,EAAWkD,KACd,OAAO3M,KAAKgN,YAAY5J,EAASiB,aAAaqI,EAAa3E,GAAUC,kBAGzE,MAAM,IAAIvG,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKE,MAAMtG,KAAM0M,EAC1B,EAEA5G,EAAOkH,YAAc,SAAqBQ,GACxC,OAAOxN,KAAK8wC,MAAMtjC,EAAc,EAClC,EAEA1H,EAAOiH,WAAa,SAAoBU,GACtC,OAAOzN,KAAK8wC,MAAM1tC,EAASC,OAAOoK,EAAa,KAAOrK,EAASO,OAAO8J,EAAa,KAAQ8iC,GAC7F,EAEAzqC,EAAO8G,UAAY,SAAmBc,GACpC,OAAO1N,KAAK8wC,MAAM,EAAGpjC,EACvB,EAEA5H,EAAOgrC,MAAQ,SAAetjC,EAAcE,GAC1C,GAAqB,IAAjBF,GAAqC,IAAfE,EACxB,OAAO1N,KAGT,IAAI2N,EAAW3N,KAAK0H,SAAW8F,EAC/BG,GAAsBvK,EAASC,OAAOqK,EAAY3F,GAAUW,kBAC5D,IAAIF,EAAiBxI,KAAK2H,OAAS+F,EAAa3F,GAAUW,iBAC1D,OAAO4V,EAAQ+d,cAAc1uB,EAAUnF,EACzC,EAEA1C,EAAO0W,YAAc,SAAqBvT,GAExC,OADAzG,EAAeyG,EAAQ,UAChBA,EAAOzC,aAAaxG,KAC7B,EAEA8F,EAAOgI,gBAAkB,SAAyBG,EAAkB7H,GAClE,OAAOpG,KAAKwM,gBAAgB,EAAIyB,EAAkB7H,EACpD,EAEAN,EAAO0I,aAAe,SAAsBC,GAC1C,OAAOzO,KAAKgN,aAAiC,EAArByB,EAC1B,EAEA3I,EAAO4I,YAAc,SAAqBC,GACxC,OAAO3O,KAAK+M,YAAY,EAAI4B,EAC9B,EAEA7I,EAAO8I,WAAa,SAAoBZ,GACtC,OAAOhO,KAAK4M,WAAW,EAAIoB,EAC7B,EAEAlI,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBK,YACtB/K,EAAWoC,MAGhBuJ,IAAWjB,EAAgBW,aAAeM,IAAWjB,EAAgBa,aAAeI,IAAWjB,EAAgBG,cAAgBc,IAAWjB,EAAgBC,UAAYgB,IAAWjB,EAAgBO,QAAUU,IAAWjB,EAAgBS,SACjO,KAGFQ,EAAOC,UAAUrV,KAC1B,EAEA8F,EAAO6K,WAAa,SAAoBpK,GAEtC,OADA/D,EAAe+D,EAAU,YAClBA,EAAS0D,KAAKL,EAAYsb,gBAAiBllB,KAAK0H,UAAUuC,KAAKL,EAAYC,eAAgB7J,KAAK2H,OACzG,EAEA7B,EAAO0D,MAAQ,SAAeD,EAAcnD,GAC1C5D,EAAe+G,EAAc,gBAC7B/G,EAAe4D,EAAM,QACrB,IAAIq3B,EAAMnf,EAAQlV,KAAKG,GAEvB,GAAInD,aAAgBqD,EAAY,CAC9B,OAAQrD,GACN,KAAKqD,EAAWoC,MACd,OAAO7L,KAAK+wC,YAAYtT,GAE1B,KAAKh0B,EAAWoD,OACd,OAAOzJ,EAASC,OAAOrD,KAAK+wC,YAAYtT,GAAM,KAEhD,KAAKh0B,EAAWqD,OACd,OAAO1J,EAASgB,aAAaq5B,EAAIuT,eAAgBhxC,KAAKgxC,gBAExD,KAAKvnC,EAAWC,QACd,OAAO1J,KAAKixC,cAAcxT,GAE5B,KAAKh0B,EAAW+9B,QACd,OAAOpkC,EAASC,OAAOrD,KAAKixC,cAAcxT,GAAM11B,GAAUO,oBAE5D,KAAKmB,EAAWi+B,MACd,OAAOtkC,EAASC,OAAOrD,KAAKixC,cAAcxT,GAAM11B,GAAUI,kBAE5D,KAAKsB,EAAWm+B,UACd,OAAOxkC,EAASC,OAAOrD,KAAKixC,cAAcxT,GAAM,GAAK11B,GAAUI,kBAEjE,KAAKsB,EAAWkD,KACd,OAAOvJ,EAASC,OAAOrD,KAAKixC,cAAcxT,GAAM11B,GAAUC,iBAG9D,MAAM,IAAIvG,EAAiC,qBAAuB2E,EACpE,CAEA,OAAOA,EAAKa,QAAQjH,KAAMy9B,EAC5B,EAEA33B,EAAOirC,YAAc,SAAqBtT,GACxC,IAAIyT,EAAW9tC,EAASgB,aAAaq5B,EAAIqJ,cAAe9mC,KAAK8mC,eACzDt3B,EAAapM,EAASiB,aAAa6sC,EAAUnpC,GAAUW,kBAC3D,OAAOtF,EAASa,QAAQuL,EAAYiuB,EAAIzxB,OAAShM,KAAKgM,OACxD,EAEAlG,EAAOmrC,cAAgB,SAAuBxT,GAC5C,IAAIyT,EAAW9tC,EAASgB,aAAaq5B,EAAIqJ,cAAe9mC,KAAK8mC,eACzDqK,EAAY1T,EAAIzxB,OAAShM,KAAKgM,OAQlC,OANIklC,EAAW,GAAKC,EAAY,EAC9BD,IACSA,EAAW,GAAKC,EAAY,GACrCD,IAGKA,CACT,EAEAprC,EAAOmpC,SAAW,SAAkBr6B,GAClC,OAAOyxB,GAAeI,UAAUzmC,KAAM4U,EACxC,EAEA9O,EAAOmf,OAAS,SAAgBvQ,GAC9B,OAAOk0B,GAAcnC,UAAUzmC,KAAM0U,EACvC,EAEA5O,EAAOkrC,aAAe,WAEpB,OADa5tC,EAASiB,aAAarE,KAAK0H,SAAU,KAClCtE,EAASC,OAAOrD,KAAK2H,OAAQ4oC,GAC/C,EAEAzqC,EAAO2J,UAAY,SAAmB2hC,GACpC5uC,EAAe4uC,EAAc,gBAC7BzuC,EAAgByuC,EAAc9yB,EAAS,gBACvC,IAAI3O,EAAMvM,EAASsB,eAAe1E,KAAK0H,SAAU0pC,EAAa1pC,UAE9D,OAAY,IAARiI,EACKA,EAGF3P,KAAK2H,OAASypC,EAAazpC,MACpC,EAEA7B,EAAO46B,QAAU,SAAiB0Q,GAChC,OAAOpxC,KAAKyP,UAAU2hC,GAAgB,CACxC,EAEAtrC,EAAO66B,SAAW,SAAkByQ,GAClC,OAAOpxC,KAAKyP,UAAU2hC,GAAgB,CACxC,EAEAtrC,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAITA,aAAiBsY,GACZte,KAAK8mC,gBAAkB9gC,EAAM8gC,eAAiB9mC,KAAKgM,SAAWhG,EAAMgG,MAI/E,EAEAlG,EAAOX,SAAW,WAChB,OAAO/B,EAAS+B,SAASnF,KAAK0H,SAAU1H,KAAK2H,OAC/C,EAEA7B,EAAOjF,SAAW,WAChB,OAAO0c,GAAkBmzB,YAAYrzB,OAAOrd,KAC9C,EAEA8F,EAAOG,OAAS,WACd,OAAOjG,KAAKa,UACd,EAEOyd,CACT,CAvZc,CAuZZjC,GAYEojB,GAAQ,WACV,SAASA,IAAS,CAElBA,EAAM+Q,UAAY,WAChB,OAAO,IAAIa,GAAYrxB,EAAW0W,IACpC,EAEA+I,EAAMC,kBAAoB,WACxB,OAAO,IAAI2R,GAAYvzB,EAAOC,gBAChC,EAEA0hB,EAAME,OAAS,SAAgBjrB,GAC7B,OAAO,IAAI28B,GAAY38B,EACzB,EAEA+qB,EAAM6R,MAAQ,SAAeC,EAAcn9B,GACzC,OAAO,IAAIo9B,GAAWD,EAAcn9B,EACtC,EAEAqrB,EAAM7qB,OAAS,SAAgB68B,EAAW/qC,GACxC,OAAO,IAAIgrC,GAAYD,EAAW/qC,EACpC,EAEA,IAAIZ,EAAS25B,EAAM3+B,UAkBnB,OAhBAgF,EAAO+C,OAAS,WACdhG,EAAmB,eACrB,EAEAiD,EAAO+Y,QAAU,WACfhc,EAAmB,gBACrB,EAEAiD,EAAO4O,KAAO,WACZ7R,EAAmB,aACrB,EAEAiD,EAAO6rC,SAAW,WAChB9uC,EAAmB,iBACrB,EAEO48B,CACT,CA1CY,GA4CR4R,GAAc,SAAUO,GAG1B,SAASP,EAAY38B,GACnB,IAAIlN,EAKJ,OAHAhF,EAAekS,EAAM,SACrBlN,EAAQoqC,EAAOnqC,KAAKzH,OAASA,MACvB89B,MAAQppB,EACPlN,CACT,CATA1F,EAAeuvC,EAAaO,GAW5B,IAAI/xB,EAAUwxB,EAAYvwC,UAkC1B,OAhCA+e,EAAQnL,KAAO,WACb,OAAO1U,KAAK89B,KACd,EAEAje,EAAQhX,OAAS,WACf,OAAO,IAAIgpC,MAAOC,SACpB,EAEAjyB,EAAQhB,QAAU,WAChB,OAAOP,GAAQmyB,aAAazwC,KAAK6I,SACnC,EAEAgX,EAAQ9Z,OAAS,SAAgBuU,GAC/B,OAAIA,aAAe+2B,GACVrxC,KAAK89B,MAAM/3B,OAAOuU,EAAIwjB,MAIjC,EAEAje,EAAQ8xB,SAAW,SAAkBj9B,GACnC,OAAIA,EAAK3O,OAAO/F,KAAK89B,OACZ99B,KAGF,IAAIqxC,EAAY38B,EACzB,EAEAmL,EAAQhf,SAAW,WACjB,MAAO,eAAiBb,KAAK89B,MAAMj9B,WAAa,GAClD,EAEOwwC,CACT,CA/CkB,CA+ChB5R,IAEE+R,GAAa,SAAUO,GAGzB,SAASP,EAAWD,EAAcn9B,GAChC,IAAIiwB,EAKJ,OAHAA,EAAS0N,EAAQtqC,KAAKzH,OAASA,MACxBmlB,SAAWosB,EAClBlN,EAAO2N,QAAU59B,EACViwB,CACT,CATAviC,EAAe0vC,EAAYO,GAW3B,IAAIvmB,EAAUgmB,EAAW1wC,UAkCzB,OAhCA0qB,EAAQ3M,QAAU,WAChB,OAAO7e,KAAKmlB,QACd,EAEAqG,EAAQ3iB,OAAS,WACf,OAAO7I,KAAKmlB,SAAS6rB,cACvB,EAEAxlB,EAAQ9W,KAAO,WACb,OAAO1U,KAAKgyC,OACd,EAEAxmB,EAAQ3qB,SAAW,WACjB,MAAO,cACT,EAEA2qB,EAAQzlB,OAAS,SAAgBuU,GAC/B,OAAIA,aAAek3B,GACVxxC,KAAKmlB,SAASpf,OAAOuU,EAAI6K,WAAanlB,KAAKgyC,QAAQjsC,OAAOuU,EAAI03B,QAIzE,EAEAxmB,EAAQmmB,SAAW,SAAkBj9B,GACnC,OAAIA,EAAK3O,OAAO/F,KAAKgyC,SACZhyC,KAGF,IAAIwxC,EAAWxxC,KAAKmlB,SAAUzQ,EACvC,EAEO88B,CACT,CA/CiB,CA+Cf/R,IAEEiS,GAAc,SAAUO,GAG1B,SAASP,EAAYD,EAAW78B,GAC9B,IAAIkwB,EAKJ,OAHAA,EAASmN,EAAQxqC,KAAKzH,OAASA,MACxBkyC,WAAaT,EACpB3M,EAAOllB,QAAUhL,EACVkwB,CACT,CATAhjC,EAAe4vC,EAAaO,GAW5B,IAAItmB,EAAU+lB,EAAY5wC,UAkC1B,OAhCA6qB,EAAQjX,KAAO,WACb,OAAO1U,KAAKkyC,WAAWx9B,MACzB,EAEAiX,EAAQgmB,SAAW,SAAkBj9B,GACnC,OAAIA,EAAK3O,OAAO/F,KAAKkyC,WAAWx9B,QACvB1U,KAGF,IAAI0xC,EAAY1xC,KAAKkyC,WAAWP,SAASj9B,GAAO1U,KAAK4f,QAC9D,EAEA+L,EAAQ9iB,OAAS,WACf,OAAO7I,KAAKkyC,WAAWrpC,SAAW7I,KAAK4f,QAAQvQ,UACjD,EAEAsc,EAAQ9M,QAAU,WAChB,OAAO7e,KAAKkyC,WAAWrzB,UAAU1V,KAAKnJ,KAAK4f,QAC7C,EAEA+L,EAAQ5lB,OAAS,SAAgBuU,GAC/B,OAAIA,aAAeo3B,GACV1xC,KAAKkyC,WAAWnsC,OAAOuU,EAAI43B,aAAelyC,KAAK4f,QAAQ7Z,OAAOuU,EAAIsF,QAI7E,EAEA+L,EAAQ9qB,SAAW,WACjB,MAAO,eAAiBb,KAAKkyC,WAAa,IAAMlyC,KAAK4f,QAAU,GACjE,EAEO8xB,CACT,CA/CkB,CA+ChBjS,IAOE0S,GAAuB,WAKzB,SAASA,EAAqBjzB,EAAYsrB,EAAclB,GAKtD,GAJA9mC,EAAe0c,EAAY,cAC3B1c,EAAegoC,EAAc,gBAC7BhoC,EAAe8mC,EAAa,eAExBkB,EAAazkC,OAAOujC,GACtB,MAAM,IAAI3nC,EAAyB,6BAGrC,GAA0B,IAAtBud,EAAWlT,OACb,MAAM,IAAIrK,EAAyB,+BAInC3B,KAAKoyC,YADHlzB,aAAsBkd,GACLld,EAEAkd,GAAcC,cAAcnd,EAAY,EAAGsrB,GAGhExqC,KAAKqyC,cAAgB7H,EACrBxqC,KAAKsyC,aAAehJ,CACtB,CAzBA6I,EAAqBnpC,GAAK,SAAYkW,EAAYsrB,EAAclB,GAC9D,OAAO,IAAI6I,EAAqBjzB,EAAYsrB,EAAclB,EAC5D,EAyBA,IAAIxjC,EAASqsC,EAAqBrxC,UA+ElC,OA7EAgF,EAAO+Y,QAAU,WACf,OAAO7e,KAAKoyC,YAAY7J,UAAUvoC,KAAKqyC,cACzC,EAEAvsC,EAAOw3B,cAAgB,WACrB,OAAOt9B,KAAKoyC,YAAY9U,cAAct9B,KAAKqyC,cAC7C,EAEAvsC,EAAOysC,eAAiB,WACtB,OAAOvyC,KAAKoyC,WACd,EAEAtsC,EAAOynC,cAAgB,WACrB,OAAOvtC,KAAKoyC,YAAYplC,YAAYhN,KAAKwyC,kBAC3C,EAEA1sC,EAAO0kC,aAAe,WACpB,OAAOxqC,KAAKqyC,aACd,EAEAvsC,EAAOwjC,YAAc,WACnB,OAAOtpC,KAAKsyC,YACd,EAEAxsC,EAAOY,SAAW,WAChB,OAAOU,EAASmB,UAAUvI,KAAKwyC,kBACjC,EAEA1sC,EAAO0sC,gBAAkB,WACvB,OAAOxyC,KAAKsyC,aAAapyB,eAAiBlgB,KAAKqyC,cAAcnyB,cAC/D,EAEApa,EAAO8jC,MAAQ,WACb,OAAO5pC,KAAKsyC,aAAapyB,eAAiBlgB,KAAKqyC,cAAcnyB,cAC/D,EAEApa,EAAOwkC,UAAY,WACjB,OAAOtqC,KAAKsyC,aAAapyB,eAAiBlgB,KAAKqyC,cAAcnyB,cAC/D,EAEApa,EAAOwZ,cAAgB,SAAuB1K,GAC5C,OAAO5U,KAAK4pC,UAAkB5pC,KAAKqyC,cAActsC,OAAO6O,IAAW5U,KAAKsyC,aAAavsC,OAAO6O,GAC9F,EAEA9O,EAAOmZ,aAAe,WACpB,OAAIjf,KAAK4pC,QACA,GAEA,CAAC5pC,KAAKqyC,cAAeryC,KAAKsyC,aAErC,EAEAxsC,EAAO2J,UAAY,SAAmByP,GACpC,OAAOlf,KAAK6e,UAAUpP,UAAUyP,EAAWL,UAC7C,EAEA/Y,EAAOC,OAAS,SAAgBC,GAC9B,GAAIA,IAAUhG,KACZ,OAAO,EAGT,GAAIgG,aAAiBmsC,EAAsB,CACzC,IAAIM,EAAIzsC,EACR,OAAOhG,KAAKoyC,YAAYrsC,OAAO0sC,EAAEL,cAAgBpyC,KAAKqyC,cAActsC,OAAO0sC,EAAEjI,iBAAmBxqC,KAAKsyC,aAAavsC,OAAO0sC,EAAEnJ,cAC7H,CAEA,OAAO,CACT,EAEAxjC,EAAOX,SAAW,WAChB,OAAOnF,KAAKoyC,YAAYjtC,WAAanF,KAAKqyC,cAAcltC,WAAanF,KAAKsyC,aAAantC,aAAe,EACxG,EAEAW,EAAOjF,SAAW,WAChB,MAAO,eAAiBb,KAAK4pC,QAAU,MAAQ,WAAa,OAAS5pC,KAAKoyC,YAAYvxC,WAAab,KAAKqyC,cAAcxxC,WAAa,OAASb,KAAKsyC,aAAe,GAClK,EAEOH,CACT,CA5G2B,GAwJvBO,GAAyB,SAAU/yB,GAGrC,SAAS+yB,IACP,OAAO/yB,EAAWhf,MAAMX,KAAMY,YAAcZ,IAC9C,CAJA8B,EAAe4wC,EAAwB/yB,GAMvC,IAAI7Z,EAAS4sC,EAAuB5xC,UAgFpC,OA9EAgF,EAAOuY,cAAgB,WACrB,OAAO,CACT,EAEAvY,EAAO6Y,gBAAkB,SAAyBE,GAChD,IAAI8zB,EAAkB,IAAId,KAAKhzB,EAAQmyB,gBAAgB4B,oBACvD,OAAO5yB,EAAWwB,gBAAkC,EAAnBmxB,EACnC,EAEA7sC,EAAOgZ,mBAAqB,SAA4BC,GACtD,IAAI4zB,EAAkB,IAAId,KAAK9yB,GAAY6zB,oBAC3C,OAAO5yB,EAAWwB,gBAAkC,EAAnBmxB,EACnC,EAEA7sC,EAAO8Y,sBAAwB,SAA+BI,GAC5D,IAAID,EAA2D,IAA9CC,EAAcse,cAActd,EAAW0W,KACpDmc,EAA0C,IAAIhB,KAAK9yB,GAAY6zB,oBAE/DE,EAAyC,IAAIjB,KADtB9yB,EAAuD,IAA1C8zB,GACoCD,oBAC5E,OAAO5yB,EAAWwB,gBAAyD,EAA1CsxB,EACnC,EAEAhtC,EAAOmZ,aAAe,SAAsBD,GAC1C,MAAO,CAAChf,KAAK4e,sBAAsBI,GACrC,EAEAlZ,EAAOoZ,WAAa,WAClB,OAAO,IACT,EAEApZ,EAAOqZ,eAAiB,SAAwBN,GAC9C,OAAO7e,KAAK2e,gBAAgBE,EAC9B,EAEA/Y,EAAOsZ,gBAAkB,WACvBpf,KAAK+yC,oBACP,EAEAjtC,EAAOuZ,kBAAoB,WACzBrf,KAAK+yC,oBACP,EAEAjtC,EAAOwZ,cAAgB,SAAuBvY,EAAU6N,GACtD,OAAO5U,KAAK4e,sBAAsB7X,GAAUhB,OAAO6O,EACrD,EAEA9O,EAAOyZ,eAAiB,WACtBvf,KAAK+yC,oBACP,EAEAjtC,EAAO0Z,mBAAqB,WAC1Bxf,KAAK+yC,oBACP,EAEAjtC,EAAO2Z,YAAc,WACnBzf,KAAK+yC,oBACP,EAEAjtC,EAAO4Z,gBAAkB,WACvB1f,KAAK+yC,oBACP,EAEAjtC,EAAOitC,mBAAqB,WAC1B,MAAM,IAAI9xC,EAAkB,0BAC9B,EAEA6E,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,GAASA,aAAiB0sC,CAKzC,EAEA5sC,EAAOjF,SAAW,WAChB,MAAO,QACT,EAEO6xC,CACT,CAxF6B,CAwF3Bl0B,GAEEw0B,GAAsB,SAAU/yB,GAGlC,SAAS+yB,IACP,IAAIxrC,EAIJ,OAFAA,EAAQyY,EAAQxY,KAAKzH,OAASA,MACxBqgB,OAAS,IAAIqyB,GACZlrC,CACT,CARA1F,EAAekxC,EAAqB/yB,GAUpC,IAAIna,EAASktC,EAAoBlyC,UAkBjC,OAhBAgF,EAAOsY,MAAQ,WACb,OAAOpe,KAAKqgB,MACd,EAEAva,EAAOC,OAAS,SAAgBC,GAC9B,OAAIhG,OAASgG,CAKf,EAEAF,EAAOqY,GAAK,WACV,MAAO,QACT,EAEO60B,CACT,CA9B0B,CA8BxBl1B,GAOEm1B,GAAgB,WAClB,SAASA,IAAiB,CAsF1B,OApFAA,EAAcl1B,cAAgB,WAC5B,OAAOm1B,EACT,EAEAD,EAAcj1B,oBAAsB,WAClC,OAAOgY,GAAkBhY,qBAC3B,EAEAi1B,EAAcjqC,GAAK,SAAYoL,GAG7B,GAFA5R,EAAe4R,EAAQ,UAER,MAAXA,EACF,OAAO4L,EAAW0W,IAGpB,GAAsB,IAAlBtiB,EAAO/O,OACT,MAAM,IAAIpE,EAAkB,iBAAmBmT,GAGjD,GAAIoJ,EAAWC,WAAWrJ,EAAQ,MAAQoJ,EAAWC,WAAWrJ,EAAQ,KACtE,OAAO4L,EAAWhX,GAAGoL,GAGvB,GAAe,QAAXA,GAA+B,QAAXA,GAA+B,SAAXA,GAAgC,OAAXA,EAC/D,OAAO,IAAI8hB,GAAW9hB,EAAQ4L,EAAW0W,IAAItY,SAG/C,GAAIZ,EAAWC,WAAWrJ,EAAQ,SAAWoJ,EAAWC,WAAWrJ,EAAQ,SAAWoJ,EAAWC,WAAWrJ,EAAQ,SAAWoJ,EAAWC,WAAWrJ,EAAQ,QAAS,CACpK,IAAIQ,EAASoL,EAAWhX,GAAGoL,EAAO5I,UAAU,IAE5C,OAA8B,IAA1BoJ,EAAOsL,eACF,IAAIgW,GAAW9hB,EAAO5I,UAAU,EAAG,GAAIoJ,EAAOwJ,SAGhD,IAAI8X,GAAW9hB,EAAO5I,UAAU,EAAG,GAAKoJ,EAAOuJ,KAAMvJ,EAAOwJ,QACrE,CAEA,GAAIZ,EAAWC,WAAWrJ,EAAQ,QAAUoJ,EAAWC,WAAWrJ,EAAQ,OAAQ,CAChF,IAAIwL,EAAUI,EAAWhX,GAAGoL,EAAO5I,UAAU,IAE7C,OAA+B,IAA3BoU,EAAQM,eACH,IAAIgW,GAAW,KAAMtW,EAAQxB,SAG/B,IAAI8X,GAAW,KAAOtW,EAAQzB,KAAMyB,EAAQxB,QACrD,CAEA,MAAe,WAAXhK,EACK0J,EAAOC,gBAGTmY,GAAWC,KAAK/hB,EACzB,EAEA6+B,EAAch1B,SAAW,SAAkBC,EAAQtJ,GAIjD,GAHApS,EAAe0b,EAAQ,UACvB1b,EAAeoS,EAAQ,UAED,IAAlBsJ,EAAO7Y,OACT,OAAOuP,EAGT,GAAe,QAAXsJ,GAA+B,QAAXA,GAA+B,OAAXA,EAC1C,OAA8B,IAA1BtJ,EAAOsL,eACF,IAAIgW,GAAWhY,EAAQtJ,EAAOwJ,SAGhC,IAAI8X,GAAWhY,EAAStJ,EAAOuJ,KAAMvJ,EAAOwJ,SAGrD,MAAM,IAAIzc,EAAyB,2CAA6Cuc,EAClF,EAEA+0B,EAAc7pC,KAAO,SAAc7C,GACjC/D,EAAe+D,EAAU,YACzB,IAAI+T,EAAM/T,EAAS4O,MAAMhB,EAAgBO,QAEzC,GAAW,MAAP4F,EACF,MAAM,IAAIrZ,EAAkB,kDAAoDsF,EAAW,WAAqC,MAAxBA,EAAS9F,YAAsB8F,EAAS9F,YAAYP,KAAO,KAGrK,OAAOoa,CACT,EAEO24B,CACT,CAxFoB,GAyFhBC,GAAkC,KAiBlCC,IAAS,EAGPA,KAIJA,IAAS,EA/iYTpjC,EAAcqjC,WAAa,OAC3BrjC,EAAcuxB,UAAY,OAV1Bl6B,EAAS8B,KAAO,IAAI9B,EAAS,EAAG,GAgFhCqC,EAAWoC,MAAQ,IAAIpC,EAAW,QAASrC,EAAS2B,QAAQ,IAC5DU,EAAWoD,OAAS,IAAIpD,EAAW,SAAUrC,EAAS2B,QAAQ,MAC9DU,EAAWqD,OAAS,IAAIrD,EAAW,SAAUrC,EAAS2B,QAAQ,MAC9DU,EAAWC,QAAU,IAAID,EAAW,UAAWrC,EAASmB,UAAU,IAClEkB,EAAW+9B,QAAU,IAAI/9B,EAAW,UAAWrC,EAASmB,UAAU,KAClEkB,EAAWi+B,MAAQ,IAAIj+B,EAAW,QAASrC,EAASmB,UAAU,OAC9DkB,EAAWm+B,UAAY,IAAIn+B,EAAW,WAAYrC,EAASmB,UAAU,QACrEkB,EAAWkD,KAAO,IAAIlD,EAAW,OAAQrC,EAASmB,UAAU,QAC5DkB,EAAWmiB,MAAQ,IAAIniB,EAAW,QAASrC,EAASmB,UAAU,SAC9DkB,EAAWoM,OAAS,IAAIpM,EAAW,SAAUrC,EAASmB,UAAU,UAChEkB,EAAWmP,MAAQ,IAAInP,EAAW,QAASrC,EAASmB,UAAU,WAC9DkB,EAAWy3B,QAAU,IAAIz3B,EAAW,UAAWrC,EAASmB,UAAU,YAClEkB,EAAW03B,UAAY,IAAI13B,EAAW,YAAarC,EAASmB,UAAU,aACtEkB,EAAW23B,UAAY,IAAI33B,EAAW,YAAarC,EAASmB,UAAU,aACtEkB,EAAW43B,KAAO,IAAI53B,EAAW,OAAQrC,EAASmB,UAAU,UAAYwH,EAAcuxB,UAAY,KAClG73B,EAAW0G,QAAU,IAAI1G,EAAW,UAAWrC,EAASmB,UAAUnF,EAASF,iBAAkB,YA4Q7F0G,EAAYC,eAAiB,IAAID,EAAY,eAAgBH,EAAWoC,MAAOpC,EAAWC,QAASoH,EAAW9H,GAAG,EAAG,YACpHY,EAAYyJ,YAAc,IAAIzJ,EAAY,YAAaH,EAAWoC,MAAOpC,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,iBAC3GY,EAAY0J,gBAAkB,IAAI1J,EAAY,gBAAiBH,EAAWoD,OAAQpD,EAAWC,QAASoH,EAAW9H,GAAG,EAAG,SACvHY,EAAY2J,aAAe,IAAI3J,EAAY,aAAcH,EAAWoD,OAAQpD,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,cAC9GY,EAAY4J,gBAAkB,IAAI5J,EAAY,gBAAiBH,EAAWqD,OAAQrD,EAAWC,QAASoH,EAAW9H,GAAG,EAAG,MACvHY,EAAY6J,aAAe,IAAI7J,EAAY,aAAcH,EAAWqD,OAAQrD,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,WAC9GY,EAAY8J,iBAAmB,IAAI9J,EAAY,iBAAkBH,EAAWC,QAASD,EAAW+9B,QAAS12B,EAAW9H,GAAG,EAAG,KAC1HY,EAAY+J,cAAgB,IAAI/J,EAAY,cAAeH,EAAWC,QAASD,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,QACjHY,EAAYgK,eAAiB,IAAIhK,EAAY,eAAgBH,EAAW+9B,QAAS/9B,EAAWi+B,MAAO52B,EAAW9H,GAAG,EAAG,KACpHY,EAAYiK,cAAgB,IAAIjK,EAAY,cAAeH,EAAW+9B,QAAS/9B,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,OACjHY,EAAYkK,aAAe,IAAIlK,EAAY,aAAcH,EAAWi+B,MAAOj+B,EAAWm+B,UAAW92B,EAAW9H,GAAG,EAAG,KAClHY,EAAYmK,mBAAqB,IAAInK,EAAY,kBAAmBH,EAAWi+B,MAAOj+B,EAAWm+B,UAAW92B,EAAW9H,GAAG,EAAG,KAC7HY,EAAYoK,YAAc,IAAIpK,EAAY,YAAaH,EAAWi+B,MAAOj+B,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,KAC3GY,EAAYqK,kBAAoB,IAAIrK,EAAY,iBAAkBH,EAAWi+B,MAAOj+B,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,KACtHY,EAAYsK,YAAc,IAAItK,EAAY,YAAaH,EAAWm+B,UAAWn+B,EAAWkD,KAAMmE,EAAW9H,GAAG,EAAG,IAC/GY,EAAY6I,YAAc,IAAI7I,EAAY,YAAaH,EAAWkD,KAAMlD,EAAWmiB,MAAO9a,EAAW9H,GAAG,EAAG,IAC3GY,EAAY8I,6BAA+B,IAAI9I,EAAY,0BAA2BH,EAAWkD,KAAMlD,EAAWmiB,MAAO9a,EAAW9H,GAAG,EAAG,IAC1IY,EAAY+I,4BAA8B,IAAI/I,EAAY,yBAA0BH,EAAWkD,KAAMlD,EAAWmiB,MAAO9a,EAAW9H,GAAG,EAAG,IACxIY,EAAYgJ,aAAe,IAAIhJ,EAAY,aAAcH,EAAWkD,KAAMlD,EAAWoM,OAAQ/E,EAAW9H,GAAG,EAAG,GAAI,IAAK,OACvHY,EAAYiJ,YAAc,IAAIjJ,EAAY,YAAaH,EAAWkD,KAAMlD,EAAWmP,MAAO9H,EAAW9H,GAAG,EAAG,IAAK,MAChHY,EAAYkJ,UAAY,IAAIlJ,EAAY,WAAYH,EAAWkD,KAAMlD,EAAW0G,QAASW,EAAW9H,GAAGpF,KAAKE,MAAgC,OAA1BiM,EAAcqjC,WAAqBxvC,KAAKE,MAAgC,OAA1BiM,EAAcuxB,aAC9K13B,EAAYmJ,sBAAwB,IAAInJ,EAAY,qBAAsBH,EAAWmiB,MAAOniB,EAAWoM,OAAQ/E,EAAW9H,GAAG,EAAG,EAAG,IACnIY,EAAYoJ,qBAAuB,IAAIpJ,EAAY,oBAAqBH,EAAWmiB,MAAOniB,EAAWmP,MAAO9H,EAAW9H,GAAG,EAAG,KAC7HY,EAAYqJ,cAAgB,IAAIrJ,EAAY,cAAeH,EAAWoM,OAAQpM,EAAWmP,MAAO9H,EAAW9H,GAAG,EAAG,IAAK,SACtHY,EAAYq3B,gBAAkB,IAAIr3B,EAAY,iBAAkBH,EAAWoM,OAAQpM,EAAW0G,QAASW,EAAW9H,GAA6B,GAA1B+G,EAAcqjC,UAA0C,GAA1BrjC,EAAcuxB,UAAiB,KAClL13B,EAAYsJ,YAAc,IAAItJ,EAAY,YAAaH,EAAWmP,MAAOnP,EAAW0G,QAASW,EAAW9H,GAAG,EAAG+G,EAAcuxB,UAAWvxB,EAAcuxB,UAAY,IACjK13B,EAAYuJ,KAAO,IAAIvJ,EAAY,OAAQH,EAAWmP,MAAOnP,EAAW0G,QAASW,EAAW9H,GAAG+G,EAAcqjC,UAAWrjC,EAAcuxB,WAAY,QAClJ13B,EAAYwJ,IAAM,IAAIxJ,EAAY,MAAOH,EAAW43B,KAAM53B,EAAW0G,QAASW,EAAW9H,GAAG,EAAG,IAC/FY,EAAYsb,gBAAkB,IAAItb,EAAY,iBAAkBH,EAAWC,QAASD,EAAW0G,QAASW,EAAW9H,GAAG7F,EAAkBD,IACxI0G,EAAY+X,eAAiB,IAAI/X,EAAY,gBAAiBH,EAAWC,QAASD,EAAW0G,QAASW,EAAW9H,IAAG,MAAY,QAoqVlI,WACEjB,GAAU2/B,MAAQ,GAElB,IAAK,IAAIxK,EAAO,EAAGA,EAAO,GAAIA,IAC5Bn1B,GAAUiB,GAAGk0B,EAAM,EAAG,EAAG,GAG3Bn1B,GAAUsrC,IAAMtrC,GAAU2/B,MAAM,GAChC3/B,GAAUurC,IAAM,IAAIvrC,GAAU,GAAI,GAAI,GAAI,WAC1CA,GAAUulC,SAAWvlC,GAAU2/B,MAAM,GACrC3/B,GAAUwrC,KAAOxrC,GAAU2/B,MAAM,IACjC3/B,GAAUm4B,KAAO1qB,EAAoB,kBAAkB,SAAUjP,GAC/D,OAAOwB,GAAUqB,KAAK7C,EACxB,GACF,CAmgCEitC,GA1sRAroB,GAAiB,IAAIX,GACrBI,GAAkB,IAAIU,GACtBY,GAA0B,IAAIT,GAC9BM,GAAkB,IAAIQ,GACtBV,GAAmB,IAAIe,GAAK,iBAAkBxlB,EAASmB,UAAU,WACjEmiB,GAAgB,IAAIkC,GAAK,eAAgBxlB,EAASmB,UAAU,UAC5D2gB,GAAUiC,eAAiBA,GAC3BjC,GAAU0B,gBAAkBA,GAC5B1B,GAAUgD,wBAA0BA,GACpChD,GAAU6C,gBAAkBA,GAC5B7C,GAAU2C,iBAAmBA,GAC7B3C,GAAUwB,cAAgBA,GAE1B3R,GAAUjY,UAAU2yC,kBAAoB,WACtC,OAAOzzC,KAAKmG,IAAI+iB,GAAUgD,wBAC5B,EAEAnT,GAAUjY,UAAU4yC,YAAc,WAChC,OAAO1zC,KAAKmG,IAAI+iB,GAAU6C,gBAC5B,EA85QA5X,EAAgBE,QAAUmB,EAAoB,WAAW,SAAUjP,GACjE,OAAOA,EAAS4O,MAAMhB,EAAgBE,QACxC,IACAF,EAAgBI,OAASiB,EAAoB,UAAU,SAAUjP,GAC/D,OAAOA,EAAS4O,MAAMhB,EAAgBI,OACxC,IACAJ,EAAgBM,UAAYe,EAAoB,aAAa,SAAUjP,GACrE,OAAOA,EAAS4O,MAAMhB,EAAgBM,UACxC,IACAN,EAAgBU,OAASW,EAAoB,UAAU,SAAUjP,GAC/D,OAAIA,EAASoD,YAAYC,EAAY+X,gBAC5B3B,EAAWuB,eAAehb,EAASJ,IAAIyD,EAAY+X,iBAGrD,IACT,IACAxN,EAAgBQ,KAAOa,EAAoB,QAAQ,SAAUjP,GAC3D,IAAImO,EAAOnO,EAAS4O,MAAMhB,EAAgBE,SAC1C,OAAe,MAARK,EAAeA,EAAOnO,EAAS4O,MAAMhB,EAAgBU,OAC9D,IACAV,EAAgBY,WAAaS,EAAoB,cAAc,SAAUjP,GACvE,OAAIA,EAASoD,YAAYC,EAAYkJ,WAC5BiG,GAAUoE,WAAW5W,EAASwD,QAAQH,EAAYkJ,YAGpD,IACT,IACAqB,EAAgBc,WAAaO,EAAoB,cAAc,SAAUjP,GACvE,OAAIA,EAASoD,YAAYC,EAAYyJ,aAC5BtL,GAAU2c,YAAYne,EAASwD,QAAQH,EAAYyJ,cAGrD,IACT,IArrWAyC,EAAU69B,OAAS,IAAI79B,EAAU,EAAG,UACpCA,EAAU89B,QAAU,IAAI99B,EAAU,EAAG,WACrCA,EAAU6T,UAAY,IAAI7T,EAAU,EAAG,aACvCA,EAAU4T,SAAW,IAAI5T,EAAU,EAAG,YACtCA,EAAU+9B,OAAS,IAAI/9B,EAAU,EAAG,UACpCA,EAAUg+B,SAAW,IAAIh+B,EAAU,EAAG,YACtCA,EAAUi+B,OAAS,IAAIj+B,EAAU,EAAG,UACpCA,EAAUoqB,KAAO1qB,EAAoB,kBAAkB,SAAUjP,GAC/D,OAAOuP,EAAU1M,KAAK7C,EACxB,IACAqP,EAAQ,CAACE,EAAU69B,OAAQ79B,EAAU89B,QAAS99B,EAAU6T,UAAW7T,EAAU4T,SAAU5T,EAAU+9B,OAAQ/9B,EAAUg+B,SAAUh+B,EAAUi+B,QAw0VvIz1B,GAAQqyB,aAAe,eACvBryB,GAAQuC,YAAc,eACtBvC,GAAQC,MAAQ,IAAID,GAAQ,EAAG,GAC/BA,GAAQ+0B,IAAM/0B,GAAQ+d,cAAc/d,GAAQqyB,YAAa,GACzDryB,GAAQg1B,IAAMh1B,GAAQ+d,cAAc/d,GAAQuC,YAAa,WACzDvC,GAAQ4hB,KAAO1qB,EAAoB,gBAAgB,SAAUjP,GAC3D,OAAO+X,GAAQlV,KAAK7C,EACtB,IA3vDAwS,GAAUs6B,IAAMt6B,GAAU/P,GAAG+G,EAAcqjC,UAAW,EAAG,GACzDr6B,GAAUu6B,IAAMv6B,GAAU/P,GAAG+G,EAAcuxB,UAAW,GAAI,IAC1DvoB,GAAUi7B,QAAUj7B,GAAUoE,WAAW,GACzCpE,GAAUmnB,KAAO1qB,EAAoB,kBAAkB,SAAUjP,GAC/D,OAAOwS,GAAU3P,KAAK7C,EACxB,IAqoBA61B,GAAciX,IAAMjX,GAAcpzB,GAAG+P,GAAUs6B,IAAKtrC,GAAUsrC,KAC9DjX,GAAckX,IAAMlX,GAAcpzB,GAAG+P,GAAUu6B,IAAKvrC,GAAUurC,KAC9DlX,GAAc8D,KAAO1qB,EAAoB,sBAAsB,SAAUjP,GACvE,OAAO61B,GAAchzB,KAAK7C,EAC5B,IAp6GA85B,GAAK+S,UAAYrjC,EAAcqjC,UAC/B/S,GAAKiB,UAAYvxB,EAAcuxB,UAC/BxL,IAAW,IAAImC,IAA2Bc,YAAYnvB,EAAYuJ,KAAM,EAAG,GAAIwb,GAAUK,aAAayM,cACtG4E,GAAKH,KAAO1qB,EAAoB,aAAa,SAAUjP,GACrD,OAAO85B,GAAKj3B,KAAK7C,EACnB,IAphMAgQ,EAAMc,QAAU,IAAId,EAAM,EAAG,WAC7BA,EAAMK,SAAW,IAAIL,EAAM,EAAG,YAC9BA,EAAMe,MAAQ,IAAIf,EAAM,EAAG,SAC3BA,EAAMM,MAAQ,IAAIN,EAAM,EAAG,SAC3BA,EAAMgB,IAAM,IAAIhB,EAAM,EAAG,OACzBA,EAAMO,KAAO,IAAIP,EAAM,EAAG,QAC1BA,EAAMiB,KAAO,IAAIjB,EAAM,EAAG,QAC1BA,EAAMkB,OAAS,IAAIlB,EAAM,EAAG,UAC5BA,EAAMQ,UAAY,IAAIR,EAAM,EAAG,aAC/BA,EAAMmB,QAAU,IAAInB,EAAM,GAAI,WAC9BA,EAAMS,SAAW,IAAIT,EAAM,GAAI,YAC/BA,EAAMoB,SAAW,IAAIpB,EAAM,GAAI,YAC/BV,EAAS,CAACU,EAAMc,QAASd,EAAMK,SAAUL,EAAMe,MAAOf,EAAMM,MAAON,EAAMgB,IAAKhB,EAAMO,KAAMP,EAAMiB,KAAMjB,EAAMkB,OAAQlB,EAAMQ,UAAWR,EAAMmB,QAASnB,EAAMS,SAAUT,EAAMoB,UA8nL1Kke,IAAW,IAAIoC,IAA2Bc,YAAYnvB,EAAYuJ,KAAM,EAAG,GAAIwb,GAAUK,aAAaiM,cAAc,KAAKlC,YAAYnvB,EAAYqJ,cAAe,GAAGwoB,cACnKmF,GAAUV,KAAO1qB,EAAoB,kBAAkB,SAAUjP,GAC/D,OAAOq6B,GAAUx3B,KAAK7C,EACxB,IAzbAqvB,IAAS,IAAIqC,IAA2BgD,cAAc,MAAMlC,YAAYnvB,EAAYqJ,cAAe,GAAGgoB,cAAc,KAAKlC,YAAYnvB,EAAYgJ,aAAc,GAAG6oB,cAClKuD,GAASkB,KAAO1qB,EAAoB,iBAAiB,SAAUjP,GAC7D,OAAOy4B,GAAS51B,KAAK7C,EACvB,IAn1JA0R,EAAOrQ,OAAO,GAmzBdoY,EAAWa,YAAc,GAAK9Y,GAAUI,iBACxC6X,EAAW0W,IAAM1W,EAAWuB,eAAe,GAC3CvB,EAAWqzB,IAAMrzB,EAAWuB,gBAAgBvB,EAAWa,aACvDb,EAAWszB,IAAMtzB,EAAWuB,eAAevB,EAAWa,aA2xMtD+nB,GAAc1I,KAAO1qB,EAAoB,sBAAsB,SAAUjP,GACvE,OAAOqiC,GAAcx/B,KAAK7C,EAC5B,IAkoHA2sC,GAAkC,IAAIF,GACtCl1B,EAAOC,cAAgBk1B,GAAcl1B,cACrCD,EAAOE,oBAAsBi1B,GAAcj1B,oBAC3CF,EAAO9U,GAAKiqC,GAAcjqC,GAC1B8U,EAAOG,SAAWg1B,GAAch1B,SAChCH,EAAO1U,KAAO6pC,GAAc7pC,KAC5B4W,EAAW5W,KAAO6pC,GAAc7pC,KAChC0U,EAAOm2B,OAASf,GAChBp1B,EAAO4Y,IAAM1W,EAAWuB,eAAe,GA1uJvC1J,GAAcC,SAAW,IAAID,GAAc,iBA37C3C0F,GAAkBuf,gBAAiB,IAAI7E,IAA2Bc,YAAYnvB,EAAYuJ,KAAM,EAAG,GAAIwb,GAAUK,aAAaiM,cAAc,KAAKlC,YAAYnvB,EAAYqJ,cAAe,GAAGgoB,cAAc,KAAKlC,YAAYnvB,EAAYgJ,aAAc,GAAG6oB,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UACtTyF,GAAkBkyB,gBAAiB,IAAIxX,IAA2Bc,YAAYnvB,EAAYoK,YAAa,GAAGinB,cAAc,KAAKlC,YAAYnvB,EAAYgK,eAAgB,GAAGsnB,gBAAgBD,cAAc,KAAKlC,YAAYnvB,EAAY8J,iBAAkB,GAAGwnB,gBAAgBvB,eAAe/vB,EAAYC,eAAgB,EAAG,GAAG,GAAM4xB,YAAYzf,EAAcC,QACzVsB,GAAkB0wB,qBAAsB,IAAIhW,IAA2BW,uBAAuB1I,OAAO3S,GAAkBuf,gBAAgB7B,cAAc,KAAK/K,OAAO3S,GAAkBkyB,gBAAgBhU,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UAClQyF,GAAkBmzB,aAAc,IAAIzY,IAA2BW,uBAAuBgB,gBAAgB6B,YAAYzf,EAAcC,QAChIsB,GAAkB4tB,sBAAuB,IAAIlT,IAA2BW,uBAAuB1I,OAAO3S,GAAkB0wB,qBAAqBlU,iBAAiB0B,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UAC7NyF,GAAkB0sB,qBAAsB,IAAIhS,IAA2B/H,OAAO3S,GAAkB4tB,sBAAsBjQ,gBAAgBD,cAAc,KAAKvC,qBAAqBuB,eAAegB,cAAc,KAAKQ,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UAC/QyF,GAAkB22B,gBAAiB,IAAIjc,IAA2Bc,YAAYnvB,EAAYuJ,KAAM,EAAG,GAAIwb,GAAUK,aAAa+J,YAAYnvB,EAAYqJ,cAAe,GAAG8lB,YAAYnvB,EAAYgJ,aAAc,GAAG6oB,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UAChRyF,GAAkB42B,iBAAkB,IAAIlc,IAA2BW,uBAAuB1I,OAAO3S,GAAkBuf,gBAAgB/C,iBAAiB0B,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UACnNyF,GAAkBwpB,iBAAkB,IAAI9O,IAA2BW,uBAAuB1I,OAAO3S,GAAkBkyB,gBAAgB1V,iBAAiB0B,YAAYzf,EAAcC,QAAQmiB,eAAevmB,GAAcC,UACnNyF,GAAkB62B,kBAAmB,IAAInc,IAA2Bc,YAAYnvB,EAAYuJ,KAAM,EAAG,GAAIwb,GAAUK,aAAaiM,cAAc,KAAKlC,YAAYnvB,EAAYiJ,aAAa4oB,YAAYzf,EAAcC,QAClNsB,GAAkB82B,eAAgB,IAAIpc,IAA2Bc,YAAYnvB,EAAYuJ,KAAM,EAAG,GAAIwb,GAAUK,aAAaiM,cAAc,MAAMlC,YAAYnvB,EAAYoJ,sBAAsBioB,cAAc,KAAKlC,YAAYnvB,EAAY6I,aAAagpB,YAAYzf,EAAcC,QACjRsB,GAAkBygB,mBAAqBxoB,EAAoB,sBAAsB,SAAUjP,GACzF,OAAIA,aAAoBqb,GACfrb,EAAS2b,WAETjK,EAAO/O,IAElB,IACAqU,GAAkB2gB,mBAAqB1oB,EAAoB,sBAAsB,SAAUjP,GACzF,OAAIA,aAAoBqb,IACfrb,EAAS0b,UAIpB,IAxRAoR,GAAqB+H,UAAYriB,GAAU/P,GAAG,IAAM,EAAG,GACvDivB,GAAyB7H,uBAAyBA,GAClD6H,GAAyBnD,0BAA4BA,GACrDmD,GAAyBxC,eAAiBA,GAC1CwC,GAAyBpI,yBAA2BkG,GACpDkC,GAAyBlC,2BAA6BA,GACtDkC,GAAyBpI,yBAA2BA,GACpDoI,GAAyBjG,oBAAsBA,GAC/CiG,GAAyB5E,qBAAuBA,GAChD4E,GAAyBvH,sBAAwBA,GACjDuH,GAAyBjE,sBAAwBA,GACjDiE,GAAyB7B,oBAAsBA,GAozG/CiQ,GAAegN,IAAMjX,GAAciX,IAAIpE,SAASjvB,EAAWszB,KAC3DjN,GAAeiN,IAAMlX,GAAckX,IAAIrE,SAASjvB,EAAWqzB,KAC3DhN,GAAenG,KAAO1qB,EAAoB,uBAAuB,SAAUjP,GACzE,OAAO8/B,GAAej9B,KAAK7C,EAC7B,IAnuCA4/B,GAAWkN,IAAMlN,GAAWQ,UAAU,EAAG,EAAG,EAAG,EAAG3mB,EAAWszB,KAC7DnN,GAAWmN,IAAMnN,GAAWQ,UAAU,GAAI,GAAI,GAAI,UAAW3mB,EAAWqzB,KACxElN,GAAWjG,KAAO1qB,EAAoB,mBAAmB,SAAUjP,GACjE,OAAO4/B,GAAW/8B,KAAK7C,EACzB,KAi3IF,IAAI+tC,GAAsB,WACxB,SAASA,EAAoB/tC,EAAUmO,GACrC,IAAI6/B,EAEJ,GAAIhuC,aAAoBwS,GACtBrE,EAAe,MAARA,EAAeoJ,EAAOC,gBAAkBrJ,EAC/C6/B,EAAgBhuC,EAAS6mC,aAAa14B,QACjC,GAAInO,aAAoB61B,GAC7B1nB,EAAe,MAARA,EAAeoJ,EAAOC,gBAAkBrJ,EAC/C6/B,EAAgBhuC,EAAS0e,OAAOvQ,OAC3B,MAAInO,aAAoBqiC,IAO7B,MAAM,IAAIjnC,EAAyB,8CAAgD4E,GALjFguC,EADU,MAAR7/B,EACcnO,EAEAA,EAASqkC,oBAAoBl2B,EAIjD,CAEA1U,KAAK6e,QAAU01B,EAAchM,WAC/B,CAEA,IAAIziC,EAASwuC,EAAoBxzC,UAUjC,OARAgF,EAAO0uC,OAAS,WACd,OAAO,IAAI3C,KAAK7xC,KAAK6e,QAAQmyB,eAC/B,EAEAlrC,EAAOkrC,aAAe,WACpB,OAAOhxC,KAAK6e,QAAQmyB,cACtB,EAEOsD,CACT,CAlC0B,GAoC1B,SAASG,GAAQluC,EAAUmO,GACzB,OAAO,IAAI4/B,GAAoB/tC,EAAUmO,EAC3C,CAEA,IAAIggC,GAAmB,SAAU3+B,GAG/B,SAAS2+B,EAAiB3yB,EAAMrN,GAC9B,IAAIlN,EASJ,YAPa,IAATkN,IACFA,EAAOoJ,EAAOC,kBAGhBvW,EAAQuO,EAAkBtO,KAAKzH,OAASA,MAClC89B,MAAQppB,EAEVqN,aAAgB8vB,MAClBrqC,EAAMmtC,YAAc5yB,EAAK+vB,UAClB5vC,EAAuBsF,IACE,mBAAhBua,EAAKyyB,QAAyBzyB,EAAKyyB,mBAAoB3C,MACvErqC,EAAMmtC,YAAc5yB,EAAKyyB,SAAS1C,UAC3B5vC,EAAuBsF,KAGhCnF,GAAO,EAAO,qDACPmF,EACT,CAtBA1F,EAAe4yC,EAAkB3+B,GAwBjC,IAAIjQ,EAAS4uC,EAAiB5zC,UA0C9B,OAxCAgF,EAAOqP,MAAQ,SAAeC,GAG5B,OAFA5S,EAAe4S,EAAQ,SAEnBA,IAAWjB,EAAgBW,YACtBiE,GAAU0tB,UAAUnoB,GAAQmyB,aAAazwC,KAAK20C,aAAc30C,KAAK89B,OAC/D1oB,IAAWjB,EAAgBa,YAC7BjN,GAAU0+B,UAAUnoB,GAAQmyB,aAAazwC,KAAK20C,aAAc30C,KAAK89B,OAC/D1oB,IAAWjB,EAAgBO,OAC7B1U,KAAK89B,MAGP/nB,EAAkBjV,UAAUqU,MAAM1N,KAAKzH,KAAMoV,EACtD,EAEAtP,EAAOK,IAAM,SAAa2L,GACxB,OAAO9R,KAAK+J,QAAQ+H,EACtB,EAEAhM,EAAOiE,QAAU,SAAiB+H,GAGhC,GAFAtP,EAAesP,EAAO,SAElBA,aAAiBlI,EAAa,CAChC,OAAQkI,GACN,KAAKlI,EAAYC,eACf,OAAmD,IAA5CzG,EAASY,SAAShE,KAAK20C,YAAa,KAE7C,KAAK/qC,EAAYsb,gBACf,OAAO9hB,EAASW,SAAS/D,KAAK20C,YAAa,KAG/C,MAAM,IAAIlzC,EAAiC,sBAAwBqQ,EACrE,CAEA,OAAOA,EAAMpB,QAAQ1Q,KACvB,EAEA8F,EAAO6D,YAAc,SAAqBmI,GACxC,OAAOA,IAAUlI,EAAYsb,iBAAmBpT,IAAUlI,EAAYC,cACxE,EAEO6qC,CACT,CApEuB,CAoErBx/B,GAEF,SAAS0/B,GAAS7yB,EAAMrN,GACtB,OAAO,IAAIggC,GAAiB3yB,EAAMrN,EACpC,CAkBA,IAhBiBmgC,GACXC,GAeF9J,GAAI,CACN3oC,OAAQW,EACR4e,gBAAiBA,GACjB0D,qBAAsBA,GACtBoD,qBAAsBA,GACtBtlB,SAAUA,EACVoa,WAAYA,EACZ+f,cAAeA,IAEbwX,GAAgB,CAClB/J,EAAGA,GACHyJ,QAASA,GACTG,SAAUA,GACVlzC,oBAAqBA,EACrBT,kBAAmBA,EACnBG,uBAAwBA,EACxBO,yBAA0BA,EAC1BC,sBAAuBA,EACvBH,iCAAkCA,EAClCI,qBAAsBA,EACtB49B,MAAOA,GACP3pB,UAAWA,EACX1O,SAAUA,EACVkX,QAASA,GACTvF,UAAWA,GACXhR,UAAWA,GACXq0B,cAAeA,GACf+J,WAAYA,GACZE,eAAgBA,GAChB9vB,MAAOA,EACPyoB,SAAUA,GACV/mB,OAAQA,EACRooB,KAAMA,GACNtwB,cAAeA,EACf6wB,UAAWA,GACXgI,cAAeA,GACf5oB,WAAYA,EACZlC,OAAQA,EACRoY,WAAYA,GACZic,qBAAsBA,GACtB3zB,UAAWA,EACXwX,kBAAmBA,GACnBhZ,gBAAiBA,EACjB4wB,oBAAqBA,GACrBvF,oBAAqBA,GACrBxwB,cAAeA,GACfjO,YAAaA,EACbH,WAAYA,EACZyf,UAAWA,GACX7M,SAAUA,EACVnH,iBAAkBA,EAClBkH,iBAAkBA,EAClBymB,kBAAmBA,GACnB38B,eAAgBA,EAChBmK,cAAeA,EACf8D,gBAAiBA,EACjBmB,cAAeA,EACf7O,aAAcA,EACdqK,WAAYA,EACZyM,kBAAmBA,GACnB0a,yBAA0BA,GAC1BlL,aAAcA,GACd/Q,cAAeA,EACf2S,UAAWA,GACXQ,UAAWA,IAET6lB,IAlFaH,GAkFCE,GAjFZD,GAAO,GACJ,SAAaG,GAMlB,OALMH,GAAKn3B,QAAQs3B,KACjBA,EAAGJ,IACHC,GAAKpuB,KAAKuuB,IAGLJ,EACT,GA0EFE,GAAcC,IAAMA,6tDCh2ZZE,EACAC,aC85US,GAlvUiC,EAkvUpB,QA+Ub,MAjkViC,EAikVjC,OAAb,EAAa,GAAb,KAAKC,EAjkVyC,EAikVjC,iBC1+VorW,WFgQpqW,EA9UtB,SEmBA,EF2TkC,MAAc,KC2uVnD,EAAY,EAAI,OD5uVhBC,EC6uVG,IC5+V8wW,WFkQjvW,EAhV7B,OAgVHC,EE7TG,EF6T8C,MAAc,KAC/D,WAAc,IAAI,OAAmC,EAAM,GAC/D,aAGIC,EACAl4B,SAEA,aE1Q4jX,WF0Qr/W,EAxVpE,GAwVW,MAAI,OAAwB,EErUvC,EFqUiF,MAAc,MACtG,aAEmB5a,GAAkE,OAAjD,WAAc,IAAI,OAAwB,GAAM,eAEa,OAApD,OAAsB,WAAc,KAAQ,MAAO,aArY5E+yC,EAAAA,6FA4BOA,EAAAA,6FAgBDA,EAAAA,6FG+URA,GACyD,OAAvE,SAA0B,OAAqB,OAAc,IAAS,aAKjDA,GACmD,OAAxE,SAA0B,OAAqB,OAAe,IAAS,aAKnDA,GAA0F,OAAtE,SAA0B,OAAqB,OAAa,IAAS,aAK/Fn4B,SAEjB,OAF4D,aACzD,KAAsB,SAA0B,EAAO,aAC1D,CAAD,aHtUoBm4B,EAAAA,6FAuCEA,EAAAA,6FAWAA,EAAAA,6FIjDJA,GAA2F,OAAvE,SAA0B,OAAqB,OAAc,IAAS,aAOxFA,GAA6F,OAAzE,SAA0B,OAAqB,OAAgB,IAAS,aAC5FA,GAA6F,OAAzE,SAA0B,OAAqB,OAAgB,IAAS,aACpFv+B,EAAgBC,GACwD,OAAhG,SAA0B,OAAqB,OAA0B,EAAW,IAAW,aAGjFmG,SAEjB,OAF4D,aACzD,KAAsB,SAA0B,EAAO,aAC1D,CAAD,aClEuCo4B,GACnC,SAA8B,EAClC,aAEuCA,GACnC,SAA8B,EAClC,aL6K2BD,EAAAA,6FAWQA,EAAAA,6FAWEA,EAAAA,6FMhPZA,GAMpB,OALD,SACI,OACI,OAAqB,OAA6B,KACnC,GAEvB,aAE6BA,GAC6D,OAA1F,SAA4B,OAAqB,OAA+B,IAAS,aAE1DA,GAC6D,OAA5F,SAA4B,OAAqB,OAAiC,IAAS,eCkB/F,aCtBOE,GAA+C,OAAX,OAAU,EAAC,CAAD,aAQpCC,GCHjB,KASI,GAF0F,MAEvF,GAPH,MAAM,GAAiC,GDEV,gDAA8C,IAC/E,mEAAO,GAAkB,EAAe,EAAjC,EACX,aEZgBr1C,kBAAAA,EAAAA,UAAkB,GAAM,EAAN,GAA9B,0DACYY,kBAAAA,EAAAA,UAAmB,GAAM,EAAN,GAA/B,0DACYZ,EAAiBY,kBAAjBZ,EAAiBY,EAAAA,UAAmB,GAAM,EAAS,EAAf,GAAhD,yEAJJ,aAduBA,kBAAAA,EAAAA,UAAmB,GAAM,EAAN,GAAtC,uEAHJ,aAauBA,kBAAAA,EAAAA,UAAmB,GAAM,EAAN,GAAtC,uEAHJ,aC+CiB8D,GFhCb,KAwB2C,GAAV,MAAa,IAtB1C,MAAM,GAAiC,GAfzB,wBE+ClB,4FAAO,GAAc,EAAS,EAAvB,EACX,eCwhBQ,gBAtDqB,OAAiB,UAAiB,4BA9fkB4wC,8BAWvDA,EAAanzC,8BAyiBO,QAAtC,CAAiE,aAvErEsf,EACAC,EACApN,EACAihC,YAHgC,kBACA,kBACE,kBACR,OAH1B,aACA,aACA,aACA,YAJJ,aAhbqFC,GAqB7E,OApBI,MAAK,MACL,KAAmB,KAEhB,IAGH,QACA,KAAK,QACL,QACA,KAAK,QACL,QACA,QAAS,IAIT,KAAmB,KAEhB,IAGP,eAnBuBC,GAEnB,OADI,KAAK,SACT,eAAGA,GAEH,OADI,KAAK,QACT,eAMSC,GAGT,OAFI,KAAK,QACL,MAAe,EAAG,GACtB,eACmBD,GAEnB,OADI,QACJ,eAAGA,GAEH,OADI,MAAyB,UAC7B,eAgB6DD,GA8BjE,OA7BI,KAAmB,KAEhB,IAIH,gBACA,KAAK,QACL,WAAqB,OACrB,KAAK,QACL,QACA,KAAK,QACL,QACA,KAAK,QACL,QACA,QAAS,IAIT,MAAO,KACP,KAAmB,IAEhB,IAEA,IAKP,eA7BuBC,GACf,SACJ,aAAGA,GAGH,OAFI,WAAyB,OACzB,MAAO,MACX,eAUSC,GAGT,OAFI,KAAK,QACL,QACJ,eAEmBD,GAEnB,OADI,MAAO,MACX,eAAGA,GAEH,OADI,MAAO,KACX,eAAGA,GAIH,OAHI,KAAU,MAAM,IAGpB,eAHoBC,GAEhB,OADI,MAAyB,UAC7B,iBA9HZ,8BA8D0E,iBAAO,YAoCnB,iBAAO,GA3ErE,aAxBiDC,OAkOxBC,WAlO4E,SAApD,aAkOxB,YAAAA,EAAA,WAAS,SAAT,mDAzOzBzzC,2BAgPgC,2BAAe0zC,aAAA,0DAhP/C1zC,0BAgP+C,YAAS,QAwBzB,2BAAe2zC,aAAA,yDAxQ9C3zC,0BAwQ8C,YAAS,QAmB9B,2BAAe4zC,aAAA,mDA3RxC5zC,0BA2RwC,YAAS,QAQlB,2BAAe6zC,aAAA,yDAnS9C7zC,0BAmS8C,YAAS,QAOvB,oBAAA8zC,aAAA,mDA1ShC9zC,0BA0SgC,YAAS,OAOd,2BAAe+zC,aAAA,qDAjT1C/zC,0BAiT0C,YAAS,QAOxB,2BAAeg0C,aAAA,qDAxT1Ch0C,0BAwT0C,YAAS,QAoBV,oBAAAi0C,aAAA,yDA5UzCj0C,0BA4UyC,YAAS,OAOlB,2BAAek0C,aAAA,4DAnV/Cl0C,0BAmV+C,YAAS,QAOhB,2BAAem0C,aAAA,4DA1VvDn0C,0BA0VuD,YAAS,QAOtB,2BAAeo0C,aAAA,8DAjWzDp0C,0BAiWyD,YAAS,QAMhC,oBAAAq0C,aAAA,yDAvWlCr0C,0BAuWkC,YAhWtC,aAuhBkBs0C,GAAA,YAAd,aAToCC,GACpC,cADoC,YAAxC,aAgC6BC,GAAA,YAA7B,eC3eA,yGAjCYC,EAAAA,oBAAZ,kHbuUWxB,EAA2BjzC,GAA4C,OAAvB,MAAY,GAAN,GAAgB,aAhB1CizC,EAAWyB,EAAqB95B,GACnE,YAD+D,MAC/D,GADuG,EACvG,IAKQ,MAAM,GAAuB,cACxC,OAN6C,MAC7B,EAD6B,mBAEtC,IAFsC,QAM9C,aA7CuCq4B,EACnC0B,EACAC,GAEA,OADY,EACZ,IAMQ,MAAM,GAAuB,qBAJ7B,GAAC,KAAD,cAKX,OANO,2BAEiB,IAFjB,QAMR,yCchQ6kd,EXoVpjd,UAAH,gDW9YsE,MXgZ5F,0BWtV6sd,EXuV9qd,UAAH,sDWjZgE,MXmZ5F,aAtOIhtB,EACAitB,EACArY,EACAsY,YAH0B,gBACO,gBACD,gBACE,OAHlC,aACA,aACA,aACA,YAJJ,sBAvJ8C,kBAClC,GACK,WAAW,WAAY,QAAS,QAAS,MAAO,OAChD,OAAQ,SAAU,YAAa,UAAW,WAAY,cASlB,kBACzC,GACK,OAAO,MAAO,MAAO,MAAO,MAAO,MACnC,MAAO,MAAO,MAAO,MAAO,MAAO,QArBhD,oDAzBAC,GMEA,GNRJ,KAMI,aMgB+C,KAAd,WAAM,IAZnC,MAAM,GAAiC,GNDV,yDY0xDjB,EAtwDP,GAAN,YAswDa,WAAhB,KAAKC,EAAW,QCnxDb,cbsZkx1C,GM9Zrx1C,KO4QmD,MAAS,GP1QxD,MAAM,GAAiC,GNCA,sCACvB,IAAZ,KA0Z6w1C,IA1Z7w1C,KAAKC,EAAO,EMJpB,GNIoB,QMiB0C,cNyYut1C,KMvYtx1C,cAAM,GAvBO,KACRp3C,ENKa,oCAAmC,cAwZiu1C,GAxZvt1C,iBMJ1D,MAAM,GAAiC,GAAR,GACnC,QNCQ,EA0Z6w1C,EY63Cjv1C,CZnyDxC,sBAiIkD,kBACtC,GACK,UAAU,UAAW,YAAa,WAAY,SAAU,WAAY,YAS5B,kBAC7C,GACK,OAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAnBvD,oDA9BAk3C,GMrFA,GN+EJ,KAMI,aMuB8gC,IAAd,WAAM,IA1GlgC,MAAM,GAAiC,GNsFX,8DYmsDhB,EAppD0C,GAAN,YAopDpC,WAAhB,KAAKC,EAAW,QC/qDiF,cbkTor1C,GM9Zrx1C,KO4QmD,MAAS,GP1QxD,MAAM,GAAiC,GNwFA,4CACvB,IAAZ,KAmU6w1C,IAnU7w1C,KAAKC,EAAO,EM3FpB,GN2FoB,QMiB+uC,cNkTkhzC,KMlTrgzC,cAAM,GA5G1wC,KACRp3C,EN4Fa,0CAAyC,cAiU2t1C,GAjUjt1C,iBM3FhE,MAAM,GAAiC,GAAR,GACnC,QNwFQ,EAmU6w1C,EY63Cjv1C,CZ5sDxC,eA2RI,aAQuBy2C,GAAA,YAAvB,aAjB2BC,GAC3B,cAD2B,YAA/B,aArMoCllC,EAAW5R,GAC3C,QAAa,MAAT,EACA,MAAM,GAAyB,oBAAkB,EAAI,oCAAkC,EAAI,eAE/F,OAAO,CACX,4BA8D4Bs1C,EAA8BmC,aAAmC,aAE1E,QU1FsnF,EApEjlF,aAoEmmF,EApElkF,IAoEunF,EAnE3pF,aAmE0qF,EAnExoF,KV4JnF,iBAGgB,KACW,EACK,GANR,aAA8B,YAA1D,aA6E6BnC,cAEV,QUvK4yL,EApEvwL,aAoEyxL,EApExvL,IAoEmxL,EAnEvzL,aAmEs0L,EAnEpyL,KVyOnF,iBAG2B,GAJF,YAA7B,aAgBiCgC,GAC7B,kBAAoE,MAAO,EAAM,MAAQ,aAD5D,YAAjC,aAU2BhC,cAER,QUjM+7N,EApE15N,aAoE46N,EApE34N,IAoEs6N,EAnE18N,aAmEy9N,EAnEv7N,KVmQnF,iBAG2B,GAJJ,YAA3B,aAgBiCgC,GAC7B,kBAAoE,MAAc,EAAM,MAAQ,iBADnE,YAAjC,sBA3Ke,kBAAiB,UAAiB,sBAxJ3C5B,8BAagCA,EAAanzC,wBA4InC,kBAAkB,UAAiB,6BAzJ7CmzC,8BAagCA,EAAanzC,uBA4I6C,EAAc,IACzF,kBAAkB,UAAiB,4BA1JlDmzC,8BAagCA,EAAanzC,uBA6IiD,EAAc,IAC3F,kBAAkB,UAAiB,8BA3JpDmzC,8BAagCA,EAAanzC,uBA8IqD,EAAc,EAJtH,sDA6OoB,kBAAM,GAC1B,aAD0Bm1C,GAA4D,YAA1D,QAAQ,KAAK,QAAM,QAAe,KAAK,QAAM,QAAa,iBAGlE,kBAAM,GAC1B,aAD0BA,GAAsC,YAApC,QAAQ,QAAe,QAAa,4BAJvC,GAAK,MAGC,GAAK,MAIG,iCWlW+B,ETlBzC,UAAH,oDSjCkE,MTuC5F,eA7CI,aAQuBb,GAAA,YAAvB,aAlB+BC,GAC/B,cAD+B,YAAnC,aAbIj1B,EACAC,YADgC,kBACA,SADhC,aACA,YAFJ,8BAgEwB,kBAAM,GAK9B,aAL8B41B,GAI1B,YAHI,MAAK,MACL,KAAmB,KAAe,IAClC,MAAK,MACT,eAFuB7B,GAAY,YAAV,KAAK,SAAK,eAAGA,GAAY,YAAV,KAAK,QAAK,4BAHzB,GAAK,MAQS,iCSiBswP,EVoLxxP,UAAH,gDU9OsE,MV8P5F,4BAtPI7Y,EACA2a,EACAC,EACAlR,EACAtK,EACAyb,YAL0B,gBACM,gBACC,gBACL,gBACA,gBACI,OALhC,aACA,aACA,aACA,aACA,aACA,YANJ,aAlCYb,EAAAA,oBAAZ,eAmPI,aASsBH,GAAA,YAAtB,aAlB2BC,GAC3B,cAD2B,YAA/B,4BAxH4BxB,cAET,QSKf,EAnCoD,aAoChD,EApCiF,IAoCtD,EAnCkB,aAoCrD,EApCuF,KT4BnF,iBAG2B,GAJH,YAA5B,aAkD8BA,cAEX,QShB4F,EAhEvD,aAgEyE,EAhExC,IAiEhE,EAhE4B,aAgEb,EAhE+C,KT8EnF,iBAG2B,GAJD,YAA9B,aAiB8BA,cAEX,QS7Bge,EApE3b,aAoE6c,EApE5a,IAoEuc,EAnE3e,aAmE0f,EAnExd,KT+FnF,iBAG2B,GAJD,YAA9B,sBAgD6B,cAAO,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC/B,cAAO,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAFxD,oDA7BA5Y,EACAC,EACAmb,GAHJ,mBAG4B,QAExB,kBACe,MACX,EACA,EACA,GARJ,aACA,YAFJ,sBA9Ke,kBAAkB,UAAiB,sBAoBvCpC,8BAa2BA,EAAanzC,uBAjCqC,EAAc,IACrF,kBAAkB,UAAiB,wBAmBzCmzC,8BAa2BA,EAAanzC,uBAhCyC,EAAc,IAElG,kBAAkB,UAAiB,wBAiBhCmzC,8BAa2BA,EAAanzC,uBA9BgC,EAAc,GAAzF,GAA4G,GAE5G,kBAAiB,UAAiB,kCAe/BmzC,8BAa2BA,EAAanzC,uBA5B3C,GAAwF,OAAgB,EAAG,IACpG,kBAAiB,UAAiB,sBActCmzC,8BAa2BA,EAAanzC,wBA1B9B,kBAAkB,UAAiB,4BAa7CmzC,8BAa2BA,EAAanzC,uBA1BiD,EAAc,GARlH,sDAmPoB,kBAAM,GAe1B,aAf0Bm1C,GActB,YAbI,QACA,KAAK,QACL,QACA,KAAmB,KAEhB,IAQP,eAVuB7B,GACf,cACJ,aAAGA,GAOH,YANI,KAAK,QACL,QACA,QAAS,IAIb,eAJaC,GAGT,YAFI,KAAK,QACL,MAAe,EAAG,GACtB,qHAba,GAAK,MAkBS,iCUtM02K,ER2It3K,UAAH,kDQrMoE,MRmN5F,0BQzJmxL,ER0JlvL,UAAH,wDQpN8D,MRkO5F,0BQxK4pM,ER0K1nM,UAAH,yDQpO6D,MRyO5F,4BAvHIjqC,EACAksC,EACAC,EACAC,YAHoC,gBACD,gBACA,gBACE,OAHrC,aACA,aACA,aACA,YAJJ,aAoC4C3C,cAEvB,QOjC2B,EA3DQ,aA2DU,EA3DuB,IA2DI,EA1DxC,aA0DuD,EA1DrB,KP0FnF,iBAG2B,GAJa,YAA5C,eApJI,aAQsBuB,GAAA,YAAtB,aAV2BC,GAC3B,cAD2B,YAA/B,eAuFkC,qBAAiB,4BA1EMpB,8BAsBtBA,EAAanzC,sBAmDzB,4CAMf,YAAiB,+BA/EgCmzC,8BAsBtBA,EAAanzC,uBA6DjC,aALS,kBAChB,EAEW,EACA,GAJK,GAED,EAGR,OAGP,YAAiB,+BAtFgCmzC,8BAsBtBA,EAAanzC,uBAoEjC,aALS,kBAChB,EAEW,EACA,GAJK,GAED,EAGR,OAGP,YAAiB,iCA7FgCmzC,8BAsBtBA,EAAanzC,uBA2EjC,aALW,kBAClB,EAEW,EACA,GAJO,GAEH,EAGR,EAzBf,mEAgF6C+yC,cAExB,QO3CoC,EAhED,aAgEmB,EAhEc,IAgEK,EA/DzC,aA+DwD,EA/DtB,KPyGnF,iBAE6D,GAHpB,YAA7C,aAgB+CA,cAE1B,QOvDof,EApEjd,aAoEme,EApElc,IAoEqd,EAnEzf,aAmEwgB,EAnEte,KPyHnF,iBAE6D,GAHlB,YAA/C,eAkBoB,kBAAM,GAa1B,aAb0BoC,GAYtB,YAXI,KAAmB,KAAgB,IAWvC,eAXuB7B,GAAa,YAAX,MAAO,KAAI,eAAGA,GAUnC,YATI,KAAU,IAAI,IASlB,eATkBC,GAQd,YAPI,QACA,KAAK,QACL,QACA,QAAS,IAIb,eAJaA,GAGT,YAFI,KAAK,QACL,QACJ,iBAMI,kBAAM,GAa1B,aAb0B4B,GAYtB,YAXI,KAAmB,KAAgB,IAWvC,eAXuB7B,GAAa,YAAX,MAAO,KAAI,eAAGA,GAUnC,YATI,KAAU,IAAI,IASlB,eATkBC,GAQd,YAPI,QACA,QAAS,IAMb,eANaA,GAKT,YAJI,QACA,QAAS,IAGb,eAHaA,GAET,YADI,QACJ,iBAQA,kBAAM,GAI1B,aAJ0B4B,GAGtB,YAFI,QACA,QACJ,4BAnCuB,GAAK,MAeC,GAAK,MAgBJ,GAAK,MAOA,sBWpQxB,QAA8B,eAC9B,QAAyB,eAFzB,QAAgC,eCNwB,WC2Ff,ID5FxD,aEiKI9lC,EACA8qB,EACAC,EACAub,EACAC,GX5IA,GWwIA,aACA,aACA,aACA,aACA,eXhC2/E,MAAb,YAAqB,YAAa,GA5GpgF,KACR/3C,EW+IgD,iCAA+B,WAAS,gBX9IxF,MAAM,GAAiC,GAAR,GACnC,CAHA,KA4G4mF,MAAb,YAAkC,MAAb,YAAqB,YAAa,YA5G1oF,KACRA,EWiJK,iCAA+B,WAAS,gDAA8C,WAAS,IXhJpG,MAAM,GAAiC,GAAR,GACnC,CWoIJ,aAhIIwR,EACA8qB,EACAwb,GXTA,GWOA,aACA,aACA,aAGmC,WAAN,WAAM,QXMyD,YAAa,GAlB7F,KACR93C,EWeK,iCAA+B,WAAS,gBXd7C,MAAM,GAAiC,GAAR,GACnC,CAHA,KAqBuD,YAC3D,YAtBgB,KACRA,EWkBK,iCAA+B,WAAS,gDAA8C,WAAS,IXjBpG,MAAM,GAAiC,GAAR,GACnC,CWkBI,GAAoB,MAAhB,cXQD,WACV,YA9Be,KACRA,EWsBS,sBAAoB,WAAY,uDAAqD,WAAS,IXrBvG,MAAM,GAAiC,GAAR,GACnC,CWGJ,aAsDkB42C,GAAA,YAAd,aAU6BoB,kBAAAC,UAfFC,OAAnBC,KlBKJ,MAAM,MAAS,IAAc,GkBJ7B,SAAO,GAAP,QAAiB,EAAG,QAAM,MAAnB,IACC,aAAW,EAAE,OAAM,QAAM,MAAK,uDADtC,MADIA,EAAmBD,IACvB,CAcwC,uDA1B5C1mC,EACAoE,EACAhW,GX9CA,GW4CA,aACA,aACA,aXuBH,WACI,OAA0C,GAAlC,WAAM,MAAW,WAAM,MAAvB,GADZ,GArEe,KACRI,EWkDK,yBAAwB,WAAO,IAAK,QAAM,WAAM,4CAA4E,GAAlC,WAAM,MAAW,WAAM,MAAvB,GXlD/FA,GWkDmI,IXjDnI,MAAM,GAAiC,GAAR,GACnC,CWwCJ,aAgIIwR,EACA8qB,EACAC,EACAmb,GAHA,aACA,aACA,aACA,YAJJ,aC1FIU,EACAx4C,EACAy4C,EACA9lB,YAF4B,EAAS,iBACF,gBACK,OACxC,cAJA,aACA,aACA,aACA,YAJJ,aAlF+C+lB,GAAA,YAA/C,aA6FIF,EAIAG,EAIAC,EACA54C,EACAy4C,EACA9lB,YAF4B,EAAS,iBACH,gBACM,OACxC,cAZA,aAIA,aAIA,aACA,aACA,aACA,mBAMI,cAAW,KAAM,OACjB,cAAW,MAAO,MAClB,iBAAW,KACH,MAAM,GAA0B,aAAW,WAAQ,mBADxC,EAHF,YAjBzB,8BAlBA,aCqI2CkmB,GACvC,aAA+B,GAC4B,2BAAN,MACA,2BAAN,KAHnD,aA/NIC,GAAA,YADJ,aAaIC,GAAA,YADJ,aAmCI57B,EACA67B,GADA,aACA,uBP4BJ,GACS,cAs+Ce,KA4PJ,EApPhB,EAoPgB,WAAhB,KApPqB,EAoPL,MO5vD8C,MAAM,MPwgD3B,MAApB,Gb76C68+C,EAAY,EAAtC,EaiqDp6+C,CN3xDpC,Ga+B2E,cPygDpE,GI9gDyB,WAqLyB,KV7MrD,MAAM,GAAiC,GagCH,6DAR5C,eAyIQ,aAHAR,EACAC,GADA,aACA,YAFJ,aAkBkFQ,kBAAAC,kBAAe,+CAxBjFC,kBAAAC,kBAAU,6CA/C1B/D,EACAl4B,GADA,aACA,uBP2CgC,GAAa,cAm1ChC,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,OAAa,MOj8CsC,MPk8C/C,EAAY,EAAI,EAAe,WA15CrC,GA25CS,KAzEM,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,KAAK+3B,EAAQ,QOh8CW,MAsH0l2C,GP20C9m2C,EAAY,EAAI,EAAe,COl8CmC,WPm8C/D,COz8CX,aApBID,EACA4D,GADA,aACA,YAFJ,aAoGIA,GAAA,YADJ,4BA+B6B17B,SpBzLV,KoBwMlB,OADG,GAlM8E,EAkM1E,GpBpLG,EqB7BoC,IDkN/C,aAfoGk8B,EACxFl8B,GAEA,GADE,aACF,GAA2B,IAAI,EAAO,YACtC,GAFE,aAEF,WPikDQ,EArgDL,EACX,MAogDgB,WOjkDmD,KPikDnD,YOhkDR,KAHE,aAGF,IACA,GAJE,aAIF,GAA4B,KAAI,EAAO,YACvC,GALE,aAKF,GAAyC,CACrC,KAAI,EAAO,eP6jDP,EA1/CuD,EAC1E,MAy/CmB,WO7jD6C,KP6jD7C,MO5jDR,MAPE,aASF,IAA8B,KAAI,EAAO,MAEjD,aEtPAm8B,EACAC,GADA,aACA,YAFJ,eAJA,aAYIC,GAAA,YADJ,aCVIp8B,EACAk4B,GADA,aACA,YAFJ,aA4BIl4B,EACAq8B,EACAC,GAFA,aACA,aACA,YAHJ,aAZIC,GAAA,YADJ,aAgCIA,GAAA,YADJ,aClBI70C,EACA80C,EACAzB,GjBLA,GiBGA,aACA,aACA,ejBaI,YAAe,GAlBP,KACR/3C,EiBQ6B,iCAA+B,WAAW,gBjBPvE,MAAM,GAAiC,GAAR,GACnC,CAHA,KAkBoG,YACpG,GAnBY,KACRA,EiBS6B,iCAA+B,WAAW,iCjBRvE,MAAM,GAAiC,GAAR,GACnC,CiBDJ,aAjBI0E,EACA80C,GjBcA,GiBfA,aACA,ejBKqG,YAE9F,GAOK,KACRx5C,EiBX6B,iCAA+B,WAAW,gBjBYvE,MAAM,GAAiC,GAAR,GACnC,CAHA,KALmB,YACb,GAIM,KACRA,EiBV6B,iCAA+B,WAAW,iCjBWvE,MAAM,GAAiC,GAAR,GACnC,CiBnBJ,aAqFI24C,GAAA,YADJ,aAlCIj0C,EACA43B,EACAC,EACAmb,GAHA,aACA,aACA,aACA,iBjByByB,aA9DzB,KA8DsC,GAAb,MAAgB,GA9D7B,KACR13C,EiByCK,iCAA+B,WAAS,yBjBxC7C,MAAM,GAAiC,GAAR,GACnC,KAiEsB,aAAb,aApET,KAoES,SAEV,GAtEa,KACRA,EiB4CK,iCAA+B,WAAS,qBAAmB,WAAS,MjB3CzE,MAAM,GAAiC,GAAR,GACnC,CiB8BJ,aAxDI24C,GAAA,YADJ,aCmGIhiC,EACAC,EACA6iC,EACA75C,GlB9EA,GkB+EA,aAA6B,GAAa,EAAW,EAAe,KAAM,GAJ1E,aACA,aACA,alB+BkrB,MAAb,aAAkC,KAAG,GAAhB,eA5G9qB,KACRI,EkBgFmD,4BAA0B,WAAe,KAAG,SlB/E/F,MAAM,GAAiC,GAAR,GACnC,CkBuEJ,aATI05C,GACA,aAAyB,EAAS,OAAS,yBAAuB,GADlE,YADJ,aAnFI30C,EAEA40C,GAFA,aAEA,YAJJ,eAkBI,aAGoBpd,GAAA,YAApB,aAGmBD,GAAA,YAAnB,aAGoBod,GAAA,YAApB,aAGkBE,GAAA,YAAlB,aAsFuBxE,EACvBE,EACAnzC,OAEuB,QAAyB,EAAU,GAAnC,eAAoD,KAC7C,OADP,EAE3B,aAlFIwU,EACAC,EACA6iC,EACA75C,EACAi6C,GlBvBA,akBuBwC,EACxC,aAA6B,GAAa,EAAW,EAAe,KAAM,GAL1E,aACA,aACA,aAEA,alBiC4B,MAAV,WAA4B,KAAG,GAAb,aAxDxB,KACR75C,EkB0B6C,4BAA0B,WAAe,KAAG,SlBzBzF,MAAM,GAAiC,GAAR,GACnC,CkBeJ,aC5B0B6vB,EAAmB7vB,GAAnB,aAAmB,YAA7C,eAdI,aC8KA,EAAU85C,EAAqBC,EAA0BC,EAAAA,mBAAkB,oBAA3E,EAAUF,EAAqBC,EAA0BC,OACrDC,EVpFgD,KUoDhDC,EAAmB,GAAc,UAA8B,EAA9B,cACO,KACxB,EAAa,GAAb,cAAmC,YAA/CC,EAAY,EACZrmB,EAAa,EAAM,MAAO,MAC1BsmB,EAAoB,EAAM,MAC1BC,EAAsB,EAAM,mBA1G9B,UA4G4C,MAA3B,EAAgB,MAAW,QAAtC,MAAW,IAAX,KAAKC,EAAM,MAA2B,EAA3B,QDvIo6L,EAAgB,MAAhB,GAA2B,GAAI,IAAQ,EAAR,EAAuB,GAPz+L,oBADE,GAEF,GAFE,aAEF,UAA2B,ECuK0C,EAAO,EAAI,iBDtKjE,+BAA0B,GAKy5F,MAAM,GAA8B,GAAR,IAA2jG,EAPrgM,QC8IhB,GAAW,GASX,GAAI,EAAgB,MAAW,KAAW,CACtC,GAA0B,IAAuB,MAgB0C,OAf9D,QAEjB,OAAW,EAAe,IAauB,EAAO,EAAI,EAX5E,KAAO,KACmC,EAA3B,EAAgB,MAAW,QAAtC,GAAsC,GAAtC,SAAKA,EAAM,OAA2B,EAA3B,EACP,EAAa,EAAI,OAAY,EAAQ,EAAgB,MAAhB,GAA2B,GAAK,UADnC,GAAtC,EAGJ,EAER,Cd4zBJ,GAltBU,EAktBN,IAAO,EAAX,Oe13BW,Wf03BG,GAltBJ,EAktBa,Gc9yBnB,MAAM,OAAe,4EASrBxmB,EACAumB,EACAD,GAFA,aACA,aACA,YAHJ,aAjGCxD,GAAA,2BAmEwD,sCAAgC,aAnE3EvyC,EAAGC,SCaoB,ED0EJ,QC1EO,ED0EP,MArFlC,OCpEQ,KAA2B,EDoEH,aAwB/Bi2C,GAAA,yBAjGAC,EACAC,GADA,aACA,YAFJ,aAgL8BR,GAA4B,YAElCA,GACpB,GAAmB,IAAf,EAAO,IACP,MAAQ,YAAW,KAAO,GAAG,MAAS,KAAI,KAAO,GAAG,YAMpD,KAAc,GAFS,GAEc,EAAO,MADhD,OAAc,GAAP,EACH,EAEa,KADH,WAFA,SAIZ,IAAiD,UACvD,CAdoE,CAAY,GAAtB,iBAA1D,aAvKiB7E,Od8uDbsF,EAtmDsF,OAErF,KAAa,MAqmDd,IAvmD4E,EAumDvE,aACDC,EAxmDwE,EAwmDzD,GAxmDyD,EAwmD5C,KACrB,EAAS,MACZ,EcnqD0F,GAuGkjkD,EAAS,KAAY,GAtGzqkD,OAAmB,GdqqDZ,EcrqDqB,KAChC,aAhFYvF,EAA0B1vC,SAAiD,GAAI,QAAW,OAC9F,OAAgB,WAAa,EAAM,OAAY,EAAM,sBdgBpB,UA88CxB,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,OcniDoD,GdmiDvC,McniD8C,GdoiDvD,EAAY,EAAI,EAAe,GcpiD/B,OAAgB,QdqiDb,GcpiDN,QAAD,aAEQ0vC,EAA4BwF,WAChCC,EVkDgD,KUjDhDC,EAAyD,KACzDC,EAAoE,GAA3B,GAG9B,qBAAX,KAAKC,EAAM,MACH,gBACyB,MAArB,EACA,EAAkB,EAAO,EAAG,OAE5B,EAAiC,GAAb,EAAG,OAEpB,gBACP,EAAmC,EAAI,IAEd,MAArB,IACA,EAAc,EAAI,OAA0B,IAC5C,EAAoB,MAExB,EAAc,EAAI,GAE1B,Wd4BL,UA0uCkB,KAsFD,eAAhB,Oc11CQC,EAAoB,Gd01CZ,Mc11CqB,GAK7B,GAAI,EAAW,MAAW,KAA1B,OVAD,EAAW,QAyMd,OUxMwC,GAAO,GVwMhB,SUtMvB,GAAO,Gdo1CH,GAAZ,EADAC,EAEJ,Oc91CIC,Ed+1CG,EIhpCH,KUnMI,GAAO,OAAgB,EAAoC,Odm1C5D,Ecj1CQ,GAAqB,MAArB,IAEP,OAAgB,EAAe,gBdq+EvC,GAAI,GA37EiC,EA27EjC,KA37EiC,EA27EX,KAAW,GAAO,MAA5C,SACgB,EA57EqB,EA47ErB,WAAhB,KAAKhE,EAAW,Mcp+EU,KAsIo70E,EAtI/70E,Odo+EO,Icp+E8D,KAA3C,MAAf,EAAe,K3B8BpC,iBas8EiB,CAAwB,GAAO,UAAI,CACzD,GAAO,Ect+EoB,KAInB,EAAc,EAAI,OAA0B,MAC5C,OAAgB,EAAe,kBd46C1B,GAAa,GAt3CN,EAs3C8B,KAuErC,EA77CO,EA67CP,WAAb,KAAKrC,EAAQ,Mch/CKsG,EAAmC,GA+Hwn2C,EA/Hno2C,SAEtB,OADJ,gBAEQ,MAAO,OAA0B,KAAoB,EAAe,SAA4B,GA4Hqj2C,EA5Hhk2C,MACjF,IAMZ,QACI,GAAO,OAA0B,IAKjC,MAAO,OAA0B,IA+Gwn2C,EA/G/l2C,OA+G+l2C,EAzHlp2C,Od2+CvB,EAAY,EAAI,EAAe,Gc59C3B,OAAgB,Ed69CjB,Ic7/CH,QAkCJ,aAsGEC,GAAE,MAAC,YAAW,EAAG,MAAS,MAAK,EAAG,QAAU,GAAG,aEuCjD/e,EACAC,EACAub,EACA2B,EACA75C,EACA07C,OAEAC,GAAuB,QAAa,EAAb,eAFF,GAEmC,EAAO,GAA/DA,EACsB,EAAW,MAAX,EAAW,KAAU,EAArB,EAAqC,EAApB,EAAjB,EAAtBC,EAAsB,WAAwD,UAAxD,EACtB1D,EAAmB,QAAgB,EAAhB,EAwBnB2D,ECpCO,KAAO,IAkL2/C,EAAiB,GD7I1hD,GAAI,GAAmB,EAAuB,OAAO,SAAwB,EAAiB,SAE9FC,EAA2C,SAAwB,EAAiB,GAC3D,IAAzB,KAA+C,IAA/C,KAAKC,EAAoB,UACrB,EAAc,OACV,KACA,GACI,UAAwB,EAAmB,EAA3C,EAA8C,EAAmB,EAAjE,GAIE,GAHF,GACI,QAAgB,GAAO,OAA4B,MAAM,MACzD,cAPhB,EAA+C,GAcpC,KAAe,EAAf,KACPC,EAAiB,OAAuC,GAAH,IAAU,EAAe,EAAtB,MAQtD,GAPF,GACI,QACI,GACI,GAEJ,MACD,YAEA,IAAgB,EACvB,EAEQ,OACJ,KACA,GACI,UAAwB,EAAe,EAAvC,EAA0C,GAC1C,KAjBZ,QAsBJ,aAzLQC,EACAC,YZlDgD,iBYkDtB,EAD1B,aACA,YAFJ,aA1DqBlF,GAAA,yBAgFFmF,WACQ,IAAK,MAAL,WACf,GADe,MAAV,cAGTC,EZ1E4C,KY2EvB,IAAK,MAAL,WAArB,KAAqB,QAAfnhC,EAAe,EAAf,KAAKohC,EAAU,EAAV,KACP,GAAK,EAAM,OAAqC,IAAvB,EAAM,MAAS,IAIpC,EAAY,EAAI,KAAO,QAJwB,KACE,KAAf,EAAM,OAAnCC,EAA4C,EAA5C,KAAeC,EAA6B,EAA7B,KACpB,EAAY,EAAI,KAAM,EAAiB,GAC3C,CAGJ,CACA,EAAK,MAAS,WDpFX,af+6BJ,GA9xBJ,EA8xBe,GgB11BV,EAAK,MAAS,EAAmB,EACrC,aAoPiFC,mBAAAf,SAAyB,EA7Q5B,KA6QK,UAAc,EAAc,EAAK,cAnVtFh3C,EAAGC,SDSA,ECqFkB,ODrFf,ECqFe,KA9Fb,ODnDnC,KAA2B,ECoDV,aAkDxB+3C,EACA5C,EACAE,GADA,aACA,aAUmB,0BAGA,eAAf,KAAKhB,EAAU,MtB3HnB,KO4QmD,GAjIrD,GAiI8D,GP5QhD,KACR34C,EsB2HoC,4BAA0B,WtB1H9D,MAAM,GAAiC,GAAR,GACnC,SsB0HQs8C,EAAW,WACE,eAAb,EAAa,GAAb,KAAK1uB,EAAQ,wBZLW,EAAK,QAExC,GAFgE,GAqP9C,QY/OH2uB,EZkPZ,KAJiB,EAIO,EAAS,OYjPd,GAAI,EAAe,EAAnB,O7BNg6C,O6BOj5C,EAAK,MAAS,IAAI,GAAC,GAAe,EAApB,EAAuB,GAAK,GAAL,GAvFlE,M7BqBE,S6BoES,EAAK,MAAL,GAAc,GAAc,KAHhC,ItBhIZ,GA4GovF,EAAK,MA1GrvF,MAAM,GAAiC,GsBoIN,eAAa,EAAM,+BAChD,SAAkB,CACtB,CAiBA,GAAW,WA9CnB,aAjFQC,ahB+BA,UAg7CS,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,KAAK1H,EAAQ,MgBphDK/vC,EAgXuuqC,EAhXvtqC,OAClB,QAAS,qBACC,EAAM,WACf,QA6WwuqC,EA7W9tqC,MhBkhDvB,EAAY,EAAI,EAAe,KgBthD3B03C,EhBuhDD,EgBjhDC,OAAW,QACN,0BAAwB,QAAS,YAAU,EAE3C,yBAAuB,QAAS,YAAU,CAEnD,aAgBIC,EAdR,EAYSC,EAGDC,qBAGQ,MAAC,iCAA+B,EAAY,QAAO,WAAU,GAAG,MAAgB,KAAI,EAAM,KAC9F,cAlDZC,GAAA,qBhBg6FAC,EAAiB,EACD,EAr4FuB,WAq4FvB,WAAhB,OACI,EgB/5FsC,EhB85F1B,MgB95F6B,IhB+5FzC,KgB/5FsC,QAAa,EAAb,GhB+5FtC,CACJ,CgBh6FkC,WhBi6F3B,qBAv4FJ,WAyoDH,GAAI,UAAsB,OAAW,GAAO,MAA5C,SACgB,eAAM,GgBnqDgC,MhBmqDtC,MgBnqD4B,IhBmqDtB,CAAwB,GAAO,UACrD,GAAO,GgBpqD4B,sBhB2B7B,WAknDN,GAAI,UAAsB,OAAW,GAAO,MAA5C,SACgB,eAAhB,KgB3oD6B,EhB2oDb,MgB3oDgB,IhB2oDV,MgB3oDO,WAAiB,UAAjB,GAA8B,GhB2oDrC,CAAyB,GAAO,UAAI,CAC1D,GAAO,GN5pDP,IAiCQ,EA/BJ,MAAM,GAAiC,GAfzB,8BMyDgB,WA8pDlC,GAAI,UAAsB,OAAW,EAAO,MAA5C,SACAziB,EAAY,EACI,egB3rD2B,MhB2rD3B,MgB3rDiB,KhB2rDa,GAAqB,IAAF,EAAE,GACnE,EAAO,EN7sDP,KAsC0C,GAElC,GAxCI,WM4CiG,aA8qB7F,KA2FA,eAAhB,KAAK8c,EAAW,MgBnyByC,MA0Xq3T,EA1X/3T,KhBmyBD,EAAY,EAAI,EAAO,WAorBxD,GAAa,GAnrBnB,EAmrB2C,KAuErC,EA1vBN,EA0vBM,WAAb,OAAa,MgB9hD4D,MhB+hDrE,EAAY,EAAI,EAAe,CN/iD/B,MAAM,GAAiC,GsBiBlC,mFhB+hDF,EgB/hDE,wJtBhBT,CsBKJ,aAtBI,EAAsC4F,EAAqBC,EAGlDL,2BfyYiH,GAAlC,GA9XxF,EAAgB,EAA6B,GAAjB,EAAa,EAAb,GAAiB,IeTjC,MAAC,YAAU,QAAM,YAAiB,CACtC,cAbsChE,GAAA,mBfEQ,WPmBtD,KO4QmD,MAAS,GP1QxD,MAAM,GAAiC,GsBrBP,gCtBmBpC,GAdD,GADsB,cACzB,IAcgB,KACR34C,EsBnBiC,WAAS,WAAM,wBtBoBhD,MAAM,GAAiC,GAAR,GACnC,CAHA,GATsC,GAA1B,cAAO,WAAO,OAAS,EAAvB,IASA,KACRA,EsBlBiD,WAAS,WAAM,sBtBmBhE,MAAM,GAAiC,GAAR,GACnC,CsBxBJ,aA2FIi9C,EACArE,EACAe,GAFA,aACA,aACA,YAHJ,aA2BIuD,GAAA,YADJ,aA0IIC,EAFAC,EACAC,EAM4B9B,EAAsBC,GtBlLlD,KAgD0gN,IAAmB,GAAQ,EAAW,EAAO,GAA7C,IA9CtgN,MAAM,GAA8B,GAfxB,wBPlBD,K6BmNX,OAEY,GApNO,EAoNI,EAAI,OAA4B,MApNpC,EAqNX,EACI,OACI,GACI,OACI,GAAsB,EAAW,EAAO,GAD5C,EAEI,GAAsB,EAAW,EAAO,GAF5C,EAGI,EACA,EACmB,MAXpC,O7BhMJ,EqB7BoC,KQ8OnC,KAER,eEhHK,kBC7Fo0G,kBAAO,GAAQ,IAAS,IAAU,IAAW,IAAY,IAAa,IAAc,IAAe,OD6Fv6G,CAWT,aASI8B,EAIAC,GxB3KA,GwBuKA,aAIA,exB/DmrF,YAAU,GA5GjrF,KACRv9C,EwB6KwB,wCAAsC,WxB5K9D,MAAM,GAAiC,GAAR,GACnC,CwBgKJ,sBE/KQ,cAA2B,2BAA3B,KAHR,uBCGQ,cAA2B,6BAA3B,KAHR,uBCGQ,cAA2B,iCAA3B,KAHR,uBCGQ,cAA2B,6BAA3B,KAHR,uBC6CgD,cAA2B,6BAA3B,KAFhD,uBA1CgD,cAA2B,4BAA3B,KAFhD,uBAmBgD,cAA2B,uCAA3B,KAFhD,mNC3BmB42C,EAAAA,oBAAnB,aAUaxB,GAA8D,OAAvB,GAAU,EAAK,QAAO,wOCsFR,GAAU,cCyrB7D,EDzrBgG,KAAY,WAAzE,kBAAQ,SACU,GAAU,cCyrB/D,EDzrBoG,KAAY,GAA3E,kBAAQ,GAEjB,kBAAQ,GAAU,KAClB,kBAAQ,GAAU,IA9CzD,sDAzC6CjzC,GADjD,KACiD,YADjD,aEZaizC,GAAgG,OAA5C,KAAoB,yBAAuB,aAD/FA,GAAsF,OAAvC,KAAoB,oBAAkB,uBC0BrD,kBAAU,GAAY,KACtB,kBAAU,GAAY,IApB/D,gEAqC6D,eAH7D,sDAM0BrrB,EAAWitB,EAAkBrY,mBAA7B5U,EAAWitB,EAAkBrY,EAAAA,SAC1C,MACO,GAAY,GAAG,EAAM,EAAa,uCACrC/0B,EAAAA,EACL,GAAM,GAAF,GAA6B,MAAM,GAAyB,GAChE,MAAM,iBAJV,8CA1CuCzH,GADnD,KACmD,YADnD,aCc8Bsf,EAAiBC,mBAAjBD,EAAiBC,EAAAA,SACtB,GAAgB,GAAG,EAAK,MAAO,EAAK,cAAjD,UAAK,4CA2CgC,kBAAc,GAAgB,KAC9B,kBAAc,GAAgB,IAjB3E,gEAyB2D,eAD3D,sDAjEmDvf,GADvD,KACuD,YADvD,aCK8By6B,EAAW0J,EAAatK,EAAayb,mBAArC7a,EAAW0J,EAAatK,EAAayb,EAAAA,kBA0E61N,aAAqB,IAxEr6N,MACY,GAAY,GAAG,EAAM,EAAQ,EAAQ,uCACxC7tC,EAAAA,EACL,GAAM,GAAF,GAA6B,MAAM,GAAyB,GAChE,MAAM,iBALd,0DA6DiC,kBAAU,GAAY,KACtB,kBAAU,GAAY,IApC/D,wDA2CA,aAzE+CzH,GADnD,KACmD,YADnD,6TCLmBy0C,EAAAA,oBAAnB,yWC+BgB4G,EAAW1pC,SACf,qBACI,GAAoB,OAAU,SACnB,GAAf,EAAO,QAAQ,uBACmB,EAAO,eAArC,OAAoB,uBAAU,EAAV,MAAgD,UAEpE,OAAS,GAChB,QAAD,uBAhByE,WCoMxB,GDpMJ,OAAU,GAAa,KAFxE,sDAfmDA,GADvD,KACuD,YADvD,aA2C8BQ,mBAAAA,EAAAA,UAAqB,UAAK,EAAQ,EAAO,sCAHvE,aAEqBA,EAAqCR,GAAmB,aAAS,GAAjE,YAFrB,aAyBkBshC,EAAkB72B,SAA+B,M9C0Bc,O8CzBrE,QAAO,QAAQ,gBAAgB,EAAQ,4CAC1C3U,EAAAA,EACL,YL1ESwrC,GAA0F,OAAzC,KAAoB,sBAAoB,CK0E5F,CAAF,GAA+B,MAAM,GAA4B,GACrE,MAAM,UACT,QAAD,0BlCWyB,GoC5BA,UAAH,iDpCvBsE,MoCyB5F,0BpC8B+B,GoC7BD,UAAH,sDpC1BiE,MoC4B5F,0BpC8BuI,GoC7BvG,UAAH,wDpC7B+D,MoC+B5F,uBAhD4C,kBAAU,GAAa,IAD/D,wDAkBA,aA1B+CqI,GADnD,KACmD,YADnD,aAmC4B71C,EAAoBG,EAAsBf,kBAA5B,gBAAsB,gBAAsB,YAClF,UAEQ,GAAS,MAAT,SACgE,QAAW,EAAX,IAA5D,OAAkB,GAAa,sBAAsB,EAAtB,EAA2C,QAAW,EAAX,SAC9E,GAAW,MAAX,SACyD,EAAU,OAAI,EAAU,OAA7E,OAAkB,GAAa,0BAAkD,QAAW,EAAX,WAEjF,OAAkB,GAAa,eAAe,QAAW,EAAX,4CAGjD4C,EAAAA,EACL,MAAM,GAAF,GAAmC,GAAyB,GAAc,UACjF,QAAD,aAYwBkwC,EAAqB/8B,cAAmD,MACxF,EAAO,MAAY,GAAN,IAAkB,IAAI,GAAc,oDACpDnT,EAAAA,EACL,GAAM,GAAF,GAAkC,MAAM,GAAwB,GACpE,GAAM,GAAF,GAA6B,MAAM,GAAwB,GAC/D,MAAM,UACR,OAN8E,WAM/E,eAfwE,aAAxC,IAA7B,IAA6B,uBAAuB,iBAAiB,YAAY,GAAgB,OACrG,eAEqF,aAApD,IAA7B,IAA6B,uBAAuB,aAAc,UAAW,KAAI,YAAY,GAAgB,OACjH,eAEuF,aAAtD,IAA7B,IAA6B,uBAAuB,aAAc,QAAS,SAAQ,YAAY,GAAgB,OACnH,6BARyB,GAAK,OAGA,GAAK,OAGH,GAAK,iBC7DTvF,EAASC,OACjCw4C,EAAU,KAAI,GAEd,GAAK,KAAM,GAAP,GAAc,aAAd,GAAoB,KAAM,GAAP,GAAa,cAAb,EACnB,MAAM,GAAqB,8BAA4B,EAAjD,WAAkD,MAAI,EAAtD,YAEV,OAAO,CACX,aCXoB1H,EAA6Bx1C,GAChB,OCAN,EDAN,MAAQ,CAAG,sF1CoB5B89C,KAAAA,aAAe,MAAf,iGAjBOC,KAAAA,aAAe,MAAtB,8FAUOC,KAAAA,aAAe,MAAtB,43JHgC8E,OAAL,UAAI,sBKrDjFC,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAA17C,GAAA,sFAAA07C,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,yFA8hBuF,OAA/E,OAA2B,WAAK,MAAQ,WAAK,MAAQ,WAAO,MAAQ,WAAU,yBAE9Dn4C,GAE4C,SAD5D,iBAAuC,EAAM,MAAN,OAAc,aAAQ,EAAM,MAAN,OAAc,aACvE,EAAM,MAAN,OAAgB,cAAU,EAAM,OAAc,UAAS,mCAG3D,WAAK,WAAe,WAAK,WAAe,WAAO,WAAgB,eAAY,MAAZ,EAAY,QAAZ,GAA4B,OAA3F,GAA+D,QAA0B,EAA1B,EAA2B,sBAnfxEo4C,OACd51B,EAAuC,OAAQ,QAE/C,OADA,EAAM,GACC,OAAyB,EAAQ,KAC5C,sBAmNkB21B,SAAA,WAAG,UAAH,sBA/NuDvI,8BAWvDA,EAAanzC,sBAda,MAkOvB,KAAkB,8B0ChKg5O,W1CgKl6O,UAAH,sBA/NuDmzC,8BAWvDA,EAAanzC,sB0CtB5B,O1C0OoC,wBAuFP,OAAxB,WAAS,MAAK,KAAS,wBAqDgC,OAA7B,WAAS,MAAO,KAAY,wBA8BD,OAA3B,WAAS,MAAK,KAAY,8BAsC5DmS,EAAa,WACboN,EAAW,WACXq8B,EAAoB,WAAS,MAAK,MAOlC,QAAqB,GAAmB,EAAc,MAAO,QAAS,IAAtE,EACmB,QACfC,WuC/bqB35C,EAASC,GAElC,GADE,EACF,sBAAO,CACH,QAAI,SAvBF,uBAwBE,MAAM,GAAqB,oCAAkC,EAAvD,WAAwD,MAAI,EAA5D,YAEV,OAAQ,EAAD,IACX,CACA,GAPE,EAOF,oBAAM,OAAO,YACb,GARE,EAQF,oBAAM,OAAO,MAEjB2sB,EAAY,KAAI,GAChB,IAAI,KAAQ,GAAR,OAAa,GACb,MAAM,GAAqB,oCAAkC,EAAvD,WAAwD,MAAI,EAA5D,YAEV,OAAO,CACX,CvC+a2B,CAA+B,GAAb,GAAJ,YAAS,IAAQ,GKvb3C,GLwbHgtB,EAA0D,GAA1C,EAAc,MAAc,SKtdzC,IsCyXqrH,EArP3oH,GAAY,GAAN,MAqPmqH,EAAK,QArS/qH,KAAW,GAAN,MAqS4rH,EAAO,Q3C8FpvH,GAAQ,E2C3WqC,KAAY,GAAN,iC3C6WnD,MAAM,GAAyB,gEAD1Br0C,eAJTgW,EAAAA,EAOA,GAAI,KAA2B,KAAJ,MAAI,OAA3B,GAA2C,KAA2B,KAAJ,MAAI,OAA3B,EAC3C,MAAM,GAAyB,4EACW,aAA9C,OAAe,MAAiB,EAAc,QAAc,EAAd,EAClD,wBAiFuB,iBAAuE,sBAG/Cu1B,GACvC,WAAc,IAAI,EACtB,sBAEyCA,GACrC,WAAc,IAAI,EACtB,wBAU0E,OAApC,OAAQ,OAA2B,wBA5BhC,iBAAkE,sBAI5E+I,GACC,OAAhC,OAAmB,EAAY,sBAhetBA,kEAkeyD,OAA/B,IAA8B,sBC1blDpE,SACD,MAEoB,GAAvB,WAAa,MAAgB,EAAO,wCAE3C,MAAM,GAAyB,+BAA6B,EAAK,IAD5DlwC,eAHTu0C,EAAAA,EAMA,IACI,OAAO,SAAsB,EACjC,6BAAsC,KAA7Bv0C,EAAAA,EAC+B5J,EAAc,EAAE,QAApD,MAAM,GACF,QAAS,0BAAwB,EAAK,eAC5B,EAAO,mBAAiB,EAAK,KACxC,EACP,SACJ,sBVuES69C,GAAA,YAAoB,wBAApB,iBAAoB,sBACpBA,GAAA,YAA2B,wBAA3B,iBAA2B,sBAC3BA,GAAA,YAA0B,wBAA1B,iBAA0B,sBAC1BA,GAAA,YAA4B,wBAA5B,iBAA4B,4BAGjCp8B,EAAW,GACP,GAAmB,WAAO,QAC1B,GAAmB,WAAc,eACjC,GAAmB,WAAa,eAEpC,aAAc,SAAd,QDtE+xH,GAAhC,IAAyD,GAAf,EAAK,OAA0C,MAAM,GAA8C,uEAAmG,GAAhP,GAA8P,oBAAkB,EAAI,gBAAe,EAAK,OC8EviI,OAAO,CACX,wBAS2G,OAAhE,OAAoB,WAAM,WAAa,WAAY,WAAY,yBAEtF/b,GAEwD,SADxE,iBAAgC,YAAQ,EAAM,OAAQ,YAAe,EAAM,OACvE,YAAc,EAAM,QAAc,YAAgB,EAAM,KAAW,iCqDxOtC,EAC+qS,WAD/qS,EAAM,MAAN,EAAM,QAAN,KrD2OjC,GqD3OiC,QAAoB,EAApB,ErD2Of,IqD3Oe,EACssS,WADtsS,EAAM,MAAN,EAAM,QAAN,KrD2OjC,EAAuB,GqD3OU,QAAoB,EAApB,ErD2Oe,IAAzB,EqD3OU,EACouS,WADpuS,EAAM,MAAN,EAAM,QAAN,KrD2OjC,EAAqD,GqD3OpB,QAAoB,EAApB,ErD2O4C,IAAxB,EqD3OpB,EACiwS,WADjwS,EAAM,MAAN,EAAM,QAAN,GrD2O6E,OAA9G,EAAkF,GqD3OjD,QAAoB,EAApB,ErD2O2E,IAAE,CAAD,iCAG1G,0BAAS,KAAT,GAAgB,0BAAgB,KAAhB,GAAuB,0BAAe,KAAf,GAAsC,aAAuB,SAAvF,IAAuF,EAAhE,IAAgE,EAA1C,oBAA0C,GAAvB,QAAiB,KAAjB,GAAqB,GAAC,6BAzK5B,OAApE,GAAN,WAAoB,KAAM,cAAe,IAAnC,mBAAmD04C,eAAe,oCAAC,yBAGzD14C,GAAmE,OAA3C,iBAAuB,cAAS,EAAM,MAAI,6BAGvC,OAAV,GAAN,WAAe,6BAoFoC,OAAxE,GAAN,WAAoB,KAAM,kBAAmB,IAAvC,mBAAuD04C,eAAe,oCAAC,yBAG7D14C,GAAuE,OAA/C,iBAA2B,cAAS,EAAM,MAAI,6BAG3C,OAAV,GAAN,WAAe,sBAwNhCo4C,OACN51B,EAAc,OAAQ,QAEtB,OADQ,EAAR,GACO,OAAgB,EAAQ,KACnC,wBAG4B,iBAA+D,sBAGpDitB,GACP,OAA5B,WAAc,IAAI,EAAS,wBAE2C,OAApC,OAAQ,OAA2B,wBAvBzC,iBAA0D,sBAK3D+I,GAA0E,OAA1B,EAAa,KAAY,sBA5RhBA,kEA8R7B,YAqD3D,CArD0D,yBAvH1Cx4C,GACsE,SAAtF,iBAA0B,kBAAW,EAAM,SAAW,aAAe,EAAM,KAAU,6BAEV,OAAhD,cAAQ,WAAa,IAAiB,GAAZ,YAAsB,CAAD,yBAoE1DA,GAA2E,OAAnD,iBAA2B,kBAAW,EAAM,MAAM,6BAC7C,OAAlB,WAAQ,UAAS,yBAS5BA,GAAuF,OAA/D,iBAA+B,cAAM,MAAS,EAAM,MAAM,MAAI,6BACrD,OAAV,GAAZ,WAAM,MAAe,yBAehCA,GAAyE,OAAjD,iBAAyB,kBAAW,EAAM,MAAM,6BAC3C,OAAlB,WAAQ,UAAS,yBAU5BA,GAAuF,OAA/D,iBAA+B,cAAM,MAAS,EAAM,MAAM,MAAI,6BACrD,OAAV,GAAZ,WAAM,MAAe,sBE3VtCo4C,OACN51B,EAAc,OAAQ,QAEtB,OADQ,EAAR,GACO,OAAoB,EAAQ,KACvC,wBAG4B,iBAAmE,sBAGpDitB,GACvC,WAAc,IAAI,EACtB,wBAE0E,OAApC,OAAQ,OAA2B,wBAzBrC,iBAA8D,sBAKnE+I,GACD,OAA9B,EAAa,KAAgB,sBAoDk/BA,kEAlDv7B,YAiDxF,CAjDuF,sBAnC/FL,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAA17C,GAAA,sFAAA07C,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,uFAAAA,GAAA,yFAiBgG,OAArD,GAAc,WAAK,MAAe,WAAK,MAAa,wBAOK,OAAjD,OAAwB,WAAK,MAAQ,WAAK,MAAM,sBD2BtFA,GAAA,YAAoB,wBAApB,iBAAoB,sBACpBA,GAAA,YAA0B,wBAA1B,iBAA0B,sBAC1BA,GAAA,YAA2B,wBAA3B,iBAA2B,sBAC3BA,GAAA,YAAsB,wBAAtB,iBAAsB,sBACtBA,GAAA,YAAsB,wBAAtB,iBAAsB,sBACtBA,GAAA,YAA0B,wBAA1B,iBAA0B,8BAGf,aAAM,SAAN,IAAM,cAClB,aAAY,SAAZ,QF/BwF,IAsChF,IAFZ,EAEC,GAAR,GAAc,GAAd,QAFuC,EA/BT,MAAM,GAElC,GEyBoD,gDFI/C,EEJiG,0BFIjE,QEF5B,aAAM,SAAN,QFlCwF,GA4C5D,EAA6C,eAR7E,GAUS,GAzCc,MAAM,GAElC,GE6BkB,mDFAb,EEAkE,6BFQlC,MARhC,QENgB,sBAUX,aAAY,SAAZ,IAAY,cACb,eAAM,MAAN,EAAM,MACyB,KFO3B,EEP+B,EFO/B,IACZ,EER6D,aAAuB,GAAQ,GAAhF,aAZQ,qBAcX,MAAM,GAAyB,qCAdpCjhB,EAAgB,IAiBZ,GAAmB,WAAS,UAC5B,uBAAU,EAAV,EACA,aAJJ,OAAO,GACH,EADG,IAIH,QAAc,EAAd,EAER,wBAWkH,OAAvE,OAAoB,WAAM,WAAY,WAAM,WAAQ,WAAQ,WAAU,yBAE7Fl3B,GAEsE,SADtF,iBAAgC,YAAQ,EAAM,OAAQ,YAAc,EAAM,OAAc,cAAQ,EAAM,QAClG,YAAU,EAAM,OAAU,YAAU,EAAM,QAAU,YAAc,EAAM,KAAS,iCAGpF,eAAD,GAAC,QAAQ,EAAR,EAAa,IAAM,eAApB,EAAmB,GAAC,QAAc,EAAd,EAAmB,IAApB,EAA0B,eAAM,MAAN,EAAM,KAAN,EAAM,aAAnD,EAA4C,GAAC,QAAoB,EAApB,EAAyB,IAA1B,EAAgC,eAA5E,EAA2E,GAAC,QAAU,EAAV,EAAe,IAAhB,EACtE,eADL,EACI,GAAC,QAAU,EAAV,EAAe,IAAhB,EAAsB,aAAgB,OAD1C,GAC0B,QAAc,EAAd,GAAgB,CAAD,mCAGtC,0BAAS,KAAT,GAAgB,0BAAW,KAAX,GAAkB,0BAAW,KAAX,GACjC,aAAY,SAAZ,IAAY,gBFkBkC,EAE9B,aEnBc,GAAH,EAAY,EAAI,EAAG,OAAhB,EAAwB,QAExD,SAJc,IAId,EAJgC,IAIhC,EAJkD,KAChD,QAEM,MAFN,EAGH,sBA0JSo4C,OACN51B,EAAc,OAAQ,QAEtB,OADQ,EAAR,GACO,OAAgB,EAAQ,KACnC,wBAI2B,iBAA+D,sBAGnDitB,GACnC,WAAc,IAAI,EACtB,wBAE0E,OAApC,OAAQ,OAA2B,wBAzBzC,iBAA0D,sBAK3D+I,GAA0E,OAA1B,EAAa,KAAY,sBA9InGA,kEAgJ2E,YA0ChF,CA1C+E,yBAnH/Dx4C,GAA0E,OAAlD,iBAA0B,kBAAW,EAAM,MAAM,6BAC5C,OAAlB,WAAQ,UAAS,yBAkD5BA,GAA4E,OAApD,iBAA4B,kBAAW,EAAM,MAAM,6BAC9C,OAAlB,WAAQ,UAAS,yBAgB5BA,GAA4E,OAApD,iBAA4B,kBAAW,EAAM,MAAM,6BAC9C,OAAlB,WAAQ,UAAS,yBA4B5BA,GACkF,SAAlG,iBAAsC,aAAa,EAAM,QAAa,aAAa,EAAM,KAAQ,6BAE5C,OAA1B,MAAK,YAAY,WAAS,CAAD,sBErF/Cm4C,GAAA,YAA8B,wBAA9B,iBAA8B,sBAC9BA,GAAA,YAA6B,wBAA7B,iBAA6B,sBAC7BA,GAAA,YAA6B,wBAA7B,iBAA6B,sBAC7BA,GAAA,YAA+B,wBAA/B,iBAA+B,4BAIpCtrB,GAA6B,IAAd,YAAoB,EAAQ,EAEvC,eAAe,MAAf,EAAe,KAAM,GJTuY,EISlY,GAAQ,eAAe,MAAf,EAAe,KAAM,GJTuY,EISlY,GAAQ,aADxE,OAAO,OACkF,MAAjB,EAAiB,KAAM,GJTqY,EIShY,GAExG,yBAUoB7sB,GAEoE,SADpF,iBAAgC,YAAc,EAAM,OAAc,YAAiB,EAAM,OACrF,YAAiB,EAAM,QAAiB,YAAmB,EAAM,KAAc,iCkDnKlD,EACmmL,WADnmL,EAAM,MAAN,EAAM,QAAN,aAAoB,EAApB,IAC2nL,WAD3nL,EAAM,MAAN,EAAM,QAAN,KlDsKjC,GkDtKiC,QAAoB,EAApB,GlDsKjC,EkDtKiC,EACspL,WADtpL,EAAM,MAAN,EAAM,QAAN,KlDsKjC,GkDtKiC,QAAoB,EAApB,GlDsKjC,EkDtKiC,EACirL,WADjrL,EAAM,MAAN,EAAM,QAAN,GlDsKuE,OAAxG,GkDtKiC,QAAoB,EAApB,GlDsKuE,CAAD,wBAGzB,OAA9E,OAAoB,WAAY,WAAe,WAAe,WAAe,mCAG1E,wBAAY,MAAZ,EAAY,KJhCs4C,EIgCv3C,IAAS,KAAS,IAA7C,EAAkD,0BAAkB,KAAlB,GAAyB,0BAAkB,KAAlB,GAAyB,aAAyB,WAArD,IAAqD,EAA5B,IAA4B,GAAzB,QAAoB,KAApB,EAAwB,yBAc/GA,GAAyF,OAAjE,iBAAyC,kBAAW,EAAM,MAAM,6BAC3D,OAAlB,WAAQ,UAAS,sBA/JlCo4C,OACN51B,EAAc,OAAQ,QAEtB,OADQ,EAAR,GACO,OAAgB,EAAQ,KACnC,wBAG2B,iBAAoE,sBAGtDitB,GACrC,WAAc,IAAI,EACtB,wBAE0E,OAApC,OAAQ,OAA2B,wBAjBzC,iBAA+D,sBAuBhE+I,GAA0E,OAA1B,EAAa,KAAY,sBAkEdA,kEAhEV,YAmNhF,CAnN+E,wBA8DtE,iBAAqE,sBAC1DlkC,WACf,IAAI,MAAL,GAA4B,KAA3B,QAAqB,EAArB,GAAD,KAAkC,IAAI,QAAuB,KAA3B,QAAqB,EAArB,WAAD,EAAjC,UAAmE,IAAI,QAAyB,KAA7B,QAAuB,EAAvB,WAAD,EAA+B,QAAD,sBApEtGA,qEA4JkBtU,GAA2F,OAAnE,iBAA2C,kBAAW,EAAM,MAAM,6BAC7D,OAAlB,WAAQ,UAAS,yBAe5BA,GAA6F,OAArE,iBAA6C,kBAAW,EAAM,MAAM,6BAC/D,OAAlB,WAAQ,UAAS,uBYhO+B,OAAjC,OAA4B,WAAI,sBACtEqX,GAGA,MADE,EACF,IAAqC,WAAK,EAAI,QAC9C,GAFE,aAEF,WH6yDQ,EAhyDpB,EAAO,MAgyDa,WAAhB,KAAKo6B,EAAW,MG7yDmD,WAAK,EAIg93D,EHyyDp/3D,CG3yDpC,wBEwJe,iBAAgC,4BAgB9BkH,OAAAA,EAAA,WAAM,kBAANC,kBAA4B,mCACvB,aAFlBthC,EAAgB,SAEE,QAAa,EAAb,EACc,YAEhC,OAA2B,MAAhB,WAAsB,OAAqB,EAAW,YAAmB,CACxF,wBAUK,gBWaLsf,EACAC,EACAub,EACA2B,EACA75C,EACA2+C,OAEAC,EAAc,GACV,IAA8B,EAAW,EAAW,EAAc,EAAQ,GAAkB,KA8BhG,OA5B0B,MAAtB,GACA,EAAQ,EACJ,GAA8B,EAAW,EAAoB,EAAc,EAAQ,IAEvF,EAAQ,EACJ,OACI,GACI,QAA4B,KAC5B,OACI,GACI,OACI,EAAqB,EADzB,EAEI,EACA,EACA,GACmB,OAKnC,QAIR,EAAQ,EACJ,GAA8B,EAAW,EAAW,EAAc,EAAQ,IAG3E,OACH,KACA,EAER,CX9DQ,CACgB,WACA,WACG,WACf,WAAM,MACN,WAAM,MACe,WACzB,wBAhKW,iBAAmC,4BAuBjCH,IADbrhC,EAAgB,QACHqhC,EAAA,WAAM,kBAANC,kBAA4B,mCACvB,YAElB,OAA2B,MAAhB,WAAsB,OAAqB,EAAW,YAAmB,CACxF,wBAGiG,OAA7F,GAA8B,WAAW,WAAW,WAAc,WAAM,MAAU,WAAM,MAAI,sBAwBtDG,EAAmBnuC,OACtC,EAAf,iBAAM,MAAS,IAAyB,EAAW,iBAAO,GAAQ,GAAY,iBAAM,MAArE,GAEd,OAF8F,MAAhF,EAAgF,KAC3F,oBlBSK,EkBTO,iBAAM,MAAlB,EACJ,sBA6Is3MmuC,EAAmBnuC,8GA3I7zM,OAA9C,WAA0C,KAAG,wBAtBpE,iBAAmC,wBA0BJ,OAA1C,OAAyB,SAAgB,wBAOxC,OAJD,OACI,GACI,OAAyB,WAAQ,aAAqB,UAAQ,WAAM,QAAM,aAC3E,KACP,wBA8FW,iBAA4C,wBAM2C,OAAlG,QAAkC+tC,EAAA,WAAM,kBAANC,kBAA4B,mCAAG,WAAW,WAAW,gBAArDD,GAA+D,wBASpG,OAPgD,OAC7C,GACI,OACI,GAAO,OAAqB,WAAW,WAAW,WAAM,MAAU,WAAM,UAGhF,KACJ,wBC1GS,iBAAmC,wBACnC,iBAA+B,wBAC/B,iBAA6B,wBAC7B,iBAAkC,wBArFI,OAAb,WAAS,YAAG,sBAERI,EAAmBnuC,SACrDouC,EAAe,WAAS,IAAI,GAC5B,OACiB,OAAb,GACI,WAAS,IAAI,EAAW,KACxB,QAEJ,KAAY,GAAY,KAChB,EANZ,CAQJ,sBAuGspUD,EAAmBnuC,iGArGrpUmuC,GAAoD,OAAvB,WAAS,IAAI,EAAS,wBA8E9D,iBAAkC,wBASlC,iBAA+B,wBAC/B,iBAA4B,wBAC5B,iBAAkC,6BA7ByC,MAAjD,aAAW,WAAI,sBAAoB,WAAY,GAAC,wBCyIlB,OAAf,UAAc,wBAER,OAAZ,UAAW,6BApOa,MAAjC,wBAAsB,WAAS,GAAC,yBAE/C/4C,GAAwF,OAAhE,iBAAoC,cAAa,EAAM,MAAQ,6BACxD,OAAV,GAAV,WAAmB,wBAEY,OAAlB,WAAU,KAAO,wBACU,OAArB,WAAU,KAAU,6BAMF,MAAjC,2BAAyB,WAAM,GAAC,yBAE/CA,GAAqF,OAA7D,iBAAuC,aAAU,EAAM,KAAK,6BACxD,OAAV,GAAP,WAAgB,gCNOkB,WMHlD,GNkQ2C,IAAV,QMlQpB,kBpB2Bb,KoBzBU,GAAc,GAAV,cAAO,IAAX,kBmCMuE,WAqlBlF,IAAQ,WAAtB,KAAc,IAAd,KAAK1E,EAAS,gBnCzXuhW,KAAI,GmC0XriW,InC3lB8F,GAAH,GmC2lB/D,CACxB,EClTkwP,EArF9qP,UAqFwrP,EAAG,UDmTnxP,QAHJ,EAAc,GAId,EAAO,EnCjkBuE,EA7B9D,EAAI,OAA0B,GAAO,OAA8B,emCOtC,WAwW1B,SAAL,GAAK,IAAnB,MAAc,IAAd,KAAKA,EAAS,MAAK,EAAL,QnC9IykG,KAAK,GmC+IxlG,InC/WkC,GAAH,GmC+W/B,CACI,EC5E6C,EAnFwB,UAmFd,kBD0E/D,GAAc,GAGd,EAAO,KnCjXgB,SAEP,eAJJ29C,EAAAA,EAMA,GNkQuC,GA3PvD,GA2PgE,EMjQ5C,GAA8B,GAA1B,KAAO,EAAO,OAAS,EAAvB,IAAqC,gBmCiV3C,KAtUjB,GAsUG,GAA+B,GAA/B,SAAK39C,EAAS,iBnCtHi1E,GmChNl2E,EnCgNu2E,GmCuHh2E,InCjVyE,GAAH,GmCiVtE,OCxEY,EAAQ,IDyEhB,EAxUX,ECoM+F,UA2D/E,EA3DqG,kBDkInF,GAA/B,GAGA,EAAO,GnC7TuE,EAtB1D,EAAI,OAAkC,WmCwjB5C,KA3iBkB,GA2iBhC,GAA+B,GAA/B,SAAKA,EAAS,iBnC9VoxU,GmC7MlwU,EnC6MuwU,GmC+VnyU,InCxjBsG,GAAH,GmCwjBtE,OCtRi/N,EAAQ,IDuRlhO,EA7iBwB,EC8L6C,UAAU,UDgXnF,QAH2B,GAA/B,GAKA,EAhjBgC,EnCS8C,EArB1D,EAAI,OAA0B,GAAO,OAA8B,KACvE,MAoB8D,EAnB1D,EAAI,OAA2B,MpBiC5C,EqB7BoC,KDE1C,OArB2C,SAoB3B,KACjB,wBAE0F,OAAxC,OAAiC,WAAM,6BAcvB,MAA/B,yBAAuB,WAAM,GAAC,yBAE7C0E,GACiF,SAAjG,iBAAqC,cAAU,EAAM,SAAU,aAAgB,EAAM,KAAW,6BAErB,OAAhD,MAAY,GAAP,aAAiC,GAAb,YAAuB,CAAD,wBAmBpE,OAAR,GAjB0C,GACxC,QACiB,GACT,QAHZ,EAImC,cAAEvD,EAAOsJ,WACV,qBAAd,KAAK+F,EAAS,MACVotC,GAAoD,IAAlC,EAAM,MAAW,IAAO,GAE1C,EAAM,MAAW,IAAyB,IAAO,IAAc,GACnE,CACJ,YACe,WACI,YAAW,KAAK,QAG3C,MACD,WAAO,aAhBd,CAiBS,wBAeL,OAAO,OAZW,WAAO,OAD7B,EAeQ,gBAAAC,mBAfRC,EAE2B38C,OACnB48C,GAAkB,EACJ,4BAAd,KAAKC,EAAS,MAEN,IAAkC,IAAlC,EAAM,MAAW,IAAO,GAClB,IAAN,EAAM,IAAO,GAAU,WACf,OAAO,EAF2B,GAAc,CAIhE,CACA,OAAO,CACX,MAGuB,yCACnB,gBAhBR,GAkBA,sBAmF6BxtC,OACjBytC,EAAc,EAAM,MbrKhC,GA4GqhH,MAAX,EA5G9/G,KACRj/C,EasKa,cAAa,EAAM,MAAK,oCbrKrC,MAAM,GAAiC,GAAR,GACnC,CasKY,OAAO,OAAoB,EAAM,MAAU,EAC/C,6BA7DsD,MAA3B,YAAU,WAAM,KAAG,WAAM,GAAC,yBAMzC0F,GACuE,SAAvF,iBAAuC,aAAU,EAAM,QAAU,cAAU,EAAM,MAAK,6BAEjB,OAA1C,MAAY,GAAP,aAA2B,GAAP,YAAiB,CAAD,8BAExE,IACiB,OAET,WAAO,QAEgC,IAAnC,GAA2B,YAAQ,MAiB9C,SAfmB,WAAO,KACP,KAEA,GACI,QAXxB,EAWkD,cAAA21C,WACR,qBAAd,KAAK7pC,EAAS,MACV,EAyCxB,MAAS,IAzCmC,EAApB,EAyCkB,MAxCtB,CACJ,cAfoB,SAE3B,GACF,GAiBL,GAhBF,GACuC,GACnC,SAYI,WAIhB,gCAGIwL,EAAgB,WAAO,QPgDgB,aAwyC9B,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,KAAK83B,EAAQ,QO/3CmC,OAqDkk2C,EArD9i2C,MAAc,GAqDgi2C,EArDhi2C,QPg4C9E,EAAY,EAAI,EAAe,OSvjDnCsE,EF8JgB8F,IANZC,GExJJ/F,ETwjDO,GStjDI,OACQ,IAAnB,EAAW,IAAwB,GAAX,GAChB,OAAqB,GFqJlB,GAAI,aAAJ,KACH,OAAiC,uBAIzB,IAAA8F,EAAA,cAAAE,kBAAc,0BAAK,OAAiC,eAF5D,OACI,GACI,GACA,SAAe,MAN3B,QAUJ,6BArEiE,MAA9B,uBAAqB,WAAO,GAAC,yBAE5C15C,GAC4F,SAA5G,iBAAkD,cAAc,EAAM,SAAc,cAAW,EAAM,MAAM,6BAEjC,OAA/C,MAAgB,GAAX,aAAgC,GAAR,YAAkB,CAAD,8BAEJ,OpBlE1D,KoBK+D,EA8D1E,EAAI,WAAW,eACA,wBAAf,KAAKqX,EAAU,MA/D2D,EAgEtE,EAAI,EAAO,MACf,CACF,OAL0C,SpB/CrC,EqB7BoC,KDiF1C,wBAEuE,OAAtB,WAAW,KAAU,6BAoFuB,MAA3D,+BAAsC,GAAR,WAAsB,MAAK,GAAC,yBAEzErX,GAA2F,OAAnE,iBAA2C,cAAW,EAAM,MAAM,6BAE7D,OAAV,GAAR,WAAiB,kCP6DM,aA8uCzC,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,OAAa,MOh3CgD,MPi3CzD,EAAY,EAAI,EAAe,COj3C6C,OAAR,GPk3CjE,EOl3CwE,kCPiE3E,aAwuCS,GAAa,KAAwB,KAuErC,EAvEN,EAuEM,WAAb,OAAa,MO72CyB,MP82ClC,EAAY,EAAI,EAAe,KO92C/B6zC,EP+2CG,EO92CH,OAA8B,IAAnB,EAAW,IACP,GAAX,GAEA,OAAsB,EAE9B,sBEzNkBp3C,GAAmD,OAA9B,cAAO,GAAU,WAAY,sBAPlDA,GAA4B,OAAJ,CAAG,sBAJpCA,iEAiBSA,kBTAU,WAoqD5B,GAAI,UAAsB,OAAW,GAAO,MAA5C,SACgB,eAAM,IAAN,MSrqD2C,IAAK,GTqqD1C,CAAyB,GAAO,UACtD,GAAO,GStqDiE,OAAtB,CAAqB,sBG+FlDk9C,EAAmBvF,SACpC,GAAa,MAAb,YAAqB,EAAM,OAAS,aAAoC,OAAa,iBACrF,GAAa,MAAb,YAAqB,EAAM,OAAS,aAAoC,OAAc,qBACxEwF,EAAsB,GAAN,KAC1B,QAA+B,OAAc,GAC9B,GAAP,WAA6B,EAAS,OAAgB,EAAW,EAAM,SAEtF,QAAD,sBAzBqBD,EAAmBvF,GAIvC,OAJqF,IAAS,WAC3F,KAEuB,OAAc,WACzC,sBA1FK,iBAAe,wBAiBoC,MAArB,uBAAqB,wBAGc,MAAnC,oBAAkB,WAAS,SAAO,wBAGE,MAApC,qBAAmB,WAAS,SAAO,wBAGd,MAArB,aAAW,WAAQ,GAAC,wBAGqC,MAAzD,8CAAyD,GAAb,YAAW,GAAC,sBAoBtEuF,EAAmBvF,SACpC,GAAa,MAAb,YAAqB,EAAM,OAAS,aAAoC,OAAc,iBACtF,GAAa,MAAb,YAAqB,EAAM,OAAS,aAAoC,OAAa,qBACvEl1C,EAAmB,GAAN,KACvB,UACe,GAAP,WAA6B,EAAa,WAAJ,GAAuB,EAAY,GAExF,QAAD,sBC5DW26C,GAA4D,OAApB,CAAmB,sBACxD1vB,EAAe7vB,GACqB,OAA9B,OAAW,EAAU,EAAQ,qBCHrBqE,EAAMC,mDAAND,EAAMC,yDAXtC,sHAAAoB,mBAAA,EAAAA,GAAA,6HAwC2E,OAArD,GAAX,WAAyB,MAAK,IAAc,GAAX,WAAyB,KAAI,GAAC,qBE7BvErB,EACEC,mDADFD,EACEC,4CAmLoB+6C,EAAiBvF,EAAqBE,SAA3D,EAAsC+C,EAAqBC,EAEvDwC,EA+NmBpK,EACvBE,EACAnzC,EACA0tB,EACA4vB,EAEAC,EAJAC,EAFuB,EAMvBC,EAtOItD,EAAW,WACXt7C,EAAY,OACZ6+C,EAAsB,YACT,MAAe,GAAN,IAAc,CAC5B,EAAK,QAAY,EAAY,cACZ,IAAK,MAAL,WAArB,KAAqB,QAAfhlC,EAAe,EAAf,KAAKohC,EAAU,EAAV,KACP,GAAU,GAAN,EAAiB,EAAK,MAAQ,CAC9B,EAAO,EACP,UAAS,EAAI,OAAb,EACA,UACJ,CACJ,CACA,OACJ,CACO,GAAiB,MAAb,EAAJ,OfmN+G,GAAlC,GA5LhC,EAAgB,EAAY,Ie2L7D7G,EAjNf,WAkNRE,EAlNqC,EAmNrCnzC,EAnNoD,EAoNpD0tB,EApNsF,EAqNtF4vB,EArNkG,IAwNlE,QADhCG,EAAuB,MAAyB,EAAU,IAE1C,MAAG,KAEH,IAAM,GAJtBF,EAIgC,EARhCC,EAQgC,EAVT,EAUS,aACxB,MAAC,4CAA0C,EAAgB,UAAQ,EAAK,eAAa,QAAI,GAC7F,aA3NgB,IAAM,GAlB1B,EAkBsC,KAlBA5C,EAkBA,EAlBqBC,EAkBrB,EAhBlCwC,EAgBkC,mBfuB+B,IAAgB,IAAY,OAyLyB,GAAlC,KAAY,EAAY,IehNxE,MAAC,YAAU,QAAe,YAAiB,CAA+B,IAH9G,QAKJ,sBAxIqBH,EAAiBvF,EAAqBE,GACvD,IAAI,EAAa,WAAb,GAA+B,GAAN,GACzB,SAAmB,IAAM,GAFjC,EAE6C,gBAAE,MAAC,yCAAuC,KAAiB,YAFxG,EAGI8F,EAAkB,QACX,EAAa,KAAb,GAAiC,GAAN,IAAgD,GAAhC,KAAM,EAAa,KAAnB,KAC5C,UAAF,EAAE,OAEN,GAAI,KAAc,WACd,SAAmB,IAAM,WAL7BC,EAHJ,qBASY,MAAC,cAAY,KAAW,uCAAqC,KACjE,EAFqC,cAGzC/+C,EAAY,EACQ,MAAV,WAAU,QAApB,MAAU,IAAV,KAAKoX,EAAK,MAAU,EAAV,MACO,gBAAU,GAAG,IAA1BrT,EAAa,QAAkD,GAA1B,KAAc,WAAd,GAAxB,IACbi7C,EfwUkH,GAAlC,GAvT1E,EAAgB,EAAO,EAAQ,MehBrC/9C,EAAY,cAAU,GAAG,IAAQ,EAAS,GAC1C,GAAa,MAAT,EAAe,OACU,EAAzB,SAAmB,MAAa,eAGpC,CACA,IAAS,EAAT,QATJ,GAAU,GAWV,OAAmB,MAAG,EAC1B,6BAEiD,OAAf,QAAc,sBAhF3Bo9C,EAAiBvF,EAAqBE,GACvD,IAAI,EAAa,WAAO,OAApB,GAAmC,GAAN,GAC7B,SAAmB,IAAM,GAFjC,EAE6C,gBAAE,MAAC,0CAAwC,QAAM,GAAG,QAFjG,EAGqB,SAAP,YAAO,IAAjB,MAAU,IAAV,KAAK5hC,EAAK,EACN,GADM,IAAO,EAAP,EACF,KAAM,EAAa,EAAnB,KAAyB,cAAO,GAAI,SAAmB,IAAM,EAAY,sBADjF,GAAU,GAKV,OAAmB,MAAG,EAAa,WAAO,OAAvB,EACvB,6BAG6C,MAAV,IAAE,WAAM,GAAC,sBA4EvBinC,EAAiBvF,EAAqBE,GACvD,GAAI,GAAoB,GAAN,GACd,OAAmB,MAAG,OAF9B,EAGIiG,EAAAryB,EAAW,KAAM,GACjB,OAAI,IAAQ,QACR,WAAiB,GAAS,GACP,MAAG,EAAa,EAAhB,IAEnB,IAAQ,QAAO,YACf,WAAiB,GAAS,GACP,MAAG,EAAa,EAAhB,MAEJ,IAAM,GAZ7B,EAYyC,KATrCqyB,EASqC,aAAE,MAAC,YAAU,QAAe,YAA1B,GAAoC,EAAM,GACrF,6BAEiD,OAAf,UAAc,sBAS3BZ,EAAiBvF,EAAqBE,GAEvD,OADA,WAAU,GACS,MAAG,EAC1B,sBEgF8BkG,GAI7B,OAHG,IAAa,WAAU,WACvB,EAAY,WAAU,cAAiB,KAAc,EAAY,WAA1B,IAC/B,WAAiB,KAAc,WAAS,EAAvB,GADzB,CAEJ,sBAEuBx6C,SDiGV,aAAQ,EAAM,QA/QpB,KAAO,IAAI,EAAG,GCiLhB,OAD2C,GAAxC,SAA0B,GAAwB,EAAM,IAA0B,GACtF,oBApLwBA,mEAsLRA,GAAyE,OAAjD,iBAAgD,IAApB,SAAU,EAAU,mC/BtEyvmB,K+ByEj1mBy6C,EAAkB,KAAc,YAInC,OAhKwC,EA6JrC,GAAO,WAAiB,EAAxB,GA7JqC,EA8JrC,GAAO,QA9J8B,EA+JrC,GAAiE,IAAzD,GAAe,WAAiB,EAAhC,GAA8C,cAAyB,M/BtJ5E,EyD4bqC,U1BrS5C,6BAGI,MAAM,GAA+B,2DACzC,wBExNS,iBACqE,sBAErDC,GACgB,OAA7B,SAAM,EAAQ,MAAc,wBCJ/B,iBACuE,sBAEvDA,GACkB,OAA7B,SAAM,EAAQ,MAAc,wBCJjC,iBAC2E,sBAE3DA,GACsB,OAA7B,SAAM,EAAQ,MAAc,wBCJrC,iBACuE,sBAEvDA,GACkB,OAA7B,SAAM,EAAQ,MAAc,wBCuCjC,iBAA+G,sBAE/FA,GACrB,OAAiB,SAAM,EAAQ,MACnC,wBAhDS,iBAA8G,sBAE9FA,GAAiE,OAA1B,SAAG,EAAQ,MAAc,wBAehF,iBAAyH,sBAEzGA,OACrBhsC,EAAoB,SAAG,EAAQ,OAC/B,GAAI,aAAJ,GACI,OAAO,EAEP,MAAM,GAAwB,wBAAsB,EAAI,mDAEhE,wBEmBkD,OAAtC,OAAQ,GAAQ,YAAY,UAAS,sBAELisC,SAAoC,UcU1C,OAApB,EA6FiC,GAAU,GAAN,MA5F3B,OAApB,EAmI2C,GAAU,GAAN,MAnIV,OAoEQ,KAAY,GAAN,Md9EnD,WAAqD,iDAChDz2C,EAAAA,EACL,IAAO,GAAF,GAA6B,MAAM,IACpC,KAAoB,aAApB,EAAuB,WAAS,WACvC,QAAD,sBAGwBkwC,EAAqB/8B,SAAuD,MAEhG,EAAO,IAAM,GAAO,kCAEpB,MAAM,GAAyB,oCAAkC,EAAK,IADjEnT,WAER,QAAD,sBALwBkwC,EAAqB/8B,EAAAA,uCA0IsvP,uEAhIhwPujC,EAAoBC,SAAuC,UmByBtD,GAAd,MAsL9BC,EAtLA,EAsLQ,GAAO,GAtLf,EAuLI,GAAS,GAAT,GAAiB,aAAjB,IAAsB,KAAI,GAAJ,OAvL1B,KAuL6C,cnB5MrCr4C,EAAW,GAAQ,EmB6MpB,KAtLE,GADX,MAmMEjF,EApM6E,EAoMrE,GAAO,GnBxNPmF,EmByND,KAAK,KAAa,KAAM,GAAP,GAAmB,KAAM,EAAD,OAAzB,GAAkC,MnBzNU,OAC3D,OAAgB,GAAU,cAAc,EAAK,KAAY,kDACpDuB,EAAAA,EACL,KAAO,GAAF,IAA+B,iBAA2B,MAAM,IACjE,KAAe,aAAf,EAAkB,WAAS,WAClC,QAAD,sBAEmC02C,EAAoBC,SAAsC,MACzF,OAAgB,GAAU,cAAc,EAAa,KAAY,kDAC5D32C,EAAAA,EACL,IAAO,GAAF,GAA6B,MAAM,IACpC,KAAe,aAAf,EAAkB,WAAS,WAClC,QAAD,wBA9EoC,OAAR,GAApB,WAAM,cAAqB,wBAEP,OAAP,GAAb,WAAM,OAAa,8BceQ,aAAe,OAyGD,KAAY,GAAN,MAxGnD,WAAsB,Odb+C,OcqEzB,KAAW,GAAN,GdrEmB,sBAmB3ClE,OAC7BqoB,EAAW,GAAW,QAAQ,EAAM,MAAO,KAAK,kBoBHhD,EAAK,YA8FoC,sBA9FhB,EAAK,SAqCe,WpBjC7C,OAAO,KAAqC,EAChD,sBAE8CroB,GAAwD,OAAjC,KAAK,MAAM,UAAU,EAAM,MAAK,oBAtB7FA,mEAwBYA,GAC4F,OAAvG,OAAS,GAAW,kBAAqB,KAAK,QAAU,EAAM,OAAS,KAAK,MAAM,OAAO,EAAM,OAAO,6BAEhE,OAAhB,WAAM,UAAS,6BAEW,OAAhB,WAAM,UAAS,sBG3ChDo0C,EACA/8B,SACW,GAAI,IAAmB,WAAvB,OACX,M1CQP,O0CPmB,GAAY,MAAY,GAAN,yCACrBnT,EAAAA,EACL,GAAM,GAAF,GAAkC,MAAM,GAAwB,GACpE,MAAM,qBAGV,EAAO,IAAM,GAChB,QAAD,sBAXIkwC,EACA/8B,EAAAA,mBkBmewC,WlBzZ7C,mEA3CkE,OAAR,IAAO,wBAepB,OAAZ,WAAM,MAAK,wBACc,OAAlB,WAAM,YAAW,wBAEA,OAAlB,WAAM,YAAW,wBACmB,OAAb,GAAlB,WAAM,YAAwB,yBAGzDrX,GAC8F,OAAzG,OAAS,GAAW,kBAAuB,KAAK,QAAU,EAAM,OAAS,KAAK,MAAM,OAAO,EAAM,OAAO,6BAElE,OAAhB,WAAM,UAAS,6BAEW,OAAhB,WAAM,UAAS,sBAE1BA,GAA0D,OAAjC,KAAK,MAAM,UAAU,EAAM,MAAK,oBA/C9BA,kEAiDQ,OAAP,GAAnB,WAAM,aAAmB,sBCzBpCo0C,EAAqB/8B,SACzC,GAAI,SAAmB,MAAvB,OACI,M3C+BkD,O2C9BtC,GAAgB,MAAY,GAAN,yCACzBnT,EAAAA,EACL,GAAM,GAAF,GAAkC,MAAM,GAAwB,GACpE,MAAM,qBAGV,EAAO,IAAM,GAChB,QAAD,sBAVoBkwC,EAAqB/8B,EAAAA,mBkB0VU,KAAH,MlB9TkqF,mEAtD1qF,OAAZ,WAAM,MAAK,wBACc,OAAlB,WAAM,YAAW,wBACE,OER1B,GFQG,WAAM,QERE,QFQc,wBACD,OAAlB,WAAM,YAAW,wBACmB,OAAb,GAAlB,WAAM,YAAwB,wBACnB,OAAjB,WAAM,WAAU,wBAET,OAAZ,WAAM,MAAK,wBACK,OAAd,WAAM,QAAO,wBACC,OAAd,WAAM,QAAO,wBACW,OAAP,GAAb,WAAM,OAAa,yBAMzCrX,GACkG,OAA7G,OAAS,GAAW,kBAA2B,KAAK,QAAU,EAAM,OAAS,KAAK,MAAM,OAAO,EAAM,OAAO,6BAEtE,OAAhB,WAAM,UAAS,6BAEW,OAAhB,WAAM,UAAS,sBAE1BA,GAA8D,OAAjC,KAAK,MAAM,UAAU,EAAM,MAAK,oBA5B/BA,gECqBhCo0C,EAAqB/8B,SACzC,GAAI,IAAmB,SAAvB,OACI,M5CkBd,O4CjB0B,GAAY,MAAY,GAAN,yCACrBnT,EAAAA,EACL,GAAM,GAAF,GAAkC,MAAM,GAAwB,GACpE,MAAM,qBAGV,EAAO,IAAM,GAChB,QAAD,sBAVoBkwC,EAAqB/8B,EAAAA,mBkByVD,SlB3S6mB,mEAHxlB,OAAR,IAAO,wBAzDN,OAArB,WAAM,eAAc,yBAIzCrX,GAC0F,OAAzG,OAAS,GAAW,kBAAuB,KAAK,QAAU,EAAM,OAAS,KAAK,MAAM,OAAO,EAAM,OAAO,6BAE9D,OAAhB,WAAM,UAAS,6BAEW,OAAhB,WAAM,UAAS,sBAE1BA,GAA0D,OAAjC,KAAK,MAAM,UAAU,EAAM,MAAK,oBAZ/BA,kEEDiC,OAAhC,KAAO,GAAS,gBAAe,sBAG/DoO,SAA4B,MAC7C,KAAe,GAAS,GAAG,wCACtBlK,EAAAA,EACL,GAAM,GAAF,GAA6B,MAAM,GAAyB,GAChE,MAAM,UACT,QAAD,yBAhBuBlE,GACsF,OAA5G,OAAS,GAAW,kBAAsB,KAAK,QAAW,EAAM,OAAU,KAAK,MAAO,OAAO,EAAM,OAAQ,6BAEhE,OAAjB,WAAO,UAAS,6BAEW,OAAjB,WAAO,UAAS,sBEC7Bo0C,EAAqB/8B,GAK5C,OAJG,IAAmB,SAAO,GAAgB,EAAO,MACjD,IAAmB,SAAa,GAAgB,EAAO,MACvD,IAAmB,SAAe,GAAgB,EAAO,MACjD,EAAO,IAAM,EACzB,sBALwB+8B,EAAqB/8B,EAAAA,mBD0MI,SC9J/B,mEA5BiD,OAAV,IAAS,wBACa,OAAhB,IAAe,wBACI,OAAjB,IAAgB,wBA5BhB,OAAzB,WAAW,cAAa,6BAEhB,OAArB,WAAW,UAAS,yBACxBrX,GACiF,OAAxG,kBAAuB,KAAK,QAAe,EAAM,OAAc,KAAK,MAAW,OAAO,EAAM,OAAW,6BAC7C,OAArB,WAAW,UAAS,iK/CoZtCwxC,GACuD,OAA1E,SAA0B,OAAqB,OAAmB,IAAO,kDAGtDA,GACuD,OAA1E,SAA0B,OAAqB,OAAmB,IAAO,wOG3YzDn6B,SAEnB,OAF8D,aAC3D,KAAsB,SAA4B,EAAO,aAC5D,CAAD,scFLQ5a,GACA,SAAoB,MAAP,EAAO,KAAP,EAAO,IAA0B,GAClD,4BAHQ,aAA0C,OAA9B,MAAZ,EAAY,KAAM,OFLT,EEK6B,EAAG,0TiBRnCs8C,OACd,WAAO,GAAP,WAAqB,MAAM,GAAuB,SAAO,WAAI,eAAa,OAA1E,CAAyE,aqBwwBvC,0BACE,sEzBjxBP,MA2BQ,wBA9BH,QAIN,MAFD,qK6C+QxBrJ,EAAiBxY,EAAW0J,EAAatK,EAAiByb,GACa,gBADhB,aAAqB,ajBhRzD1tB,EAAWitB,EAAkBrY,EAAiB/B,EAAW0J,EAAatK,EAAayb,mBAAnF1tB,EAAWitB,EAAkBrY,EAAiB/B,EAAW0J,EAAatK,EAAayb,EAAAA,kBAoEovM,aAA6B,IAnEj3M,MACO,GAAgB,GAAG,EAAM,EAAa,EAAY,EAAM,EAAQ,EAAQ,uCAC3E7tC,EAAAA,EACL,GAAM,GAAF,GAA6B,MAAM,GAAyB,GAChE,MAAM,iBAJV,0CiBgRR,CAAc,QAAM,QAAa,QAAY,EAAM,EAAQ,EAAQ,EAAU,8BnDtOtEwrC,GAAqC,OAAX,OAAU,EAAC,CAAD,8BsDsKpCA,EAAiBqL,GACG,OAAd,GAAT,EAAkB,EAAI,mBjB7IZrL,EAAwBqL,GAC2B,O9C6B/D,OAN0C,EAAK,MACnD,OACC,EAAS,OAAQ,Y8CzBgD,mBAvBlDrL,EAAwBqL,SAAqC,M9CoB9E,O8CnBW,GAAgB,UAAU,EAAK,MAAO,EAAS,4CAClD72C,EAAAA,EACL,GAAM,GAAF,GAA6B,MAAM,GAA4B,GACnE,MAAM,UACT,QAAD,2+BkBtDQ,eAAA82C,QAGI,EAAQ,IAAZ,oCADgD,aACsB,uBAAtE,SAGI,EAAQ,KAAZ,oCADgD,aACsB,uBAAtE,SAGI,EAAQ,KAAZ,oCADgD,aACsB,uBAAtE,SAGI,EAAQ,IAAZ,oCAD0D,aAEzD,iCADD,SAII,EAAQ,KAAZ,oCAD8C,aACsB,qBAApE,SAGI,EAAQ,KAAZ,oCADsC,aACsB,aAA5D,EArBN,sDCLyC,eAL3C,aCKoBC,GAAgCC,GAAA,WAAhC,aAEsB,gBACE,eAH5C,aCEyBD,GAAiCC,GAAA,WAAjC,YAAzB,aCC+BD,GAAiCC,GAAA,WAAjC,aACC,eAAAC,CADhC,aCCuBF,GAAgCC,GAAA,WAAhC,mBrEGU,MAAiB,cAUjB,MAAiB,MAAY,IAAM,IAAQ,GAC5E,IACO,KqE0BN,EAlCe,SAkCf,EAjCe,KAAkB,GAiCjC,EApCO,IrEmEG,SA7CT,MAAiB,MAChB,IAAM,IAAQ,GAAM,IAAU,OqEahC,ErEXI,MqEWJ,EAxBmB,IAAgB,IAAAE,EAAM,EAAI,EAAI,EAAI,KAwBrD,EAvBmB,MAAe,EAuBlC,EArBe,SAqBf,EApBe,KAAkB,GAoBjC,EA3BO,IrE0DG,SAvBgF,MACzF,MACS,IAAM,IAAQ,GAAM,IAAU,KqEVxC,EAZe,SAYf,EAXe,KAAkB,SCwHQ,QArF1C,IDxBC,EAVe,IAAe,GAU9B,EAdO,IrE6CG,SART,MAAiB,MAAY,IAAM,IAAQ,GAAM,IAAU,KqEvB5D,EAHe,SAGf,EAFe,KAAkB,GAEjC,EALO,IrEoCG,GqE/BV,EAIO,IACI,IAAAC,EAAiB,MAAY,IAAO,IAAO,KAAQ,IAAU,YrEsCrB,MAE9C,MACJ,IAAM,IACR,KAGC,IAAU,OqElDV,ErEkD4C,MqElD5C,EAamB,IAAgB,IAAAD,EAAM,EAAI,EAAI,EAAI,KAbrD,EAcmB,OAAkB,EAdrC,EAgBe,KAAY,GAhB3B,EAUO,IrEqBG,GqEtEyC,WrEsEzC,CqExEX,aEN0BH,GAAiCC,GAAA,WAAjC,aACF,eAAAI,CADxB,aCUqBL,GAAgCC,GAAA,WAAhC,mBxEEuD,MAGtE,YAQW,MACb,MAAY,SAAS,QAAU,GAAO,mBwE+BhC,EAtCM,SAsCN,EAxCF,IxE+DG,SA7CC,MAAe,MAChB,WAAW,UAAY,GAAO,6BwEqB/B,EA9BM,eA8BN,ExEbR,MwEaQ,EA5BU,IAAY,IAAAE,EAAM,EAAI,EAAI,EAAI,IA4BxC,EA3BU,IAAe,IAAAA,EAAM,EAAI,EAAI,EAAI,IA2B3C,EA1BU,MAAe,EA0BzB,EAhCF,IxEuDG,SA7B6C,MAEhD,MACP,SAGE,UAAY,GAAO,oBwEAZ,EAlBM,SAkBN,ExEEM,MwEnBmB,IAAoB,SAiB7C,EApBF,IxE2CG,SAlBW,MAAe,MAAY,WAAW,UACtD,GAAO,yBwENH,EAVM,SAUN,ExEaF,MwEtB2B,IAAoB,SAS7C,EAZF,IxEmCG,SAR6E,MAAe,MAAY,WAAW,UAAY,GAC1I,cwEhBU,EAFM,SAEN,ExEmBD,MwEpB0B,IAAO,EAAM,QAAN,IAA+B,KAC/D,EAJF,IxE2BG,SAIoF,MAExF,MAAY,OAAO,UAAY,GAAO,iBwE7BnC,EAMM,SANN,EAOM,UAPN,EAIF,IxEmBG,GwElEuC,WxEkEvC,CwEpEX,aCJyBH,GAAiCC,GAAA,WAAjC,YAAzB,aCN4BD,GAAiCC,GAAA,WAAjC,aAEJ,eAAAK,CAFxB,aCMoBN,GAAiCC,GAAA,WAAjC,mB3EGQ,MAAiB,S2EoDW,EAlDhD,IACI,IAAAM,EACIC,EACa,OAAY,IAAO,IAAO,KAC1B,MAAY,IAAO,IAAO,KAC1B,MAAY,IAAO,GAAM,e3Eab,MAAsB,EAE9B,OAAY,IAAM,IAAQ,GAAmC,MAAY,IAAM,IAAQ,GAEhH,MAAY,IAAM,GACrB,M2E2BmD,EA/BxC,SA+BwC,EA9BxC,KAAkB,GA8BsB,EAvChD,I3EwDG,SA/BU,MAAsB,EAEhC,OAAY,IAAM,IAAQ,KAE5B,MAET,IAEC,IAAQ,KAAmC,MAAY,IAAM,GAAO,Q2EMb,EAhBxC,KAAY,GAgB4B,EAxBhD,I3EyCG,SAVX,MAAsB,EAAqC,OAAY,IAAM,IAAQ,KAEpE,MAAY,GAAK,IAAQ,KAAmC,MAAY,IAAM,GAAO,U2ET9C,E3EW1C,M2EX0C,EADpC,OAAkB,EACkB,EAApC,IAAgB,IAAAL,EAAM,EAAI,EAAI,EAAI,KAAE,EACpC,MAAe,EADqB,EAGxC,KAAY,GAH4B,EAVhD,I3E2BG,G2EtEsC,W3EsEtC,C2ExEX,aCAyBH,GAAiCC,GAAA,WAAjC,mB5EG4B,MAAiB,gBAUJ,QAEpC,MAAY,QAAQ,QAAU,GAAM,MAClE,EACA,EAAI,EAAI,GAAK,I4EwBU,EAhCP,SAgCO,EApCf,I5EmEG,SA3CL,MACI,MAAY,OAAQ,MAAQ,Q4EWf,I5ELR,MAAqC,aAAuB,Q4EKpD,EAtBH,MAAa,IADjB,Q5EsDL,E4E/BY,EAzBf,I5EwDG,SArBT,MAAmB,MAAY,MAAQ,QAAU,I4EV5B,EAZP,eAYO,I5EYG,MACA,aAAuB,Q4Eb1B,EAVH,IAAqB,SAUlB,EATH,MAAa,EAFjB,Q5E0CL,E4E/BY,EAPP,IAAe,kBAOR,EAdf,I5E6CG,SAIS,MAAmB,MAAY,MAAQ,OAAS,I4EnC7C,EAGP,eAHO,I5EqCiE,MAA4B,aAAuB,Q4ErCpH,EAKH,IAAqB,SADzB,Q5E2BL,E4E/BY,EACf,I5E8BG,G4EtE2C,W5EsE3C,C4ExEX,aCAuBD,GAAiCC,GAAA,WAAjC,mB7EGW,MAAiB,Y6EgD9B,EA9Cb,IACI,IAAAQ,EACID,EACa,OAAY,IAAO,IAAO,KAC1B,MAAY,IAAO,IAAO,KAC1B,MAAY,IAAO,IAAO,KAC1B,MAAY,IAAO,IAAO,KAC1B,MAAY,IAAO,IAAO,e7EasE,MAE1H,EACS,OAAY,IAAM,IAAQ,GAE3B,MAAY,IAAM,IAAQ,GAE5B,MAET,IAEC,IAAQ,GAAmC,MAAY,IAAM,GAAO,GAElE,MAAY,IAAM,GAAO,M6EaP,EAvBL,SAuBK,EAtBL,KAAkB,GAsBb,EAjCb,I7EsDG,SArB2B,MAAyB,EAAqC,OAAY,IAAM,IAAQ,KAE/G,MAAY,IACtB,IAAQ,KAAqC,MAAY,IAC5D,IAAQ,KACsB,MAAY,IAAM,IACjD,KAIA,MACQ,IAAM,IAAQ,Q6EXF,EANL,KAAY,GAMP,EAhBb,I7EqCG,SAAL,MAIE,EAAqC,OAAY,IAAM,IAAQ,KAElE,MAAY,IAAM,IAAQ,KAAqC,MAAY,IAAM,IAAQ,KAAqC,MAAY,IAE9I,GAAO,KACS,MACR,IAAM,GAAO,U6E/BD,E7EiCL,M6EjCK,EAWD,OAAkB,EAXjB,EAYD,IAAgB,IAAAL,EAAM,EAAI,EAAI,EAAI,KAZjC,EAaD,MAAe,EAbd,EAeL,KAAY,GAfP,EAAb,I7EqBG,SA4BV,M6EjDoB,EAsBL,IACIK,EACa,OAAY,GAAM,IAAO,KACzB,MAAY,GAAM,IAAO,KACzB,MAAY,IAAO,IAAO,KAC1B,MAAY,GAAM,IAAO,KACzB,MAAY,GAAM,IAAO,QA5BrC,EA+BL,IACIA,EACa,OAAY,KAAM,IAAO,KACzB,MAAY,GAAM,IAAO,KACzB,MAAY,KAAM,IAAO,KACzB,MAAY,GAAM,IAAO,QApCrC,EAoBb,I7ECG,SA4DkB,Q6EjFR,E7EiF0C,M6EjF1C,EA+CD,OAAkB,EA/CjB,EAgDD,IAAgB,IAAAL,EAAM,EAAI,EAAI,EAAI,KAhDjC,EAiDD,MAAe,EAjDd,EAmDL,IACIK,EACa,OAAY,GAAM,IAAO,KACzB,MAAY,GAAM,IAAO,KACzB,MAAY,IAAO,IAAO,KAC1B,MAAY,GAAM,GAAM,KACxB,MAAY,GAAM,GAAM,QAzDpC,EA4DL,IACIA,EACa,OAAY,KAAM,IAAO,KACzB,MAAY,GAAM,IAAO,KACzB,MAAY,KAAM,IAAO,KACzB,MAAY,GAAM,GAAM,QAjEpC,EAoEL,KAAY,GApEP,EA4Cb,I7EvBG,G6EtEyC,W7EsEzC,C6ExEX,aCGgCR,GAAiCC,GAAA,WAAjC,mB9EG8B,MAAiB,mBAM/E,I8EwCuB,EA7C6B,MAAe,MAA3DS,E9EiEG,IA/CwG,MAAsB,EAE9G,OAChB,IAAM,IAAQ,KACZ,MACH,IAAM,IAAQ,KACtB,MACM,GAAK,IAEb,Q8EkBuB,E9EhBiC,MAAW,IAAK,G8EdpD,MAAiC,QAAyB,GAAoB,MA8B3E,EAvCf,I9E2DG,SA7B4C,MAEzC,EAIW,OAAY,IAAM,GAAO,KAAmC,MAAY,IAAM,IAErG,KAAmC,MAAY,GAAK,GAAO,Q8ECtC,E9EDmG,MAAW,IAAK,G8EdtH,MAAiC,QAAyB,GAAoB,MAe3E,EAxBf,I9E4CG,SAVkF,MAEjF,EAAqC,OAAY,IAAM,GAAO,GAAmC,MAAY,IAAM,IAAQ,GAElH,MAChB,GAAK,GAAO,M8EfM,E9EiBhB,MAAW,IAAK,G8EjBH,MAAiC,QAAyB,GAAoB,MAA3E,EAEP,SAFO,EAGP,KAAkB,GAHX,EATf,I9E6BG,SAUN,MAAiB,MAAY,IAAM,GAAO,KAAM,KAC/C,K8E/BiB,E9EgCD,MAAW,IAAK,G8ErBlB,MAAkC,aAAuB,OAXtD,EAQf,I9EYG,SAwBN,MAAyB,EAChB,OACH,IAAM,GAAO,GACtB,MACM,IAAM,GAAO,GAIK,MAAY,IAAM,GAAO,GAAmC,MAE/E,IAAM,GAAO,Q8EtDG,E9EsD0D,MAAW,IAAK,G8EtD1E,EA4BH,MAAkC,aAAuB,OA5BtD,EA6BH,MAAiC,QAAgB,GAAU,MA7BxD,EA+BP,SA/BO,EAgCP,KAAkB,GAhCX,EAkBf,I9EEG,G8EnE8C,W9EmE9C,C8ErEX,aCT+BV,GAAiCC,GAAA,WAAjC,aAEP,eAAAU,CAFxB,aCQwBX,GAAiCC,GAAA,WAAjC,mBhFIN,MAAiB,agFA3B/wB,EAAwB,MAAY,OAAS,OAAS,QhFSK,MAEnD,EAAU,KgF4BqhB,EhF3Bnd,MgFPzD,IAAgB,IAAAixB,EAAM,EAAI,EAAI,EAAI,KAkC0e,EhFpB1gB,MgFZK,IAAgB,IAAAA,EAAM,GAAM,GAAM,GAAM,KAgC6d,EArCviB,IhFgEG,SA1CL,MAAU,KgFe+hB,EhFf7f,MgFe6f,EAzB3hB,MAAuD,aAAuB,OAyB6c,EAxB3hB,IAAqB,SAwBsgB,EAvB3hB,MAAa,EAuB8gB,EAtB3hB,OAAe,EAsB4gB,EA5BviB,IhFuDG,GgFpE0C,WhFoE1C,CgFtEX,aCF2BH,GAAiCC,GAAA,WAAjC,mBjFG0B,MAAiB,iBiF+B2hC,EA9BzlC,IACI,IAAAW,EACW,MAAY,MAAO,KAAM,GAAK,IACzB,aAAuB,SA2B8iC,EAtBzlC,IACI,IAAAA,EACW,MAAY,kBAAmB,kBAAmB,gBAAkB,iBAC/D,QAAe,oEAbc,WjFsE9C,CiFxEX,aCA2BZ,GAAiCC,GAAA,WAAjC,aAEY,aAEb,wFAEF,gBAEA,UAEA,MAAY,IAAO,IAAO,GAAM,IAE7B,QAAY,mBAZvC,aCMI,6CALmBD,EAA+Ba,GAAqCZ,GAAA,WAApE,aAA+B,aAET,gBACjB,eAH5B,aCKI,6CALoBD,EAA+Ba,GAAqCZ,GAAA,WAApE,aAA+B,aAET,gBAClB,eAH5B,eCUIa,OAAA,OAAgB,EAoGpB,aApGoBpG,OA8BZqG,EAxBAC,EADAC,EAHAC,IAAsBC,SAASC,eAAgB,eAA/CC,EAAU,IAAAC,GAAA,+BAAY,EAAZ,OACWH,SAASC,eAAgB,aAA9CG,EAAAA,aAAAA,kBAAqB,EAArBA,MACuBJ,SAASC,eAAgB,eAAhDI,EAAAA,aAAAA,kBAAuB,EAAvBA,MACuBL,SAASC,eAAgB,WAAhDK,EAAAA,aAAAA,eAAuB,EAAvBA,IACAC,EAAgBC,GACZ,IAAC,cAAgB,IAAAC,GAAcP,EAAI,QACnC,GAAC,kBAAoB,IAAAQ,GAAmBR,EAAI,QAC5C,GAAC,qBAAyB,IAAAS,GAAmBT,EAAI,QACjD,GAAC,aAAe,IAAAU,GAAmBV,EAAI,QACvC,GAAC,QAAU,IAAAW,GAAcX,EAAI,QAC7B,GAAC,WAAa,IAAAY,GAAiBZ,EAAI,QACnC,GAAC,WAAa,IAAAa,GAAiBb,EAAI,QACnC,GAAC,gBAAkB,IAAAc,GAA0Bd,EAAI,QACjD,GAAC,SAAW,IAAAe,GAAef,EAAI,QAC/B,GAAC,aAAe,IAAAgB,GAAkBhB,EAAI,QACtC,GAAC,gBAAkB,IAAAiB,GAAqBjB,EAAI,QAC5C,GAAC,oBAAsB,IAAAkB,GAAyBlB,EAAI,QACpD,GAAC,iBAAmB,IAAAmB,GAAsBnB,EAAI,QAC9C,GAAC,yBAA2B,IAAAoB,GAAoBpB,EAAI,QACpD,GAAC,YAAc,IAAAqB,GAAiBrB,EAAI,MAAQA,EAAI,QAChD,GAAC,aAAe,IAAAsB,GAAkBtB,EAAI,MAAQA,EAAI,QAClD,GAAC,gBAAkB,IAAAuB,GAAqBvB,EAAI,QAC5C,GAAC,oBAAsB,IAAAwB,GAAyBxB,EAAI,UAExDyB,EAAkBnB,GACd,IAAC,mBAAqB,IAAAoB,IACtB,GAAC,sBAAwB,IAAAC,MAE7BC,EAA+B,YrF6BpC,EACF,MAAO,MqF3BO,EACH,IAAS,IAAAC,IADN,EAEH,IAAiC,SACd,8DACA,aAFc,GAGrB,qBALT,EAOH,IAAS,IAAAC,GAPN,EAQH,IAAS,IAAAC,GAIb/B,EAAI,MAAO,MAAM,MAAe,IAAY,IAAAgC,IAG5ChC,EAAI,MAAJ,MAAkC,exEwvDtB,EAnqDQ,EAAU,KAmqDlB,WAAhB,KAAK7K,EAAW,QbnrDQ,SAAS,cAGpC,2CAH2B,MqFpFb,EAkDCh1C,MAiByjvD,EAnE1jvD,EAmDC8hD,UAgByjvD,EAfzjvD/B,EAAetyB,OApDhB,ExEuwDyB,SAApB,EA5pDkC,EAEjD,KA0pDe,WAAhB,KAAKunB,EAAW,QbzqDb,SAAS,cACb,2CADI,MqF9FQ,EAyDCh1C,MAUyjvD,EAnE1jvD,EA0DC8hD,UASyjvD,EARzjvD9B,EAAiBvyB,OA3DlB,ExEuwDyB,CwErsDpC,OAJIsyB,EAAegC,UAjEfxC,EAiE0B,EAzF1BC,EAyF0B,EA1F1BC,EA0F0B,EA7F1BC,EA6F0B,WAAEsC,SAAyBA,EAAMjM,OAAoC,OAA1D,2CAAgB,EAAhB,KAAmD/1C,OAAO,IAC/FggD,EAAiB+B,kBA9FjBrC,EAwBAuC,mBAsE8BD,SAA2BA,EAAMjM,OAAmC,OAA3D,uCAAkB,EAAlB,KAAqD/1C,OAAM,GAAtE,MAC5B,WAA8Bue,GAAf2hC,EAAU,OACzB,OAAkC3hC,GAAjB+iC,EAAY,OACjC,cA9FIrB,EAyBAwB,EAxBAvB,EAiDiBgC,OAAAC,EAzBjB5C,EAxBAC,IrFuF4D,SAAS,cAE5E,2CAFmE,MqF5DrD,EAwBCsC,UAAYI,EACZjC,EAAiBxyB,OAzBlB,KA0BC20B,SAJSD,EAIC,EA7BlB5C,EA6BkB,EArDlBC,EAqDkB,WAAAtG,GAAyB,gBA7B3CuI,EAxBAvB,EA+CegC,OAAsB,EAAAT,EAAA,GAAiB,SAAjB,OAAiB,KAAM,EAAAvB,EAAA,GrFkChC,GqFlC+C,MAAf,KAAe,IAAUgC,GAAc,CAM/E,KAAW,GAAY,GAE3C,aA/BAT,EAxBAvB,EADAD,EAHAJ,EA6DmBwC,OACf,EAAAZ,EAAA,GAAiB,SAAjB,OAAiB,KAAM,EAAAvB,EAAA,GrFmCc,GqFnCC,MAAf,KAAe,MACtCuB,EAAA,GAAkBY,MAClB,EAAAnC,EAAA,GAAUmC,GAAW,SAArB,QrFqCX,EAA2C,MAIC,YAA6B,OAAmB,EAJ5F,EAI4F,MAExF,SAFwF,gBa6rDzE,EAjrDW,EAirDX,WwEluDyB,SxEkuDzB,Wb3rDsE,EANzF,EAMyF,MAA1B,YAAgD,KAAb,MAAT,EAAS,KAAT,EAAS,OqFpCvFxC,EAAI,KACR,aAxEAA,EAwBAyB,EAkDqBgB,GACjBzC,EAAI,MAAO,MAAX,MAAyD,GAA3ByB,EAAA,GAAYgB,IAC1CzC,EAAI,KACR,eA/BkC,wxBpB/DjC,iBAAqC,qBAKvBqC,GAAqB,uBAKtB,uBAKD,uBCTP,eAAN,YlECU,WAAO,MAAyB3iC,EAAwB,UAGzE,MAAS,MAAmB,+BAA5B,MkEUg0D,EAX/tD,MAAYA,ElEFlB,WAqEjF,QA9DP,MAAS,MAAmB,gCAA5B,MkEM6zD,EAV5tD,MAAYA,ElEGpG,WA+DF,CkEhEP,uBAGU,eAAN,UACA,+BAAuB,UACvB,+BAAwB,KAC5B,2BCTQgjC,EAEJC,EACAC,EAGAC,EAEAC,QACAC,EAbM,eAAN,MAIIL,EAHY,KAKhBC,EAAwB,MAAY,MAAO,MAAO,KAClDC,EAAuB,MAAY,YAAa,WAAa,GAG7DC,EAAcF,EAAS,IAAmBC,GAE1CE,EADsBH,EAAS,IAAoBC,GACZ,QAAO,MAAM,IAAYD,EAAS,MAAUA,EAAS,emBiB1D,EAC1B,EAAS,QA6B0B,KAAW,KAAK,GnB9C3DI,EG6IkC,MAAY,GH1I9C,QAAO,MAAO,IACVJ,EAAS,MAAUA,EAAS,MAAWA,EAAS,MADtC,IACuEE,EAASE,EADhF,IACmG,MAfrH,uBCAU,eAAN,MACA,WAAO,MAAO,IAAS,kBAGK,MAAY,QAAU,QAAU,eAEpC,QE6IU,QAnIrB,GFdb,WAAO,IACH,IAAAC,EAAA,IAEkD,IAFlD,EAGqC,EAHrC,IAG2D,OAGnE,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBC8CU,eAAN,MACA,WAAO,MAAO,IAAS,kBACvB,WAAO,QCqF2B,QArDrB,MAqDqB,SArDN,KDhCd,QACa,EAA6C,IAApC,WAAO,MAD7B,QAE6B,MAF7B,IAEgD,MAFhD,IAEmE,MAErF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBE5EU,eAAN,MACA,WAAO,MAAO,IAAS,WAC3B,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBCyDU,eAAN,MACA,WAAO,MAAO,IAAS,kBACvB,WAAO,QFsF2B,QAnEG,aAmEH,KAlElC,WEpBc,QACkB,EAAS,IAD3B,QAE6B,MAF7B,IAEgD,MAFhD,IAEmE,MAErF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,2BClEQC,EAEJN,EAEAC,EAGAC,EAEAC,EAGAI,IACAh1C,QACA60C,EAlBM,eAAN,MAIIE,EAHY,KAKhBN,EAAwB,MAAY,YAAa,YAAa,MAE9DC,EAAuB,MAAY,YAAa,YAAa,MAG7DC,EAAcF,EAAS,IAAmBC,GAE1CE,EADsBH,EAAS,IAAoBC,GACZ,QAAO,MAAM,IAAYD,EAAS,MAAUA,EAAS,OAG5FO,EAAeP,EAAS,MAAWC,EAAQ,QaeJ,EAAW,EAErD,EACH,EbjBM10C,Ea+J2C,KAAW,KAAK,WA7IrC,EAAiB,EAAS,QAsBL,KAAW,KAAK,GbvC3D60C,EHsIkC,MAAY,GGnI9C,QAAO,IAAiB,IAAAC,EAAOJ,EAAP,IAAuC10C,EAAO20C,EAASE,EAAvD,IAA0E,OAnBtG,uBCNU,eAAN,MACA,WAAO,MAAO,IAAS,WAC3B,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBC0DU,eAAN,MACA,WAAO,MAAO,IAAS,kBACvB,WAAO,QLoF2B,QAtEvB,MAsEuB,SAtER,KKdZ,QACa,EAA6C,IAApC,WAAO,MAD7B,QAE6B,MAF7B,IAEgD,MAFhD,IAEmE,MAErF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBCtBU,eAAN,MACA,WAAO,MAAO,IAAS,kBAGK,MAAY,MAAS,QAAS,eAElC,QN2FU,QA3DjB,IMpCjB,WAAO,IACH,IAAAC,EAAA,IAEkD,IAFlD,EAGsC,EAHtC,IAG4D,OAGpE,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBC0DU,eAAN,MACA,WAAO,MAAO,IAAS,kBACvB,WAAO,QPuB2B,QAkB6B,MAlB7B,SAoBzC,KO3CqB,QACa,EAA6C,IAApC,WAAO,MAD7B,QAE6B,MAF7B,IAEgD,MAFhD,IAEmE,MAErF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBC9CU,eAAN,MACA,WAAO,MAAO,IAAS,kBACvB,WAAO,QR0D2B,QA/BlC,MA+BkC,SA/BnB,IQ3BD,QACY,EAA6C,IAApC,WAAO,MAD5B,QAE6B,MAF7B,IAEgD,MAFhD,IAEmE,MAErF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBCtGU,eAAN,MACA,WAAO,MAAO,IAAS,WAC3B,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBCwBU,eAAN,MACA,WAAO,MAAO,IAAS,kBVuHW,QAjGF,SAiGE,SAjGe,UUnB9B,IAAAG,EAAA,EAAoC,EAAS,aVoH9B,QA7FhB,MA6FgB,QA7FK,MA6FL,QA7F0B,GUzB5D,WAAO,IACH,IAAAH,EAAA,IAEY,KAFZ,IAE2E,GAGnF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBCtBU,eAAN,MACA,WAAO,MAAO,IAAS,kBACvB,WAAO,YX+H2B,IA/GJ,yBA+GI,IA/GuB,mBWhB3C,QACmC,EAAS,IAD5C,QAE6B,MAF7B,IAEgD,MAFhD,IAEmE,MAErF,uBAGU,eAAN,MACA,WAAO,MAAO,IAAY,WAC9B,uBChBU,eAAN,gBlFS0D,WAAO,MAAM,Ma0xD3D,EqEjwD4Z,ErEiwD5Z,iBqEjyDc,KAAqB,GAgCyX,EA/Bpa,IAAY,qBAaZI,OACJC,EAAyB,MAAY,WAAY,WAAY,MAC7DC,EAAmB,MAAY,QAAS,QAAS,KAGjDT,EAAcS,EAAI,IAAmBD,GAErCE,EADsBF,EAAU,IAAoBC,GACnB,QAAO,MAAM,IAAYD,EAAU,MAAUA,EAAU,eIyB9D,EAAW,EAAI,QAJE,KAAW,KAAK,GJlB3DN,EZiHkC,MAAY,GY9G9C,QAAO,MAAO,IACVO,EAAI,MAAUA,EAAI,MAAWA,EAAI,MADvB,IACwDT,EAASE,EADjE,IACoF,MAEtG,CA3BIK,CAAa,KACjB,uBAGU,eAAN,YlFOF,WAAO,MACb,MkFiBgb,EAvBpa,IAAe,oBrEwxDP,EqEjwD4Z,ErEiwD5Z,iBqEvxDc,KAAqB,EAEnD,qBCtBuBI,EAAAC,yDAcf,oBAjCZ,EAAAA,iKAuBgC,QAAa,oCAAoC,EAAQ,mBAAzD,uDACR,iBACA,iBAAWpK,EACG,KAAd,YAAO,MAAO,IAASA,GACb,YAGX,UAAW,MAAO,yHACpBzxC,EAAAA,KAAAA,KACE,UAAW,MAAQ,4BAA4BA,wEAE9D,qHAfmB,EA8Bu9C,+EA/Bp+C,eAAN,MACA,WAAY87C,GAAN,WAAM,gBAAO,uBAAAF,EAAAC,0CnFsBK,WAAO,MmFQ68B,EAbx+B,YAAwD,IAApC,WAAO,MAa68B,EAZx+B,UAAgB,MAYw9B,EAXx+B,UAAa,MAW29B,EAVx+B,UAAa,KAErB,uBAGU,eAAN,UACA,aAAK,MAAL,KAAK,SnFI8G,aAAU,MAAV,GmFHnG,WAAO,MAAO,InFGqF,GmFH5D,WAAW,IACtE,qBC5BuBD,EAAAC,yDAaf,oBAhCZ,EAAAA,iKAsBiC,SAAa,+CAAgD,YAA7D,uDACT,iBACA,iBAAYpK,EACE,KAAd,YAAO,MAAO,IAASA,GACb,YAGX,UAAW,MAAO,0HACpBzxC,EAAAA,KAAAA,KACE,UAAW,MAAQ,6BAA6BA,wEAE/D,qHAdmB,EA6BigD,+EA9B9gD,eAAN,MACA,WAAY87C,GAAN,WAAM,gBAAO,uBAAAF,EAAAC,0CpFqBxB,WAAO,MoFQohC,EAblhC,YAAwD,IAApC,WAAO,MAau/B,EAZlhC,UAAgB,MAYkgC,EAXlhC,UAAa,MAWqgC,EAVlhC,UAAa,KAErB,uBAGU,eAAN,UACA,aAAK,MAAL,KAAK,SpFKkE,aAAW,MAAX,GoFJtD,WAAO,MAAO,IpFIwC,GoFJf,WAAY,IACxE,qBCyBuCE,GAA+C,SAArBA,EAAqB,GAAD,qBAC9CA,GAA+C,SAArBA,EAAqB,GAAD,+xHEzDjF,eAAAjF,SAGI,EAAQ,KAAZ,qCAD2C,cACsB,kBAAjE,SAGI,EAAQ,KAAZ,qCADuD,cAEtD,8BADD,SAII,EAAQ,KAAZ,qCAD+D,cAE9D,sCADD,EAZN,6DAqBM,eAAAA,SAGI,EAAQ,KAD6B,eAAAkF,GAAA,4BACzC,EADyC,KAJ/C,aCREjF,GAAA,aAKyB,wBAMR,eASM,gBACY,gBAC2B,gBACpB,gBACD,gBACP,sBACN,aACmB,sBACnB,aACE,YAjClC,eCJI,aANAkF,EAAqBC,EAAqBC,EAA0BC,YAAN,gBAAuC,OAArG,aAAqB,aAAqB,aAA0B,aAEtD,aAHlB,aCSqFC,GAAS,OAAHA,EAAG1lD,UAAW,eAfzE,WCiF4B,IDlF5D,eE0qBQ,qCA9B0C,cAEpB,WAAA2lD,GAAA,GAA+C,GAMhD,WAAAC,GAAR,WATjB,mEA5mBAC,EAIAC,EAIAC,EAIAC,EAIAC,EAIAC,GAxBJ,cAYuB,IAAAC,GAAA,WAIY,IAAAC,GAAA,WAIQ,IAAAC,GAAA,WAIL,OAhBlC,aAIA,aAIA,aAIA,aAIA,aAKa,eAAAC,GAIA,eAAAC,GAIM,eAAAC,GAAarnD,MAIjB,gBAIG,cAIE,aAaO,aAYF,gBAIN,eAAAsnD,GAIA,eAAAC,GAAYb,GAIL,aACK,gBACC,gBACL,gBACF,oBAIrBc,EAA4B,SAAsB,YAElDC,EAAgD,IAA7B,WACnB,WAAO,MAAS,IAAID,EAAa,MAAUA,EAAa,MAAWC,EAjG3E,eCFI,eAXmC,gBACb,gBACM,gBACL,gBACI,gBACY,gBACC,gBACE,gBACP,gBACa,eAVpD,aCAuBf,GAAA,aACJ,gBACA,gBACE,gBACD,gBACU,gBAEH,gBACa,gBACE,gBACC,gBACT,gBACP,gBACN,cACwB,sBACR,sBACP,wBACH,M9DJgC,GAAiB,M8DI3C,I9DJ4D,M8DIlE,EAAM,IAAN,UAAuB,MAAvB,qBACa,sBACO,sBACS,gBACI,gBACK,gBACjC,yBAAU,GACb,yBAAU,GACV,eAAAgB,GAAW,KCgClC,ID2CgB,W7EbkC,I6EvFxD,eEHsC,YADlC,eA2Ee,aACC,aACD,aACE,aACD,gBACE,aACE,aACQ,gBACH,gBACA,eAAAC,EAVzB,eAce,aACE,YAFjB,eAnFsC,gBACC,gBACI,gBACxB,gBACA,aACE,cACC,cACC,cACL,aACL,cACS,gBACE,aACE,aACQ,gBACH,gBACF,eAAAA,GACJ,qBACJ,MhEJkC,GAAiB,MgEI7C,GhEJ8D,MgEIpE,EAAM,GAAN,KAA2B,IAAAC,GAA3B,oBAtBzB,qICHK1Q,EAAAA,oBAAL,uECSI,eAPmB,4BAAW,WACjB,MlEkB0C,GAAiB,MkElBrD,GlEkBsE,MkElB5E,EAAM,GAAN,KAAW,KAAX,qBACC,aACY,gBACc,gBACG,eAN/C,eCiBI,eATmB,4BAAW,IACd,gBACJ,gBACE,aACE,aACM,cACgB,gBACG,eAX7C,eCSqD,aADjD,eAuC8B,gBACE,gBAChB,aACE,YAJlB,aA9CoCA,GAAA,yBAAqB2Q,EAAKC,OAE1D5iD,EAAgB,GAAH2iD,GAAM,MAAQ,GAAa,GAAHC,GAAM,OAG3C,OAFc,IAAV5iD,IAAaA,EAAmBuK,GAAVo4C,EAAI,MAAgBC,EAAI,QACpC,IAAV5iD,IAAaA,EAAqBuK,GAAZo4C,EAAI,MAAkBC,EAAI,QACpD5iD,CACJ,eAbqB,aACI,mBpEF7B,WoEG4B,WpEqB+B,GAAiB,MAAU,GAAO,UoEhBlC,KAAnB,WAAmB,SAR3D,eCmBI,eAT0B,gBACd,gBACE,aACQ,cACa,gBACX,gBACyB,gBACzB,eAR5B,eCEI,eAJgB,eAAA6iD,GACyB,gBACjB,eAH5B,eCqBI,eAlBsB,gBACV,aACO,eAAA3G,GAAM,EAAI,EAAI,EAAI,GACjB,eAAAA,GAAM,EAAI,EAAI,EAAI,GACL,gBACY,gBACjB,gBACP,gBACW,gBACN,WvEMxB,CAF4D,KAAU,IAAc,EAAK,EAAK,EAAxB,KACzE,OACG,IAAmB,EAAK,EAAK,EAA7B,KAAkC,OAA+B,KAAU,IAAc,EAE/F,EACC,EAHgF,KAG3E,OAAO,IAAmB,EAAK,EAAK,EAA7B,KAAkC,OAE5B,KAAU,IAAc,EAAK,EAAK,EAAxB,KAA6B,OAA+B,KAGzF,IAAc,EAAK,EAAK,EAAxB,KAA6B,OAAQ,IAAmB,EAAK,EAC1D,EADkC,KAEjC,OAKoB,KuE/BxB,eCgB6B,YADzB,eAba,gBACI,aACE,aACA,aACJ,aACC,cACF,aACa,gBACoB,gBACF,gBACZ,gBACY,eAZjD,eCEI,eANY,gBACE,aACqB,gBACa,gBACxB,eAL5B,eCcI,eAV0B,gBACb,gBACG,eAAA2G,GACgC,gBACxB,gBACO,gBACD,gBACV,gBACE,YAT1B,eCYI,aA6HQC,EAAgBC,OAAmB,UAAgC,OAAJ,KAAnB,MAAT,EAAS,KAAT,EAAS,IAAYA,GAAU,eAvIhD,gBACN,gBACA,gBACR,gBACE,aACO,gBACG,gBACc,gBACY,eATtD,8BCII,eAPY,gBACE,aACqB,gBACa,gBACxB,gBACM,eANlC,eCagC,WlB+D4B,KkB9DhC,gBACA,gBACF,gBACI,eAAAC,GACQ,WAAT,KAAS,MACP,gBACF,eAR7B,eCOI,eAde,gBACE,gBACD,gBAEI,eAAAC,GACE,eAAAA,GACiB,gBACoB,gBAC7B,gBACP,gBACF,gBACJ,cACgB,eAbrC,mICNKjR,EAAAA,oBAAL,qEzCQIkR,G/DqBA,GA4G6ytB,GAzIpxtB,GA6Bb,KACR9nD,E+D6oBI,UAAW,MAAQ,QAAS,OAAQ,yB/D5oBxC,MAAM,GAAiC,GAAR,GACnC,C+D5BsB,qBAUR,GAA4B,OAApB,SAAU,wBAwDF,gBAqFQ,IArFZ,GAEM,gBAmFM,IAnFX,IAEQ,gBAiFG,KAjFT,IAEK,gBA+EI,IA/EV,KAES,gBA6EC,KA7ER,KAEI,gBA2EI,IA3EV,KAES,gBAyEC,KAzER,KAEW,gBAuEH,IAvET,qBAEc,gBAqEL,IArET,sBAIM,+BAIA,6BAIA,cAIA,+BAIA,gBAIA,gCAIH,+BAIA,6BAII,6BAIA,kBAIF,8BAIA,eAIA,gBAIA,eAIH,cAIA,8BAlF/B,oDAonBA,EAAkB+nD,GAAwD,OAAxC,SAAY,EAAkB,eAChE,EAAgBC,GAAwD,OAArC,SAAiB,EAAL,eAC/C,EAAgBC,GAAwD,OAArC,SAAiB,MAAL,eAU/C,EAAmBF,GAAwD,OAAxC,SAAY,EAAkB,eACjE,EAAiBC,GAAwD,OAArC,SAAiB,EAAL,eA2ChD,EAAiBv5C,G/DntBjB,GA4GsnzB,KAAW,GA5GrnzB,KACRzO,E+DotBI,UAAW,MAAQ,QAAS,MAAO,gB/DntBvC,MAAM,GAAiC,GAAR,GACnC,C+DotBI,OAAO,SAAY,EAAoB,mBAM3C,GAA6C,OAAjB,IAAO,eAenC,SAAqB,IAAkB,KAAd,MAAqB,0BAAiB,SAAkB,KA9mB3C,MAAY,GA8mBiD,qBAInG,SAA0B,IAAkB,IAAd,MAAoB,yBAAgB,SAAkB,KAlnB9C,MAAY,GAknBoD,qBAEtG,SAA2B,IAAkB,KAAd,MAAqB,0BAAiB,SAAmB,KApnBlD,MAAY,GAonBwD,qBAM1G,gBAAgCkoD,GAAV,GAAoB,GAAM,IAAa,OA1nBvB,MAAY,eA4nBlD,gBAAiCA,GAAV,GAAoB,IAAO,KAAc,OA5nB1B,MAAY,eAmsBlD,EAAgCxiD,GAAoD,OAA1ByJ,GAAV,EAA0B,eAp2B9E,4BAcI24C,GALJ,KAKI,yB0C4UYK,EACJjlD,EAASklD,EAAwBC,EAASC,EAAwBC,EAASC,EAAwBC,OAEnGC,EAAUD,EAAE,IAAIvlD,GACZklD,EAAU,GAAKM,IAAKN,EAAU,GAAKM,GACnCN,EAAU,GAAKM,IAAKN,EAAU,GAAKM,OAEvCC,EAAUF,EAAE,IAAIJ,GACZC,EAAU,GAAKK,IAAKL,EAAU,GAAKK,GACnCL,EAAU,GAAKK,IAAKL,EAAU,GAAKK,OAEvCC,EAAUH,EAAE,IAAIF,GACZC,EAAU,GAAKI,IAAKJ,EAAU,GAAKI,GACnCJ,EAAU,GAAKI,IAAKJ,EAAU,GAAKI,EAC3C,aAEQC,EAAaxkD,EAASykD,EAAwBxkD,EAASykD,GAC3D1kD,EAAE,IAAKC,OAEP0kD,EAAUF,EAAU,GACpBA,EAAU,GAAKC,EAAU,GACzBA,EAAU,GAAKC,EAEfA,EAAMF,EAAU,GAChBA,EAAU,GAAKC,EAAU,GACzBA,EAAU,GAAKC,CACnB,aA1DIC,EAAiBC,OACrB7jD,EAAQ6jD,EAAM,Q1B4IkB,QAAE,IAAI,KA3GI,KAAW,IAAI,KA2GT,QAAE,IAAI,G0B3ItDC,EAAsB,IAAO,E1BgCa,KAAW,IAAI,I0B7BzDC,EAAUF,EAAM,IAAI,SACpBG,EAAUD,IAAQD,EAIlBG,EADUJ,EAAM,IAAI,WACFC,EAClB,GAAIE,GAAOC,EAAK,OAAQ,EACxB,GAAID,IAAOC,EAAK,OAAO,MAIvBf,GAASY,EAAkBC,IADjB/jD,EAAE,OAAK,QAAU,MAAI,QAAU,OAAKA,EAAE,OAAK,QAAU,MAAI,QAAU,OAAKA,EAAE,OAAK,QAAU,MAAI,QAAU,QAIjHrC,GAAS,QAAU,MAAI,QAAU,OAAKulD,EAAI,QAAU,MACpDtlD,GAAS,QAAU,MAAI,QAAU,OAAKslD,EAAI,QAAU,MACpDgB,GAAS,QAAU,MAAI,QAAU,OAAKhB,EAAI,QAAU,MAEpD,OADIc,EAAK,QAAU,IAAI,EAAGpmD,EAAGsmD,GAAQ,QAAU,IAAI,EAAGtmD,EAAGsmD,GAClDhB,CACX,eAKgC,aACA,YAFhC,eAzUsB,eAAAiB,GAAK,EAAK,EAAK,GAIR,eAAAA,IAAM,GAAK,EAAK,GAInB,eAAAA,GAAK,GAAK,EAAK,GAIvB,eAAAA,GAAK,EAAK,EAAK,GAIf,eAAAA,GAAK,EAAK,EAAK,GAIf,eAAAA,GAAK,EAAK,EAAK,GAIV,W1ByJwB,KAAW,KAxJzB,G0BCT,gBACA,gBACK,4BAAW,GACZ,4BAAW,IACR,aAlCnC,eCGiB,gBAIA,aAOkB,aAfnC,eCCmB,gBACI,gBACL,sBACH,sBACA,sBACY,W5CmJe,SAhJJ,G4CTtC,sBCkC+B,eAAAC,GAAU,QAAW,eAIjB,eAAAA,GAAU,QAAW,MAVpD,oDAxBAC,EAKAC,GAVJ,KAKI,aAKA,YAVJ,sBCaIC,aAAA,iBAAAA,gBAdoB,cAAM,EAAK,EAAK,EAAK,GACpB,eAAO,EAAK,EAAK,EAAK,GACrB,cAAM,EAAK,EAAK,EAAK,GACxB,cAAM,GAAM,EAAK,EAAK,GACrB,cAAM,EAAK,GAAM,EAAK,GACvB,cAAM,EAAK,EAAK,EAAK,GAChB,eAAAC,GAAS,EAAG,EAAG,EAAG,GACpB,WpFM2C,YAAM,WAAK,WAAM,WAAO,WAAK,YoFLlE,eAThC,sBCgBIC,aAAA,iBAAAA,gBATa,gBAIG,eARpB,sBCyBIC,aAAe,eAAgB,MAAhB,KAAkC,aAAjDA,uBAU8C,iBACR,WAAAzH,GAC9B,SAAQ,IACR,QAAQ,IACR,OAAO,IACP,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,MAAM,IACN,OAAO,IACP,MAAM,GACN,MAAM,IACN,MAAM,IACN,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,MAAM,IACN,MAAM,IACN,OAAO,IACP,OAAO,IACP,OAAO,KA3Bf,oDAlBA0H,EAIAC,GARJ,KAII,aAIA,YARJ,sBCbIC,aAAe,UACA,KADA,KAGH,EAHG,KAID,MAJC,KAKJ,MALI,KAMJ,aANXA,cAFAr6B,EAAwBs6B,EAAgCj6C,EAAmB20C,EAAoBE,EAAiBqF,GAAhH,aAAwB,aAAgC,aAAmB,aAAoB,aAAiB,YADpH,sBCgBgC,WxFDa,oBAAK,EAAK,EAAiB,EAAK,EAAK,EAAiB,EAAK,EAAK,GwFHzG,6DAcAC,eC0xBwB,KAnyB+B,MAmyB/B,QD1xBT,UAAc,SAA7BA,gBAhBAte,GAJJ,KAII,YAJJ,sBEOkD,gBACf,iBACG,iBACG,cAKT,W1FFlB,oBAAK,EAAK,EAAK,EAAiB,EAAK,EAAK,EAAK,EAGvD,EAAK,EAAK,EAAK,EAAiB,EAAK,EAAK,EAAK,G0FVjD,6DAyKAue,eD+nBwB,KA5nBb,MA4nBa,QC/nBT,UAAc,SAA7BA,gBA3KAve,GAJJ,KAII,YAJJ,aCsBgBz3B,mBAAAA,EAAAA,UAAiB,UAAKA,EAAO,MAAQA,EAAO,MAAGA,EAAO,MAAQA,EAAO,sCAEjF,aApBAi2C,EAIAvnD,EAKAwnD,EAIAvnD,GAbA,aAIA,aAKA,aAIA,YAlBJ,aCHK2zC,EAAAA,oBAAL,2ICEkD,gBAD9C,aA2BY5zC,EAAWC,EAAWsmD,EAAWhE,mBAAjCviD,EAAWC,EAAWsmD,EAAWhE,EAAAA,UAA7C,WAAiE,MAAIviD,EAAGC,EAAGsmD,EAAGhE,wCApBjE,eAAAiE,GAAK,EAAK,EAAK,GAIb,YAZnB,sBCsBIiB,aAAe,eAAgB,MAAhB,KAAkC,MAAiB,SAAlEA,cAOY56B,mBAAAA,EAAAA,UAAqB,UAAKA,EAAS,MAAUA,EAAS,MAAWA,EAAS,sCAEtF,aAtBAm6B,EAIAC,EAIA/E,GACDwF,GAAA,UAASV,EAAUC,GADlB,YAZJ,sBCOIU,aAAe,UAAa,EAAW,SAAvCA,cATAC,EAIAC,GAJA,aAIA,YARJ,sBCiEIC,aAAe,eAAmB,MAAnB,KAAuC,MAAvC,KAA4D,MAA5D,KAAiF,aAAhGA,cAOYC,mBAAAA,EAAAA,UAAiB,UAAKA,EAAO,MAAaA,EAAO,MAAaA,EAAO,MAAcA,EAAO,sCAEtG,aAnDAC,EAIAC,EAIAC,EAIAC,GAZA,aAIA,aAIA,aAIA,YAhBJ,aCnBIJ,EAAoBr1C,EAAkB01C,EAAsBC,EAAuBC,EAAoBC,GAAvG,aAAoB,aAAkB,aAAsB,aAAuB,aAAoB,YAD3G,eCOI,aANqBR,EAAoBS,GAApB,aAAoB,YAA7C,sBC+BIC,aAAe,UAAS,EAAS,SAAjCA,cAvBAzoD,EAIAC,GAJA,aAIA,YARJ,sBCuBIyoD,aAAe,UAAS,EAAS,EAAS,SAA1CA,cAnBA1oD,EAIAC,EAIAsmD,GACDoC,GAAA,UAAK3oD,EAAGC,GADP,YAZJ,sBCkBI2oD,aAAe,UAAS,EAAO,EAAY,EAAa,SAAxDA,cAjBA5oD,EAIAC,EAIAgwB,EAIA44B,GAZA,aAIA,aAIA,aAIA,YAhBJ,eCKI,aAD8B7B,EAAqBC,EAAsBjnD,EAAeC,GAA1D,aAAqB,aAAsB,aAAe,YAA5F,eCA6B,YADzB,eAIkC,sBAGpB,aAGC,aAGA,aAGC,YAjBpB,sBCgBuC,eAAA6oD,GAC3B,SAAU,UAAW,QACrB,EAAK,EAAK,GACT,QAH0B,KAGP,MAHO,KAGc,OAEd,eAAAA,IAC1B,QAAS,SAAU,QACpB,EAAK,EAAK,EACV,QAH2B,KAGR,MAHQ,KAGS,OAEZ,eAAAA,GACxB,OAAQ,QAAS,KACjB,EAAK,EAAK,EACV,EAHwB,KAGT,MAHS,KAGY,OAEZ,eAAAA,IACvB,MAAO,OAAQ,KAChB,EAAK,EAAK,EACV,EAHwB,KAGT,MAHS,KAGQ,MAnBxC,oDAhBAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EAGArgB,EAGAsgB,EACAC,GAhBJ,KAEI,aACA,aACA,aAGA,aACA,aACA,aAGA,aAGA,aACA,YAhBJ,eCGA,+ECNK1V,EAAAA,oBAAL,uECUI,aADgCoT,EAAqBC,EAAsBsC,GAA3C,aAAqB,aAAsB,YAA/E,uBCI6B,aACC,aACA,aACG,aACG,aACF,cACC,eACE,eACL,gBACF,gBACA,gBACQ,8BACI,aACF,+BACA,8BACD,+BACA,6BACI,aACA,eACP,eACD,eACK,gBACA,gBACA,gBACQ,gBACX,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACI,aACJ,8C5GsB8gD,kBAAU,EAAU,GAAU,GAAU,IAAQ,QAAgC,kBAAU,EAAU,GAAU,GAAU,IAAS,QAAgC,mBAAU,EAAU,GAAU,GAAU,IAAQ,O4GbjuD,W5GaqgD,OAA6P,mBAAU,EAAU,EAAU,GAAU,IAAS,cAA8V,oBAAY,MAAW,IAAO,KAAO,MAAyC,oBAAY,KAAW,IAAO,GAAO,QAA+C,oBAAY,MAAW,IAAO,GAAO,QAA+C,oBAAY,MAAW,IAAO,GAAO,QAA+C,oBAAY,MAAW,IAAO,GAAO,QAA+C,oBAAY,MAAW,IAAO,GAAO,QAA+C,oBAAY,MAAW,IAAO,GAAO,QAA+C,qBAAY,MAAW,IAAO,GAAO,QAA+C,qBAAY,MAAW,GAAM,GAAO,QAA+C,qBAAY,KAAW,GAAK,EAAM,QAA+C,qBAAY,EAAK,EAAK,EAAK,MAAyC,qBAAY,IAAU,GAAM,EAAK,MAAyC,qBAAY,KAAW,GAAM,GAAM,MAAyC,qBAAY,KAAW,GAAM,GAAM,QAA+C,qBAAY,KAAW,GAAM,GAAM,QAA+C,qBAAY,KAAW,GAAM,GAAM,QAA+C,qBAAY,KAAW,GAAM,GAAM,QAA+C,qBAAY,KAAW,GAAM,GAAM,QAA+C,qBAAY,IAAW,GAAM,GAAM,M4GD7lH,W5GCinE,uCAA2hD,qBAAY,KAAW,KAAM,GAAM,M4G3EvtH,sDA+bQC,EAAqBp4C,EAAW41C,EAAkByC,EAAiBC,EAAkBx4C,OAGzFy4C,EACAC,EAHAC,EAAWJ,EACXK,EAAYJ,EAGZK,EAAc,eAAS,KtD4V7B,EAAI,IsDzVEt+C,EtD9C8C,KAAW,IAqYiB,GArYP,GsD+CnEo+C,EAAOG,GAAU,EAAAH,EAAOp+C,GAAWA,EACnCq+C,EAAQE,GAAU,EAAAF,EAAQr+C,GAAWA,WA+BjCw+C,EAAkB74C,OACtB84C,EAAgB94C,EAAO,EAAvB84C,EACiB,IAAbA,IAAgBA,EAAY,SAChCC,EAAgE,IAA1Bh+C,GAAlB,QAA4B,OACG,IAA1BA,GAAlB,QAA4B,OACgB,IAA1BA,GAAlB,QAA4B,OACwB,IAAlCA,GAAlB,QAA4B,MAC7B,EAAO,EACb,eAAiB,OAAkB,EAC/B,QAAe,EACf,QAAgB,aACI,OAAkB,EACtC,QAAe,EACf,QAAgB,cACI,OAAkB,EACtC,QAAe,GACf,QAAgB,KAIa,IAAbg+C,EACK,IAAjBD,EAAY,EAAZ,GAAoB,IACnB,EAEgB,IAAjBA,EAAY,EAAZ,GAAoB,KACnB,IALT,SAOJ,CAzDID,CAAc,EAAA74C,OACdg5C,WAkEIC,EAAsBrD,OAC1BoD,EAAgB,EAChBE,EAAwB,kBAAXtD,EACT,GAAAsD,GAAU,IAAMA,EAAS,KAAM,QAAa,QACvC,GAAAA,GAAU,MAAQA,EAAS,GAAI,KACpCthC,GAAYg+B,EAAW,oBAAsB,mBAAoB,MACjE,QAAoD,GAAvC,WAA2B,GAALh+B,IAAc,GACrD,MAAOohC,GAAyB,EAChC,OAAOA,CACX,CA3EoBC,CAAkB,EAAArD,GAElC,GADA+C,EAAQ,GAAK,QACI,IAAbK,EAAuB,KAEH,OADpBR,EAAeE,KACUF,GAAgB,GAClCA,GAAgB,KAASA,GAAgB,KAChDA,GAAgB,UACI,MAASA,GAAgB,KAC7CG,EAAQ,GAA6B,GAAvBH,EAAe,KACzBG,EAAQ,GAAK,IAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAA1B,GACvBA,EAAQ,GAAK,KAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAA1B,GAC3BJ,EAAcE,EACI,KAAdE,EAAQ,IAA0B,KAAR34C,GAA6B,MAAfu4C,IAAyBA,GAAe,GACpFI,EAAQ,GAAK,SAAuC,GAAtBJ,EAAc,KAAkB,EAAjD,GAAb,EACoB,IAAhB,SAA4BI,EAAQ,GAAK,KAAUA,EAAQ,GAAKA,EAAQ,GAAK,EAA1B,GACvDQ,GAAe,EAAAn5C,EAAM24C,EAASF,EAAMC,EAAO54C,EAC/C,CACA,OAAOk5C,CACX,aAmEQJ,EAAc7qD,OAClBqrD,EtD1P4C,KAAW,MA+nBtB,GsDpYjCh9B,EAAeruB,EAAQqrD,EACvBC,EAA0B,GAAXD,GAEf,OADIh9B,EAAW,IAAmB,KAAZA,GvF1Ku/T,EAtL99T,GAAU,GAsL+9T,IuF0K/+T,OAAgB,gBAAIi9B,EAAAA,EAAA,MACtDA,EAAS,IACpB,aAWQF,EAAmBn5C,EAAW24C,EAAmBN,EAAiBC,EAAkBx4C,OACxF24C,EAAWJ,EACXK,EAAYJ,EACZ,QAAyB,IAARt4C,EAAkB2I,GAAN,OAAa,CAAA3I,IAAY,SAC5C,IAAV,MAAa,IAAb,KAAKs5C,EAAK,EACN,GADM,QACFX,EAAQW,GAAK,GAAKX,EAAQW,GAAK,GAAI,UACvC,mBAAc,gCAASX,EAAQW,WAFnC,GAAa,StDuZC,EAAI,IsDnZlBj/C,EtDhK8C,KAAW,IAmjBpD,GAnjB8D,IsDiKnEo+C,GAAQ,MACI,UAASA,EAAO,WAG5Bc,EAA6B,GAAhBd,EAAOp+C,GACpBm/C,EAAY,IAAA3wB,GAAc0wB,EAAMptD,YAChC,GAAIqtD,EAAM,IAAS15C,EAAW05C,EAAQ,IAAA3wB,GAAc2wB,EAAM,GAAU,EAAG15C,EAAY,EAAzB,QACrD,KAAU,IAAQ,EAAAA,EAAY05C,EAAM,IAAlB,EAAlB,KAAU,aAAkCA,EAAM,GAAO,EAAI,WAA7D,EAAU,EAAqD,CACpE,QAAe,QAAU,IAAEA,GAC3Bd,GAAS,MACI,UAASA,EAAQ,WAC9Be,EAA+B,GAAjBf,EAAQr+C,GACtBq/C,EAAa,IAAA7wB,GAAc4wB,EAAOttD,YAClC,GAAIutD,EAAO,IAAS55C,EAAW45C,EAAS,IAAA7wB,GAAc6wB,EAAO,GAAU,EAAG55C,EAAY,EAAzB,QACxD,KAAU,IAAQ,EAAAA,EAAY45C,EAAO,IAAnB,EAAlB,KAAU,aAAmCA,EAAO,GAAO,EAAI,WAA/D,EAAU,EAAuD,CACtE,QAAe,QAAU,IAAEA,CAC/B,eA3kBJ,KAmGmB,aAEC,aAEC,cAEU,aACC,aACA,aACH,aACD,aACJ,aACA,aACM,aACG,aACG,eAlHpC,eCH6B,aACC,aACA,aACO,aACA,aACH,cACC,cACP,cACI,eACC,eACK,8BACA,6BACH,4BAb/B,eAiBkC,sBACR,WAAV,WAAU,MACV,aAAI,WAAU,MACb,8BACK,4BACW,aAChB,aACA,aACA,2BACC,mBACC,oBAGK,WAAK,GAAL,KAAY,IACX,aACE,aACC,aAGD,oBACC,oBAEd,aAEC,aAEA,aAEC,YA9CpB,eCII,aAD8B9D,EAAqBC,EAAsBwC,EAAqBC,GAAhE,aAAqB,aAAsB,aAAqB,YAAlG,eCA6B,aACC,aACA,aACI,aACC,aACE,cACF,cACP,cACI,eACO,eACP,eACI,6BACO,8BACE,cACA,YAfzC,eAmBkC,sBAChB,WAAV,WAAU,MAEV,aAAI,WAAU,MAEL,8BACC,6BAGM,aACC,aACG,aACD,aACD,aAGT,2BACA,2BACA,2BACA,4BACA,8BAGU,eACC,eAGd,aAGC,aAGA,aAGC,YAxDpB,eCII,aAFA1C,EAAqBC,EAAsB8D,EAA4BtB,EAAqBC,GAA5F,aAAqB,aAAsB,aAA4B,aAAqB,YADhG,eCA6B,aACC,aACA,aACO,aACH,aACC,cACC,8BAGM,8BACA,+BACC,8BACA,aACA,cAdvC,eAiB6B,8BACC,aAGI,sBACR,WAAV,WAAU,MACV,aAAI,WAAU,MACH,eACC,eAEA,gBAGd,aAGC,aAGA,aAGC,aAGa,eAAAsB,EA3CjC,eCMI,aAFAhE,EAAqBC,EAAsB71C,EAAe25C,EAA4BtB,EAAqBC,GAA3G,aAAqB,aAAsB,aAAe,aAA4B,aAAqB,YAD/G,eCC6B,aACC,aACA,aACI,aACC,aACJ,cACM,cACG,cACX,eACO,6BACA,8BACI,eACA,eACC,aACA,cAfrC,eAkBkC,sBACR,WAAV,WAAU,MACV,aAAI,WAAU,MACP,aACO,aAEF,gBAGd,aAGC,aAGJ,aAGI,aAGC,YAxCpB,mNCJK9V,EAAAA,oBAAL,0UCuESA,EAAAA,oBAAL,aAKiBqX,EAAkCxJ,GAAlC,aAAkC,YAAnD,0CAhEAwJ,EAKAC,iBALqC,iBAKE,IAAAxK,GAAA,EALvC,aAKA,aAKqB,eAAAyK,GAiCD,gBAUQ,YAzDhC,eCP8B,WrI+F0B,IqIhGxD,eCEyC,WAAT,KAAS,MACD,gBACX,cAKmB,WAAN,SAAM,MAEQ,gBAC1B,eAAAC,GAA0B,cAXxD,eCkBuD,aADnD,eA2Ye,W7D/UyC,K6DgVzC,W7DhVyC,K6DiV/B,W7DjV+B,K6DkV7B,cACA,cACe,eAP1C,eA7JIC,EAD8BC,EAAwBC,EAAUC,EAAAA,gGA7OpEC,EAA8BC,GAC/BC,GAAA,WAKqB,WAAAF,EAMS,WAAAC,EAYJ,aAIS,WCoBgB,KDnBpB,eAAAN,GAAiC,oBAC5B,yB7F2EO,GApF9B,EAoF8B,M6F1EP,eAAAQ,GAAyB,EAAK,GACvC,WAAAC,KAGtB,WAAO,IAAKJ,EAAc,qBACtB,QnGEG,WAAc,MA2H+B,KA3HpB,KmGFhC,QAA+C1xC,GAApC,qCAA2C,KArC9D,mBEOQ+xC,EAAwBC,EAAsBC,EAAsBjE,EAAgBkE,EAAAA,EAApFH,EChBH,mCDgB2BC,EChBS,UDgBaC,EChBF,oBDgBwBjE,ECfxE,KAAS,MDe+EkE,ECfxD,SAAY,GDe4CA,ECjB7D,KDkBvB,UACAH,EAAgBC,EAAcC,WAoBtBE,EAAuBnE,EAAgBkE,GAE9C,OAFiF,MAC9ElE,EAAQ,EAAG,EAAG,IAAK,IAAKkE,EAC5B,CArBAC,CAAmB,EAAAnE,EAAQkE,YAuBnBE,EAAgCL,EAAwBM,EAAkBC,S1JmBlB,OAAe,EAEvF,G0JlBY,OAGkF,EALf,MAAmBA,EAE/E,OADc,G1J2BtB,G0JjBH,CAnCwCF,CAA4B,EAAAL,EAAgBC,EAAcC,GCpB1G,8BC4M+C,eAD3C,eA7M2B,sBACP,cACQ,cACI,kBAAa,IAAO,IAAO,IAAO,KACzC,eAL7B,eCS+B,mBACF,eAF7B,aCLIM,EAA0BvE,EAAgBwE,GAAA,aAEd,WAAAC,GAANF,GACA,cAAOvE,GACA,eALjC,uBC6PqD,cAAwB,YAAc,sBAC/C,cAAwB,YAAc,cAF9E,sDA9KYnU,GAAA,yBAAavyC,EAAGC,SnIaS,EmIzBR,QnIyBW,EmIzBX,MAYI,OnI/C1B,KAA2B,EmIgD9B,eA1ER,KAC+B,yBAIZ,cAAS,KAAS,MAAiB,KAAS,MAAiB,IAAAomD,GAAA,KAAS,MAAT,KAAgB,OAAQ,GAAI,GAAI,IAQxF,cAOM,eAAA0D,GAAoC,eAChC,W9IkEsB,K8IjEvB,W9IiEuB,K8IhEtB,gBACuB,gBACH,gBACI,gBACb,gBACI,gBACoB,gBACP,gBACb,eA/BjD,uBC6EqC,sBADjC,sDA7EmBrD,EAAgB0E,EAAcC,EAAUC,OAAxBC,EAAvC,KAA6EC,GAAA,UAAK9E,EAAQ0E,EAAOC,EAAKC,GACrF,gBACC,WAAAG,IAFqBF,EAEhB,aAAE,wBAAW,MAAC,EAAM,MAAY,EAAnB,EAAyB,EAAM,MAAa,EAA5C,GAAiD,GAAG,IAC3D,WAAAE,YAHUF,qBAGH,wBAAY,GAAC,EAAM,MAAY,EAAnB,EAAyB,EAAM,MAAa,EAA5C,GAAgD,EAA9D,KACF,WAAAE,YAJOF,qBAIA,wBAAY,KAAM,MAAY,EAAM,OAAY,EAAlD,KAKG,kBACJ,uBACK,aACI,gBACE,gBAC3B,aAEc,wCACC,wCAjBnC,aCTuDr/C,YAAoC,OAApC,aAC1B,cACI,cACN,aACiB,YAOa,IANb,WAK5C,IAJwD,eANxD,aCDuC3Q,EAAemwD,GAAwCC,GAAA,UAAgBpwD,GAC7E,oBAEc,MAAnBmwD,IAAmB,MAAO,SAA1BA,KAAAA,GAAmB,YAH/C,aCYIE,EACAC,YADuC,cAAuB,OAAvB,WACV,IAAAC,GAAA,QAC7BH,GAAA,UAAiB,cAEY,kBAIzBI,EAAmB,IAAA7O,GAAa,KAAS,MAAiB0O,GAC1DG,EAAa,MAAeF,EAC5B,SAAcE,EAXtB,eCR2B,WnJ+F6B,ImJhGxD,aCEqD7/C,YAAuB,OAAO8/C,GAAA,UAAc9/C,GACjE,WpJ6FwB,IoJ9FxD,eCD6B8/C,GAAA,UAAe,wBACX,cACjB,eAFhB,2DCqCgB,2BACE,mCACQ,eAHjBzZ,EAAAA,EAAe0Z,qBAAA,YAApB,4CA9BsCC,GAAA,WACQ,sBACC,sBACK,sBACJ,sBACE,sBACJ,sBACI,sBACC,sBACC,sBACD,sBACG,sBACC,sBACN,sBACL,sBACA,sBACD,sBACA,sBACA,sBACK,sBACS,sBAClB,sBACC,sBACM,sBAC1B,4BAAW,GAxBnC,uBCgBwC,cAAuB,YAAc,WAChC,cAAuB,YAAc,oBAF9E,wDAXJ,KAA4BF,GAAA,UAAe,cACV,cACN,yBAAuB,OACtB,eAAAF,GAAA,MAIF,gBACe,gBACG,WAAT,KAAS,KAT5C,eCQI,eAVqB,gBACH,aACO,aACK,gBACD,gBACH,gBACK,gBACW,WAAT,KAAS,MACU,eATxD,eCMI,eARuC,gBACI,gBACtB,gBACH,aACO,aACE,gBACsB,eAPrD,eCT0BK,GAAA,WACQ,W3IsF+2E,onIAA4lC,00B2IkD38G,W3IlDygH,e2IvF3iH,eCAwBA,GAAA,WACU,W5IsFq1E,ynIAAo3B,wpB4IsCzsG,W5ItCuwG,e4IvFzyG,aCuTYC,EAAuCz0C,EAAcC,EAAcguC,GACvE,GAAI,GAAAjuC,EAAG,MAAaiuC,GAAW,OAAOjuC,EACtC,GAAI,GAAAC,EAAG,MAAaguC,GAAW,OAAOhuC,MACtC2E,EAAqB,KACrB8vC,EAAeC,GAAkB,EAAA30C,EAAIC,EAAG,OACxC,GAAI00C,GAAkB,EAAA30C,EAAIiuC,GAAayG,GAAYC,GAAkB,EAAA10C,EAAIguC,GAAayG,EAAU,SAC5Fr2B,EAAY,EACZnmB,EAAgB,EAAM,KAAU,MAAM,MACtC7P,EAAQ2X,EACR1X,EAAQ2X,EACR20C,EAAeC,GAAoB,EAAAxsD,EAAGC,GAC/B,SAAUqsD,GAAkB,EAAAC,EAAU3G,IAAc/1C,GAAammB,GAAS,IAC7EA,EAAAA,EAAA,IACIs2B,GAAkB,EAAAtsD,EAAG4lD,GAAa0G,GAAkB,EAAArsD,EAAG2lD,GAAY3lD,EAAIssD,EAAcvsD,EAAIusD,EAC7FA,EAAWC,GAAoB,EAAAxsD,EAAGC,GAEtCsc,EAAMgwC,CACV,CAGA,OADW,MAAPhwC,IAAaA,EAAM,IAAA8pC,GAAS9pC,EAAI,MAAUqpC,IACvCrpC,CACX,aAWQkwC,EAAsC90C,EAAcC,EAAc+tC,OACtEppC,EAAqB,OvFuJgC,EAAG,MAAqB,IAxIlC,GAAW,KA0IzD,EAAG,MACG,EuFzJH,GAAI,IvFcuC,GAAW,GuFdoD,KACtGyZ,EAAY,EACZnmB,EAAgB,EAAM,KAAU,MAAM,MACtC7P,EAAQ2X,EACR1X,EAAQ2X,EACR20C,EAAeC,GAAoB,EAAAxsD,EAAGC,YACtC,OvF4JZ,GADa,EAAS,OACD,GAAT,QAjKsC,KAAW,IAAI,GuFKU4P,GAAammB,GAAS,YACjFA,EAAAA,EAAA,UvFgK2C,EAAE,MAAqB,IAzJ/B,GAAW,KA0JvC,EAAS,MAE7B,EuFlKiB,IvFM+B,GAAW,GuFL1C/1B,EAAIssD,EAAcvsD,EAAIusD,EAC1BA,EAAWC,GAAoB,EAAAxsD,EAAGC,EACtC,CACAsc,EAAMgwC,CACV,CAGA,OADW,MAAPhwC,IAAaA,EAAM,IAAA8pC,GAASV,EAAUppC,EAAI,QACvCA,CACX,aAEQiwC,EAAwB70C,EAAcC,OAC1C80C,EAAc/0C,EAAG,IAAmBC,GACpCspC,EAAevpC,EAAG,IAAoBC,GACtC,OAAOD,EAAG,IAAoB+0C,EAASxL,EAAW,EAAG,KACzD,aAEQoL,EAAsB30C,EAAciuC,SvFoKtB,EAAG,MAAsB,EuFnK3CyG,EvFzB0C,KAAW,IAAI,GuF0BzD,OAAWA,EAAW,IAAKA,EAAc,IAAMA,CACnD,uBAGkC,WvGzNI,UAsR1B,IuG5DmB,WvG1NO,SAuRA,GuG/DtC,sDApWkC9wD,GAAtC,KAAqDywD,GAAA,UAAczwD,GAClC,cACE,eAAAoxD,GACJ,gBACG,gBACE,aACH,aACP,aACiB,aACI,gBACE,gBAGzCtxD,KAAK,KAbb,aCbqCqmD,EAAwCgF,GAAkBkG,GAAA,UAAalG,GAAvE,aACd,W7J6FiC,K6JzFd,cACV,eANhC,eCqBmC,2BACA,gCACA,gCACA,gCACC,wBACA,wBACD,sBAP/B,eAvBwD,eAA5D,aCuDYmG,EAAwBC,GAC5B,GAA8B,MAA1BA,EAAA,IAzCkC,iBAyCtC,CrFmBkD,EAsLtD,GApOE,iBAgDO,GqFpBL,GAA8B,MAA1BA,EAAA,IAxC4B,sBAwChC,OrFsB+B,GAAM,IAAK,IAAK,KAAzC,EAkLV,GAlOH,qBAkOY,GqFvML,GAA8B,MAA1BA,EAAA,IAzCoF,sBAyCxF,CrFwBwB,EA+K5B,GAjOU,qBAkD2C,IqFvBjD,GAA8B,MAA1BA,EAAA,IAxCkC,sBAwCtC,6DCjDE,EAAG,qBACF,GAAU,sBACV,GAAU,8BACL,GAAU,WtFsEL,EA8KjB,GAhOD,qBAgOU,GqFrML,GAA+B,MAA3BA,EAAA,IAtCkB,cAsCtB,CrFyB2B,EA4K/B,GA/NqD,cAmDI,GqFxBrD,GAA+B,MAA3BA,EAAA,IAtCU,cAsCd,OrF0Be,GAAM,IAAK,IAAK,KADvC,EA2KI,GA5NG,aA4NM,GqFnML,GAA8B,MAA1BA,EAAA,IArCoB,aAqCxB,OrF2B0C,GAAM,QAAN,KACvC,IADc,EAwKrB,GA5NmD,YA4N1C,GqFlMT,aAEQC,EAAyBD,EAAmCpwD,EAAaswD,GAC7E,GAAc,MAAVF,EAAgB,KAEhBG,EAAQH,EAAA,IA7CE,cA8CV,GAAIG,aAAJ,GAAgB,KACZC,EAAYC,GAAa,EAAAF,EAAGD,GAC5BI,EAAgB,iBAAW,GAC3BF,EAAM,IAAME,OACZC,EAAqBD,EAAU,GAAK,GAAK,EAAQ,EACjD1wD,EAAK,MAAL,IAA4BwwD,GAC5BxwD,EAAK,MAAL,IAA+B,IAAA+/C,GAAM4Q,EAAYA,EAAYA,EAAYH,EAAM,OACnF,EACAD,EAAIH,EAAA,IApDgB,wBAqDpB,IAAepwD,EAAK,MAAL,IAAuBuwD,EAC1C,CACJ,aAEQF,EAAyBv2C,EAAas2C,EAAmCQ,EAAYN,GAC3E,MAAVF,GACAQ,EAAK,aAILC,EAA2B/2C,EAAas2C,EAAkCE,SAC9E,aAAqBx2C,GAArB,2BAEIg3C,EAA8BV,EAAkCE,OACpES,EAAY,KACZA,EAAM,OAAiB,EACvBA,EAAM,OAAgB,MAGtBP,EAAYJ,EAAA,IAhFoB,sBAiF5BI,aAAJ,IAAoBO,EAAM,IAAeN,GAAa,EAAAD,EAAOF,QAC7DU,EAAgBZ,EAAA,IAlFwE,sBAmFxF,MAAIY,GAAJ,iBAAIA,IAAoBD,EAAM,MAAeC,OAC7Ch8C,EAAYo7C,EAAA,IAlF0B,sBAsFtC,OAHIp7C,aAAA,IAAsBA,EAAM,MAAS,IACrC+7C,EAAM,MAAiC,SAAgB/7C,EAAM,MAAQA,EAAM,QAExE+7C,CACX,ChLsBQ,GACF,EAAQ,G2FNgB,QAsI9B,GAtImD,EqF9DgC,KhLgC5E,SgLJH,EAA+G,QAAD,CALxFF,CAAuB,EAAA/2C,EAAKs2C,EAAQE,GAE9D,aAsBQG,EAAiBD,EAAcF,GAC0D,OAAzFA,GAAW,EAAGE,EAAW,IAAAzQ,GAAMyQ,EAAM,MAAKA,EAAM,MAAOA,EAAM,MAAMA,EAAM,MAAQF,EAAO,eAjGtE,WrFmE8B,KqFlE9B,WrFkE8B,KqFjErB,WrFiEqB,KqFhET,eAJnD,aEPgBtG,EAAgBpF,EAAwB5gC,mBAAxCgmC,EAAgBpF,EAAwB5gC,EAAAA,UAAe,UAAKgmC,EAAQpF,EAAY5gC,EAAzB,KAA+B,0CAKxE,8BACM,mCACA,mCACD,kCACA,kCACI,sCACD,qCACE,uCACC,wCACD,sCAVpC,aALcgmC,EAAoBpF,EAA4B5gC,EAAkB5iB,GAAlE,aAAoB,aAA4B,aAAkB,YAApF,4BC4BY6vD,EAAoBC,OACxBC,ElKiEgD,KkKhEhDC,EAAS,QAAS,IAAmBF,EAAG,MAAQ,OAChDG,WAYIC,EAA8BtH,OAClCuH,EAAS,QAAS,IAAcvH,EAAO,OACvCwH,EAAS,QAAS,IAAcxH,EAAO,OAGvC,OAAO,IAAAlB,GAASyI,EAFP,QAAS,IAAWvH,EAAO,OAEZwH,EADf,QAAS,IAAWxH,EAAO,OAExC,CAlBwBsH,CAA0B,EAAAF,GACpB,EAAdC,EAAc,MAAiB,EAAdA,EAAc,MAA3C,MAAY,IAAZ,KAAK1C,EAAO,cACkB,EAAd0C,EAAc,MAAiB,EAAdA,EAAc,MAA3C,MAAY,IAAZ,KAAKI,EAAO,gBACG,UAAU9C,GAAK8C,GAAf,kBnLOuF,QAAS,IAAe,QAE1I,IAAc,EAAK,ImLRC,QAAU9C,GAAK8C,GAeo2B,InLwC53B,SmLxDgB,MAAXC,EAAAA,EAGIA,EAAK,IAASR,GAAKC,EAAS,EAAIO,GAAWA,EAAK,YAJxD,IAAY,SADhB,IAAY,GAQZ,OAAOP,CACX,aA1C4BQ,EAAgCC,EAAuBC,GAAvD,aAAgC,aAAuB,qBAS3D,IAAM,aAAN,EnJY+B,GAAiB,MARtC,GAQuD,MmJZjE,gBnJMtB,WmJNsB,KnJY+B,GAAiB,MAAU,GAAO,MmJZjE,OAAwD,CAAxD,YAT5B,aFOKhc,EAAAA,EAAgBic,EAAiBz1C,qBAAjB,aAAiB,YAAtC,uBGoJ0C,mCACK,gBACJ,oCACK,eACP,kCACK,eACL,kCACK,eACL,kCACK,eACN,iCACK,gBACL,iCACK,gBACL,iCACK,eACL,sCACA,sCAER,WpJ5FsuK,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAkB,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAK,IAAK,IAAK,IAAK,IAAiB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KoJgGp/K,WpJhGmiL,KAAK,KAAM,MAAO,KAAM,IAAK,KAAM,MAAO,OAAQ,KAAM,IAAiB,KAAM,MAAO,OAAQ,MAAO,KAAM,MAAO,OAAQ,QAAS,MAAO,KAAkB,MAAO,OAAQ,QAAS,OAAQ,MAAO,OAAQ,QAAS,SAAU,OAAQ,MAAmB,OAAQ,QAAS,SAAU,QAAS,OAAQ,QoJwEr2L,sDA9IA01C,EACAC,GAFJ,mBACuE,sBACE,QACrEC,GAAA,UAAwB,0BAFxB,aACA,aAKyB,cAIE,eAIA,eAEI,eAAAC,GAAiBvzD,KAAM,GAAI,IACnC,eAAAwzD,GAAWxzD,MACP,eAAAyzD,GAAezzD,MACX,aAEH,WAAAyhD,GACxB,yBACA,yBACA,uBACA,uBACA,uBACA,sBACA,sBACA,uBA9BR,aCgCYiS,EAAgBC,EAAyBpB,EAAmBqB,aAI5DC,EAAsBxuC,EAAcktC,GAC+E,UAApHltC,IAAQ,SAAY,UAAwByuC,GAAuB,aAElEC,SAA6F,OAA3D,QAAM,SAAsB,UAuG5D,wBAvG4D,SAA+B,CAAD,CAFpBA,CAAyB,KAAM,MAASxB,EAAE,EAJlHsB,CAAkB,EAAAF,EAAiBpB,IAAK,QAAM,IAAcqB,EAAM,MAAY,QACtF,aAOQE,WACgG,OAAjG,QAAM,SAAuB,QAuGT,wBAvGS,qBAwGlB,wBAxGqD,eAAlE,CAAkG,aAsC/FE,GAAqF,OAAtD,QAAM,IAA4C,GAAjC,QAAM,IAAe,SAAe,aAgBpFC,aAKAC,GAG6E,OAH7B,IAAjB,SACd,IAAjB,UAAsC,IAAf,SAAmC,IAAf,UAC1B,IAAjB,UAAsC,IAAf,SAAmC,IAAf,SAC5B,IAAf,SAAmC,IAAf,SAAmC,IAAf,SAAmC,IAAf,QAAgB,EAP5EA,CAAuB,aAYvBC,OACJC,EAAa,QAAS,MACtBC,EAAa,QAAS,MACtBC,EAAc,QAAS,MAA0B,EACjDC,EpK7BgD,KoK8BtC,IAAV,MAAa,IAAb,KAAK77C,EAAK,UAAmB67C,EAAU,EACnC,QAAM,IAAe,IAAA9O,GAAgB,GAAP4O,EAAmB37C,EAAI47C,GAAUF,EAAQ,WAD3E,GAAa,OAEbI,EAAe,QAAM,IAAqBD,EAArB,MACrB,QAAa,EAAI,IAAAE,GAAY,QAAQD,EA3HvC,uBA2H6EJ,GAC/E,CArBkCD,CAAqB,YAS/CO,GACkG,OAArF,IAAjB,SAAuC,IAAjB,SAAsB,SAAe,GAAsB,IAAjB,SAAsB,SAAe,EATjGA,CAAuB,aAsBvBC,OACJP,EAAa,QAAS,MACtBC,EAAa,QAAS,MACtBE,EpKvCgD,KoKwChDK,EAAc,QAAS,MAA2B,EACxC,IAAV,MAAa,IAAb,KAAKl8C,EAAK,UAAmB67C,EAAU,EACnC,QAAM,IAAe,IAAA9O,GAAS4O,EAAe,GAAPD,EAAmB17C,EAAIk8C,GAAU,WAD3E,GAAa,OAEbC,EAAgB,QAAM,IAAqBN,EAArB,MACtB,QAAa,EAAI,IAAAE,GAAY,QAAQI,EAxIqB,wBAwImBR,GACjF,CA/BkCM,CAAsB,EACxD,aAlGAtO,EAAyByO,EAA8BC,EAA8BC,EACrFC,EAAoCC,YADwE,cAC3E,aAAkC,IACnEC,GAAA,UAAsB9O,EAAOA,EAAM,IAAqByO,IAF/B,aAA8B,aACvD,aAAoC,aAEjB,kBAAe,WAAS,MAAkB,WAAS,MAAmB,WAAUE,GACpD,gBACJ,gBACT,aAPtC,aCoIYI,EAA0B9K,EAAiBC,GAC/C,GAAID,GAAsB,GAAiB,OAAO,KAAiB,MAAkB,IACrF,GAAIA,GAAsB,GAAiB,OAAO,KAAiB,MAAkB,OAErFwI,EAAU,MAAsBvI,GAChC,OAAO,KAAiB,MAAkB,MAAmBD,IAAwB,IAA9E,GACKwI,EAAK,EAAI,KAAMA,EAAM,EAAb,GAAsBA,EAAM,EAAxC,EACZ,eAhJoC,cACF,eACE,aACC,aACC,6BACA,8BACD,8BACA,8BACA,6BATzC,aC4IYuC,EAAaC,EAAiBxC,EAAU9C,EAASuF,OACrD3B,WA4BI4B,EAAYC,SjGwLQ,EAE9B,QAAQ,MAnBwC,KAAW,IAAI,GiGvKgC,OAAXC,GAA3C,IAAkC,GAA7B,GAA+C,EAAC,CA5BvCF,CAAQ,EAzDxC,MAyDDD,EAAyCzC,EAAkB9C,GAC3E3uD,EAAW,QAAM,IAAqBi0D,EAAO1B,EAAO,SACpDvyD,EAAK,MAAL,IAAoC,SACpCA,EAAK,IA9DZ,aA8D4Ck0D,GACrCl0D,EAAK,IA3DG,mBA2DqC,GAAN,UACvCA,EAAK,IA9DgD,UA8DnB2uD,EAAM,SACxC3uD,EAAK,IA9DgB,UA8DayxD,EAAM,SACxC,QAAa,EAAI,GAAY,QAAQzxD,EAAM,gBAC/C,aAEQs0D,EAAeC,EAAyBC,GACvB,MAAjBD,GAAyC,MAAhBC,GACzB,KAAW,KAAqBD,GAAgB,KAAqBC,GAE7E,aACQC,EAAyBC,EAA0BC,GACjC,MAAlBD,GAAwB,KAAWC,EAAc,KAAqBD,GAC9E,aAEQJ,EAAeM,EAAsBC,OACzCC,EAAY,QAAM,IAAqBC,GAAc,CAAAH,EAAYC,IAA/C,MAClB,QAAa,EAAI,IAAAzB,GAAY,QAAQ0B,WASjCE,SAAyF,OAAxD,MAAT,gBAxCmD,oCAE9E,4BAsC4F,CAAD,CAThDA,CAAY,GAAG,QAAO,OACtE,aAGQC,EAAcC,EAAiBC,EAAiBC,EAAYC,EAAYC,EAAYC,GACT,OAAjE,OAAUL,EAAO,MAAGA,EAAO,MAAGC,EAAO,MAAGA,EAAO,MAAGC,EAAIC,EAAIC,EAAIC,EAAE,aAM1EC,EAAyBvzD,EAAWC,OACxC+xD,EAAoB,MAAOhyD,EAAEC,GAC7B,OAAO,QAAM,IAAe,IAAAkiD,GAAS6P,EAAM,MAAUA,EAAM,MAAW,GAC1E,aAEQuB,EAAyBvB,GAAsF,OAApE,QAAM,IAAe,IAAA7P,GAAS6P,EAAM,MAAUA,EAAM,MAAW,GAAI,aAE3FwB,EAAuBC,EAAuBC,EAAsBC,GAApE,aAAuB,aAAuB,aAAsB,YAA/F,eAG2B,eACE,yBAF7B,aA3KA5Q,EAAyBgF,EAAgByJ,EAAkBpjC,GAC5DyjC,GAAA,UAAsB9O,EAAOgF,GAD+B,aAE1B,kBAAQyJ,EAAS,OACvB,eAAAoC,GACf,MAAWpC,EAAS,MAAaA,EAAS,MAAc,YACxD,MAAWA,EAAS,MAAyB,KAAR,WAAYA,EAAS,MAAwC,GAAtBA,EAAS,MAA0B,OAA6B,YAC5I,MAAWA,EAAS,MAAyB,KAAR,WAAYA,EAAS,MAAwC,GAAtBA,EAAS,MAA0B,OAA6B,YAC5I,MAAWA,EAAS,MAAaA,EAAS,MAAc,YARxE,aCsBYqC,EAAiB5B,GACrB,GAAiB,MAAbA,U3KixDQ,EA7vDA,QA6vDA,WAAhB,KAAK9d,EAAW,M2KjxD0D,QAAQ,GAsE6svD,E3K2sD3vvD,C2KhxDhC,GAAiB,MAAb8d,U3KgxDQ,EAxvDsB,QAwvDtB,WAAhB,KAAK9d,EAAW,M2KhxD0D,QAAQ,GAqE6svD,E3K2sD3vvD,C2K/wDhC,QAAY,IAChB,aAcQic,EAAgB6B,EAAmB3B,EAActwD,EAAWC,OACpD,EAAAqwD,EAAM,IAAqB,oBAA3B,WAAgD,cAA5DliC,EAAY,EACR,GAAa,MAAb6jC,EAAiC,KACpB,EAAA3B,EAAM,IAAwB,WAA9B,WAA8C,cAA3DwD,EAAa,EACb9B,EAAoB,MAAOhyD,EAAE8zD,GAC7B,YAUAC,EAAqB/B,EAAgB8B,GACuB,QAAjD,GAAdA,EAAS,OAA8B,OAAQ9B,EAAM,OAAS,CAXvD+B,CAAiB,EAAA/B,EAAO8B,GAAS,UACrCxD,EAAM,IAAW,QAAM,IAAe,IAAAnO,GAAS6P,EAAM,MAAUA,EAAM,MAAW,GAAM1B,EAAM,OAChG,MAAW,GAAa,MAAb2B,EAAiC,KAC3B,EAAA3B,EAAM,IAAwB,WAA9B,WAA8C,cAA3D0D,EAAa,EACbhC,EAAoB,MAAOgC,EAAO/zD,GAClCqwD,EAAM,IAAW,QAAM,IAAe,IAAAnO,GAAS,EAAM,MAAU,EAAM,MAAW,GAAMmO,EAAM,OAChG,CACA,QAAM,IAAcA,WA2BhB2D,EAAc7lC,GAAqE,OAA1C,MAATA,EAAe,aAAqB,YAAc,CA3B3D6lC,CAAU,EAAA7lC,GACzC,aAgBQ8lC,EAAgBjF,EAAmBqB,EAAcliC,GACU,iBAE3D+lC,EAAiB7D,EAAcliC,SACnC,GAAS,IAATA,KAAA,WAAuB,EAAAkiC,EAAM,IAAgB,sBAA/BliC,GAAS,QAA2C,EAA3C,GAA6C,QAAD,CAHnE+lC,CAAa,EAAA7D,EAAOliC,aAKhBgmC,EAAWnF,EAAmBpiC,EAAoBuB,GAElC,OAFgD6gC,EAAG,MAAY,IACnFA,EAAG,MAAM,IAAsBpiC,EAAS,MAAUA,EAAS,MAAW,EAAK,gBAKvEwnC,EAAkBjmC,GAA2F,OAAhE,MAATA,EAAe,QAAM,MAA0B,QAAM,KAAmB,CAJhHimC,CAAc,EAAAjmC,EAAK,CAPWgmC,CAAO,EAAAnF,EAAIqB,EAAM,MAAUliC,EAAK,eAcnC,wBACI,eACA,eACP,qBACA,qBACK,8BACD,wBACA,uBARhC,aAjGiB20B,GAAA,aACK,W7F2EkC,K6F1ElC,W7F0EkC,K6FzE9B,WvK2F0B,IuK9FxD,aCQ0BA,GAA0B8O,GAAA,UAAsB9O,EAAO,KAAS,MAA1F,eCwIqC,eACA,cAGa,mCAGD,kCAGD,iCAGD,gCAGD,+BAGD,8BACX,cArB9B,aAhIqCnmD,EAAc03D,EAAkBC,GAAwBvE,GAAA,UAAuBpzD,S1La5D,OAAsB,M0L2BpE,EAtCN,MAAmB03D,EAsCb,EArCN,IAAqBC,GAFoC,W1L2DtD,E0LtDqB,WAAApW,GACxB,yBACA,uBACA,sBACA,qBACA,oBACA,oBAZR,aC6DYqW,EAA0BvF,WAEnB,WAGPwF,EAAoBxF,OACxByF,E1KYgD,K0KXhDvF,EAASF,EAAG,MAAQ,MAEpBG,WA8BIC,EAA8BtH,OAClC4M,EAA2B,KAC3B,GAAI5M,EAAO,MAAwB,IAAMA,EAAO,OAAyB,GAAI,KACzEgJ,EAA0C6D,GAA7B7M,EAAO,OAAqC,IACzD8M,EAA0C,GAA7B9M,EAAO,MAAmC,IACvD+M,EAAiB,MACb/D,EAAQhJ,EAAO,MAAwB8M,EAAS9D,EAAQhJ,EAAO,OAEnEuH,EAASyF,GAAc,EAAAD,EAAW,OAClCvF,EAASwF,GAAc,EAAAD,EAAW,OAClCE,EAASC,GAAW,EAAAH,EAAW,OAC/BI,EAASD,GAAW,EAAAH,EAAW,OAE3BE,GAAM,IAAME,GAAM,IAAY,KAAN3F,IAAUA,EAAK,IACvCyF,GAAM,IAAME,GAAM,KACR,KAAN5F,IAAUA,EAAK,IACT,KAANC,IAAUA,EAAK,IACT,KAAND,IAAUA,EAAK,IACT,KAANC,IAAUA,EAAK,IACT,KAAND,IAAUA,EAAK,IACT,KAANC,IAAUA,EAAK,KAEvBoF,EAAY,IAAA9N,GAASyI,EAAI0F,EAAIzF,EAAI2F,EACrC,CACA,OAAOP,CACX,CAvDwB,GAA0BxF,GAC9C,GAAqB,MAAjBC,EAAuB,KACG,EAAdA,EAAc,MAAiB,EAAdA,EAAc,MAA3C,MAAY,IAAZ,KAAK1C,EAAO,cACkB,EAAd0C,EAAc,MAAiB,EAAdA,EAAc,MAA3C,MAAY,IAAZ,KAAKI,EAAO,EACR,GADQ,QACG,KAAP9C,GAAoB,KAAP8C,GAAoB,KAAPA,GAAoB,KAAPA,EAAW,OAEvC,UAAU9C,GAAK8C,GAAf,kB3LkC/B,OAAa,EAAM,KACd,EAAK,I2LnC+F,QAAU9C,GAAK8C,GA9B3G,I3L6BN,S2LCwB,MAAXp+C,EAAAA,EACIA,EAAK,IAAS69C,GAAKyF,EAAS,EAAItjD,GAAWA,EAAK,KACxD,QALJ,IAAY,SADhB,IAAY,EAShB,CAgBA,OAdI+9C,EAAG,MAAwB,KAEP,MAAhB,QAAU,KAAY,QAAU,GAAK,IAAAgG,GAAa,EAAM,MAAY,IAAO,IAAO,EAAK,OACvE,MAAhB,QAAU,KAAY,QAAU,GAAK,IAAAA,GAAa,EAAM,MAAY,GAAM,EAAK,EAAK,OACxFT,EAAS,EAAgB,GAAZ,QAAU,KACvBA,EAAS,EAAgB,GAAZ,QAAU,MAEvBvF,EAAG,OAAyB,KAER,MAAhB,QAAU,KAAY,QAAU,GAAK,IAAAgG,GAAa,EAAM,OAAa,IAAO,IAAO,GAAM,OACzE,MAAhB,QAAU,KAAY,QAAU,GAAK,IAAAA,GAAa,EAAM,OAAa,GAAM,EAAK,GAAM,OAC1FT,EAAS,EAAgB,GAAZ,QAAU,KACvBA,EAAS,EAAgB,GAAZ,QAAU,MAEpBA,CACX,CApCmBD,CAAgB,EAAAxF,GACpB,iBAAa,IAAkBA,EAC9C,aA+DQ8F,EAAkB9N,UrGmGvB,EAAsB,KAAO,IA4DgB,KAAW,MAAM,GqG/J8C,OAAhBmO,GAAR,GAAzC,GAA8D,GAAE,aAEtGH,EAAejO,UrGoGqB,EAE3C,IAAM,IAuDyC,KAAW,MAAM,GqG7JwC,OAAhBoO,GAAR,GAAvC,GAA4D,GAAE,aAEhGC,EAAkB3I,EAAU8C,OAChCuB,GAAc,GAAK,GAAArE,EAAM,GAAzBqE,EACA8D,EAAa9D,GAAuB,KAAVA,EAAc,EAAO,IAA/C8D,EACA/D,GAAc,IAAM,GAAAtB,EAAM,GAA1BsB,EACAwE,EAAaxE,EAAS,EAAtBwE,EAsBA,OApBW,KAAP5I,GAAoB,KAAP8C,EACb8F,EAAAA,EAAU,EAAV,EAA4B,KAAP5I,GAAoB,KAAP8C,EAClCsB,EAAAA,EAAU,EAAV,EAA4B,KAAPpE,GAAoB,KAAP8C,EAClC8F,EAAAA,EAAU,EAAV,EAA4B,KAAP5I,GAAoB,KAAP8C,GAClCsB,EAAAA,EAAU,EAAV,EACAwE,EAAAA,EAAU,EAAV,GACc,KAAP5I,GAAoB,KAAP8C,GACpBsB,EAAAA,EAAU,EAAV,EACAwE,EAAAA,EAAU,EAAV,GACc,KAAP5I,GAAoB,KAAP8C,GACpBsB,EAAAA,EAAU,EAAV,EACAwE,EAAAA,EAAU,EAAV,GACc,KAAP5I,GAAoB,KAAP8C,GACpBsB,EAAAA,EAAU,EAAV,EACAwE,EAAAA,EAAU,EAAV,GACc,KAAP5I,GAAoB,KAAP8C,GACpBsB,EAAAA,EAAU,EAAV,EACAwE,EAAAA,EAAU,EAAV,GACc,KAAP5I,GAAoB,KAAP8C,IACpBsB,EAAAA,EAAU,EAAV,GACG,MAAYC,EAAmBD,EAAoB+D,EAAS9D,EAA5D,EAAiFuE,EAASxE,EAA1F,EACX,eAGyC,eACC,eAGM,qCAGC,qCACF,cAT/C,eAtK2ByE,GAAA,UAA2B,iBAAiB,IAAQ,aACvD,M3JU+B,GAAiB,M2JV1C,I3JU2D,M2JVjE,EAAM,IAAN,K3JU+B,GAAiB,MAA5B,IAA6C,M2JVjE,qBACA,W3JS+B,GAAiB,MAG5D,GAH6E,M2JRlE,eAAAC,GAAa94D,Y3L+CL,GAAc,2BAEtC,4B2LXuB,EATuE,EAAa,gBAAN,OAAf,W3LkCtF,C2LlEX,aCgJY+4D,EAAkBC,OAEtBC,EAAqB,SAAU,sBAC/BC,EAAuB,KAEnBF,EAAG,IAAiB,IAAAvT,GAASuT,EAAG,MAAS,MAAUA,EAAG,MAAS,MAAW,IACtEE,EAAiB,OAAWF,EAAG,MAAS,MAAUA,EAAG,MAAS,OAClEA,EAAG,IAAiBA,EAAG,OAAOE,EAAiB,OACA,GAA5B,GAAfF,EAAG,MAAG,MAAqBC,IACiB,GAA5B,GAAhBD,EAAG,MAAG,MAAsBC,KAEhCD,EAAG,IAAiBA,EAAG,OAAOE,EAAiB,OACA,GAA5B,GAAfF,EAAG,MAAG,MAAqBC,IACkB,GAA7B,GAAhBD,EAAG,MAAG,MAAuBC,KAEjCD,EAAG,IAAiBA,EAAG,OAAOE,EAAiB,OACC,GAA7B,GAAfF,EAAG,MAAG,MAAsBC,IACgB,GAA5B,GAAhBD,EAAG,MAAG,MAAsBC,KAChCD,EAAG,IAAiBA,EAAG,SAAOE,EAAiB,OACC,GAA7B,GAAfF,EAAG,MAAG,MAAsBC,IACiB,GAA7B,GAAhBD,EAAG,MAAG,MAAuBC,MAIzB,MAARC,IAAcF,EAAA,MpIoCS,EAAK,WAgCwD,UA/B/F,EAAG,GoIpCA,eAG8B,eACC,eACa,cAH5C,aAxKe3S,EAA2BgF,GAAkB8J,GAAA,UAAsB9O,EAAOgF,WAC7EA,EAAO,MAqHb,IApHKA,EAAO,OAgHe,GAjHrB,aAKgC,oBAIxC6N,EAAqB,OAAW7N,EAAO,MAAkBA,EAAO,OAChE,GAAI,WACA,WpIWkC,EAAK,WAkN6C,UAhN1F,EAAG,GoIZG,WAAiBA,EAAO,MAAwB,EAAnC,UACb,WAAO,MACJ,CACH,WpIaS,EACpB,WA2M+F,UA3M1E,EACpB,OoIdU8N,EAAmB,OAAW9N,EAAO,MAAkBA,EAAO,OAC9D,WAAa8N,EAAI,MACjB,WAAOA,EAAI,KACf,CApBR,6B5JqE4iG,kBAAG,GAAI,OAAgB,kBAAG,GAAI,OAAgB,kBAAG,GAAI,OAAgB,mBAAI,GAAI,K6JkCjlG,W7JlCy/F,SAAwG,mBAAI,GAAI,M6JuC3mG,iCAPlC,sDAzGwB9S,GAA5B,KAAwD8O,GAAA,UAAsB9O,EAAO,KAArF,eCMmB,eACA,aACA,eACA,aACqB,gBACA,eANpC,aAmBiB+S,OAAA,4CAA+B,aAgIxCC,EAAmB9G,EAAmB+C,OAC1CgE,EAA0B,QAAM,IAA2B/G,GAC3D,OAAOA,EAAG,MAAY,IAAW+C,GAA+B,EAAtBgE,CAC9C,eA8BwC,eACA,eACQ,YAHhD,aApLiCjT,GAAA,aAUf,eACE,eAKT,YAhBf,aCJIA,EAAkCkT,EAAclL,EAAwBmL,EACxEC,EAAmBC,EAAoB7iC,GACxC8iC,GAAA,UAAgBtT,EAAOkT,EAASlL,EAAYmL,EAAeC,EAAWC,EAAY7iC,GACpC,eAJjD,aCoBiC+iC,GAAoG,SAA5F,MAAiB,UAAO,MAAiB,UAAO,MAAiB,WAAO,MAAiB,QAAE,aAMxHC,OACJC,EAAcrY,GAAO,SAAI,QAAI,QAAI,UACjC,aAkBIsY,EAA2BC,WAC/B94C,EAAqB,KACL,EAAA84C,EAAA,WAAhB,KAAKC,EAAW,MACZ,GAAW,MAAP/4C,EAAa,O1GwDR,EAAI,QAiP0B,GAAW,KAhPpC,EACrB,M0GvDW,GAAI,I1GsS+B,GAAW,G0GtS0B,O1G0D7E,EACR,MAAsB,EAAQ,M0G1Dbg5C,E1GwR8B,KAAW,IAAI,G0GvR7C,GAAIA,EAAQ,KAAOA,EAAQ,IAAK,OAAO,CAC3C,CACJ,CACAh5C,EAAM+4C,CACV,CACA,OAAO,CACX,CAhCSF,CAAuB,EAAAD,GAAU,OAAOA,YAE7CK,EAAc,EACC,EAAAL,EAAA,WAAf,KAAKM,EAAU,Q1GmCb,EAAO,M0GnCe,GAAuC,M1G8SrB,KAAW,IAAI,G0G9SjC,O1GmC+B,EAC7D,M0GpC4ED,E1G2T3B,GAAW,G0G3TyD,CAC/G,GAAe,IAAXA,EAAgB,OAAOL,U1GoClC,QAAG,M0GlCQ,GAA+B,M1G2SO,KAAW,IAAI,G0G3SrD,O1GkC8B,QAAG,UAsRM,GAAW,K0GxTsBK,WAAhC,EAAxC,IACA,QAAK,IAAA1U,GAAS,QAAG,MAAU,GAAC,QAAG,OAAW,QAAG,gB1GmC7C,QAAG,M0GlCH,GAA+B,M1GySO,KAAW,IAAI,G0GzSrD,O1GmCT,QAAG,UAmR6C,GAAW,K0GtTsB0U,WAAhC,EAAxC,IACA,QAAK,IAAA1U,GAAS,QAAG,MAAU,GAAC,QAAG,OAAW,QAAG,gB1GqCzC,QAAG,M0GpCP,GAA+B,M1GuSO,KAAW,IAAI,G0GvSrD,O1GsCa,QAAG,UA8QuB,GAAW,K0GpTsB0U,WAAhC,EAAxC,IACA,QAAK,IAAA1U,GAAS,QAAG,MAAU,GAAC,QAAG,OAAW,QAAG,c1G0CzD,QAAG,M0GzCS,GAA+B,M1GqSO,KAAW,IAAI,G0GrSrD,O1G0CW,QAAG,UAwQyB,GAAW,K0GlTsB0U,WAAhC,EAG5C,OAHI,IACA,QAAK,IAAA1U,GAAS,QAAG,MAAU,GAAC,QAAG,OAAW,QAAG,QAE1ChE,GAAO,SAAI,QAAI,QAAI,SAC9B,eAuDqC,cADrC,aA9FA4E,EAAkCkT,EAAkBlL,EACpDmL,EAA2BC,EAAuBC,EAAwB7iC,GAC3Es+B,GAAA,UAAsB9O,EAAO,MAFM,aAAkB,aACpD,aAA2B,aAAuB,aAAwB,aAEjD,WAANA,EAAM,IAAgB,WAAS,WAAY,WAAY,WAAO,EAAG,WAAa,WAAO,GAEzF,WAANA,EAAM,IAAgB,WAAS,WAAY,WAAW,YAChD,WAANA,EAAM,IAAgB,WAAS,WAAY,WAAY,WAAM,YACvD,WAANA,EAAM,IAAgB,WAAS,WAAY,WAAW,WAAa,YAC7D,WAANA,EAAM,IAAgB,WAAS,WAAY,WAAY,WAAM,WAAa,2BAkD3EgU,EAAmBL,WACvB3F,EAAAA,KAAa,MACbD,EAAAA,KAAa,MACb+D,EAAAA,KAAa,MACbS,EAAAA,KAAa,MACH,EAAAoB,EAAA,WAAV,KAAKjR,EAAK,MACNuR,EAAUvR,EAAE,MACRuR,EAAgBjG,IAAkBA,EAASiG,GAC3CA,EAAgBnC,IAAkBA,EAASmC,OAC/CC,EAAUxR,EAAE,MACRwR,EAAgBnG,IAAkBA,EAASmG,GAC3CA,EAAgB3B,IAAkBA,EAAS2B,EACnD,CACA,OAAO,IAAAC,GAAOnG,EAAQ8D,EAAQ/D,EAAQwE,EAC1C,ChMlDkC,GAAe,UgMbgC,UAwBhF,EAxBkG,IAAU,YAAwB,WAAO,IhMuDrI,GgMvDuH,WhMuDvH,EgMtDuB,WAAf,WAAe,IAAS,MACrB,YAAC,SASK,aAAC,SAAiB,aAAQ,SAAiB,aAAQ,SAAiB,aAAQ,SAAiB,YArBzH,aC2BY6B,EAA0BlI,OAAqB,UAAmC,OAAJ,KAAhB,MAAf,EAAe,KAAf,EAAe,IAASA,GAAU,aAEjFmI,EAAyBnI,OAAqB,UAAkC,OAAJ,KAAhB,MAAd,EAAc,KAAd,EAAc,IAASA,GAAU,aA3BvFlM,EAAkCkT,EAAclL,EAAwBmL,EACxEC,EAAmBC,EAAoB7iC,GACxC8iC,GAAA,UAAgBtT,EAAOkT,EAASlL,EAAYmL,EAAeC,EAAWC,EAAY7iC,GAC7D,gBACgB,gBACD,gBACM,eAP7C,eCZkC85B,GAAA,UAAe,qBAChB,cACN,cAIV,WlKM0B,QAAM,EAAM,EAAM,GAA4B,OAAM,EAAM,EAAM,GAClF,OAAM,EAAM,EAAM,GAA8B,OACxE,EACE,EAAM,GAA+B,OAAM,EAAM,EAClD,IkKAyB,cAIA,aAIJ,4BAAW,EAxBlC,eCKqCE,GAAA,WACH,WnKuBU,yVA+BzC,qoBmKX+B,WnKY2B,eAE7D,kBmKZoB,gBAC2B,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACC,sBACE,sBAClB,4BAAW,GAxD5C,eCUI,aAFAxF,EAAwB0E,EAAcC,EAAUC,GACjD0K,GAAA,UAAUtP,EAAQ0E,EAAOC,EAAKC,EAFjC,aCGY2K,EAASrQ,GAAyD,OAApCA,EAAsB,KAAS,GAAI,aAEjEsQ,EAASvQ,S/GoBlB,GAFyE,KAJ1B,KAAW,IAAI,KAOhD,GAAT,KAHgE,EAExD,EAfkC,KAAW,IAAI,G+GLqD,OAA7E,E/GiOQ,KAAW,IAAI,G+GjO6C,MAAM,CAAE,aAEzGwQ,EAAcC,GAAkE,OAA9C,QAA2BA,CAAkB,aAE/EC,EAAcD,GAAiE,OAA7C,QAA0BA,CAAkB,eAEtF,aApBAE,EAAkCC,EAClC1P,EAAoCC,aADP,EAAD,WAAkC,kBAClC,sBAAoC,QACjE+O,GAAA,UAAO,OAAaS,GAAgB,OAAaC,GAAgB1P,EAAcC,GAF9E,aAAkC,YADtC,8BCII,aAJAvrD,EAAsBmwD,YAAN,gBAAsD,OACvE8K,GAAA,UAAgBj7D,EAAMmwD,EAFzB,aCDqC+K,EAA0BC,GAAsBC,GAAA,UAAkBF,EAAaC,EAApH,eCWiC,gBAD7B,aAZAjM,EACAO,EACA4L,EACAr7D,EACAmwD,YAHoC,wBACE,WACtB,gBACgC,OAChDmL,GAAA,UAAwBt7D,EAAMmwD,GAL9B,aACA,aACA,aAI2B,gBAP/B,aCiBQoL,EACAC,EACAC,0CAE+B,yBADb,uBAhBW,mBACE,mBACF,iBACA,iBACA,iBACA,iBACJ,oBACG,mBARpC,2BC+LI,sQAtMJC,EAAA17D,EAAAm2B,EAAAwlC,EAAAC,EAAA11D,EAAA21D,EAAAC,mBAAAJ,EAAA17D,EAAAm2B,EAAAwlC,EAAAC,EAAA11D,EAAA21D,EAAAC,EAAAA,UAsMI,iJAMA,qSA5MJJ,EAAAK,EAAAC,EAAAF,mBAAAJ,EAAAK,EAAAC,EAAAF,EAAAA,UA4MI,mGACoBC,EAAkCC,GADtD,KACoB,aAAkC,YADtD,aA5KsBC,gCAAwC,QAAaxL,GAAA,UAAe,aAC7D,cAIR,WAAAwL,EAQY,yBAAuB,OAM1C,eAIE,cAIM,gBACoB,sBACjB,aACW,gBACD,WApCT,YAqCS,WAvC9B,OAwCiC,aAIV,cACH,eACY,sBACP,4BAAW,EAxC7C,eCrB8BtL,GAAA,WACI,W3K+DjB,i+CAcmN,4gB2KVlM,W3KUgQ,gB2KT/O,sBACF,sBACO,sBACH,sBACG,sBAChC,4BAAW,GA1EnC,eCyBiC,sBAD7B,aAjBAzB,EAAqCC,EAAmCC,EACxEP,EAA8BC,GAC/BoN,GAAA,UAAuBrN,EAAeC,GAFrC,aAAqC,aAAmC,aAG7C,sBAJ/B,aCHII,EAIAC,EAIAC,EAIA+M,YAA0C,cAZ1C,aAIA,aAIA,aAIA,aAE2B,sBAlB/B,anD8CYC,gBAE+B,sBADxB,eAfc,gBAD7B,aA1BAlN,EAAqCC,EAAmCC,EACxEP,EAA8BC,GAC/BoN,GAAA,UAAuBrN,EAAeC,GAFrC,aAAqC,aAAmC,aAG7C,gBAJ/B,eoDQiC,gBAD7B,aAdAI,EACAmN,EACAC,EACAt8D,EACAmwD,YADgB,gBACwB,OACxC8K,GAAA,UAAgBj7D,EAAMmwD,GALtB,aACA,aACA,aAI2B,gBAP/B,aCGIjB,EAIAqN,GAJA,aAIA,aAKkB,mBAIQ,gBAIF,uBAIG,gBAIP,cAIM,eAjC9B,aC2DoBC,EAA0BC,EAA1B5W,kBAAqE,KAErF,OAF6D6W,GAAY,YAAqB,mBAAAC,EAAA9W,oCAAjC,EAE7D,aAEQ+W,EACJ1N,EAAwBmN,EAAyBQ,EAA2B78D,anM6/C5D,KA4PJ,EA3sDpB,EA2sDoB,WAAhB,KApPqB,EAoPL,MmMvvDqD,MnMmgD5B,MAApB,Gb76C68+C,EAAY,EAAtC,EaiqDp6+C,CmMrvDnC,OAHG,IAAA88D,GACA5N,EAAgBmN,EAAwDU,GnMogDrE,EmMpgDmF,KACtF,MAAA/8D,EAAkB+8D,GAAVF,EAAwB,IAAd,YAAkB,IAApC78D,WAGIg9D,EAA0BH,OAEA,EAAbA,EAAA,GAAU,GAAG,MAAY,QAAZ,EAAY,KAAZ,EAAY,MAAc,QAAd,EAAc,KAAd,EAAc,MAAxDI,EAAiE,MAAT,EAAS,KAAT,EAAS,MzM1CrE,KAwG0B,MAAd,GAAsB,GACtC,EACM,KA1GU,KACR78D,EyM2CI,OACK,kBAAmB,qBACnB,6DzM5CT,MAAM,GAAiC,GAAR,GACnC,KyM8CI88D,EAAqB,MAAkCL,GACvDM,EAAqB,MAAqCN,GAC1D,OAAO,IAAAzB,GAAkB,GAAe8B,ICgDhCE,EDhD0DD,WCgD1DC,EAAAA,UAAyB,GACjCA,EAAO,MACPA,EAAO,MACPA,EAAO,MACPA,EAAO,MACPA,EAAO,MACPA,EAAO,MACPA,EAAO,MAP0B,0BAAzBA,CD/CZ,CAf4DJ,CAAsB,EAAAH,GAClF,aA9CsBQ,SEAwB,MlNkIo+Y,MgNlIh9Y,OA6BT,EA7BjB,MEiYhC,QlNzUD,EkNyU2C,KFjYgB,eAqCxBC,EAAAA,4CAQAC,GAAS,OAAHA,EAAG,KAAM,aA6B6BC,OAAK,EAAAA,EAAE,MAAF,eAAU,GAAV,CAAa,aAhExG,EACItO,EAAwBqN,EAA0BF,EAAiC1rD,EAD/E,gGAkBR,EAA4Cu+C,EAA5B,mEA9B2B,cACN,WAAA3N,GAAQ,aAAa,YAAa,aAAc,YAAa,cAChF,iBAAI,GAH1B,sDGkCgB6b,mBAAAA,EAAAA,UAAyB,UAAKA,EAAO,MAAgBA,EAAO,MAAYA,EAAO,MAAYA,EAAO,OAC1G,QAAmBA,EAAO,MAC1B,QAAcA,EAAO,MACrB,QAAgBA,EAAO,MACvB,QAAaA,EAAO,mCA5CxBlO,EAKAuO,EAKAlB,EAIAmB,GAdA,aAKA,aAKA,aAIA,aAKwB,uBAIG,gBAIP,cAIM,gBAgBC,sBAnD/B,eCQiC,iBAD7B,aAdAxO,EACAmN,EACAC,EACAt8D,EACAmwD,YADgB,gBACwB,OACxC8K,GAAA,UAAgBj7D,EAAMmwD,GALtB,aACA,aACA,aAI2B,kBAEE,aATjC,aCmEoBwN,EAA2BlB,EAA3B5W,kBAAsE,KAEtF,OAF8D6W,GAAY,YAAqB,mBAAAC,EAAA9W,oCAAjC,EAE9D,aAEQ+X,EACJ1O,EAAwBmN,EAAyBwB,EAAsB79D,GAG1E,OAFG,IAAA89D,GACA5O,EAAgBmN,EAAiBwB,EAAU,MAAY,MAAA79D,EAAQ69D,EAAU,MAAlB79D,WAGnD+9D,EAA2BF,OAEX,WAgEhBG,EAAqCC,OAEnB,EAAAA,EAAA,kBAAtB,OAAKpP,EAAiB,MAEI,OAAMA,EAAc,WACrC,oCAAiC,kDAAiD,YAClF,gCAA+B,gBACxB,SAAS,MAHrBqP,EAAAA,EAKAC,EpMxD4C,KoMyD5CC,EAAW,EACXC,EAAW,EACXC,EAAuB,EACvB5S,EAAgB,EAChBC,EAAiB,EACjBH,EAAkB,EAClBC,EAAmB,EACnB8S,EAAqB,EACrBC,EAAoB,EACpBC,EAA8B,KAEX,EAAA5P,EAAc,MAAd,kBAAnB,KAAK6P,EAAc,MAEf,GAAsB,MAAlBD,GAA0BC,EAAW,QAAiBD,EAA1D,OvMyEsD,EAAW,MuMxEjEE,EC/J4B,GAuBggP,QxMyzCn9O,GAAM,EAA/B,GuMhrChD,GAA0B,IAAtBA,EAAc,OAGD,IAAbjT,GAAkBA,IAAagT,EAAW,OAC5B,IAAd/S,GAAmBA,IAAc+S,EAAW,OAAhD,CAGA,GAAqB,IAAjBF,GAAsB,KAAIA,KAAiBE,EAAW,MAAa,QACvE,GAAsB,IAAlBH,GAAuB,KAAIA,KAAkBG,EAAW,MAAc,QAG1E,GAAIP,EAAa,KAAW,CACxB,IACQD,GACAE,EAAwBQ,GAAjBD,EAAA,GAAc,IACrBN,EAAwBO,GAAjBD,EAAA,GAAc,MAErBP,EAAwBQ,GAAjBD,EAAA,GAAc,IACrBN,EAAwBO,GAAjBD,EAAA,GAAc,IAE7B,CAAE,MAAO,sBAA0B,CAC/B,UACI,MAAO,mBAAoB,6CAC1B,wCAEL,UACJ,SACAL,EAAmBI,EAAW,MAC9BhT,EAAYgT,EAAW,MACvB/S,EAAa+S,EAAW,MACxBlT,EAAckT,EAAW,MACzBjT,EAAeiT,EAAW,KAC9B,CAGAP,EAAa,EAAIO,EAAW,OAC5BH,EAAiBG,EAAW,MAC5BF,EAAgBE,EAAW,MAC3BD,EAAiBC,EAAW,KAlCgC,CANc,CAyC9E,CAGA,IpM0EkB,EAhD+B,KoM1BlB,OAAO,OAClC7P,EAAc,MAAYsP,EAAcG,EAAkBF,EAAMC,EAChE3S,EAAWC,EAAYH,EAAaC,EAE5C,CACA,OAAO,IACX,CAzIwBuS,CAAA,EAAiCH,EAAU,OAA3C,kBAChB,OAAa,mBAAoB,kBAAmB,+BANzC,MAAM,GAA8B,GAAR,QAK3ChP,EAAoB,EAKpB,OAAO,IAAAuM,YAGHyD,EAA0BhB,EAAsBhP,WAEhC,EAAAgP,EAAU,MAAV,MAAAiB,KAApB,KAAKC,EAAe,MAAwB,GAAI,QAAuB,EAASA,EAAY,OAIxF,OAAO,IAAAC,GADFtqC,GADAA,GADUqqC,EAAY,MACd,UAAgBlB,EAAU,MAAV,GAAiB,GAAG,OACpC,kBAA0BhP,EAAc,OACpBA,EAAc,MAAcA,EAAc,MAAckQ,EAAY,MACzG,OAGAE,WAkIIC,EAAoB/Y,OAEC,EADNA,EAAM,MACa,MAAb,WAAmC,OAAO,SAC5C,EADE,EACiB,MAAnB,WAA8B,OAAO,SAC5DgZ,EADuB,EACI,MAC3B,GAAIA,EAAI,KAAW,OAAO,SAC1BC,EAAiBD,EAAA,GAAI,GAAG,MACxB,GAAIC,EAAW,KAAW,OAAO,SACjCC,EAAkBD,EAAA,GAAW,GAAG,MAChC,OAAIC,EAAY,KAAkB,KACdA,EAAA,GAAY,GAAG,MACV,EAAU,OAAOD,EAAA,GAAW,GAAG,MAAS,IACrE,CA9IkBF,CAAgB,EAAArB,GACvB,GAAe,MAAXoB,SASE,OAAa,mBAAoB,qBAAsB,sBAjCrD,MAAM,GAA8B,GAAR,exM+M/B,EA3G2C,QA2G3C,WAAhB,KAAK1nB,EAAW,MAAM,GwMtLmDsmB,EAAU,MAAQ,EA4DzE,GxM0HI,CAAwB,EAAO,UAAM,CAC3D,EAAO,SwMvLmB,EAAuB,EAAvB,kBACd,OAAa,mBAAoB,qBAAsB,gCA1BhD,MAAM,GAA8B,GAAR,QAyBvCpO,EAAkB,EAGlB6P,EAAsBzB,EAAU,MAAV,GAAiB,GAAG,MAJ9C,OAQI,IAAAmB,YAyBAO,EACJC,EAA2BrZ,EAAehpC,EAAgBmiD,EAAyBzQ,GAS4B,OAAtGluD,GARL,SAAM6+D,GAAmB,MAC5B,IAAsB,UAAW,SACjC,IAAsB,UAAW,QACjC,IAAsB,UAAW,WACjC,IAAsB,QAAQrZ,GAC9B,IAAsB,QAAQmZ,GAC9B,IAAsB,SAASniD,GAC/B,IAAsB,gBAAgB0xC,GACtC,MARD,8DAQ8G,CAtC3F0Q,CAAqB,EAChCN,EAASpB,EAAU,MAAYpO,EAAa6P,EAAiBzQ,EAAc,OAErDA,EAAc,MAAcA,EAAc,MAAcY,EAE1F,CA1BsBoP,CAAsB,EAAAhB,EAAWhP,YA4B/C4Q,EAAuB5B,EAAsBhP,OAC1B,EAAVgP,EAAU,MAAV,EAA4B,MAAlB,EAAkB,KAAlB,EAAkB,MAA5B,kBACT,OACK,mBAAoB,qBACpB,2CAA4CA,EAAU,OAxChD,MAAM,GAA8B,GAAR,QAqC3C1S,EAAa,EAMbuU,ErNkCugC,EqNlCv/B,MAAmB,cAAoB,MAAM,OAAiB,MAC9EC,ErNiCugC,EqNjCv/B,MAAYD,EAC5BE,ErNgCugC,EqNhCv/B,MAAaF,EAC7BG,ErN+BugC,EqN/B5/B,MAAOF,ErN+Bq/B,EqN/Bz+B,MAC9BG,ErN8BugC,EqN9B5/B,MAAOF,ErN8Bq/B,EqN9Bz+B,MAC9BG,EAAaF,ErN6B0/B,EqN7Bn/B,MACpBG,ErN4BugC,EqN5B1/B,MAAOF,EAMvB,OALG,GACI3U,EAAQ,MAAY2U,ErN0B++B,EqN1Bz+B,MAAME,EAAQD,GACxC,SAAYC,ErNyBu/B,EqNzB9+B,MAAcD,ErNyBg+B,EqNzBv9B,OrNyBu9B,EqNxBngC,MAAa,IrNwBs/B,EqNxBh/B,MrNwBg/B,EqNxBr+B,MAEtC,CA9CmBN,CAAmB,EAAA5B,EAAWhP,GAEjD,CAXoFkP,CAAuB,EAAAF,GAC3G,aAuKI5X,EACAkY,EACAG,EACAF,EACAC,EACA3S,EACAC,EACAH,EACAC,GARA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YATJ,aAnNsB4R,SHC8B,MlNwH89Y,MqNzHh9Y,OAoBxD,EApB8B,MHwXhC,QlNzUD,EkNyU2C,KGxXgB,eAqCvBC,EAAAA,4CA3B3C,EACIpO,EAAwBoN,EAAmBD,EAAiC1rD,EADxE,gGAkBR,EAA6Cu+C,EAA7B,mEAhCe,iBACI,qBACU,6BACR,WAAA3N,GAAQ,aAAa,YAAa,aAAc,YAAa,cAChF,iBAAI,GAL1B,wDEWyC,0BACH,uBACA,sBAHlC,aA9BA0e,EACAC,EACAC,EACA1Q,GAHA,aACA,aACA,aACA,aAE2B,uBAN/B,eCJA,6GAGI,QAAY,IAHhB,MAII,OAAe,QAAS,6BAAe,KAJ3C,qDACA,OAAe,cAAe,6BAAe,KAD7C,kEANAiM,EAAA0E,EAAAC,EAAAC,EAAAxE,mBAAAJ,EAAA0E,EAAAC,EAAAC,EAAAxE,EAAAA,UAMA,8CAKyB,KALzB,mBAM6C,KAN7C,mBAO+B,KAP/B,uCAGIsE,EAGAC,EACAC,YAFqB,gBACoB,gBACd,OAJ3B,aAGA,aACA,YAPJ,2BCDA,6GACA,OAAe,eAAgB,6BAAe,KAD9C,kEALA5E,EAAA17D,EAAAqgE,EAAAvE,mBAAAJ,EAAA17D,EAAAqgE,EAAAvE,EAAAA,UAKA,iHCAA,sLACA,OAAe,cAAe,6BAAe,KAD7C,kEALAJ,EAAA6E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA/E,mBAAAJ,EAAA6E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA/E,EAAAA,UAKA,oGAQwB,KARxB,oBASwB,KATxB,gECAA,sLACA,OAAe,mBAAoB,6BAAe,KADlD,kEALAJ,EAAAoF,EAAAC,EAAAC,EAAAC,EAAAnF,mBAAAJ,EAAAoF,EAAAC,EAAAC,EAAAC,EAAAnF,EAAAA,UAKA,iDAM2B,QAN3B,mBAUkC,KAVlC,sBAuBQ,cAA0B,yCAjB9BgF,EAIAC,EAIAC,EACAC,YATuB,mBAIO,OAJ9B,aAIA,aAIA,aACA,aAQI,iBAA0BnhE,IAvBlC,uBCCA,W5LJmF,wB4LInF,gMACA,OAAe,aAAc,6BAAe,KAD5C,kEANA47D,EAAAwF,EAAAC,EAAAC,EAAAtF,mBAAAJ,EAAAwF,EAAAC,EAAAC,EAAAtF,EAAAA,GAMA,wDAIiCuF,KAJjC,mBASkC,IAAAC,GATlC,U/MwzDoB,EAxyD8B,QAwyD9B,iB+MzyDc,MAAmB,2ECfrD,2FAGI,QAAY,IAHhB,MAII,OAAe,cAAe,6BAAe,KAJjD,0BAMI,QAAY,IANhB,MAOI,OAAe,UAAW,6BAAe,KAP7C,uBASI,QAAY,IAThB,MAUI,OAAe,OAAQ,6BAAe,KAV1C,kCAYI,QAAY,IAZhB,MAaI,OAAe,kBAAmB,6BAAe,KAbrD,2BAeI,QAAY,IAfhB,MAgBI,OAAe,WAAY,6BAAe,KAhB9C,0BAkBI,QAAY,IAlBhB,MAmBI,OAAe,UAAW,6BAAe,KAnB7C,MACA,OAAe,iBAAkB,6BAAe,KADhD,kEANA5F,EAAA6F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA9F,mBAAAJ,EAAA6F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA9F,EAAAA,UAMA,wJCAA,uHAGI,QAAY,IAHhB,MAII,OAAe,kBAAmB,6BAAe,KAJrD,iCAMI,QAAY,IANhB,MAOI,OAAe,wBAAyB,6BAAe,KAP3D,qCASI,QAAY,IAThB,MAUI,OAAe,yBAA0B,6BAAe,KAV5D,wCAYI,QAAY,IAZhB,MAaI,OAAe,+BAAgC,6BAAe,KAblE,kEACA,OAAe,qBAAsB,6BAAe,KADpD,kEANAJ,EAAAzrC,EAAA4xC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAnG,mBAAAJ,EAAAzrC,EAAA4xC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAnG,EAAAA,UAMA,8CAK4B,KAL5B,mBAQkC,KARlC,mBAWsC,KAXtC,mBAcyC,KAdzC,oBAe6C,KAf7C,oBAgByD,KAhBzD,6CAGI7rC,EAGA4xC,EAGAC,EAGAC,EAGAC,EACAC,YAXwB,gBAGM,gBAGI,gBAGG,gBACI,gBACY,OAbrD,aAGA,aAGA,aAGA,aAGA,aACA,YAhBJ,2BCAA,mGAGI,QAAY,IAHhB,MAII,OAAe,gBAAiB,6BAAe,KAJnD,sCAMI,QAAY,IANhB,MAOI,OAAe,sBAAuB,6BAAe,KAPzD,MACA,OAAe,uBAAwB,6BAAe,KADtD,kEANAvG,EAAAwG,EAAAC,EAAArG,mBAAAJ,EAAAwG,EAAAC,EAAArG,EAAAA,UAMA,iHCOI,oFAGI,OAAe,MAAO,6BAAe,KAHzC,uBAKI,OAAe,OAAQ,6BAAe,KAL1C,MACA,OAAe,OAAQ,6BAAe,KADtC,kEAbJJ,EAAAz1D,EAAAm8D,EAAAtG,mBAAAJ,EAAAz1D,EAAAm8D,EAAAtG,EAAAA,UAaI,wDAMiC,KANjC,mDASA,mKAtBJJ,EAAA2E,EAAAvE,mBAAAJ,EAAA2E,EAAAvE,EAAAA,UAsBI,oHAjBJ,6EACA,OAAe,UAAW,6BAAe,KADzC,kEALAJ,EAAA2G,EAAAvG,mBAAAJ,EAAA2G,EAAAvG,EAAAA,UAKA,qGCCA,sOAUI,QAAU,IAVd,MACA,OAAe,YAAa,6BAAe,KAD3C,kEANAJ,EAAA17D,EAAAmG,EAAAm8D,EAAAjjB,EAAAkjB,EAAAC,EAAAt9B,EAAA3iC,EAAAu5D,mBAAAJ,EAAA17D,EAAAmG,EAAAm8D,EAAAjjB,EAAAkjB,EAAAC,EAAAt9B,EAAA3iC,EAAAu5D,EAAAA,UAMA,kEAK8B,KAL9B,mBAM2B,KAN3B,oBAOmC,KAPnC,oBAQiC,KARjC,oBAS4B,KAT5B,qBAWyB,KAXzB,0ECDA,+KAGI,OAAe,SAAU,6BAAe,KAH5C,MACA,OAAe,YAAa,6BAAe,KAD3C,kEALAJ,EAAA7iB,EAAAijB,mBAAAJ,EAAA7iB,EAAAijB,EAAAA,UAKA,8CAIgCuF,KAJhC,mCAGIxoB,GAHJ,cAIgCwoB,KAAA,EAD5B,YAHJ,2BCEA,4FAGI,QAAY,IAHhB,MAII,OAAe,qBAAsB,6BAAe,KAJxD,uBAMI,QAAY,IANhB,MAOI,OAAe,qBAAsB,6BAAe,KAPxD,wBASI,QAAY,IAThB,MAUI,OAAe,qBAAsB,6BAAe,KAVxD,uBAYI,QAAY,IAZhB,MAaI,OAAe,qBAAsB,6BAAe,KAbxD,MACA,OAAe,2BAA4B,6BAAe,KAD1D,kEAPA3F,EAAAxO,EAAAD,EAAAwV,EAAAC,EAAA5G,mBAAAJ,EAAAxO,EAAAD,EAAAwV,EAAAC,EAAA5G,EAAAA,UAOA,4ICDA,4GAII,QAAU,IAJd,MACA,OAAe,aAAc,6BAAe,KAD5C,kEANAJ,EAAAiH,EAAA1c,EAAA6V,mBAAAJ,EAAAiH,EAAA1c,EAAA6V,EAAAA,UAMA,6GCDA,yBrMH4C,KqMG5C,oJAEI,OAAe,SAAU,6BAAe,KAF5C,6FALAJ,EAAA7iB,EAAAwnB,EAAAvE,mBAAAJ,EAAA7iB,EAAAwnB,EAAAvE,EAAAA,UAKA,8CAGgCuF,KAHhC,wECIA,WtMGiC,yMsMHjC,mKAKI,QAAY,IALhB,MAMI,OAAe,OAAQ,6BAAe,KAN1C,wBAQI,QAAY,IARhB,MASI,OAAe,QAAS,6BAAe,KAT3C,2BAWI,QAAY,IAXhB,MAYI,OAAe,WAAY,6BAAe,KAZ9C,8BAcI,OAAe,cAAe,6BAAe,KAdjD,MAeI,OAAiB,UAAW,6BAAe,KAf/C,wDAkBI,OAAe,MAAO,6BAAe,KAlBzC,sNA2BI,OAAe,UAAW,6BAAe,KA3B7C,kCA6BI,OAAe,iBAAkB,6BAAe,KA7BpD,uCA+BI,QAAY,IA/BhB,MAgCI,OAAe,sBAAuB,6BAAe,KAhCzD,uCAkCI,QAAY,IAlChB,MAmCI,OAAe,sBAAuB,6BAAe,KAnCzD,8BAsCI,OAAe,YAAa,6BAAe,KAtC/C,4BAwCI,OAAe,WAAY,6BAAe,KAxC9C,2BA0CI,OAAe,SAAU,6BAAe,KA1C5C,8BA4CI,OAAe,YAAa,6BAAe,KA5C/C,8BA8CI,OAAe,aAAc,6BAAe,KA9ChD,+BAgDI,OAAe,cAAe,6BAAe,KAhDjD,MACA,OAAe,QAAS,6BAAe,KADvC,kEATA3F,EAAAyF,EAAAnhE,EAAAogE,EAAAwC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAlI,mBAAAJ,EAAAyF,EAAAnhE,EAAAogE,EAAAwC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAlI,EAAAA,GASA,8CAIiCuF,KAJjC,mBAOwB,KAPxB,6BAa4B,KAb5B,oBAgBoCA,KAhBpC,oBAiB0CA,KAjB1C,oBAmBkDA,KAnBlD,qBAoBoE,KApBpE,qBAqBuDA,KArBvD,qBAsBkDA,KAtBlD,sBAuBgD,KAvBhD,sBAwBwDA,KAxBxD,sBAyB2CA,KAzB3C,sBA0B6CA,KA1B7C,uBA4BqCA,KA5BrC,uBA8B4CA,KA9B5C,uBAiCgD,KAjChD,wBAoCgD,KApChD,iDAyCkC,KAzClC,6EA+CoC,KA/CpC,yBAiDqC,KAjDrC,UAiFqC,KAjFrC,QAoF4B,azNiuDR,EAlqDW,QAkqDX,iByN9tDc,MAAe,iHC3FjD,yBvMH4C,euMG5C,oJAGI,OAAe,SAAU,6BAAe,KAH5C,sEACA,OAAe,UAAW,6BAAe,KADzC,kEALA3F,EAAA7iB,EAAAwnB,EAAAhtC,EAAA44B,EAAA6P,mBAAAJ,EAAA7iB,EAAAwnB,EAAAhtC,EAAA44B,EAAA6P,EAAAA,UAKA,8C9EuDwC,K8EvDxC,6BAMsB,KANtB,mBAOuB,KAPvB,kECAA,WxMH4C,wBwMG5C,yKAII,OAAe,SAAU,6BAAe,KAJ5C,iCACA,OAAe,cAAe,6BAAe,KAD7C,kEALAJ,EAAAv2C,EAAA0zB,EAAAwnB,EAAAvE,mBAAAJ,EAAAv2C,EAAA0zB,EAAAwnB,EAAAvE,EAAAA,UAKA,wDAKgCuF,KALhC,8ECAA,oFAGI,OAAe,OAAQ,+BAAiB,UAH5C,sBAKI,OAAe,OAAQ,+BAAiB,UAL5C,MACA,OAAe,iBAAkB,6BAAe,KADhD,kEALA3F,EAAAv2C,EAAA8+C,EAAAnI,mBAAAJ,EAAAv2C,EAAA8+C,EAAAnI,EAAAA,UAKA,8CAIwB,SAJxB,4ECAA,wFAGI,OAAe,kBAAmB,6BAAe,KAHrD,yBAKI,OAAe,SAAU,6BAAe,KAL5C,iCAOI,OAAe,iBAAkB,6BAAe,KAPpD,MACA,OAAe,UAAW,6BAAe,KADzC,kEALAJ,EAAAwI,EAAAC,EAAAC,EAAAtI,mBAAAJ,EAAAwI,EAAAC,EAAAC,EAAAtI,EAAAA,UAKA,kEAQ+C,KAR/C,gECAA,yB3MH4C,K2MG5C,6JAEI,OAAe,SAAU,6BAAe,KAF5C,sFALAJ,EAAA7iB,EAAAwrB,EAAAvI,mBAAAJ,EAAA7iB,EAAAwrB,EAAAvI,EAAAA,UAKA,8CAGgCuF,KAHhC,wECEA,W5MDA,gE4MCA,kJAGI,QAAY,IAHhB,MAII,OAAe,OAAQ,6BAAe,KAJ1C,wBAMI,QAAY,IANhB,MAOI,OAAe,QAAS,6BAAe,KAP3C,2BASI,QAAY,IAThB,MAUI,OAAe,WAAY,6BAAe,KAV9C,uBAYI,QAAY,IAZhB,MAaI,OAAe,OAAQ,6BAAe,KAb1C,oCAeI,QAAY,IAfhB,MAgBI,OAAe,oBAAqB,6BAAe,KAhBvD,8BAkBI,OAAe,cAAe,6BAAe,KAlBjD,MAmBI,OAAiB,UAAW,6BAAe,KAnB/C,qFAuBI,QAAY,IAvBhB,MAwBI,OAAe,WAAY,6BAAe,KAxB9C,4BA0BI,QAAY,IA1BhB,MA2BI,OAAe,YAAa,6BAAe,KA3B/C,6BA6BI,QAAY,IA7BhB,MA8BI,OAAe,aAAc,6BAAe,KA9BhD,MACA,OAAe,UAAW,6BAAe,KADzC,kEAPA3F,EAAA17D,EAAAogE,EAAAwC,EAAA0B,EAAAC,EAAA1B,EAAAxC,EAAAmE,EAAA9zC,EAAA+zC,EAAAxH,EAAAnB,mBAAAJ,EAAA17D,EAAAogE,EAAAwC,EAAA0B,EAAAC,EAAA1B,EAAAxC,EAAAmE,EAAA9zC,EAAA+zC,EAAAxH,EAAAnB,EAAAA,UAOA,qEAW4B,KAX5B,mBAcwB,KAdxB,oBAiBqC,KAjBrC,oB3NuF0C,K2NvF1C,+BAsBqD,KAtBrD,qBAyByB,KAzBzB,qBA4B0B,KA5B1B,sBA+B2B,KA/B3B,gFCDA,W7MJkG,uC6MIlG,+IAGI,QAAY,IAHhB,MAII,OAAe,OAAQ,6BAAe,KAJ1C,wBAMI,QAAY,IANhB,MAOI,OAAe,QAAS,6BAAe,KAP3C,2BASI,QAAY,IAThB,MAUI,OAAe,WAAY,6BAAe,KAV9C,6BAYI,OAAe,YAAa,6BAAe,KAZ/C,gCAcI,OAAe,gBAAiB,6BAAe,KAdnD,2BAgBI,OAAe,WAAY,6BAAe,KAhB9C,MACA,OAAe,QAAS,6BAAe,KADvC,kEANAJ,EAAA17D,EAAAogE,EAAAwC,EAAA8B,EAAAC,EAAAC,EAAA9I,mBAAAJ,EAAA17D,EAAAogE,EAAAwC,EAAA8B,EAAAC,EAAAC,EAAA9I,EAAAA,UAMA,kEAW4B,KAX5B,mBAauCuF,KAbvC,oBAeqC,KAfrC,oBAiBgC,KAjBhC,sECAA,yB9MJmG,oB8MInG,yKAGI,OAAe,gBAAiB,iCAAiB,QAHrD,uBAKI,QAAY,IALhB,MAMI,OAAe,OAAQ,iCAAiB,QAN5C,qCAQI,QAAY,IARhB,MASI,OAAe,qBAAsB,iCAAiB,QAT1D,6BAWI,QAAY,IAXhB,MAYI,OAAe,aAAc,iCAAiB,QAZlD,0BAcI,QAAY,IAdhB,MAeI,OAAe,UAAW,iCAAiB,QAf/C,0CAiBI,OAAe,wBAAyB,iCAAiB,QAjB7D,MACA,OAAe,UAAW,iCAAiB,QAD3C,kEANA3F,EAAAmJ,EAAApD,EAAAqD,EAAAC,EAAAnD,EAAAoD,EAAAlJ,mBAAAJ,EAAAmJ,EAAApD,EAAAqD,EAAAC,EAAAnD,EAAAoD,EAAAlJ,EAAAA,UAMA,8CAIuCuF,KAJvC,mBAOwB,KAPxB,mBAUsC,KAVtC,mBAa8B,KAb9B,oBAgB2B,KAhB3B,oBAkBgDA,KAlBhD,6CAGIwD,EAEApD,EAGAqD,EAGAC,EAGAnD,EAGAoD,GAjBJ,cAIuC3D,KAAA,WAGf,gBAGc,gBAGR,gBAGH,gBAEqBA,KAAA,EAf5C,aAEA,aAGA,aAGA,aAGA,aAGA,YAjBJ,2BCEA,yGAII,QAAY,IAJhB,MAKI,OAAe,cAAe,iCAAiB,QALnD,8BAOI,QAAY,IAPhB,MAQI,OAAe,cAAe,iCAAiB,QARnD,MACA,OAAe,cAAe,iCAAiB,QAD/C,kEARA3F,EAAAuJ,EAAAC,EAAAC,EAAArJ,mBAAAJ,EAAAuJ,EAAAC,EAAAC,EAAArJ,EAAAA,UAQA,8CAGuB,KAHvB,oFCDA,WhNAA,mBgNAA,+KAII,OAAe,gBAAiB,iCAAiB,QAJrD,MAKI,OAAiB,QAAS,iCAAiB,QAL/C,MAMI,OAAY,aANhB,MACA,OAAe,aAAc,iCAAiB,QAD9C,kEAPAJ,EAAA17D,EAAAolE,EAAAtJ,mBAAAJ,EAAA17D,EAAAolE,EAAAtJ,EAAAA,UAOA,wDAOsCuF,KAPtC,sDCDA,wLAMI,QAAY,IANhB,MAOI,OAAe,iBAAkB,iCAAiB,QAPtD,sCASI,QAAY,IAThB,MAUI,OAAe,sBAAuB,iCAAiB,QAV3D,MACA,OAAe,cAAe,iCAAiB,QAD/C,kEANA3F,EAAA2J,EAAA7D,EAAAnB,EAAAiF,EAAAC,EAAAzJ,mBAAAJ,EAAA2J,EAAA7D,EAAAnB,EAAAiF,EAAAC,EAAAzJ,EAAAA,UAMA,8CAG2B,KAH3B,mBAI+B,KAJ/B,mBAK6C,KAL7C,mBAQkC,KARlC,oBAWuC,KAXvC,2CAGIuJ,EACA7D,EACAnB,EACAiF,EAGAC,YANuB,gBACI,gBACc,gBAGX,gBAGK,OARnC,aACA,aACA,aACA,aAGA,YATJ,2BCDA,0EACA,OAAe,MAAO,iCAAiB,QADvC,kEALA7J,EAAA2G,EAAAvG,mBAAAJ,EAAA2G,EAAAvG,EAAAA,UAKA,yFCHA,uBCGA,2LAGI,OAAe,MAAO,iCAAiB,QAH3C,8BAKI,OAAe,OAAQ,iCAAiB,QAL5C,MACA,OAAe,OAAQ,iCAAiB,QADxC,kEALAJ,EAAA0D,EAAAoG,EAAA1J,mBAAAJ,EAAA0D,EAAAoG,EAAA1J,EAAAA,UAKA,8CAI0CuF,KAJ1C,mBAM2CA,KAN3C,qCAGIjC,EAEAoG,GALJ,cAI0CnE,KAAA,WAECA,KAAA,EAHvC,aAEA,YALJ,uBCAA,WrNH6C,mBqNG7C,oJAEI,OAAe,OAAQ,+BAAiB,UAF5C,0FALA3F,EAAAuI,EAAA5E,EAAAvD,mBAAAJ,EAAAuI,EAAA5E,EAAAvD,EAAAA,UAKA,wDAI2CuF,KAJ3C,kECAA,oFAGI,OAAe,OAAQ,+BAAiB,UAH5C,MACA,OAAe,iBAAkB,iCAAiB,QADlD,kEALA3F,EAAAuI,EAAAnI,mBAAAJ,EAAAuI,EAAAnI,EAAAA,UAKA,iGCAA,WvNH6C,mBuNG7C,qKACA,OAAe,YAAa,iCAAiB,QAD7C,kEALAJ,EAAA17D,EAAAylE,EAAA3J,mBAAAJ,EAAA17D,EAAAylE,EAAA3J,EAAAA,UAKA,wDAI6BuF,KAJ7B,8DCAA,4LACA,OAAe,qBAAsB,iCAAiB,QADtD,kEALA3F,EAAA9gB,EAAAkhB,mBAAAJ,EAAA9gB,EAAAkhB,EAAAA,UAKA,8CAGyCuF,KAHzC,mCAGIzmB,GAHJ,cAGyCymB,KAAA,EAArC,YAHJ,uBCCA,uLAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,sBAMI,QAAY,IANhB,MAOI,OAAe,YAAa,iCAAiB,QAPjD,MACA,OAAe,QAAS,iCAAiB,QADzC,kEANA3F,EAAAgK,EAAAC,EAAA7J,mBAAAJ,EAAAgK,EAAAC,EAAA7J,EAAAA,UAMA,8CAK8BuF,KAL9B,mBAQ4BA,KAR5B,qCAGIqE,EAGAC,GANJ,cAK8BtE,KAAA,WAGFA,KAAA,EALxB,aAGA,YANJ,eCAA,0HAGI,QAAY,IAHhB,MAII,OAAe,iBAAkB,iCAAiB,QAJtD,+BAMI,QAAY,IANhB,MAOI,OAAe,eAAgB,iCAAiB,QAPpD,+CAUI,QAAY,IAVhB,MAWI,OAAe,OAAQ,iCAAiB,QAX5C,MACA,OAAe,iBAAkB,iCAAiB,QADlD,kEANA3F,EAAAkK,EAAAC,EAAAC,EAAAC,EAAAjK,mBAAAJ,EAAAkK,EAAAC,EAAAC,EAAAC,EAAAjK,EAAAA,UAMA,8CAKkC,KALlC,mBAQgC,KARhC,mBASuC,KATvC,mBAYwB,KAZxB,yCAGI8J,EAGAC,EAGAC,EACAC,YAL8B,gBAGF,gBACO,gBAGf,OATpB,aAGA,aAGA,aACA,YAVJ,uBCCA,W3NAA,4D2NAA,iKAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,8BAYI,QAAY,IAZhB,MAaI,OAAe,cAAe,iCAAiB,QAbnD,sCAeI,OAAe,qBAAsB,iCAAiB,QAf1D,uBAiBI,QAAY,IAjBhB,MAkBI,OAAe,OAAQ,iCAAiB,QAlB5C,oCAoBI,OAAe,oBAAqB,iCAAiB,QApBzD,MACA,OAAe,wBAAyB,iCAAiB,QADzD,kEAPArK,EAAA0E,EAAAwC,EAAAoD,EAAAC,EAAAC,EAAA5B,EAAAC,EAAAzI,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAAC,EAAAC,EAAA5B,EAAAC,EAAAzI,EAAAA,UAOA,yDAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,8BAgB4CA,KAhB5C,oBAmBwB,KAnBxB,oBAqB0CA,KArB1C,4ECDA,8FAGI,QAAY,IAHhB,MAII,OAAe,eAAgB,iCAAiB,QAJpD,iCAMI,OAAe,eAAgB,iCAAiB,QANpD,iCACA,OAAe,kBAAmB,iCAAiB,QADnD,kEANA3F,EAAAyK,EAAA9F,EAAA+F,EAAAtK,mBAAAJ,EAAAyK,EAAA9F,EAAA+F,EAAAtK,EAAAA,UAMA,wDAO6C,KAP7C,0ECAA,W7NJwG,yD6NIxG,2TASI,OAAe,SAAU,kCAAkB,KAT/C,MAUI,OAAiB,QAAS,kCAAkB,KAVhD,sCAYI,OAAe,qBAAsB,kCAAkB,KAZ3D,MACA,OAAe,eAAgB,kCAAkB,KADjD,kEANAJ,EAAAoF,EAAAC,EAAAsF,EAAAC,EAAAC,EAAAxwB,EAAAywB,EAAAC,EAAA3K,mBAAAJ,EAAAoF,EAAAC,EAAAsF,EAAAC,EAAAC,EAAAxwB,EAAAywB,EAAAC,EAAA3K,EAAAA,GAMA,2DAIkC,KAJlC,mBAK2D,KAL3D,mBAM+C,KAN/C,oBAOqD,KAPrD,8BAWkCuF,KAXlC,qBAauDA,KAbvD,UhPwzDoB,EA3xDoC,QA2xDpC,iBgPryDc,MAAqB,wDAhBnDP,EACAC,EACAsF,EACAC,EACAC,EACAxwB,EACAywB,EAGAC,GAZJ,cAIkC,gBACyB,gBACZ,gBACM,gBAInBpF,KAAA,WAEqBA,KAAA,EAVnD,aACA,aACA,aACA,aACA,aACA,aACA,aAGA,qBhP4yDgB,EA3xDoC,WA2xDpC,iBgPryDc,MAAqBvhE,IAnBvD,uBCDA,uNACA,OAAe,WAAY,kCAAkB,KAD7C,kEALA47D,EAAAyF,EAAAlD,EAAAnC,mBAAAJ,EAAAyF,EAAAlD,EAAAnC,EAAAA,UAKA,8CAGkCuF,KAHlC,mBAIkDA,KAJlD,qCAGIF,EACAlD,GAJJ,cAGkCoD,KAAA,WACgBA,KAAA,EAD9C,aACA,YAJJ,uBCEA,W/NAA,8D+NAA,sJAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,iCAAiB,QAblD,gCAeI,QAAY,IAfhB,MAgBI,OAAe,MAAO,iCAAiB,QAhB3C,6BAkBI,QAAY,IAlBhB,MAmBI,OAAe,aAAc,kCAAkB,KAnBnD,+BAqBI,QAAY,IArBhB,MAsBI,OAAe,UAAW,kCAAkB,KAtBhD,0BAwBI,QAAY,IAxBhB,MAyBI,OAAe,UAAW,kCAAkB,KAzBhD,yBA2BI,OAAe,QAAS,kCAAkB,KA3B9C,MACA,OAAe,YAAa,kCAAkB,KAD9C,kEAPA3F,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAygB,EAAApE,EAAAqE,EAAAzhC,EAAAlvB,EAAA8lD,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAygB,EAAApE,EAAAqE,EAAAzhC,EAAAlvB,EAAA8lD,EAAAA,UAOA,yDAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,8BAiBiC,KAjBjC,oBAoB8B,KApB9B,oBAuBgC,KAvBhC,qBA0B4B,KA1B5B,qBA4B+BA,KA5B/B,4ECCA,WhOGG,0IgOHH,mJAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,iCAAiB,QAblD,6DAgBI,OAAe,mBAAoB,iCAAiB,QAhBxD,2BAkBI,OAAe,WAAY,iCAAiB,QAlBhD,6CAqBI,OAAe,SAAU,kCAAkB,KArB/C,8BAuBI,OAAe,aAAc,kCAAkB,KAvBnD,qFACA,OAAe,QAAS,kCAAkB,KAD1C,kEARA3F,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAA2gB,EAAAC,EAAA9K,EAAA+K,EAAAjuB,EAAAkuB,EAAAC,EAAAC,EAAAC,EAAApL,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAA2gB,EAAAC,EAAA9K,EAAA+K,EAAAjuB,EAAAkuB,EAAAC,EAAAC,EAAAC,EAAApL,EAAAA,UAQA,yDAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,8BAe8CA,KAf9C,oBAiB4C,KAjB5C,oBAmB4CA,KAnB5C,qBAoBkCA,KApBlC,qBAsBgCA,KAtBhC,qBAwBoCA,KAxBpC,sBAyB0DA,KAzB1D,sBA0B8CA,KA1B9C,sBA2B0CA,KA3B1C,wFCHA,gFAGI,OAAe,OAAQ,+BAAiB,UAH5C,yBACA,OAAe,YAAa,kCAAkB,KAD9C,kEALA3F,EAAAuI,EAAA9mD,EAAA2+C,mBAAAJ,EAAAuI,EAAA9mD,EAAA2+C,EAAAA,UAKA,iHCAA,mIACA,OAAe,cAAe,kCAAkB,KADhD,kEALAJ,EAAAv+C,EAAAgqD,EAAAlH,EAAAnE,mBAAAJ,EAAAv+C,EAAAgqD,EAAAlH,EAAAnE,EAAAA,UAKA,yHCEA,WnOAA,+CmOAA,kJAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,iCAAiB,QAblD,mDACA,OAAe,QAAS,kCAAkB,KAD1C,kEAPAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAmhB,EAAA1C,EAAA5I,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAmhB,EAAA1C,EAAA5I,EAAAA,UAOA,yDAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,mDAgB0CA,KAhB1C,sECAA,WpOAA,+CoOAA,kJAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,iCAAiB,QAblD,+CAgBI,OAAe,WAAY,kCAAkB,KAhBjD,MACA,OAAe,QAAS,kCAAkB,KAD1C,kEAPA3F,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAugB,EAAAa,EAAAvL,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAugB,EAAAa,EAAAvL,EAAAA,UAOA,yDAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,8BAekCA,KAflC,oBAiBkCA,KAjBlC,sECAA,WrOAA,2DqOAA,wJAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,iCAAiB,QAblD,mCAeI,QAAY,IAfhB,MAgBI,OAAe,mBAAoB,kCAAkB,KAhBzD,gCAkBI,QAAY,IAlBhB,MAmBI,OAAe,gBAAiB,kCAAkB,KAnBtD,4BAqBI,QAAY,IArBhB,MAsBI,OAAe,YAAa,kCAAkB,KAtBlD,6BAwBI,QAAY,IAxBhB,MAyBI,OAAe,aAAc,kCAAkB,KAzBnD,8BA2BI,QAAY,IA3BhB,MA4BI,OAAe,cAAe,kCAAkB,KA5BpD,+BA8BI,QAAY,IA9BhB,MA+BI,OAAe,eAAgB,kCAAkB,KA/BrD,MACA,OAAe,aAAc,kCAAkB,KAD/C,kEAPA3F,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAqY,EAAAK,EAAAjT,EAAAC,EAAAH,EAAAC,EAAAqQ,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAAqY,EAAAK,EAAAjT,EAAAC,EAAAH,EAAAC,EAAAqQ,EAAAA,UAOA,kEAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,wJCDA,wGAGI,QAAY,IAHhB,MAII,OAAe,aAAc,kCAAkB,KAJnD,6BAMI,QAAY,IANhB,MAOI,OAAe,aAAc,kCAAkB,KAPnD,6BASI,QAAY,IAThB,MAUI,OAAe,aAAc,kCAAkB,KAVnD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,kCAAkB,KAbnD,6BAeI,QAAY,IAfhB,MAgBI,OAAe,aAAc,kCAAkB,KAhBnD,MACA,OAAe,mBAAoB,kCAAkB,KADrD,kEANA3F,EAAA4L,EAAAC,EAAAC,EAAAC,EAAAC,EAAA5L,mBAAAJ,EAAA4L,EAAAC,EAAAC,EAAAC,EAAAC,EAAA5L,EAAAA,UAMA,oJCCA,WvOAA,yDuOAA,0JAGI,QAAY,IAHhB,MAII,OAAe,QAAS,iCAAiB,QAJ7C,2BAMI,QAAY,IANhB,MAOI,OAAe,WAAY,iCAAiB,QAPhD,2BASI,OAAe,WAAY,iCAAiB,QAThD,MAUI,OAAiB,UAAW,iCAAiB,QAVjD,6BAYI,QAAY,IAZhB,MAaI,OAAe,aAAc,iCAAiB,QAblD,+BAeI,QAAY,IAfhB,MAgBI,OAAe,eAAgB,iCAAiB,QAhBpD,oCAkBI,QAAY,IAlBhB,MAmBI,OAAe,oBAAqB,kCAAkB,KAnB1D,uDACA,OAAe,gBAAiB,kCAAkB,KADlD,kEAPAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAA0hB,EAAAC,EAAAC,EAAA1J,EAAArC,mBAAAJ,EAAA0E,EAAAwC,EAAAoD,EAAA/f,EAAA0hB,EAAAC,EAAAC,EAAA1J,EAAArC,EAAAA,UAOA,4DAKkC,KALlC,mBAQqC,KARrC,mBAW0CuF,KAX1C,wCAoBqC,KApBrC,oBAqBuC,KArBvC,qBAsB6CA,KAtB7C,0ECAA,WxOAA,mBwOAA,mKAGI,QAAY,IAHhB,MAII,OAAe,gBAAiB,kCAAkB,KAJtD,sCAMI,OAAe,sBAAuB,kCAAkB,KAN5D,MAOI,OAAiB,mBAAoB,kCAAkB,KAP3D,MACA,OAAe,oBAAqB,kCAAkB,KADtD,kEAPA3F,EAAAzV,EAAA6hB,EAAAhM,mBAAAJ,EAAAzV,EAAA6hB,EAAAhM,EAAAA,UAOA,wDAQ0DuF,KAR1D,oDCH4D1wD,YAAoC,OAApC,aAC/B,cACI,cACK,gBACkB,eAJxD,eCQmC,WAAAq3C,EAAc,eACR,wBAAW,EAAG,aAPdmD,EAAgBx6C,YAAuB,OAAQo3D,GAAA,UAAmBp3D,GAC1F,cAAOw6C,GAKI,WAAA+E,GAAK,IACC,WAAAA,GAAK,IACG,uBACH,aACY,gBACE,eAXrD,sBC4BI8X,aAAe,UAAW,EAAY,EAAW,EAAY,SAA7DA,cAaYC,EAAUC,EAAYC,EAAWC,mBAAjCH,EAAUC,EAAYC,EAAWC,EAAAA,mBAAa,MAAM,UACtDH,EAAM,IACJC,EAAQ,IACTC,EAAO,IACNC,EAAQ,wCAsBRzW,mBAAAA,EAAAA,UAAe,UAAKA,EAAM,MAAKA,EAAM,MAAOA,EAAM,MAAMA,EAAM,sCAmO1E,aA3RAsW,EAIAC,EAIAC,EAIAC,YAAmB,IAZnB,aAIA,aAIA,aAIA,YAhBJ,iHCXKpxB,EAAAA,oBAAL,yECImD,sBACd,WlL6EuB,IkL/E5D,eCwBiD,mBAD7C,aAkWI71C,EACAknE,YADoB,gBACc,OADlC,aACA,YAFJ,eArT8C,eAAa,eAjCvC,aACO,aACL,aACG,aACH,aACN,aACgB,gBACD,gBACD,uBACZ,gBACH,gBACE,gBACD,gBACU,gBACZ,gBACsB,gBACE,gBACC,gBACoB,gBAC7B,gBACP,gBACF,gBACJ,cACO,cAEK,aACC,aACD,WnLkB2B,KmLjBpC,WnLiBoC,KmLhB7B,eAAAC,GAAaxoE,MACN,eAAAyoE,GACN,gBAEO,WAAArY,GAAK,GA7C5C,8BCjBI,aADe78B,EAAgB44B,EAAiB9uC,EAA2BgI,EAAyBqjD,aAA8B,EAAnH,aAAgB,aAAiB,aAA2B,aAAyB,aAoC/E,gBAEW,sBACkB,gBACnB,cACR,aAzC3B,aCAoClwB,EAA2BmwB,GAA3B,aAA2B,aAC9C,WrL0E2C,KqLzE3B,qBAFjC,aCgCYC,EAAiB3gB,GACrB,SAAK,QAAQ,SAAO,iBAKhB4gB,EAAmB5gB,OACvB9pC,EAAS8pC,EAAG,MAAG,MACf,QAAK9pC,EAAG,QACR8pC,EAAG,MAAG,IAAW,QAAQ9pC,GACzB8pC,EAAG,MAAG,IAAW,QAAQ,QAAW,KAAqB,SACzDA,EAAG,MAAG,IAAW,QAAX,KAA6B,OACnC,QAAQ,SAAS9pC,EACVA,EAAG,MACd,CAbsC0qD,CAAe,EAAA5gB,KACjD,QAAS,EACF,GACX,eAsBmC,iBACC,aAFpC,aA5DAzP,EACAswB,EACAC,EACAC,YAD+B,iBACC,KAHhC,aACA,aACA,aACA,qBAEwB,IAAM,aAAN,EjPiB+B,GAAiB,MAhBd,GAgB+B,MiPjBjE,eAA8B,MAA9B,qBACF,aACC,YAR3B,aCCIxwB,EAAajkB,EAAmBsC,YAAYtC,EAAM,OAAAsC,EAClDoyC,GAAA,UAAqBzwB,EAAQ,GAAA3hB,EAgBisB,IAf3rB,WAAAtC,CAHvC,aCCIikB,EAAajkB,EAAiBsC,YAAYtC,EAAM,OAAAsC,EAChDoyC,GAAA,UAAqBzwB,EAAQ,GAAA3hB,EAgB+/B,IAf3/B,WAAAtC,CAHrC,aCCIikB,EAAajkB,EAAmBsC,YAAYtC,EAAM,OAAAsC,EAClDoyC,GAAA,UAAqBzwB,EAAQ,GAAA3hB,EAgB8nD,IAfxnD,WAAAtC,CAHvC,iGCGK2iB,EAAAA,oBAAL,0CCMIgyB,wBAAA,aAMoC,qBAKZ,qBAIL,aAIC,YA1BxB,yGCDKhyB,EAAAA,oBAAL,yHCAKA,EAAAA,oBAAL,4CCS4C,aACE,YAF1C,eAiBmC,sBACF,aAnBrC,eCLgC2Z,GAAA,WACE,W1PmB6C,ueA2CnD,+7B0PbM,W1PeT,eAAe,kB0PbL,cACD,cACJ,gBACK,gBACT,gBACE,aAC4B,sBACD,sBACJ,sBACK,sBACJ,sBACL,sBACE,sBACzB,4BAAW,GAjEnC,eCD8BA,GAAA,WACI,W3PoB8D,yiBA6DsB,mlD2PtBpF,W3PsBkJ,gB2PpBjI,sBACA,sBACJ,sBACO,sBACP,sBACvB,4BAAW,GAnEnC,eCKmCA,GAAA,WACD,W5PiCyB,smBA2CmkB,wiD4Pb5lB,W5Pa0pB,eAAe,kB4PXvrB,gBACK,W5PUmwB,MAAW,M4PT/uB,sBACD,sBACJ,sBACK,sBACJ,sBACL,sBACE,sBAChB,4BAAW,IACN,4BAAW,IACzB,gBACE,YA9E1B,eCJmCA,GAAA,WACD,W7PgF6hB,+2EAA0iC,ywB6PSvkD,W7PTqoD,UAAU,SAAU,SAAU,kB6PWlqD,cACD,cACM,cACV,gBACK,gBACT,gBACE,aACE,aACW,cACb,aACA,aAEuB,sBACJ,sBACE,sBACE,sBACW,sBACd,sBACQ,sBACD,sBACM,sBACL,sBACJ,sBAC5B,4BAAW,GAnHnC,eCMwC,gBADpC,aADyB0X,GAA2CN,GAAA,WAA3C,aAKO,gBAKR,gBAQR,cAQM,cAK+B,gBACxB,cACG,cAED,cACc,gBACd,aACL,gBACK,gBACH,eAAA/f,GACD,eAzC/B,uBCwJ4C,aACK,cAIL,cAIJ,aAIC,mB/RpBg8E,O+RzG59E,EA+H8D,WAAR,W/RhGxD,QA0EqkF,O+RzGnkF,EAiID,WAjIC,EAkID,WAFsD,W/RjGvD,E+R2G+B,WpM1GkB,KoM4GtB,gBACH,gBACI,eA/BnC,sDA/GAihB,EAAkBC,EAAqBC,EAAqBd,GxRjB5D,GwRgBJ,cAC8F,OAC3Fe,GAAA,UAAcf,GAIA,cAASY,GAWJ,WAAAC,EAcA,WAAAC,EAcJ,sBASiB,cAqBR,eAYS,aACJ,4BAAW,GACX,aACI,sBACA,4BAAW,GACX,aACI,sBACC,sBACD,aACH,W9Q7CmB,K8Q8CpB,W9Q9CoB,K8Q+CvB,gBACF,aACA,gBACI,gBACC,gBACD,aACL,kBxRZwyF,GAAe,GAAK,GAAe,GA5Gz1F,KACR/oE,EwR2HI,UAAW,MAAQ,UAAW,cAAe,iBxR1HjD,MAAM,GAAiC,GAAR,GACnC,CwRaJ,sCCuCmD,eAKlB,eAAAipE,EAV7B,wDA6IqB,gBAIM,gBAIV,gBAIa,gBAIP,gBAIE,aAIL,gBAIK,YAhCzB,aAzMAp5C,EAKA9uB,EAKAknE,GAdJ,cASwB,gBAKa,OACjCN,GAAA,WANA,aAKA,aAKe,cAAS93C,GAOiB,gBAK1B,sBASoB,gBAIN,cAKc,gBAavB,cAIM,YAlE9B,4BCwBIA,EAKA3f,EAOA+3D,YAA2C,OAC3CN,GAAA,WADA,aAKe,cAAS93C,GAUZ,WAAA3f,EAU6B,gBAIZ,cAIwB,sBjS6CrB,KOhGhC,G0RamG,EA0CjD,MAAc,IAAK,IAAA4wC,GAAM,EAAI,EAAI,EAAI,IAA7C,WjSPnC,EiSkBmB,gBACG,aACL,gBACK,eAAAooB,K1RuCk9B,GAAS,GA5G5+B,KACRlpE,E0RwEI,UAAW,MAAQ,2BAA4B,cAAe,gB1RvElE,MAAM,GAAiC,GAAR,GACnC,C0RDJ,oHC/BK42C,EAAAA,oBAAL,iFCuC4C,oBnSetC,OmSeG,EA5BG,WA4BH,EA3BG,WAFsD,WnSqCvD,CmSvCP,sDAzBAqd,EAA2BgU,GAD/B,cAC6D,OAC1De,GAAA,UAAcf,GACG,WAAAhU,EAKY,4BAAW,GACX,aACE,aACD,aAEI,WlRuEmB,KkRtEpB,WlRsEoB,KkRrEnB,WlRqEmB,KkRlEvB,gBACF,aACP,gBACQ,gBACJ,gBACK,gBACM,eAxBvC,0HCZKrd,EAAAA,oBAAL,iFC6gB2D,eACR,gBAClB,gBACG,gBACG,gBACL,gBACL,gBACQ,gBACA,gBACH,gBACA,eAhB9B,sDA1eA/mB,EAIAo4C,EAIAroE,SAZJ,cAQ0C,UAKI,KAAb,gBADb,QACa,KvR2P6B,IAAV,GuR3PzBA,IAA2B,YAAgBA,EAAlE+nE,GAAA,aALA,aASe,cAAS93C,GAOiB,gBAIO,gBAInB,cAIA,gBAMuB,gBAOzB,cAMO,eAIK,eAIV,cAID,cAIR,cAKA,sBAUyB,gBAM7B,sBAUyB,gBAeV,aACL,gBAIK,YA1HnC,sBCsEIs5C,aAAe,UACG,KACD,IAAAroB,GAAM,EAAI,EAAI,EAAI,GACV,QACR,EACO,GACN,GACC,GACD,EACI,KACC,YAVvBqoB,gBA4EA,aAhKAlZ,EAMAmZ,EAKAC,EAOAC,EAKAC,EAIAC,EAIAC,EAOAC,EAIAC,EAIAC,GA9CA,aAkBA,aAKA,aAIA,aAIA,aAOA,aAeiB,WAAAR,EAQC,WAAAC,EAOI,WAAAM,EAOC,WAAAC,CAhF3B,uBC0D4C,aACK,oBvSiCW,OuSjDgB,EAiBD,WAAR,WvSWxD,QAuBK,OuSnD4D,EAmBhE,WAnBgE,EAoBhE,WAFsD,WvSUvD,EuSNmC,aACI,aACJ,YAV1C,sDA7CJ,gBAsB0CC,GAAA,UAAT,aArB7B5V,EAAyCgU,GAD7C,cACgChH,KAAA,WAA2C,OACxE+H,GAAA,UAAcf,GACc,WAAAnS,GAAc,CAAA7B,IAEb,4BAAW,GACX,aACI,4BAAW,GACX,aACI,aAER,WtRmEwB,KsRlEvB,WtRkEuB,KsRjEpB,WtRiEoB,KsRhEnB,WtRgEmB,KsR/DpB,sBACC,sBACI,sBACC,sBACT,gBACE,aACJ,aACE,wBAWT,gBACI,gBACC,gBACI,gBACC,gBACK,gBACV,4BAAY,GACV,0BAAS,GACR,cAAa,GACd,cACG,YA3ClC,sBCsDI6V,aAAe,WACM,GACD,GACE,GACJ,GACC,GACK,EACJ,IAAAhpB,GAAM,EAAI,EAAI,EAAI,GACnB,IAAAA,GAAM,EAAI,EAAI,EAAI,GAClB,EACO,KACD,YAXzBgpB,cAlEAC,EAIAC,EAMAC,EAKAP,EAIAQ,EAKAC,EAIAC,EAIAC,EAIAC,EASAC,EAIAC,GAjDA,aAIA,aAMA,aAKA,aAIA,aAKA,aAYA,aASA,aAIA,aAKoB,WAAAJ,EAOD,WAAAC,CAjEvB,aCGwBtf,EAAgBkF,GAA+Bwa,GAAA,UAA0B1f,EAAS,iBAAlE,aACF,gBACJ,eAFlC,sBCyBI2f,aAAe,UACJ,KACK,IAAA5pB,GAAM,EAAI,EAAI,EAAI,GACV,QACL,IAAAA,GAAM,EAAI,EAAI,EAAI,GAClB,GACI,GACL,EACN,SARZ4pB,cAWYzC,mBAAAA,EAAAA,UAA6B,UACrCA,EAAW,MACX,GAAMA,EAAW,OACjB,GAAOA,EAAW,OAClB,GAAMA,EAAW,OACjBA,EAAW,MACXA,EAAW,MACXA,EAAW,MACXA,EAAW,oCA7Cf0C,EACAC,EACAC,EACAR,EACAC,EACAQ,EACApB,EACAt4C,GAHA,aACA,aACA,aACA,aAEW,WAAAu5C,EAIK,WAAAC,EAIC,WAAAC,EAIE,WAAAR,CAtBvB,uBC0P+B,kBAIO,WhPxIQ,GAqIc,EArId,WgP4IR,WhP5IQ,GAuIoC,GAvIpC,KgPgI1C,aA7OyBvP,EAA0BC,oBAAqB4M,GAAA,UAAoB,uBAI1E,WAAA7M,EAQH,WAAAC,EAQmB,gBAQd,aAIQ,cAIC,cAIa,gBAIxB,cAOQ,eAAA3M,GAAoC,gBACR,gBACb,gBACC,gBACH,gBACT,W1R4BsB,K0R3BP,eAzDjD,aCiDkBxX,GAAA,aACwB,oBAEpB,aAEE,aALpB,aAtDAm0B,EAIAC,GAJA,aAIA,kBAO0B,WjPuGgB,GA1GS,GA0GT,MiPrGb,WjN0D2B,IiN3E5D,aCHoDC,GAAA,aAIJ,eAJhD,eCcmC,WAAArjB,EAAc,eACH,wBAAW,EAAG,aANxDmD,GAAA,aAKwB,WAAA+E,GAAK,IACM,WAAAA,GAAK,IACF,uBACH,aACY,gBACE,gBACtB,eAf/B,eCJqD,aADjD,eAIqB,mB/QDX,W+QEc,W/QiB+B,GAAiB,MAAU,GAAO,K+QxB7F,aCSI53B,EAIAgzC,EAIAzQ,GARA,aAIA,aAIA,aAMiH,WAAA0Q,GAA/F,WAAO,MAAY,WAAO,MAAW,MAA2B,WAAU,OAKqB,WAAAA,GAA9F,WAAO,MAAa,WAAO,MAAW,MAA0B,WAAU,OAItE,WAAP,WAAO,MAIC,WAAP,WAAO,MAIR,WAAoB,GAApB,WAAU,OAAsB,WAAO,KAnC3D,a/FgFQpgB,EAAgBqgB,EAAoBC,EAA2BC,EAAgBhgB,EAAgBC,EAAiBggB,EAAAA,G1MtDpH,Y0MsDuI,IADvI,a1MoCiB,EAAgB,MAG5B,GAAO,EACT,MAAsB,GA7Fb,KACRvrE,E0MwDI,UAAW,MAAQ,WAAY,cAAe,oB1MvDlD,MAAM,GAAiC,GAAR,GACnC,CAHA,KAqGD,GACS,GAtGI,KACRA,E0M2DI,UAAW,MAAQ,WAAY,cAAe,oB1M1DlD,MAAM,GAAiC,GAAR,GACnC,CAHA,KAyGF,GACS,GAAK,GACd,GA3Gc,KACRA,E0M8DI,UAAW,MAAQ,WAAY,cAAe,wB1M7DlD,MAAM,GAAiC,GAAR,GACnC,C0M8DI,QAAc+qD,EACd,QAAkBqgB,EAClB,QAAuBC,EACvB,QAAiB/f,EACjB,QAAkBC,EAClB,QAAmBggB,YACnB,EAAc,MjL9EqC,GAAiB,MiL8EhDD,GjL9EiE,MiL8EvE,EAAMA,GAAN,SACV78D,EAAc,GAAM,EADV,KAEV,IAAA+8D,GAAM,EAAM,EAAI,IAAA9gB,GAAS,GAAA2gB,EAAgB,MAAW58D,GAAS,GAAA48D,EAAgB,MAAY58D,KAF/E,OAGd,QAHA,QAAc,gBAjBds8C,EAAgBqgB,EAAoBC,EAA2BC,EAAgBhgB,EAAgBC,EAAiBggB,qDA3ExH,egGM0B,WAAT,KAAS,MAII,WAAT,KAAS,MAIJ,eAAA7gB,GAAA,KAAS,MAAT,KAAgB,OAItB,aAIE,aAKF,eAKC,cA9BrB,aCEqC7vC,EAAY1Y,EAAco0B,GAA1B,aAAY,aAAc,aAAgC,sBAA3F,aALmCqgB,GAAA,yBAA0B2Q,EAAKC,GAAoB,OAAbD,EAAI,MAAS,GAAUC,EAAI,MAAU,aAN9GikB,EAAoBC,0B7PGhB,IADP,EAsJ6D,O6PxJW,GAAjB,gBAApD,aAAoB,aAED,2BAIwC,K3SsB3D,G2StBmC,WAAwB,UACnC,WvNsEgC,KuNrE/B,yB3SeH,cAChB,cADgB,GAKV,KACR1rE,E2SdI,UAAW,MAAQ,iBAAkB,cAAe,mB3SexD,MAAM,GAAiC,GAAR,GACnC,KAHY,aADd,aACE,KADF,IACM,QADN,qBACc,KACRA,E2SXI,UACI,MAAQ,iBAAkB,cACzB,0F3SUT,MAAM,GAAiC,GAAR,GACnC,C2ShCJ,eCJA,qBAAmBsiD,GACf,IAAC,4BAA+B,iCAChC,GAAC,uBAA0B,0BAC3B,GAAC,gBAAmB,0BACpB,GAAC,kBAAqB,+BACtB,GAAC,eAAkB,wBACnB,GAAC,sBAAyB,gCAC1B,GAAC,qBAAwB,gCACzB,GAAC,gBAAmB,yBACpB,GAAC,eAAkB,wBACnB,GAAC,sBAAyB,sCAC1B,GAAC,mBAAsB,mCACvB,GAAC,gBAAmB,yBACpB,GAAC,eAAkB,wBACnB,GAAC,oBAAuB,6BACxB,GAAC,gBAAmB,yBACpB,GAAC,mBAAsB,6BACvB,GAAC,eAAkB,wBACnB,GAAC,uBAA0B,sCAC3B,GAAC,eAAkB,iCACnB,GAAC,oBAAuB,6BACxB,GAAC,iBAAoB,oCArBzB,EAsBA,4BCT4BqpB,EAAwBC,GAAxB,aAAwB,YAAhD,eADJ,eC6HsC,aALlC,aApHA7gB,EAIA0E,EAIAC,EAIAC,GACAsB,GAAA,UAAalG,GATb,aAIA,aAIA,aAKc,WAAG,WAAM,MAAY,IAAE,WAAG,IAAE,WACd,eAtBhC,aCyGInmD,EACAG,EACA6b,EACAirD,GAEA,YAJcjnE,EAAO,IAAAG,WACVH,EAAO,IAAS,gBACN,EAEjBgc,EAAM,EAKN,OAFAhc,EAAO,GAAO,EAAG,QACbinE,GAAWjnE,EAAO,GAASG,GACxB,GAAAH,EAAOrE,YAAc,OAGhC4xC,EAAQvtC,EAAA,EAAOgc,GAEf,OAAIuxB,IAAK,OAAY25B,GAAQlnE,EAAQG,EAAQ6b,EAAM,EAA9B,EAAiCirD,GAIlD15B,IAAK,QACLvtC,EAAA,GAAOgc,EAAO,GAAAuxB,EAAI,IACX,GAAAvtC,EAAOrE,YAAc,KAGhCqE,EAAA,GAAOgc,EAAO,QACPkrD,GAAQlnE,EAAQG,EAAQ6b,EAAM,EAA9B,EAAiCirD,GAC5C,aAzIgBE,EAAI5pE,GACR,QAAQA,EACR,QAAe,IAAE,OACrB,aAeJ28C,EASc/5C,OACNq4D,EAAQr4D,EACJq4D,EAAI,QAAKr4D,SAAQq4D,EAAI,QAAKr4D,YAC9BH,EAAa,IAAAq4B,GAAmBztB,GAAL,QAAW,KAAQ4tD,KAE9C,GAAIx4D,EAAO,MAAU,QAAKG,OAAQ,OAAOH,EAAOrE,eAGhDyrE,EAAgB,WAAKpnE,EAAO,KAC5B,GAAIonE,IAAa,OAAK,CAClB,IAAIpnE,EAAO,IAAS,EAAhB,IAAqB,QAAKG,OAAQ,OAAOH,EAAOrE,WACpDyrE,EAAY,WAAKpnE,EAAO,IAAS,EAArB,EAChB,CACA,GAAI,GAAc,QAAdonE,GAAsB,KACP,EAAAF,GAAQlnE,GAAlBmnC,EAAU,EAAV,KACL,IADe,EAAP,KACE,OAAOA,EAEjB,sBAEAkgC,EAAiB5uD,GAAF0uB,EAAU,QACzBmgC,EAAS,IAAAjvC,GAAc8O,GACvB,OAAiB,IAAbkgC,EACOlgC,EACJmgC,EAAG,GAASD,GAAU,GAAOA,EAAW,EAAlB,EAAqB,QAAK1rE,UAC3D,CACA,OAAOqE,EAAOrE,UAClB,aAzDgB4B,GAAA,aAGA,mBhOIgD,WgOMhEa,EhO2U0C,KAAW,IAAI,KA1Fb,GArP7B,GgOKf,QAAoB,GAAT,IACP,WAAW,GAAG,8BhOHF,WgOIhB,WAAW,EhOmZmC,KAAW,IAvZlD,GAuZ4D,GgOlZ/D,WAAQ,IAAG,YAAY,YAC3B,WAAO,WAASzC,WAChB,WAAe,IAAE,UAnBzB,oHCuPoD4rE,S3StJwzM,Q2SsJrzM,UAAH,mCApMhD72B,kBAoMgD,M3ShNwC,M2SkNpF,aAC8C82B,S3SzJ++M,Q2SyJ5+M,UAAH,qCAvMlD92B,kBAuMkD,M3SnNsC,M2SqNpF,eAJ4F,UAAvF,wFAA6F,aAClG,eAE+D,UAA1D,2DAAgE,aACrE,aAzPCsB,EAAAA,oBAAL,aAaIy1B,GAA4B,OAApB,oBAAmB,aA6DvBC,EAAkBtsE,GAA4B,QAAO,IAAcA,EAAS,aAEnEusE,GAAsC,OAA9B,QAAO,IAAiB,QAAK,aAE9CC,EAAoBC,SACxB3pD,EAAS,QAAO,KAGZ,GAFJ,MAC2BA,IACvB,SAAc/F,GAAN,OAAkB,CAAL,MAAK,aAC1B,GAFuB+F,IAEvB,UAAY/F,GAAJ,KAAgB,CAAL,MAAK,aACnB,GAHkB+F,IAGvB,QAHuBA,IAGlB,aACDylC,EAAQ,MAAK,MACTA,EAAI,KAAIA,EAAAA,EAAK,GAAL,KACRzlC,IAAM,OAAY/F,GAAN,OAAa,CAAAwrC,IACxBA,EAAEhoD,gBAEX,GATuBuiB,IASvB,SAAc/F,GAAN,OAAkB,CAAL,MAAK,aAC1B,GAVuB+F,IAUvB,SAAc/F,GAAN,OAAkB,CAAL,MAAK,aAC1B,GAXuB+F,IAWvB,SAAc/F,GAAN,OAAa,OAAK,MAAa,IAAlB,SACrB,GAZuB+F,IAYvB,SAAc/F,GAAN,OAAkB,CAAL,MAAK,aAC1B,GAbuB+F,IAavB,UACQ2pD,EAAe,MAAK,MAAO,GAAK,KAAU,KACrC,MAAK,MAAO,GAAK,KAAU,UAExC,GAjBuB3pD,IAiBvB,aACI4pD,EAAkB,aACyBp4C,GAAxCq4C,GAAHD,EAAiBzkC,GAAL,MAAeykC,IAAKnsE,WAAoB,IAAI,SAE5D,GArBuBuiB,IAqBvB,YAEI4pD,EAAkB,aACfC,GAAH,EAAiB1kC,GAAL,MAAe,IAAK1nC,gBAEpC,GA1BuBuiB,IA0BvB,aACI4pD,EAAkB,aACbzkC,GAAL,MAAe,GAAI,MAAa1nC,gBAEpC,GA9BuBuiB,IA8BvB,YACI4pD,EAAkB,aACbzkC,GAAL,MAAe,GAAI,MAAsB1nC,gBAG7C,GAnCuBuiB,IAmCvB,SAAO,SAAwB,GAAX,MAAK,aACpB,GApCkBA,IAoCvB,QApCuBA,IAoClB,UAAO,SAAmC,GAAX,MAAK,aACzC,GArCuBA,IAqCvB,UAAO,MAAK,MAAWviB,gBACvB,GAtCuBuiB,IAsCvB,UAAc/F,GAAN,OAAkB,CAAL,MAAK,aAC1B,GAvCuB+F,IAuCvB,UAAc/F,GAAN,OAAwB,IAAX,MAAK,cAC1B,GAxCuB+F,IAwCvB,SAAO,SAAe,MAAK,YAC3B,GAzCuBA,IAyCvB,SAAO,SAA0B,MAAK,YACtC,GA1CuBA,IA0CvB,UAA4BsyC,GAArB,MAAK,MAAK70D,WAAoB,QACrC,GA3CuBuiB,IA2CvB,SAAc/F,GAAN,OAAkB,CAAL,MAAK,aAC1B,GA5CuB+F,IA4CvB,UAAc/F,GAAN,OAAkB,CAAL,MAAK,aAE1B,GA9CuB+F,IA8CvB,SAAqB/F,GAAb,cAAoB,cAC5B,GA/CuB+F,IA+CvB,UAC6C/F,GAArC0vD,EAAY,0BACV,0BAD0C,cAEpD,GAlDuB3pD,IAkDvB,SAAyB/F,GAAjB,kBAAwB,cAChC,GAnDuB+F,IAmDvB,SAAyB/F,GAAjB,kBAAwB,cAChC,GApDuB+F,IAoDvB,SAAyB/F,GAAjB,kBAAwB,cAChC,GArDuB+F,IAqDvB,SAA2C/F,GAAnC,oCAA0C,cAClD,GAtDuB+F,IAsDvB,YACI4pD,EAAkB,WAClBp4D,EAAgBq4D,GAAH,EAAiB1kC,GAAL,MAAe,IAAK1nC,aAC/Bwc,GAAb,cAAoB,OAAMzI,SAzDRwO,IA2DvB,SAAsC/F,GAA9B,+BAA0C,CAAAkrB,GAAL,MAAK,KAAmB,SAC7DqkC,GAAc,EAAC,sCAAf,GAAmDxpD,GAAE,KAEjE,KA9DAle,EA+DJ,aAOQgoE,GACJ,UACAloE,EAAqC,GAAxB,QAAO,IAAU,UAC1B,SAAgB,UAAY,QAAOA,EAAA,GAAS,aAAT,EAAYmoE,GAAY,EAAAnoE,EAAOnE,WAAa,KAC9E,KAAgB,QAAe,IAAEmE,EAArB,WAAoCA,EAApC,WACrB,aAEQooE,EAAmBL,GACvB,UACA/nE,EAAqC,GAAxB,QAAO,IAAU,UAC1B,SAAc4nE,GAAc,EAAC,2CACjCvrE,EAAkB,GAAP2D,EAAgB,IAC3B,KAAgB+nE,E/PKlB,EAc4D,cAblE,EAkCkE,c+PvC9D,aAEQM,GACJ,UACAroE,EAAqC,GAAxB,QAAO,IAAU,UAC1B,SAAc4nE,GAAc,EAAC,uCACjC,KAAmB,GAAP5nE,EAAgB,GAChC,aAEQsoE,GACJ,MACA,KAAuC,GAA3B,QAAO,IAAa,UACpC,aAEQC,EAAaC,GACbA,IAAS,SAAO,SzSuBc,QyStBlC,GzSoH+C,MAAS,EySpH1B,CAC1B,OAAM,mBACI,EAAU,QAA8BC,GAAvB,QAAY5sE,uBAC7B,EAAY,QAA4C4sE,GAAvB,QAAY5sE,uBAC7C,EAAS+rE,GAAc,EAAC,0CAElC,QAAY,IAChB,CACJ,aAVQc,EAAaF,EAAAA,yBAAmB,eAYhCL,EAAgB9rE,EAAc6c,OAClCw/C,EAAQr8D,EAAKgE,OAAS6Y,EAAO7Y,OAA7Bq4D,EACA,GAAI,QAAO,GAAK,QAAOA,EAAG,QAAO,IAAkBx/C,EAAS7c,OACvD,KACDssE,EAAe,EACfC,EAAa,EACb,OAAM,mBACU,EAAQA,EAAS,QAAOlQ,EAAhB,aACR,EAASiQ,EAAW,QAAOjQ,EAAlB,aACT,EACRiQ,GAAY,QAAOjQ,EAAR,GAAa,EAAxB,EACAkQ,GAAS,QAAOD,EAAP,GAAkBjQ,EAA3B,MAGRx4D,EAAa,IAAAq4B,GAAcrf,YAC3B,KAAO,EAAAyvD,KAAAA,EAAA,UAAa,WAAGzoE,EAAO,GAAO,QAAQ,CAC7CA,EAAO,GAAO7D,YACd,KAAO,EAAAusE,KAAAA,EAAA,UAAW,WAAG1oE,EAAO,GAAO,QAAQ,CAC3C,QAAO,IAAkBA,EAAOrE,WACpC,CACJ,aApBQgtE,EAAgBxsE,EAAc6c,EAAAA,0BAAiB,kBAsB/C4vD,GACJ,UACA9oE,EAAqC,GAAxB,QAAO,IAAU,UAC9B6jD,WDvIsBryC,EAAgB+c,EAAYw6C,aAA2B,EAAD,MAChFtrE,EAAY+T,EACZtR,EAAa,OhOciB,EgOZ9B,GhOiQ8C,KAAW,IAAI,IgOjQ3C,EAAG,KACjBwT,EAAkC,IAAtBq1D,EAA+BC,GAANvrE,GAA+B,GAANA,GAC9DyC,EAAO,GAAOwT,GACdjW,GAASiW,EAAT,IACJ,MAAOxT,EAAO,GAAYzC,EAAQ,EAAI,KAAU,SAEhDwrE,EAAaF,EAAqB,EAC1Bx6C,EAAQ,EAAG,GACVA,EAAQruB,EAAO,IAAf,GAAwB,EAD7B,EAEG6oE,EAEG,IAANE,GAAS/oE,EAAO,GAAO,YAE3BgpE,EAAmB,GAARzrE,WACX,KAAO,EAAAwrE,KAAAA,EAAA,UAAO,eACVx7B,EAAa,GAALy7B,GACRhpE,EAAO,GAAO+J,GAAIwjC,IAClBy7B,EAAoB,IAAZA,EAAOz7B,EACnB,OhOoBkC,GAAL,GgOlB7B,OhOo8BoD,GAAI,GgOp8BhB,EAAGvtC,EAAOrE,WAAgBurE,GAAQlnE,EAAR,OAA4B,GAAO,IACzG,CC8GgBipE,CAAiBnpE,EAAQ,QAAM,SAEnC,SAAgB,UAAY,QAAOA,EAAS,EAAGmoE,GAAY,EAAAtkB,EAAI,KAC9D,KAAgB,QAAe,IAAEA,EAAQA,EAClD,aAEQulB,EAAqBrB,GACzB,UDjJsBtqE,EAAe8wB,EAAYw6C,ECkJjD/oE,EAAqC,GAAxB,QAAO,IAAU,aDlJRvC,EtTyE05H,EsTzE34H8wB,EtTyEm5H,WsTzEv4Hw6C,EtTyE64H,esTzEl3H,EAAD,EACtD,IAAzBM,GAAkB5rE,GAAO,IAAW8wB,EAAOw6C,ICkJvCllB,EACQkkB,E/PFhB,EAzCkE,cA0C/C,EArB+C,c+PyBtD,SAAgB,UAAY,QAAO/nE,EAAS,EAAGmoE,GAAY,EAAAtkB,EAAI,KAC9D,KAAgB,QAAe,IAAEA,EAAQA,EAClD,aAEQylB,EAAoBvB,GACxB,UACA/nE,EAAa,QAAO,IAAU,WvTpF+xI,GAAP,GuTqFtzI6jD,EACQkkB,E/PLY,EAjDsC,cAiDlB,EA5BkB,c+PoCtD,SAAgB,UAAY,QAAc,GAAP/nE,GAAoB,EAAGmoE,GAAY,EAAAtkB,EAAI,KACzE,KAAgB,QAAe,IAAEA,EAAQA,EAClD,uBAGmD,WAAAuH,GAAK,IAGH,WAAAA,GAAK,GAJ1D,6IApPyB53B,EAA0Bl3B,GAAvD,KAA6B,aAA0B,aAGzB,gBACF,cACc,cACC,qBAChB,kBACG,gBAEC,cACR,cACW,aAZlC,gHAFc41C,EAAAA,oBAAd,aCmEIxB,EAAc64B,GAA0E,OAApB,IAAzBC,GAAa,EAAMD,GAAM,MAAU1tE,UAAS,aAnE/Dwc,EAAoBkxD,GAApB,aAAoB,aAE1B,aACM,cACH,gBACM,YAL/B,eCksB0B,aACD,aAGG,kBACG,kBAGD,iBACE,wCAGC,kBACC,kBACA,kBACI,kBAGP,kBACC,kBACH,kBACE,kBACI,kBACF,kBACG,kBACC,kBACH,kBACE,kBACI,kBACF,kBAGf,kBACC,kBACK,kBACA,kBACD,kBAGU,kBACC,kBACJ,kBAGH,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACe,kBACA,kBACF,kBACA,kBACJ,kBACM,kBAGV,kBACI,kBACC,kBACA,kBACG,kBACV,gBAjsBnC,eCLA,uBChB+B,W3R4BgD,qBAGzE,gBAAmB,gBAAkB,GACxC,oB2RjCH,aCUIE,GAAA,aAKwB,gBAIJ,aAIP,cAIE,cAMH,cAMO,aAjCvB,eCCiB,4BAAY,GACR,eAFrB,eCUI,aATAC,EACAC,EACAC,GAFA,aACA,aACA,YAHJ,aCCIzzD,YAAgB,OAAhB,aAEWnb,KAAA,MAAAA,KACAA,KAAA,MAAAA,IAJf,eCIyB,gBAIA,gBAIM,gBAIV,gBAMK,gBAIT,cAIA,aA9BjB,aCAkBghB,GAAA,aAIW,gBAID,gBAIE,gBAIA,gBAIJ,gBAIA,gBAMqB,gBAI7B,YAlClB,eCIgB,eAAA6tD,GAIA,eAAAC,GAIS,eAAAC,IAAY,GAIT,eAAAA,IAAY,EAhBxC,aC4GYC,OAIJ,UAAM,MAAN,GnUTkkC,OAAjB,GmUUjjC,QAhHM,EAiHN,QAAW,KACX,QAAO,IACX,aAEQC,EAAiBC,GACjB,UAASA,YAGTC,EAAcD,QACX,UAASA,GAIR,QAAQA,EA9HV,IA+HM,SACA,MA6VitZ,QA5VjtZ,MAAoB,OAjIK,IAkIlB,UACP,MA0VuwZ,QAzVvwZ,SAnIS,IAsIT,SACA,MAqV+2Z,QApV/2Z,SAzIyB,IA0IlB,UACP,MAkV2zZ,QAhV3zZF,GAAY,GAI5B,CA3B2BG,CAAU,EAAAD,EACrC,aAmHQE,EAAcC,EAAqBC,OACvCplE,EAAQ,QACR,GAAS,MAALA,GAGA,GADAA,EAAS,OAAmB,GAAJ,WACd,OAAaA,EAAQ,GAALA,EAAE,QAAQ,OAAO,OAMtC,OAAgBA,GACrBA,EAAW,GAAPA,EAAE,WAIR,EAAFA,EAAE,MAAF,MAAE,MAAF,MAAcolE,GACT,GAALplE,EAAE,OAAM,MAAO,GAAKmlE,EAAO,GACtB,GAALnlE,EAAE,OAAM,MAAO,GAAKmlE,EAAO,GACtB,GAALnlE,EAAE,OAAM,MAAO,GAAKmlE,EAAO,GAQ3BnlE,EAAE,MAAU,MACV,EAAFA,EAAE,MAEF,OAFA,MAAE,MAAF,OAAkB,GAClB,QAAWA,GACJ,CACX,aAWQqlE,GACJ,QAAY,aACF,IAAQ,UAAlB,KAAU,IAAV,KAAK72D,EAAK,cACN82D,EAAa,QAAM92D,GACnB,IAAK02D,GAAU,EAAAI,EAAO,MAAQA,EAAO,OAAO,OAAO,QAFvD,EAAU,GAMV,OAFA,QAAa,EACb,SAAyB,GAClB,CACX,uBAwL+B,eACoB,aAGzB,eAAArF,EAL1B,wDAhdJ,KAIkC,WARpB,EAY2B,gBAIhB,gBAMR,4BAAY,GAIb,4BAAY,GAIZ,4BAAY,GAMG,aAIL,WAqb+ga,OAjbpha,cAIC,gBAIG,gBAIG,gBAML,cAIA,cAIW,gBAKO,cAIpB,qBAIL,MnS9G2C,GAAiB,MmS8GtD,KnS9GuE,MmS8G7E,EAAM,KAAN,KAAwB,IAAAsF,GAAxB,qBAMoB,gBACgB,sBACG,sBACF,sBACH,sBAGE,sBACE,sBACE,sBACG,sBACF,sBACH,sBAGE,sBACE,qBArG1D,eCD2B,gBAIA,gBAII,gBAIV,gBAMJ,4BAAY,GACjB,aAIA,aAIO,YA/BnB,eCEA,eCFA,aC8BYC,EAAQC,EAAgBC,GAC5B,OAAOD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,EAChD,uBA3BkC,cACX,aACA,aACU,cAiBzB,WAAW,EACX,WAAW,CAtBvB,eCFqB,YADjB,eAKoB,gBACL,YAFf,eAkB0B,aAD1B,eAtBJ,eCA+BC,GAAA,mBACf,MzS3B2C,GAAiB,MySgDzD,IzShD0E,MyS2B7E,EAqBG,IArBH,KAAuB,IAAAC,GAAvB,6BACE,MzS5ByC,GAAiB,MySgDzD,IzShD0E,MyS4B3E,EAoBC,IApBD,KAAuB,IAAAC,GAAvB,qBACH,aACD,WAkBK,GAjBA,aACG,cAGd,WAAM,GAAN,MAAkB,EAClB,WAAQ,GAAR,MAAiB,IAVzB,aCoMgBC,EAAO1sE,EAAQC,GACnB,OAAQ,OAAIA,EAAGD,EACnB,aAMQ2sE,EAAS17C,EAAiB5vB,EAAQC,OACtC0kD,EAAU/0B,EAAM5vB,GAChB4vB,EAAM5vB,GAAK4vB,EAAM3vB,GACjB2vB,EAAM3vB,GAAK0kD,CACf,eA1LQ,aACA,YAFZ,eA8KA,eAjM0BumB,GAAA,WACf,eAAAK,GACc,W1S9B8B,GAAiB,MA6DyX,IA7DxW,M0SmClE,gBACZ,aACD,WAMM,GALE,aAVtB,sBCwZQC,aAAA,iBAAAA,cACYt5C,EAAYu5C,EAAsBC,mBAAlCx5C,EAAYu5C,EAAsBC,EAAAA,UAA9C,WACI,QAAYx5C,EACZ,QAAcu5C,EACd,QAAcC,mCA5TdC,EAAW1uC,GACf,OAAQA,EAAE,OAAUA,EAAE,KAC1B,aAEQ2uC,EAAe3uC,EAAYinB,GAG/B,OAFAjnB,EAAE,MAAQinB,EACVjnB,EAAE,OAAS,EACJA,CACX,aAEQ4uC,EAAc3nB,WAClBA,EAAQA,EACI,MAAL,GACH,SAAW,EACX,EAAI,EAAE,KAEd,aA4BQ4nB,EAAW9qE,GACf,OAAOA,EAAA,GAAM,aAAN,OAAc,YACzB,eAoRe,uBAIgB,gBACG,eAhBlC,eAuBA,eAUA,eAsBA,uBAxc4C,cACpB,eAAA+qE,GACE,eAAAC,GACG,eAAAC,GAyPS,YA9P1C,sDCuCYC,EAAeC,EAAmBC,GACtCD,EAAK,MAALA,EAAA,MAAgBC,EAAK,MAArB,MACQ,KAARD,EAAK,OAAG,EAAR,MAAQ,EAAR,MAA8B,GAARC,EAAK,OAAM,MAAjC,CACJ,aAEQC,EAAgBxtE,SACR,OAAa,OAAiB,GAARA,EAAE,SAApC,OAAO,aAAP,GAAO,EAAP,IACJ,aAEQytE,EAAgBztE,SACR,OAAa,OAAiB,GAARA,EAAE,SAApC,gCAAO,EAAP,IACJ,aA+7BiB0tE,eAIT,eA3M8B,cA8KH,gBA39BvC,eCHA,eCC0B,aACG,aACA,YAH7B,aC3CIC,EACAC,EACA9T,GAQH,gBAV0B,yBACA,gBAEvB+T,IADAC,WAAyC,KAFzCC,EAGW,EAFXC,EAEW,WAAAC,GACX,EAAO,cAMX,OAJI,iBANAF,EACAC,mBAKqBE,GAGrB,OAFI,MAAuB,GACvB,MAAuB,GAC3B,IAHqB,OAIzB,UARIJ,EAFAC,EACAC,CASJ,aAR6CG,GAAC,uChPmExC,SAAwB,eAIxB,SAAyB,eA3CzB,SAAa,eAIb,SAAkC,eAqBlC,SAA2B,eAC3B,SAAmC,eA7BnC,SAA6B,eAkH7B,SAA6B,eAE7B,SAA2B,eArH3B,SAAwB,eAmLxB,SAAiC,eAPjC,SAAsB,eAMtB,SAAiC,eAEjC,SAA6B,eA4C7B,SAAqB,eA3CrB,SAA6B,eA9L7B,SAAmC,eAEnC,SAAmC,eAuMnC,SAAuB,eAjEvB,SAAmB,eAdnB,SAA4B,eAuK5B,SAAgC,eAgChC,SAA+B,eAjD/B,SAA0B,eA7N1B,SAAyB,eA+CzB,SAA6B,eA6B7B,SAAoB,eA1HpB,SAAqB,eAsCrB,SAA0B,eA2I1B,SAAqB,eAoDrB,SAA4B,eAhL5B,SAAkC,eAtDlC,SAAc,eADd,SAAe,eAiQf,SAA6B,aiP/NLC,EAA8B1sE,OACxDmnC,EAAQulC,EAAoB,MAG5Bhf,EAASvmB,EAAE,GACXisB,EAASjsB,EAAE,GAGXwmB,EAASxmB,EAAE,GAAKA,EAAE,GAClBmsB,EAASnsB,EAAE,GAAKA,EAAE,GAGlBoqB,EAASpqB,EAAE,GAAKA,EAAE,GAClBqqB,EAASrqB,EAAE,GAAKA,EAAE,GAGlBsqB,EAAStqB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACzBuqB,EAASvqB,EAAE,GAAKA,EAAE,GAAKA,EAAE,K1PiSgC,KAAW,IArRlC,EAAI,KAqRmB,KAAW,IApRvE,EACC,KAmR2D,KAAW,IAAI,EAAG,G0PhS3EiyB,EAAyC,GAA9B,K1PyS8C,KAAW,IA3RpD,EAAI,KA2RqC,KAAW,IA1RnE,EAAI,KA0RoD,KAAW,IAAI,EAAG,G0PxS3EyB,EAAyC,GAA9B,K1P+R8C,KAAW,IAhRzD,EAAI,KAgR0C,KAAW,IAhR5C,EAC1B,KA+Q2D,KAAW,IAAI,EAAG,G0P9R3EC,EAAyC,GAA9B,K1PuS8C,KAAW,IArRtE,EAAI,KAqRuD,KAAW,IArRzD,EAAI,KAqR0C,KAAW,IAAI,EAAG,G0PtS3EzB,EAAyC,GAA9B,GACX,OAAOr5D,EAAO,IAAIo5D,EAAM0B,EAAMD,EAAOzB,EAAvB,EAA6BC,EAAOyB,EAApC,EAClB,aAkBsBv9D,S1P+I2B,KAAW,IAnH5D,GAmHiD,KAAW,IAnHrC,KAmK4B,KAAW,KAAK,G0P7L/D,OAAO,GADwC,GAArC,EAEd,aAZiBA,GAAoD,OAA7B,IAATA,GAAqC,IAAvBA,GAAUA,EAAQ,EAAlB,GAAuB,aArE1DA,GAAqC,OAApBA,E1PyRyB,KAAW,MAjR3D,E0PR0C,aA0BtCA,EAAYovE,GAAqD,QAApCpvE,EAAQovE,EAAR,GAAkBA,EAAnB,GAA8BA,EAAO,CAAD,aCtClCvvB,GAAmBwvB,GAAA,UAAsBxvB,SjVCH,OAGxE,EAAI,OiV+C2C,EAlDqC,IAAYtiD,MAAtB,WjViFnE,QA1ET,OAAe,EAAI,OiV2C8B,EAhDxC,IAAYA,MAgD4B,EA/C3C,MAAY,EAF4D,WjVgFrE,QAtEV,OAAc,EAAI,OiVuCgC,EA7C4B,IAAYA,MAAtB,WjV4E1D,QArE+D,OAAgB,EAAI,OiVsC3C,EA5CgC,IAAYA,MAAtB,WjV2E9D,QAhE0C,OAEhD,EAAI,OiV+B0C,EA3CsC,IAAYA,MAAtB,WjV0EpE,QA9DgF,OAAe,EAAI,OiV+B3D,EA1C8B,IAAYA,MAAtB,WjVyE5D,EiVnEqB,gBACK,gBAIV,gBACG,gBACG,aACE,aACA,aAK3B,WAAc,IAA4B,YAC1C,WAAc,IAA4B,YAC1C,WAAgB,IAA4B,YAK5C,WAAc,IAAwB,YACtC,WAAgB,IAAwB,YACxC,WAAmB,IAAwB,WAtCnD,aCCIsiD,OAJJ,EAII,aAKgB,cAII,eAID,iBAIC,cAIG,gBAIG,cAII,WAAAyvB,IAjClC,EAiCgD,cAAEttB,GAC1C,KAAK,SAAaA,aAAA,eAAyB,UAM3C,OAJA,SAAY,EACZ,QAAI,MAAO,IAAe,SAGpBA,EAAMutB,cACR,SAAK,GACD,MAAY,UACZvtB,EAAMwtB,4BAEV,SAAK,IACD,MAAY,WACZxtB,EAAMwtB,4BAEV,GACI,MAAY,UACZxtB,EAAMwtB,4BAEV,GACI,MAAY,YACZxtB,EAAMwtB,4BAEV,GACI,MAAW,WACXxtB,EAAMwtB,4BAEV,GACI,MAAW,SACXxtB,EAAMwtB,4BAEV,GACI,MAAW,YACXxtB,EAAMwtB,4BAEV,GACI,MAAW,WACXxtB,EAAMwtB,4BAEV,GACI,QACAxtB,EAAMwtB,4BAEV,GACI,QACAxtB,EAAMwtB,iBAGlB,aAI4B,WAAAF,YAtFhC,mBAsFgDttB,GAK5C,OAJQ,UACA,SAAY,EACZA,EAAMwtB,kBAEd,IAL0C,QASvB,WAAI,MAAOC,SACX,IAAG,WAAI,MAAJ,SAAsB,GAExC,WAAI,IAAkB,UAAU,YAChC,WAAI,IAAkB,QAAQ,YAE9B,WAAI,IAAkB,QAAQH,YArGtC,mBAqGoDp2B,GAAoC,OAA9B,SAAW,QAAI,MAAOw2B,QAAQ,IAApC,QArGpD,0GC0QI,gFAkBiCx2B,EAAAoK,sDA1NEiN,GAAA,aACf,WlUsBgC,IkUvBpD,eA6SA,aAiBK9b,EAAAA,oBAAL,aApGiCA,GAAA,yBAnNgBhtC,GAAwB,OAAnBA,EAAE+nE,iBAAiB,eAiMzE,8CAtPAG,EAIAC,YAA0C,WAJ1C,aASmB,kBAAc,YAQf,eAAAC,GAAU,IAAAC,GAAO,YAAK,IAAAC,GAAoBH,IAI7B,WxP8ByB,KwP1BhB,eAAAI,GAA2BzyE,MAIvC,eAAA0yE,GAAiB1yE,MAIf,eAAA2yE,GAAmB3yE,MAQ3B,W1LJ4B,K0LK5B,eAAA4yE,GACU,aACE,kBAS9BC,EAA6Bd,GAAc,IAC3C,SAAkB,YAAYc,GAC9B,SAAkB,aAAaA,GAC/B,SAAkB,cAAcA,GAChC,SAAkB,QAAQA,OA7DlC,EAgEQC,EAAqBf,IAhE7B,EAgE2C,cAAE7nE,GAA+B,OAA1B,QAAW,GAAYA,GAAG,MAC7B,IAAnC63C,OAAOgxB,UAAUC,gBAGjB,WAAO38D,MAAM48D,YAAa,eAAgB,QAE1C,SAAkB,cAAcH,GAChC/wB,OAAOmxB,iBAAkB,cAAcJ,GAAgB,GACvD/wB,OAAOmxB,iBAAkB,gBAAgBJ,GAAgB,GACzD/wB,OAAOmxB,iBAAkB,YAAYJ,GAAgB,KAErD,SAAkB,YAAYA,GAC9B/wB,OAAOmxB,iBAAkB,YAAYJ,GAAgB,GACrD/wB,OAAOmxB,iBAAkB,UAAUJ,GAAgB,GACnD,SAAkB,aAAaA,GAC/B,SAAkB,YAAYA,GAC9B,SAAkB,WAAWA,GAC7B,SAAkB,cAAcA,IAEpC,SAAkB,QAAQA,GAG1B,WAAOI,iBAAkB,4BAtFjC,mBAuFczuB,GAMF,OANWA,aAAA,wBACP,UAAI,MAAO,wBAAyBA,EAAM0uB,eAE1C1uB,EAAMwtB,iBAEN,QACJ,IANA,QAMG,GACP,WAAOiB,iBAAkB,gCA9FjC,mBA+FczuB,GAIF,OAJWA,aAAA,wBACP,UAAI,MAAO,wBAAyBA,EAAM0uB,eAE1C,QACJ,IAJA,QAIG,GAGPnzE,KAAK,KAtGb,aCfIsiD,GAAA,aAEsC,WnUsFc,ImU5FxD,eCPkC,iBACG,iBACN,iBACG,iBACA,iBACD,iBAGL,iBACE,iBAEQ,gBACC,gBACH,gBAGI,gBACF,gBACM,gBACA,gBACF,gBACI,gBACH,gBACI,gBACR,gBACM,gBACA,gBACD,gBACD,gBACM,gBACZ,gBAGK,gBACL,gBACF,gBACM,gBACC,gBACI,gBACF,gBACA,gBACC,gBACD,gBACD,gBACC,gBACG,gBACD,gBACI,gBACC,gBACV,gBACD,gBACI,gBACC,gBACI,gBACJ,gBACF,gBACU,gBAGZ,gBACC,gBACH,gBACA,eA/DvC,aCMI8wB,EACAC,EACA14C,EACA24C,G/UwBA,G+U1BA,aACA,aACA,a/UIsC,IAAT,EAoBjB,KACRhzE,E+UtBsB,UAAW,MAAQ,kBAAmB,cAAe,kB/UuB3E,MAAM,GAAiC,GAAR,GACnC,C+U/BJ,eCFmC,WtUiGqB,KsUhGrB,gBACR,aACY,gBACH,gBACT,aACD,aACQ,gBACA,gBACP,aACc,cACN,cACD,gBACN,aACG,aACwB,WA8B+nE,EA7BnpE,gBACE,WtUgFmB,KsU/EtB,WtU+EsB,KsU9EpB,WtU8EoB,KsU7EvB,WtU6EuB,KsU5E9B,aACD,aACM,gBACA,gBACG,gBACM,WtUuEgB,KsUtElB,WtUsEkB,KsUrEhB,WtUqEgB,KsUpElB,WtUoEkB,KsUnEZ,WtUmEY,KsUlE9B,gBACE,gBACJ,gBACa,gBACC,gBACF,gBACI,gBACF,gBACI,gBACG,gBACF,gBACA,gBACR,gBACA,eA7CnC,aCsFYizE,EACJC,EAA0BC,EAAkBC,EAAoBC,EAAqBC,EACrFC,EAA0BC,SA8B7B,OAvDwD,IA0B/CL,aAkFFM,EACJJ,EAAqBE,EAA0BD,EAAkBE,EAAmBN,EACpFE,WAEAt1B,EvU7EgD,KuU8EhD41B,EAAiB,EACVA,EAAaL,GAAgB,SAChCM,EvUhF4C,KuUiFxB,EAAAJ,EAAA,QAApB,YAAMxnC,EAAc,cAChB6nC,EADgB,MACc,EAA9BA,EACAC,EAAmB,GAAA9nC,EAAI6nC,GACvBD,EAAM,EAAgB,OAClB,SAAaL,EAAcI,EAAd,GAA2BG,EADtB,EACoCD,EAAgBJ,EAAc,UAGxFN,EAAiBp1B,EAAM,EAAI61B,EAAA,GAAM,IAChC71B,EAAM,EAAa0R,GAANmkB,IAClBD,EAAAA,EAAcN,EAAd,CACJ,CACA,OnUxK8D,GA2NyyB,EmUlD32B,CApGQK,CAAuB,EAAAJ,EAAgBE,EAAeD,EAAaE,EAAcN,EAAiBE,GAzBvF,QAuBTD,aA+BFW,EACJV,EAAoBC,EAAqBC,EAAkBC,EAA0BC,EACrFN,OAEAp1B,EvU1BgD,KuU2BhDi2B,EAA4C,IAAtB,QAAS,OAAyC,IAAvB,QAAS,MACtD,IAAAC,UAAU,cAAS,MAAY,QAAS,OAAaZ,IAErD,IAAAY,UAAU,cAAS,MAAe,QAAS,OAAaZ,IAE5Da,EAA2B,IAAAC,SAASH,EAAYI,QAChDC,GAAe,EACfC,EAAkB,EAClBC,EAAsB,EACtBC,EAAyB,EAEN,IAAnB,KAA2BlB,IAA3B,KAAKK,EAAc,EACf,GADe,QACXU,EAAU,CACVC,EAAc,EACdC,EAAkB,EAClBF,GAAW,MACLI,EAAqB,QAAYC,QAAQnB,EAAcI,EAAtB,KCyHO,KAAG,KDxH7C,GC6PkB,MAA1B,EAA0B,IAA1B,EAA0B,KA9YjC,GDiJ4BW,EAAcG,EAAiB,EAA/B,aC0H7B,SAAM,GAmI4B,MAA1B,EAA0B,IAA1B,EAA0B,KA9YjC,GDkJ8BF,EAAoC,GAAlB,GAACE,GAAnB,EACPJ,GAAW,EAE3B,KAAO,KACHM,EAA8B,OAAS,QAAapB,EAAcI,EAApC,EAAgD,EAAG,SACxD,IAAQ,EAAAY,EAAjC,KAAyB,aACrBL,EAAqBU,QAAQJ,EAAgC,GAAZG,IACjDH,EAAAA,EAAA,UAFJ,EAAyB,GAKN,IADnBF,EAAAA,EAAA,OACsBD,GAAW,EACrC,QAlBJ,EAA2Bf,OAqBR,UAAQU,EAAYhvE,QAAYquE,GAAhC,2BAAnB,GAAmB,EAAnB,MAAmB,KAAnB,GAAmB,GAAnB,SAAKM,EAAc,kBACfC,EvU5D4C,KuU6DxB,EAAAJ,EAAA,QAApB,YAAMn7D,EAAc,cAChBw7D,EADgB,MACc,EAA9BA,EACAC,EAAmB,GAAAz7D,EAAIw7D,GACvBD,EAAM,EAAgB,OAClBM,EAAsB,EAAaJ,EADjB,EAC+BD,EAAgBJ,EAAc,UAGnFN,EAAiBp1B,EAAM,EAAI61B,EAAA,GAAM,IAAS71B,EAAM,EAAO61B,SAT/D,IAAmB,GAWnB,OnUlJ8D,GAyN1D,EmUtER,CA5EQG,CAA8B,EAAAV,EAAeC,EAAgBC,EAAaC,EAAeC,EAAcN,GA9BvB,IA0B9EC,GAMF,UAAI,MAAO,oDElFwB,IFmDvC,IAyBMA,GAUF,UAAI,MAAO,uDEtFwB,IFmDL,IAyB5BA,GAcF,UAAI,MAAO,uDE1FwB,IFmDqB,IAyBtDA,GAkBF,UAAI,MAAO,+CE9FwB,IFoD1C,IAwBSA,GAsBF,UAAI,MAAO,gDElGwB,KFsGnC,UAAI,MAAO,gCAA8BA,KEtGN,IFyG1C,CAAD,aAuFQyB,EAAsBC,EAAgBC,GAC1C,WAAS,MAAc,IAAO,GAAK,QAAS,MAAgB,KAhM3C,MAAM,OA4M1B,OAXwC,KAArC,QAAS,MAAoB,IAAc,IAAApqB,GACjC,SAAYoqB,EAAS,QAAS,MAAT,GAA6B,GAAKA,EAAS,QAAS,MAAT,GAA6B,GACzF,QAAS,MAAT,GAA6B,IACjC,SAAYD,EAAS,QAAS,MAAT,GAA6B,GAAKC,EAAS,QAAS,MAAT,GAA6B,GACzF,QAAS,MAAT,GAA6B,KAE3C,QAAS,MAAgB,IAAO,GAAK,QAAS,MAAc,IAAO,EAAK,IAAApqB,GAAe,SAAYoqB,GAAe,SAAYD,IACtH,IAAAnqB,GACE,UAAoD,GAAvCoqB,EAAS,QAAS,MAAT,GAAuB,IAAW,QAAS,MAAT,GAAyB,GAAK,QAAS,MAAT,GAAuB,IAC7G,UAAaD,EAAS,QAAS,MAAT,GAAuB,IAAM,QAAS,MAAT,GAAyB,GAAK,QAAS,MAAT,GAAuB,IAEtH,aAmGQE,EAA4BzgE,OAChC0gE,EAAwF,GAAjD,OAAS,QAAa1gE,EAAQ,EAAG,UACxE2gE,EvU7NgD,KuU8NhD78D,EAAQ9D,EAAS,EAAjB8D,ExV3KU,IAAd,KAI0oa,IAJ1oa,CAAc,YwV6KN88D,EAAkE,GAA5C,OAAS,QAAa98D,EAAG,EAAG,UAClD2M,EAAuE,GAAhD,OAAS,QAAa3M,EAAI,EAA1B,EAA6B,EAAG,UACvDiiB,EAAwE,GAAhD,OAAS,QAAajiB,EAAI,EAA1B,EAA6B,EAAG,UACxD46D,EAA8E,GAAhD,OAAS,QAAa56D,EAAI,EAA1B,EAA6B,EAAG,UAC9D68D,EAAiB,EAAI,IAAAE,GAAaD,EAAKnwD,EAAMsV,EAAO24C,EAAa,QAAa,UAC9E56D,EAAAA,EAAK,GAAL,QxVlLR,EAI0oa,GwVgLtoa,QAAqB,EAAO68D,OAC5BG,EAA4E,GAA5C,OAAS,QAAah9D,EAAG,EAAG,UACvC,IAAjBg9D,GAAoBL,GAAwB,EAAAK,EACpD,aAlUgBrB,GjVqBhB,GiVpBmC,WvUuFiB,KuUtF1B,eAAAG,SAASH,GACZ,eAAAsB,GACM,uBAWrBC,WACJ,EAAmC,SAAS,QAAa,EAAG,EAAG,SAC3D,kBAAU,MACV,wBACc,UAAW,MAAQ,gBAAiB,gBAAgB,4BAgD9C,MAAM,GAA8B,GAAR,OAjDtC,EAFd,SAKJ,CAdIA,CAAc,MAgBVC,EjVXqE,MiVW9C,GAAY,OAAS,QAAa,EAAG,EAAG,SAAmB,IjVF9E,KACRv1E,EiVd4B,UAAW,MAAQ,gBAAiB,cAAc,qBjVe9E,MAAM,GAAiC,GAAR,GACnC,KiVDQu1E,EAdJR,GAAwB,KAAwD,GAA5C,OAAS,WAAa,EAAG,EAAG,uBAgN5DS,WACQ,qBAAZ,KAAKC,EAAO,MAAgC,EAAJA,EAAI,MACxC,GAjOL,MAiOK,EAAwC,crS1L05S,EAAI,WqS2Lt8S,GA5LX,MA4LW,SAAkC,UnUW0mG,EAAI,MmUX9mG,QnUhNwB,GAAY,QmUiNtE,GAlOT,MAkOS,EAAoC,cAAiD,GAA1BA,EAAI,MAAJ,GAAuB,SAClF,GAxLiD,MAwLjD,SAAsC,UnUS+zG,EAAI,MmUTn0G,QnUlNoB,GAAY,QmUmNtE,GA7NY,MA6NZ,EAA0C,cAA4BA,EAAI,WAC1E,GAvOL,MAuOK,EAAqC,cAAiD,GAA1BA,EAAI,MAAJ,GAAuB,SACnF,GAzOD,MAyOC,EAAoC,cAAgD,GAA1BA,EAAI,MAAJ,GAAuB,SACjF,GAzNsE,MAyNtE,EAAyC,cAA0BA,EAAI,MAAJ,GAAuB,QAC1F,GA1N6B,MA0N7B,EAAyC,cAA0BA,EAAI,MAAJ,GAAuB,QAC1F,GA7NH,MA6NG,EAAoC,cAAiD,GAA1BA,EAAI,MAAJ,GAAuB,SAClF,GAzOG,MAyOH,EAAmD,cAA+D,GAA1BA,EAAI,MAAJ,GAAuB,SAC/G,GAvNA,MAuNA,EAA6C,cAAyD,GAA1BA,EAAI,MAAJ,GAAuB,SACnG,GA/NsD,MA+NtD,EAAuC,cAAkD,GAA1BA,EAAI,MAAJ,GAAuB,SACtF,GAjN6E,MAiN7E,EAAwC,cAA0BA,EAAI,MAAJ,GAAuB,QACzF,GAjOe,MAiOf,EAA0C,cAAqD,GAA1BA,EAAI,MAAJ,GAAuB,SAC5F,GAnMmB,MAmMnB,EAAsC,cAAkD,GAA1BA,EAAI,MAAJ,GAAuB,SACrF,GAhNG,MAgNH,SAAiC,UnUJ0tJ,EAAI,MmUI9tJ,QnU/NyB,GAAY,QmUHlF,MAmOY,EAA0C,crS3M+uW,EAAI,MqS7BjxW,MAyOZ,EAAsC,crS5M42W,EAAI,MqSEj3W,MA2MrC,EAAyC,crS7Mu+W,EAAI,MqSExhX,MA4MI,EAAqC,crS9MkmX,EAAI,MqSAjlX,MA+M1D,EAAoC,cAAgD,GAA1BA,EAAI,MAAJ,GAAuB,IA/M3D,MAgNtB,EAAmC,cAA+C,GAA1BA,EAAI,MAAJ,GAAuB,IAvOrE,MAwOV,EAAqC,cAAuBA,EAAI,MAAJ,GAAuB,GAvOhF,MAwOH,EAAqC,cAAuBA,EAAI,MAAJ,GAAuB,GAzP1D,QA0PzB,EAAqC,cAA0BA,EAAI,MA3PzC,QA4P1B,EAAsC,crSpNstY,EAAI,MqSzCruY,QA8P3B,EAAsC,crSrNq1Y,EAAI,MqS5Cj3Y,QAkQd,EAAuC,crStNi9Y,EAAI,MqS1Ct+Y,QAiQtB,EAAmC,crSvN+kZ,EAAI,MqSrCzlZ,QA6P7B,EAAkC,cAAoBA,EAAI,MA7PjE,QA8PO,EAAgC,cAAkBA,EAAI,MAAJ,GAAuB,GACjE,UAAI,MAAO,wBAAuBA,EAAI,MAClD,CACJ,CAnPID,CAAkC,eAqP9BE,GjV1OR,aiVIQC,GAAyE,QAAJ,eA4SrEC,EAAgBV,oB3UpDR,EA6WA,QA7WA,WAAhB,KAAK/9B,EAAW,MAAM,G2UpGd,EAwJ2D,QAAO+9B,E3UpDpD,CAAwB,EAAO,UAAM,CAC3D,EAAO,K2UmDwE,O3U7KxE,C2U6KuE,CA5SpDU,CAAA,EAjCS,OAiC6C,CjVwGw9U,IA5G5hV,KACR51E,EiV0OuB,UAAkB,MAAO,gBAAiB,QAAS,wBjVzO1E,MAAM,GAAiC,GAAR,GACnC,KiVyOI61E,EAAsB,QAAS,MAC/B,GvU+G0D,EA7IL,KuU4E9C,OAAM,UAAW,MAAO,gBAAiB,eAAgB,6BA7OxC,MAAM,GAA8B,GAAR,QAgMhDC,EAAmBD,EAAA,GAAgB,GAEzB,IAAV,KAAkBC,IAAlB,KAAK19D,EAAK,cACN06D,EAAY+C,EAAA,GAAgB,EAAI,GAAAz9D,EAAI,GAAxB,GACZ26D,EAAsB8C,EAAA,GAAgB,EAAI,GAAAz9D,EAAI,GAAxB,GACtBiiB,EAAYw7C,EAAA,GAAgB,EAAI,GAAAz9D,EAAI,GAAxB,GACZ46D,EAAkB6C,EAAA,GAAgB,EAAI,GAAAz9D,EAAI,GAAxB,GA3QrB,OA6QS06D,EAEE,cACK,IADwBiD,GAAgBjD,EAAOC,EAAiB14C,EAAM24C,GACtE,IAAe,QAAS,OA9QrB,OA2QVF,EAKE,cACK,IADyBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACxE,IAAe,QAAS,OAhR5B,OA0QHF,EAQE,cACK,IADuBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACtE,IAAoB,QAAS,OAlRpB,OAyQhBF,EAWE,cACK,IAD2BiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GAC1E,IAAe,QAAS,OApRxB,OAwQPF,EAcE,cACK,IADyBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACxE,IAAoB,QAAS,OAjRb,OAkQvBF,EAiBE,cACK,IAD6BiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GAC5E,IAAe,QAAS,OAnRrD,OAiQsBF,EAoBE,cACK,IADgCiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GAC/E,IAAe,QAAS,OAjRnD,OA4PoBF,EAuBE,cACK,IAD8BiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GAC7E,IAAe,QAAS,OAnRc,OA2P7CF,EA0BE,cACK,IAD8BiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GAC7E,IAAe,QAAS,OA/Q3B,OAoPJF,EA6BE,cACK,IADsBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACrE,IAAe,QAAS,OA9QrC,OAgPMF,EAgCE,cACK,IADsBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACrE,IAAe,QAAS,OACzB,UAAI,MAAO,wBAAsBF,SAxCjD,EAAkBgD,EA4C1B,CAtSIJ,CAAa,eAuMTM,OACJC,EAAgBrB,GAAkB,IAAK,GACvCsB,EAAiBtB,GAAkB,UAAS,MAAuB,GACnEuB,EAAgBvB,GAAkB,IAAK,QAAS,OAChD,cAAgB,IAAA1a,GAAOic,EAAU,MAAUF,EAAU,MAAUA,EAAU,MAAWC,EAAW,MACnG,CA3MIF,CAAQ,KAZhB,eGRA,eCFqC,eACJ,eACD,eACC,eACG,eACJ,eACe,eACb,eACH,eACC,eACD,eACG,eACI,eACb,eACC,eACQ,eACF,eACM,eACH,eACG,eACD,eACA,eACJ,eACA,eACQ,eACX,eACC,eACA,eACE,eACI,eACE,eACC,eACT,eACA,eACK,eACJ,eACM,eACT,eACC,eACH,eACO,eACJ,eACE,eACY,eACd,eACK,eACJ,eACC,eACC,eACI,eACT,eACE,eACK,eACL,eACK,eACD,eACA,eACK,eACA,eACJ,eACL,eACc,eACO,eACT,eACG,eACH,eACR,eACC,eACA,eACM,eACA,eACD,eACE,eACZ,gBA1E1B,eA8E6B,aACJ,aACG,aACA,aACR,aACC,aACK,gBAP1B,eA4CyB,aACF,aACI,aACD,YAJ1B,eAQqB,aACC,aACA,aACD,aACI,aACH,aACI,aACH,aACD,aACI,cACJ,cACC,aAZvB,aC3HAd,EACAnwD,EACAsV,EACA24C,EACAoD,EACAC,GALA,aACA,aACA,aACA,aACA,aACA,YANJ,aCMIn+B,EAAqBwa,YAAyC,OAC9D4jB,GAAA,UAAkBp+B,EAAQwa,GACL,aACD,aACG,aACA,eACA,eACA,W7UmF6B,K6UlFtB,eATlC,aCCIxa,EAAqBwa,YAAyC,OAC9D4jB,GAAA,U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EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HlSwmU,K0HmS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HnSwmU,K0HoS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HpSumU,K0HqS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HrSumU,K0HsS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HtSwmU,K0HuS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HvSwmU,K0HwS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HxSumU,K0HyS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HzSumU,K0H0S1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,I1H1SsmU,K0H2S1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,I1H3SsmU,K0H4S1qU,MAAE,IAAM6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,IAAM7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","sources":["webpack://worldwind-tutorials/webpack/universalModuleDefinition","webpack://worldwind-tutorials/../../node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/DateTimeFormatBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Standard.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/LocalDateFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/LocalTimeFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/LocalDateTimeFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/UtcOffsetFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Clock.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Preconditions.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/DateTimeComponents.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/DateTimeFormat.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Lazy.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/dateCalculations.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/Builder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/FieldFormatDirective.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/FieldSpec.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/FormatStructure.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collectionJs.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/Predicate.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/formatter/Formatter.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/formatter/FormatterOperation.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/NumberConsumer.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/ParseResult.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/Parser.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/comparisons/Comparisons.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/ParserOperation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ComparisonsJs.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Library.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/InstantSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/TimeZoneSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/internal/mathJs.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/js/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/dynamic.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/properties/PropertyReferenceDelegates.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/long.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/HashCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/FloorDivMod.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/Duration.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/build/generated/moko-resources/jsMain/src/earth/worldwind/tutorials/MR.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/AbstractTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/BasicTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/CameraViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ElevationHeatmapTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/EllipsesTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Angle.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/GKGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LabelsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LookAtViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/MGRSGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PathsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PlacemarksTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PolygonsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShapesDashAndFillTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShowTessellationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SightlineTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SurfaceImageTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WcsElevationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmtsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/jsMain/kotlin/earth/worldwind/tutorials/Main.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/math.kt","webpack://worldwind-tutorials/../../../../worldwind/build/generated/moko-resources/jsMain/src/earth/worldwind/MR.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/GoToAnimator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObjectList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Maps.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/WorldWind.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/BasicDrawableTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/kgl/Kgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawShapeState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableGroup.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableHeatmap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLines.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableQueue.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableScreenTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableStarField.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceColor.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableTessellation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/BasicFrameController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/Frame.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/AltitudeMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingSphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Camera.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Ellipsoid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Frustum.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Line.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Location.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/LookAt.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix3.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ArraysJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix4.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Offset.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/OffsetMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Plane.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Position.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Range.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Sector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec2.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec3.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Viewport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertParameters.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertTransformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/Hemisphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/PolarCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/GestureState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/Globe.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/ElevationModel.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractTiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sets.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/BasicElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/MercatorProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/Wgs84Projection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTessellator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/TerrainTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/BackgroundLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/LayerList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/RenderableLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/ShowTessellationLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AbstractAtmosphereProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AtmosphereLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableGroundAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableSkyAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/GroundProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/SkyProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleRenderingParams.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/LineStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridElement.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridTilesSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKLayerHelper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricLabels.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/AbstractUTMGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGridZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMMetricScaleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/AbstractMercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/WebMercatorImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/WebMercatorLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationSourceFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSet.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsLayerFactory.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/regex/RegexExtensions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAttribution.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAuthorityUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapability.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactInformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactPersonPrimary.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDcpType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsException.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsGeographicBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsIdentifier.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsInfoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLogoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsMetadataUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequest.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequestOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsService.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsConstraint.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsContactInfo.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDcp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDescription.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttpMethod.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperationsMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsPhone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceContact.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceIdentification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceProvider.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsContents.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLegendURL.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsResourceUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTheme.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixLimits.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSetLink.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractSurfaceRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Color.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/FontWeight.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Framebuffer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/RenderContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Texture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/AbstractBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/BufferPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/FloatBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/IntBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/ShortBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageOptions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ResamplingMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/WrapMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/AbstractShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/BasicShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SightlineProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SurfaceTextureProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/TriangleShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/AbstractShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Ellipse.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Label.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OmnidirectionalSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OrientationMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Path.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PathType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Placemark.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PlacemarkAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Polygon.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/ShapeAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/SurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TextAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbsentResourceList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/BasicPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Level.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSetConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LruMemoryCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/MessageTable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/SunPosition.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Tile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/ExponentFormatter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/Specification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/StringFormat.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLU.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLUtessellatorCallbackAdapter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/error/Error.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/ActiveRegion.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/CachedVertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Dict.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/DictNode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUface.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUhalfEdge.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUmesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUtessellatorImpl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUvertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Geom.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Mesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Normal.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQ.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQHeap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQSort.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Render.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Sweep.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessMono.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/http/DefaultHttpClient.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/math/WWMath.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/BasicWorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/KeyboardControls.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindow.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffKeyEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffReader.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/kotlinHacks.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffUtil.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffIFDEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/ClickRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/DragRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/GestureRecognizer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MutableCollections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PanRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PinchRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/RotationRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/SelectDragDetector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TapRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TiltRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TouchWrapper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/ElevationSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/coverage/TiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/TiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/mercator/MercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/Font.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/RenderResourceCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/TextRenderer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/Logger.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/SynchronizedPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/kgl/WebKgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/locale/Locale.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/format/ConvertToInstant.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/GeographicProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/SelectDragCallback.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js/math.polyfills.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/ArrayBuffer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js.arrays/fill.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/native/kotlin/Number.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/src/kotlin/Unit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/NumbersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayFunctions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArraySorting.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntry.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntryDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/coroutines/cancellation/CancellationException.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/random/PlatformRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/Random.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/XorWowRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KClassImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/primitives.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/reflection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/sequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/CharacterCodingExceptionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/StringBuilderJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/charJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_WhitespaceChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/CharCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_TitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/numberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/regex.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringsCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/utf8Encoding.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/throwableExtensions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/time/DurationUnitJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterables.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/ExceptionsH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShort.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Enum.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/BitMask.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/noPackageHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/bitUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/runtimeForStdLib.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/charSequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/collectionsHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/compareTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coreRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/hacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/longjs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/metadataUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/numberConversion.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/rangeTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/reflectRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/typeCheckUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CharCategories.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_DigitChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_LetterChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_OtherLowercaseChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/CoroutineImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/IntrinsicsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/exceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/text/numberConversions_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/ArrayDeque.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/IndexedValue.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/PrimitiveIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/SequenceBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/ContinuationInterceptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContextImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/intrinsics/Intrinsics.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/enums/EnumEntries.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/internal/progressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/PrimitiveRanges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/ProgressionIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Progressions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Appendable.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Indent.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringNumberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/DeepRecursive.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Result.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Tuples.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByte.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByteArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UInt.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntRange.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UProgressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULong.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UnsignedUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULongArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShortArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UStrings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/regexp.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/Continuation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/MathH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/reflection_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Maps.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MapWithDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sets.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CollectionsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/JsClass.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_OneToManyTitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/EventListener.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Job.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/AbstractCoroutine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Builders.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CompletionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuationImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletableDeferred.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionState.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineName.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineScope.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineStart.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Delay.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/EventLoop.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadLocal.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Exceptions.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/JobSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Concurrent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/LinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/MainCoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Supervisor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Unconfined.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferOverflow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/ConcurrentLinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/InlineList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channels.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ConflatedBufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/SharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/AbstractSharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/SafeCollector.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/operators/Share.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/CoroutineExceptionHandlerImpl.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/OnUndeliveredElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Scopes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Symbol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/SystemProps.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/SystemProps.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Cancellable.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Undispatched.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/selects/Select.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Window.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Debug.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Dispatchers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/EventLoop.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/SchedulerTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/flow/internal/SafeCollector.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/StackTraceRecovery.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionHandler.common.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coroutineInternalJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Promise.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/ContextAware.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializationExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializersCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/BuiltInSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NothingSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModuleBuilders.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/SerializersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/AssociatedObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_UArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonConfiguration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/AbstractJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonPath.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonTreeReader.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/SchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/StringJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/JsonSchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/internal/createMapForCache.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/content/ObservableContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineCapability.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/BodyProgress.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultResponseValidation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultTransform.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpClientPlugin.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpPlainText.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRequestLifecycle.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpSend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/observer/DelegatedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/RequestBody.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ByteChannelUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ClientEvents.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/HttpClientEngineBase.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/DefaultTransformJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/websocket/JsWebSocketSession.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/utils/ExceptionUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-events/common/src/io/ktor/events/Events.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Query.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/UrlDecodedParametersBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Url.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/CloseElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/BufferUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferAppend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/PrimiteArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/Memory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/EncodeResult.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/ByteArrayPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ExceptionUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteReadChannelJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Win1252Table.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/PlatformUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/collections/CopyOnWriteHashMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/PipelineContext.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/StackTraceRecoverJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/reflect/Type.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/KtorSimpleLoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/LoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/reflect/TypeInfoJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/CloseReason.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameCommon.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameType.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/js/src/io/ktor/websocket/FrameJs.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/FileResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ImageResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ResourcePlatformDetails.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/internal/ioUtil.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/Uri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/NotCachedHolder.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/PathSegments.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriCodec.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriSyntaxException.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/constants.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/AbstractPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/Part.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/PathPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/AbstractHierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/HierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/OpaqueUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/StringUri.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/NamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/commondomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/EventType.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/Namespace.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/SimpleNamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XMLConstants.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReaderBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlDelegatingReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlEvent.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/_IOException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlUtil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/KtXmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/XmlVersion.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/NamespaceHolder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/PlatformXmlWriterBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/chars.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NamedNodeMap.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/XmlBoolean.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Attr.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlReaderExt.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.js.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/jsMultiplatform.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/JSCompactFragment.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/XMLFragmentStreamReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/impl/jsDomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Element.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/ProcessingInstruction.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/CharacterData.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReaderNS.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/ElementSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/InputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/OutputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/PolyBaseInfo.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XML.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlSerializationPolicy.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/defaultPlatformModule.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XMLDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlCodecBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlExceptions.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/DummyDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/XmlQNameSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderNode.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderConstraint.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/compat.js.kt","webpack://worldwind-tutorials/webpack/bootstrap","webpack://worldwind-tutorials/webpack/runtime/define property getters","webpack://worldwind-tutorials/webpack/runtime/global","webpack://worldwind-tutorials/webpack/runtime/hasOwnProperty shorthand","webpack://worldwind-tutorials/webpack/runtime/make namespace object","webpack://worldwind-tutorials/webpack/runtime/publicPath","webpack://worldwind-tutorials/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"worldwind-tutorials\"] = factory();\n\telse\n\t\troot[\"worldwind-tutorials\"] = factory();\n})(this, () => {\nreturn ","//! @version @js-joda/core - 3.2.0\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction createErrorType(name, init, superErrorClass) {\n if (superErrorClass === void 0) {\n superErrorClass = Error;\n }\n\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = new Error().stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.message = message;\n init && init.apply(this, arguments);\n\n this.toString = function () {\n return this.name + \": \" + this.message;\n };\n }\n\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause) {\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text, index, cause) {\n if (text === void 0) {\n text = '';\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n msg += ': ' + text + ', at index: ' + index;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n\n this.parsedString = function () {\n return text;\n };\n\n this.errorIndex = function () {\n return index;\n };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n if (!assertion) {\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\nfunction requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(parameterName + ' must not be null');\n }\n\n return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(parameterName + ' must be an instance of ' + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ', but is ' + value.constructor.name : ''));\n }\n\n return value;\n}\nfunction abstractMethodFail(methodName) {\n throw new TypeError('abstract method \"' + methodName + '\" is not implemented');\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n requireNonNull: requireNonNull,\n requireInstance: requireInstance,\n abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n function MathUtil() {}\n\n MathUtil.intDiv = function intDiv(x, y) {\n var r = x / y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.intMod = function intMod(x, y) {\n var r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.roundDown = function roundDown(r) {\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n };\n\n MathUtil.floorDiv = function floorDiv(x, y) {\n var r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.floorMod = function floorMod(x, y) {\n var r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n };\n\n MathUtil.safeAdd = function safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n var r = MathUtil.safeToInt(x + y);\n\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n\n return r;\n };\n\n MathUtil.safeSubtract = function safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n return MathUtil.safeToInt(x - y);\n };\n\n MathUtil.safeMultiply = function safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n\n if (x === 0 || y === 0) {\n return 0;\n }\n\n var r = MathUtil.safeToInt(x * y);\n\n if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n throw new ArithmeticException('Multiplication overflows: ' + x + ' * ' + y);\n }\n\n return r;\n };\n\n MathUtil.parseInt = function (_parseInt) {\n function parseInt(_x) {\n return _parseInt.apply(this, arguments);\n }\n\n parseInt.toString = function () {\n return _parseInt.toString();\n };\n\n return parseInt;\n }(function (value) {\n var r = parseInt(value);\n return MathUtil.safeToInt(r);\n });\n\n MathUtil.safeToInt = function safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n };\n\n MathUtil.verifyInt = function verifyInt(value) {\n if (value == null) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n }\n\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n\n if (value % 1 !== 0) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n }\n\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException('Calculation overflows an int: ' + value);\n }\n };\n\n MathUtil.safeZero = function safeZero(value) {\n return value === 0 ? 0 : +value;\n };\n\n MathUtil.compareNumbers = function compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n };\n\n MathUtil.smi = function smi(int) {\n return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n };\n\n MathUtil.hash = function hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n\n var result = number;\n\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n\n return MathUtil.smi(result);\n };\n\n MathUtil.hashCode = function hashCode() {\n var result = 17;\n\n for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n numbers[_key] = arguments[_key];\n }\n\n for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n var n = _numbers[_i];\n result = (result << 5) - result + MathUtil.hash(n);\n }\n\n return MathUtil.hash(result);\n };\n\n return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar Enum = function () {\n function Enum(name) {\n this._name = name;\n }\n\n var _proto = Enum.prototype;\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n function TemporalAmount() {}\n\n var _proto = TemporalAmount.prototype;\n\n _proto.get = function get(unit) {\n abstractMethodFail('get');\n };\n\n _proto.units = function units() {\n abstractMethodFail('units');\n };\n\n _proto.addTo = function addTo(temporal) {\n abstractMethodFail('addTo');\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n };\n\n return TemporalAmount;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n function TemporalUnit() {}\n\n var _proto = TemporalUnit.prototype;\n\n _proto.duration = function duration() {\n abstractMethodFail('duration');\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n };\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.addTo = function addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n };\n\n _proto.between = function between(temporal1, temporal2) {\n abstractMethodFail('between');\n };\n\n return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n _inheritsLoose(Duration, _TemporalAmount);\n\n function Duration(seconds, nanos) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanos);\n return _this;\n }\n\n Duration.ofDays = function ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n Duration.ofHours = function ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n Duration.ofMinutes = function ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n };\n\n Duration.ofMillis = function ofMillis(millis) {\n var secs = MathUtil.intDiv(millis, 1000);\n var mos = MathUtil.intMod(millis, 1000);\n\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n\n return Duration._create(secs, mos * 1000000);\n };\n\n Duration.ofNanos = function ofNanos(nanos) {\n var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n\n return this._create(secs, nos);\n };\n\n Duration.of = function of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n };\n\n Duration.from = function from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n var duration = Duration.ZERO;\n amount.units().forEach(function (unit) {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n };\n\n Duration.between = function between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n var nanos = 0;\n\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {}\n }\n\n return this.ofSeconds(secs, nanos);\n };\n\n Duration.parse = function parse(text) {\n requireNonNull(text, 'text');\n var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n var matches = PATTERN.exec(text);\n\n if (matches !== null) {\n if ('T' === matches[3] === false) {\n var negate = '-' === matches[1];\n var dayMatch = matches[2];\n var hourMatch = matches[4];\n var minuteMatch = matches[5];\n var secondMatch = matches[6];\n var fractionMatch = matches[7];\n\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n\n var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n\n var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n\n var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n\n var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n\n var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n };\n\n Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n if (parsed == null) {\n return 0;\n }\n\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: ' + errorText, text, 0, ex);\n }\n };\n\n Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n\n parsed = (parsed + '000000000').substring(0, 9);\n return parseFloat(parsed) * negate;\n };\n\n Duration._create = function _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n };\n\n Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n\n return Duration.ofSeconds(seconds, nanos);\n };\n\n Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n\n return new Duration(seconds, nanoAdjustment);\n };\n\n var _proto = Duration.prototype;\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n };\n\n _proto.units = function units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n };\n\n _proto.isZero = function isZero() {\n return this._seconds === 0 && this._nanos === 0;\n };\n\n _proto.isNegative = function isNegative() {\n return this._seconds < 0;\n };\n\n _proto.seconds = function seconds() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withSeconds = function withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n };\n\n _proto.withNanos = function withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n };\n\n _proto.plusDuration = function plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n };\n\n _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n\n if (amountToAdd === 0) {\n return this;\n }\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n }\n\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n\n var duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n };\n\n _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n };\n\n _proto.minus = function minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n };\n\n _proto.minusDuration = function minusDuration(duration) {\n requireNonNull(duration, 'duration');\n var secsToSubtract = duration.seconds();\n var nanosToSubtract = duration.nano();\n\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n\n return this.plus(-secsToSubtract, -nanosToSubtract);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n\n if (multiplicand === 1) {\n return this;\n }\n\n var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.dividedBy = function dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n\n if (divisor === 1) {\n return this;\n }\n\n var secs = MathUtil.intDiv(this._seconds, divisor);\n var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.abs = function abs() {\n return this.isNegative() ? this.negated() : this;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.toDays = function toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n };\n\n _proto.toHours = function toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n };\n\n _proto.toMinutes = function toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n };\n\n _proto.toMillis = function toMillis() {\n var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n };\n\n _proto.toNanos = function toNanos() {\n var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n };\n\n _proto.compareTo = function compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherDuration.nano();\n };\n\n _proto.equals = function equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n\n var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n var rval = 'PT';\n\n if (hours !== 0) {\n rval += hours + 'H';\n }\n\n if (minutes !== 0) {\n rval += minutes + 'M';\n }\n\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n\n if (this._nanos > 0) {\n rval += '.';\n var nanoString;\n\n if (secs < 0) {\n nanoString = '' + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n } else {\n nanoString = '' + (LocalTime.NANOS_PER_SECOND + this._nanos);\n }\n\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n\n rval += 'S';\n return rval;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Duration;\n}(TemporalAmount);\nfunction _init() {\n Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\nvar YearConstants = function YearConstants() {};\nfunction _init$1() {\n YearConstants.MIN_VALUE = -999999;\n YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n _inheritsLoose(ChronoUnit, _TemporalUnit);\n\n function ChronoUnit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto = ChronoUnit.prototype;\n\n _proto.duration = function duration() {\n return this._duration;\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n };\n\n _proto.isDateBased = function isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n };\n\n _proto.addTo = function addTo(temporal, amount) {\n return temporal.plus(amount, this);\n };\n\n _proto.between = function between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n return this.duration().compareTo(other.duration());\n };\n\n return ChronoUnit;\n}(TemporalUnit);\nfunction _init$2() {\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar TemporalField = function () {\n function TemporalField() {}\n\n var _proto = TemporalField.prototype;\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.baseUnit = function baseUnit() {\n abstractMethodFail('baseUnit');\n };\n\n _proto.rangeUnit = function rangeUnit() {\n abstractMethodFail('rangeUnit');\n };\n\n _proto.range = function range() {\n abstractMethodFail('range');\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n };\n\n _proto.getFrom = function getFrom(temporal) {\n abstractMethodFail('getFrom');\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.displayName = function displayName() {\n abstractMethodFail('displayName');\n };\n\n _proto.equals = function equals(other) {\n abstractMethodFail('equals');\n };\n\n _proto.name = function name() {\n abstractMethodFail('name');\n };\n\n return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), 'Smallest minimum value \\'' + minSmallest + '\\' must be less than largest minimum value \\'' + minLargest + '\\'', IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), 'Smallest maximum value \\'' + maxSmallest + '\\' must be less than largest maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n assert(!(minLargest > maxLargest), 'Minimum value \\'' + minLargest + '\\' must be less than maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n var _proto = ValueRange.prototype;\n\n _proto.isFixed = function isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n };\n\n _proto.minimum = function minimum() {\n return this._minSmallest;\n };\n\n _proto.largestMinimum = function largestMinimum() {\n return this._minLargest;\n };\n\n _proto.maximum = function maximum() {\n return this._maxLargest;\n };\n\n _proto.smallestMaximum = function smallestMaximum() {\n return this._maxSmallest;\n };\n\n _proto.isValidValue = function isValidValue(value) {\n return this.minimum() <= value && value <= this.maximum();\n };\n\n _proto.checkValidValue = function checkValidValue(value, field) {\n var msg;\n\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = 'Invalid value for ' + field + ' (valid values ' + this.toString() + '): ' + value;\n } else {\n msg = 'Invalid value (valid values ' + this.toString() + '): ' + value;\n }\n\n return assert(false, msg, DateTimeException);\n }\n\n return value;\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException('Invalid int value for ' + field + ': ' + value);\n }\n\n return value;\n };\n\n _proto.isValidIntValue = function isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n };\n\n _proto.isIntValue = function isIntValue() {\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n };\n\n _proto.toString = function toString() {\n var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? '/' + this.largestMinimum() : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? '/' + this.maximum() : '');\n return str;\n };\n\n ValueRange.of = function of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, 'Invalid number of arguments ' + arguments.length, IllegalArgumentException);\n }\n };\n\n return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n _inheritsLoose(ChronoField, _TemporalField);\n\n ChronoField.byName = function byName(fieldName) {\n for (var prop in ChronoField) {\n if (ChronoField[prop]) {\n if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n };\n\n function ChronoField(name, baseUnit, rangeUnit, range) {\n var _this;\n\n _this = _TemporalField.call(this) || this;\n _this._name = name;\n _this._baseUnit = baseUnit;\n _this._rangeUnit = rangeUnit;\n _this._range = range;\n return _this;\n }\n\n var _proto = ChronoField.prototype;\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.baseUnit = function baseUnit() {\n return this._baseUnit;\n };\n\n _proto.rangeUnit = function rangeUnit() {\n return this._rangeUnit;\n };\n\n _proto.range = function range() {\n return this._range;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.checkValidValue = function checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n };\n\n _proto.isDateBased = function isDateBased() {\n var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n return dateBased;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return temporal.range(this);\n };\n\n _proto.getFrom = function getFrom(temporal) {\n return temporal.getLong(this);\n };\n\n _proto.toString = function toString() {\n return this.name();\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(this);\n };\n\n return ChronoField;\n}(TemporalField);\nfunction _init$3() {\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(Math.floor(YearConstants.MIN_VALUE * 365.25), Math.floor(YearConstants.MAX_VALUE * 365.25)));\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalQueries = function () {\n function TemporalQueries() {}\n\n TemporalQueries.zoneId = function zoneId() {\n return TemporalQueries.ZONE_ID;\n };\n\n TemporalQueries.chronology = function chronology() {\n return TemporalQueries.CHRONO;\n };\n\n TemporalQueries.precision = function precision() {\n return TemporalQueries.PRECISION;\n };\n\n TemporalQueries.zone = function zone() {\n return TemporalQueries.ZONE;\n };\n\n TemporalQueries.offset = function offset() {\n return TemporalQueries.OFFSET;\n };\n\n TemporalQueries.localDate = function localDate() {\n return TemporalQueries.LOCAL_DATE;\n };\n\n TemporalQueries.localTime = function localTime() {\n return TemporalQueries.LOCAL_TIME;\n };\n\n return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n function TemporalAccessor() {}\n\n var _proto = TemporalAccessor.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n _inheritsLoose(TemporalQuery, _Enum);\n\n function TemporalQuery() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TemporalQuery.prototype;\n\n _proto.queryFrom = function queryFrom(temporal) {\n abstractMethodFail('queryFrom');\n };\n\n return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n var ExtendedTemporalQuery = function (_TemporalQuery) {\n _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n\n function ExtendedTemporalQuery() {\n return _TemporalQuery.apply(this, arguments) || this;\n }\n\n return ExtendedTemporalQuery;\n }(TemporalQuery);\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n _inheritsLoose(DayOfWeek, _TemporalAccessor);\n\n function DayOfWeek(ordinal, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._ordinal = ordinal;\n _this._name = name;\n return _this;\n }\n\n var _proto = DayOfWeek.prototype;\n\n _proto.ordinal = function ordinal() {\n return this._ordinal;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n DayOfWeek.values = function values() {\n return ENUMS.slice();\n };\n\n DayOfWeek.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < ENUMS.length; ordinal++) {\n if (ENUMS[ordinal].name() === name) {\n break;\n }\n }\n\n return DayOfWeek.of(ordinal + 1);\n };\n\n DayOfWeek.of = function of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException('Invalid value for DayOfWeek: ' + dayOfWeek);\n }\n\n return ENUMS[dayOfWeek - 1];\n };\n\n DayOfWeek.from = function from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n throw new DateTimeException('Unable to obtain DayOfWeek from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n } else {\n throw ex;\n }\n }\n };\n\n _proto.value = function value() {\n return this._ordinal + 1;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(days) {\n var amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n };\n\n _proto.minus = function minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n assert(_query != null, 'query', NullPointerException);\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$4() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n return DayOfWeek.from(temporal);\n });\n ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n _inheritsLoose(Month, _TemporalAccessor);\n\n function Month(value, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._value = MathUtil.safeToInt(value);\n _this._name = name;\n return _this;\n }\n\n var _proto = Month.prototype;\n\n _proto.value = function value() {\n return this._value;\n };\n\n _proto.ordinal = function ordinal() {\n return this._value - 1;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (null === field) {\n return false;\n }\n\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(months) {\n var amount = MathUtil.intMod(months, 12) + 12;\n var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n };\n\n _proto.minus = function minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n };\n\n _proto.length = function length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return leapYear ? 29 : 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.minLength = function minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.maxLength = function maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n var leap = leapYear ? 1 : 0;\n\n switch (this) {\n case Month.JANUARY:\n return 1;\n\n case Month.FEBRUARY:\n return 32;\n\n case Month.MARCH:\n return 60 + leap;\n\n case Month.APRIL:\n return 91 + leap;\n\n case Month.MAY:\n return 121 + leap;\n\n case Month.JUNE:\n return 152 + leap;\n\n case Month.JULY:\n return 182 + leap;\n\n case Month.AUGUST:\n return 213 + leap;\n\n case Month.SEPTEMBER:\n return 244 + leap;\n\n case Month.OCTOBER:\n return 274 + leap;\n\n case Month.NOVEMBER:\n return 305 + leap;\n\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n };\n\n _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n };\n\n _proto.query = function query(_query) {\n assert(_query != null, 'query() parameter must not be null', DateTimeException);\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n\n case Month.FEBRUARY:\n return 'FEBRUARY';\n\n case Month.MARCH:\n return 'MARCH';\n\n case Month.APRIL:\n return 'APRIL';\n\n case Month.MAY:\n return 'MAY';\n\n case Month.JUNE:\n return 'JUNE';\n\n case Month.JULY:\n return 'JULY';\n\n case Month.AUGUST:\n return 'AUGUST';\n\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n\n case Month.OCTOBER:\n return 'OCTOBER';\n\n case Month.NOVEMBER:\n return 'NOVEMBER';\n\n case Month.DECEMBER:\n return 'DECEMBER';\n\n default:\n return 'unknown Month, value: ' + this.value();\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n Month.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < MONTHS.length; ordinal++) {\n if (MONTHS[ordinal].name() === name) {\n break;\n }\n }\n\n return Month.of(ordinal + 1);\n };\n\n Month.values = function values() {\n return MONTHS.slice();\n };\n\n Month.of = function of(month) {\n if (month < 1 || month > 12) {\n assert(false, 'Invalid value for MonthOfYear: ' + month, DateTimeException);\n }\n\n return MONTHS[month - 1];\n };\n\n Month.from = function from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n\n try {\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Month from TemporalAccessor: ' + temporal + ' of type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n }\n };\n\n return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$5() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n _inheritsLoose(Period, _TemporalAmount);\n\n function Period(years, months, days) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n\n var _years = MathUtil.safeToInt(years);\n\n var _months = MathUtil.safeToInt(months);\n\n var _days = MathUtil.safeToInt(days);\n\n if (_years === 0 && _months === 0 && _days === 0) {\n if (!Period.ZERO) {\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n Period.ZERO = _assertThisInitialized(_this);\n }\n\n return Period.ZERO || _assertThisInitialized(_this);\n }\n\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n return _this;\n }\n\n Period.ofYears = function ofYears(years) {\n return Period.create(years, 0, 0);\n };\n\n Period.ofMonths = function ofMonths(months) {\n return Period.create(0, months, 0);\n };\n\n Period.ofWeeks = function ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n };\n\n Period.ofDays = function ofDays(days) {\n return Period.create(0, 0, days);\n };\n\n Period.of = function of(years, months, days) {\n return Period.create(years, months, days);\n };\n\n Period.from = function from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n\n requireNonNull(amount, 'amount');\n var years = 0;\n var months = 0;\n var days = 0;\n var units = amount.units();\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var unitAmount = amount.get(unit);\n\n if (unit === ChronoUnit.YEARS) {\n years = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.MONTHS) {\n months = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.DAYS) {\n days = MathUtil.safeToInt(unitAmount);\n } else {\n throw new DateTimeException('Unit must be Years, Months or Days, but was ' + unit);\n }\n }\n\n return Period.create(years, months, days);\n };\n\n Period.between = function between(startDate, endDate) {\n requireNonNull(startDate, 'startDate');\n requireNonNull(endDate, 'endDate');\n requireInstance(startDate, LocalDate, 'startDate');\n requireInstance(endDate, LocalDate, 'endDate');\n return startDate.until(endDate);\n };\n\n Period.parse = function parse(text) {\n requireNonNull(text, 'text');\n\n try {\n return Period._parse(text);\n } catch (ex) {\n if (ex instanceof ArithmeticException) {\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n };\n\n Period._parse = function _parse(text) {\n var matches = PATTERN.exec(text);\n\n if (matches != null) {\n var negate = '-' === matches[1] ? -1 : 1;\n var yearMatch = matches[2];\n var monthMatch = matches[3];\n var weekMatch = matches[4];\n var dayMatch = matches[5];\n\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n var years = Period._parseNumber(text, yearMatch, negate);\n\n var months = Period._parseNumber(text, monthMatch, negate);\n\n var weeks = Period._parseNumber(text, weekMatch, negate);\n\n var days = Period._parseNumber(text, dayMatch, negate);\n\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n };\n\n Period._parseNumber = function _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n\n var val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n };\n\n Period.create = function create(years, months, days) {\n return new Period(years, months, days);\n };\n\n var _proto = Period.prototype;\n\n _proto.units = function units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n };\n\n _proto.isZero = function isZero() {\n return this === Period.ZERO;\n };\n\n _proto.isNegative = function isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n };\n\n _proto.years = function years() {\n return this._years;\n };\n\n _proto.months = function months() {\n return this._months;\n };\n\n _proto.days = function days() {\n return this._days;\n };\n\n _proto.withYears = function withYears(years) {\n if (years === this._years) {\n return this;\n }\n\n return Period.create(years, this._months, this._days);\n };\n\n _proto.withMonths = function withMonths(months) {\n if (months === this._months) {\n return this;\n }\n\n return Period.create(this._years, months, this._days);\n };\n\n _proto.withDays = function withDays(days) {\n if (days === this._days) {\n return this;\n }\n\n return Period.create(this._years, this._months, days);\n };\n\n _proto.plus = function plus(amountToAdd) {\n var amount = Period.from(amountToAdd);\n return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n };\n\n _proto.minus = function minus(amountToSubtract) {\n var amount = Period.from(amountToSubtract);\n return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n\n return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.normalized = function normalized() {\n var totalMonths = this.toTotalMonths();\n var splitYears = MathUtil.intDiv(totalMonths, 12);\n var splitMonths = MathUtil.intMod(totalMonths, 12);\n\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n };\n\n _proto.toTotalMonths = function toTotalMonths() {\n return this._years * 12 + this._months;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof Period) {\n var other = obj;\n return this._years === other._years && this._months === other._months && this._days === other._days;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n };\n\n _proto.toString = function toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n var buf = 'P';\n\n if (this._years !== 0) {\n buf += '' + this._years + 'Y';\n }\n\n if (this._months !== 0) {\n buf += '' + this._months + 'M';\n }\n\n if (this._days !== 0) {\n buf += '' + this._days + 'D';\n }\n\n return buf;\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Period;\n}(TemporalAmount);\nfunction _init$6() {\n Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ParsePosition = function () {\n function ParsePosition(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n var _proto = ParsePosition.prototype;\n\n _proto.getIndex = function getIndex() {\n return this._index;\n };\n\n _proto.setIndex = function setIndex(index) {\n this._index = index;\n };\n\n _proto.getErrorIndex = function getErrorIndex() {\n return this._errorIndex;\n };\n\n _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n this._errorIndex = errorIndex;\n };\n\n return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar EnumMap = function () {\n function EnumMap() {\n this._map = {};\n }\n\n var _proto = EnumMap.prototype;\n\n _proto.putAll = function putAll(otherMap) {\n for (var key in otherMap._map) {\n this._map[key] = otherMap._map[key];\n }\n\n return this;\n };\n\n _proto.containsKey = function containsKey(key) {\n return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n };\n\n _proto.get = function get(key) {\n return this._map[key.name()];\n };\n\n _proto.put = function put(key, val) {\n return this.set(key, val);\n };\n\n _proto.set = function set(key, val) {\n this._map[key.name()] = val;\n return this;\n };\n\n _proto.retainAll = function retainAll(keyList) {\n var map = {};\n\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i].name();\n map[key] = this._map[key];\n }\n\n this._map = map;\n return this;\n };\n\n _proto.remove = function remove(key) {\n var keyName = key.name();\n var val = this._map[keyName];\n this._map[keyName] = undefined;\n return val;\n };\n\n _proto.keySet = function keySet() {\n return this._map;\n };\n\n _proto.clear = function clear() {\n this._map = {};\n };\n\n return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n _inheritsLoose(ResolverStyle, _Enum);\n\n function ResolverStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n function TemporalAdjuster() {}\n\n var _proto = TemporalAdjuster.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n abstractMethodFail('adjustInto');\n };\n\n return TemporalAdjuster;\n}();\n\nvar Temporal = function (_TemporalAccessor) {\n _inheritsLoose(Temporal, _TemporalAccessor);\n\n function Temporal() {\n return _TemporalAccessor.apply(this, arguments) || this;\n }\n\n var _proto = Temporal.prototype;\n\n _proto.isSupported = function isSupported(unit) {\n abstractMethodFail('isSupported');\n };\n\n _proto.minus = function minus(p1, p2) {\n if (arguments.length < 2) {\n return this.minusAmount(p1);\n } else {\n return this.minusAmountUnit(p1, p2);\n }\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n abstractMethodFail('minusAmount');\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n abstractMethodFail('minusAmountUnit');\n };\n\n _proto.plus = function plus(p1, p2) {\n if (arguments.length < 2) {\n return this.plusAmount(p1);\n } else {\n return this.plusAmountUnit(p1, p2);\n }\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n abstractMethodFail('plusAmount');\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n abstractMethodFail('plusAmountUnit');\n };\n\n _proto.until = function until(endTemporal, unit) {\n abstractMethodFail('until');\n };\n\n _proto.with = function _with(p1, p2) {\n if (arguments.length < 2) {\n return this.withAdjuster(p1);\n } else {\n return this.withFieldValue(p1, p2);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n abstractMethodFail('withAdjuster');\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n abstractMethodFail('withFieldValue');\n };\n\n return Temporal;\n}(TemporalAccessor);\n\nvar DefaultInterfaceTemporal = function (_Temporal) {\n _inheritsLoose(DefaultInterfaceTemporal, _Temporal);\n\n function DefaultInterfaceTemporal() {\n return _Temporal.apply(this, arguments) || this;\n }\n\n var _proto = DefaultInterfaceTemporal.prototype;\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n requireInstance(adjuster, TemporalAdjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmount(-amountToSubtract, unit);\n };\n\n return DefaultInterfaceTemporal;\n}(Temporal);\n\nvar ChronoLocalDate = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDate, _DefaultInterfaceTemp);\n\n function ChronoLocalDate() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDate.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return ChronoLocalDate;\n}(DefaultInterfaceTemporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n function StringUtil() {}\n\n StringUtil.startsWith = function startsWith(text, pattern) {\n return text.indexOf(pattern) === 0;\n };\n\n StringUtil.hashCode = function hashCode(text) {\n var len = text.length;\n\n if (len === 0) {\n return 0;\n }\n\n var hash = 0;\n\n for (var i = 0; i < len; i++) {\n var chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n\n return MathUtil.smi(hash);\n };\n\n return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n function ZoneId() {}\n\n ZoneId.systemDefault = function systemDefault() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.of = function of(zoneId) {\n throw new DateTimeException('not supported operation' + zoneId);\n };\n\n ZoneId.ofOffset = function ofOffset(prefix, offset) {\n throw new DateTimeException('not supported operation' + prefix + offset);\n };\n\n ZoneId.from = function from(temporal) {\n throw new DateTimeException('not supported operation' + temporal);\n };\n\n var _proto = ZoneId.prototype;\n\n _proto.id = function id() {\n abstractMethodFail('ZoneId.id');\n };\n\n _proto.rules = function rules() {\n abstractMethodFail('ZoneId.rules');\n };\n\n _proto.normalized = function normalized() {\n var rules = this.rules();\n\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n\n return this;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return StringUtil.hashCode(this.id());\n };\n\n _proto.toString = function toString() {\n return this.id();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneId;\n}();\n\nvar ZoneRules = function () {\n function ZoneRules() {}\n\n ZoneRules.of = function of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n };\n\n var _proto = ZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n abstractMethodFail('ZoneRules.isFixedOffset');\n };\n\n _proto.offset = function offset(instantOrLocalDateTime) {\n if (instantOrLocalDateTime instanceof Instant) {\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n abstractMethodFail('ZoneRules.offsetInstant');\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n abstractMethodFail('ZoneRules.validOffsets');\n };\n\n _proto.transition = function transition(localDateTime) {\n abstractMethodFail('ZoneRules.transition');\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n abstractMethodFail('ZoneRules.standardOffset');\n };\n\n _proto.daylightSavings = function daylightSavings(instant) {\n abstractMethodFail('ZoneRules.daylightSavings');\n };\n\n _proto.isDaylightSavings = function isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n };\n\n _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n abstractMethodFail('ZoneRules.isValidOffset');\n };\n\n _proto.nextTransition = function nextTransition(instant) {\n abstractMethodFail('ZoneRules.nextTransition');\n };\n\n _proto.previousTransition = function previousTransition(instant) {\n abstractMethodFail('ZoneRules.previousTransition');\n };\n\n _proto.transitions = function transitions() {\n abstractMethodFail('ZoneRules.transitions');\n };\n\n _proto.transitionRules = function transitionRules() {\n abstractMethodFail('ZoneRules.transitionRules');\n };\n\n _proto.toString = function toString() {\n abstractMethodFail('ZoneRules.toString');\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneRules;\n}();\n\nvar Fixed = function (_ZoneRules) {\n _inheritsLoose(Fixed, _ZoneRules);\n\n function Fixed(offset) {\n var _this;\n\n _this = _ZoneRules.call(this) || this;\n _this._offset = offset;\n return _this;\n }\n\n var _proto2 = Fixed.prototype;\n\n _proto2.isFixedOffset = function isFixedOffset() {\n return true;\n };\n\n _proto2.offsetOfInstant = function offsetOfInstant() {\n return this._offset;\n };\n\n _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n return this._offset;\n };\n\n _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n return this._offset;\n };\n\n _proto2.validOffsets = function validOffsets() {\n return [this._offset];\n };\n\n _proto2.transition = function transition() {\n return null;\n };\n\n _proto2.standardOffset = function standardOffset() {\n return this._offset;\n };\n\n _proto2.daylightSavings = function daylightSavings() {\n return Duration.ZERO;\n };\n\n _proto2.isDaylightSavings = function isDaylightSavings() {\n return false;\n };\n\n _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n };\n\n _proto2.nextTransition = function nextTransition() {\n return null;\n };\n\n _proto2.previousTransition = function previousTransition() {\n return null;\n };\n\n _proto2.transitions = function transitions() {\n return [];\n };\n\n _proto2.transitionRules = function transitionRules() {\n return [];\n };\n\n _proto2.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto2.toString = function toString() {\n return 'FixedRules:' + this._offset.toString();\n };\n\n return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n _inheritsLoose(ZoneOffset, _ZoneId);\n\n function ZoneOffset(totalSeconds) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n\n ZoneOffset._validateTotalSeconds(totalSeconds);\n\n _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n _this._id = ZoneOffset._buildId(totalSeconds);\n return _this;\n }\n\n var _proto = ZoneOffset.prototype;\n\n _proto.totalSeconds = function totalSeconds() {\n return this._totalSeconds;\n };\n\n _proto.id = function id() {\n return this._id;\n };\n\n ZoneOffset._buildId = function _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n var absTotalSeconds = Math.abs(totalSeconds);\n var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var buf = '' + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n }\n\n return buf;\n }\n };\n\n ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException('Zone offset hours not in valid range: value ' + hours + ' is not in the range -18 to 18');\n }\n\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException('Zone offset minutes not in valid range: abs(value) ' + Math.abs(minutes) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException('Zone offset seconds not in valid range: abs(value) ' + Math.abs(seconds) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset.of = function of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n var offset = ID_CACHE[offsetId];\n\n if (offset != null) {\n return offset;\n }\n\n var hours, minutes, seconds;\n\n switch (offsetId.length) {\n case 2:\n offsetId = offsetId[0] + '0' + offsetId[1];\n\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n\n default:\n throw new DateTimeException('Invalid ID for ZoneOffset, invalid format: ' + offsetId);\n }\n\n var first = offsetId[0];\n\n if (first !== '+' && first !== '-') {\n throw new DateTimeException('Invalid ID for ZoneOffset, plus/minus not found when expected: ' + offsetId);\n }\n\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n };\n\n ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException('Invalid ID for ZoneOffset, colon not found when expected: ' + offsetId);\n }\n\n var ch1 = offsetId[pos];\n var ch2 = offsetId[pos + 1];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException('Invalid ID for ZoneOffset, non numeric characters found: ' + offsetId);\n }\n\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n };\n\n ZoneOffset.ofHours = function ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n };\n\n ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n };\n\n ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n\n var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n var totalSecs = totalSeconds;\n var result = SECONDS_CACHE[totalSecs];\n\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._totalSeconds;\n };\n\n _proto.toString = function toString() {\n return this._id;\n };\n\n return ZoneOffset;\n}(ZoneId);\nfunction _init$7() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n\n DateTimeBuilder.create = function create(field, value) {\n var dtb = new DateTimeBuilder();\n\n dtb._addFieldValue(field, value);\n\n return dtb;\n };\n\n function DateTimeBuilder() {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this.fieldValues = new EnumMap();\n _this.chrono = null;\n _this.zone = null;\n _this.date = null;\n _this.time = null;\n _this.leapSecond = false;\n _this.excessDays = null;\n return _this;\n }\n\n var _proto = DateTimeBuilder.prototype;\n\n _proto.getFieldValue0 = function getFieldValue0(field) {\n return this.fieldValues.get(field);\n };\n\n _proto._addFieldValue = function _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n var old = this.getFieldValue0(field);\n\n if (old != null && old !== value) {\n throw new DateTimeException('Conflict found: ' + field + ' ' + old + ' differs from ' + field + ' ' + value + ': ' + this);\n }\n\n return this._putFieldValue0(field, value);\n };\n\n _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n };\n\n _proto.resolve = function resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n\n this._mergeDate(resolverStyle);\n\n this._mergeTime(resolverStyle);\n\n this._resolveTimeInferZeroes(resolverStyle);\n\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n\n this._resolveInstant();\n\n return this;\n };\n\n _proto._mergeDate = function _mergeDate(resolverStyle) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n };\n\n _proto._checkDate = function _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n\n for (var fieldName in this.fieldValues.keySet()) {\n var field = ChronoField.byName(fieldName);\n\n if (field) {\n if (this.fieldValues.get(field) !== undefined) {\n if (field.isDateBased()) {\n var val1 = void 0;\n\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n\n var val2 = this.fieldValues.get(field);\n\n if (val1 !== val2) {\n throw new DateTimeException('Conflict found: Field ' + field + ' ' + val1 + ' differs from ' + field + ' ' + val2 + ' derived from ' + date);\n }\n }\n }\n }\n }\n }\n };\n\n _proto._mergeTime = function _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n }\n };\n\n _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n if (hod == null) {\n return;\n }\n\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n\n if (moh != null && som == null && nos != null) {\n return;\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n\n var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n\n if (moh != null) {\n var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n\n if (som != null) {\n var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n\n if (nos != null) {\n var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n var _hodVal = hod;\n\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n\n var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n\n this._addObject(LocalTime.ofNanoOfDay(nod));\n\n this.excessDays = Period.ofDays(excessDays);\n } else {\n var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n\n var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n\n var sod = MathUtil.floorMod(totalSecs, 86400);\n\n this._addObject(LocalTime.ofSecondOfDay(sod));\n\n this.excessDays = Period.ofDays(_excessDays);\n }\n } else {\n var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n\n _hodVal = MathUtil.floorMod(_hodVal, 24);\n\n this._addObject(LocalTime.of(_hodVal, 0));\n\n this.excessDays = Period.ofDays(_excessDays2);\n }\n }\n }\n\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n };\n\n _proto._addObject = function _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate) {\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime) {\n this.time = dateOrTime;\n }\n };\n\n _proto._resolveInstant = function _resolveInstant() {\n if (this.date != null && this.time != null) {\n var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs != null) {\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n }\n }\n };\n\n _proto.build = function build(type) {\n return type.queryFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field == null) {\n return false;\n }\n\n return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n var value = this.getFieldValue0(field);\n\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n\n throw new DateTimeException('Field not found: ' + field);\n }\n\n return value;\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (_query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (_query === TemporalQueries.localTime()) {\n return this.time;\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return _query.queryFrom(this);\n } else if (_query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n function DateTimeParseContext() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DateTimeParseContext) {\n this._constructorSelf.apply(this, arguments);\n\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n var _proto = DateTimeParseContext.prototype;\n\n _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n };\n\n _proto._constructorFormatter = function _constructorFormatter(formatter) {\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n };\n\n _proto._constructorSelf = function _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n };\n\n _proto.copy = function copy() {\n return new DateTimeParseContext(this);\n };\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.isStrict = function isStrict() {\n return this._strict;\n };\n\n _proto.setStrict = function setStrict(strict) {\n this._strict = strict;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n _proto.startOptional = function startOptional() {\n this._parsed.push(this.currentParsed().copy());\n };\n\n _proto.endOptional = function endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n };\n\n _proto.isCaseSensitive = function isCaseSensitive() {\n return this._caseSensitive;\n };\n\n _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n };\n\n _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n\n if (!this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n\n for (var i = 0; i < length; i++) {\n var ch1 = cs1[offset1 + i];\n var ch2 = cs2[offset2 + i];\n\n if (ch1 !== ch2) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.charEquals = function charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n\n return this.charEqualsIgnoreCase(ch1, ch2);\n };\n\n _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n };\n\n _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n var currentParsedFieldValues = this.currentParsed().fieldValues;\n var old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return old != null && old !== value ? ~errorPos : successPos;\n };\n\n _proto.setParsedZone = function setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n };\n\n _proto.getParsed = function getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n };\n\n _proto.toParsed = function toParsed() {\n return this.currentParsed();\n };\n\n _proto.currentParsed = function currentParsed() {\n return this._parsed[this._parsed.length - 1];\n };\n\n _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n };\n\n _proto.getEffectiveChronology = function getEffectiveChronology() {\n var chrono = this.currentParsed().chrono;\n\n if (chrono == null) {\n chrono = this._overrideChronology;\n\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n\n return chrono;\n };\n\n return DateTimeParseContext;\n}();\n\nvar Parsed = function (_Temporal) {\n _inheritsLoose(Parsed, _Temporal);\n\n function Parsed(dateTimeParseContext) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this.chrono = null;\n _this.zone = null;\n _this.fieldValues = new EnumMap();\n _this.leapSecond = false;\n _this.dateTimeParseContext = dateTimeParseContext;\n return _this;\n }\n\n var _proto2 = Parsed.prototype;\n\n _proto2.copy = function copy() {\n var cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n };\n\n _proto2.toString = function toString() {\n return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n };\n\n _proto2.isSupported = function isSupported(field) {\n return this.fieldValues.containsKey(field);\n };\n\n _proto2.get = function get(field) {\n var val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n };\n\n _proto2.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto2.toBuilder = function toBuilder() {\n var builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n };\n\n return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n\n this._optional = 0;\n }\n\n DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n return temporal;\n };\n\n var _proto = DateTimePrintContext.prototype;\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.startOptional = function startOptional() {\n this._optional++;\n };\n\n _proto.endOptional = function endOptional() {\n this._optional--;\n };\n\n _proto.getValueQuery = function getValueQuery(query) {\n var result = this._temporal.query(query);\n\n if (result == null && this._optional === 0) {\n throw new DateTimeException('Unable to extract value: ' + this._temporal);\n }\n\n return result;\n };\n\n _proto.getValue = function getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException && this._optional > 0) {\n return null;\n }\n\n throw ex;\n }\n };\n\n _proto.temporal = function temporal() {\n return this._temporal;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setDateTime = function setDateTime(temporal) {\n this._temporal = temporal;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\nvar Field = function (_TemporalField) {\n _inheritsLoose(Field, _TemporalField);\n\n function Field() {\n return _TemporalField.apply(this, arguments) || this;\n }\n\n var _proto = Field.prototype;\n\n _proto.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto._isIso = function _isIso() {\n return true;\n };\n\n Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n var wby = Field._getWeekBasedYear(date);\n\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n };\n\n Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n var date = LocalDate.of(wby, 1, 1);\n\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n return 53;\n }\n\n return 52;\n };\n\n Field._getWeek = function _getWeek(date) {\n var dow0 = date.dayOfWeek().ordinal();\n var doy0 = date.dayOfYear() - 1;\n var doyThu0 = doy0 + (3 - dow0);\n var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n var firstMonDoy0 = firstThuDoy0 - 3;\n\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n\n var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n\n if (week === 53) {\n if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n week = 1;\n }\n }\n\n return week;\n };\n\n Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n var year = date.year();\n var doy = date.dayOfYear();\n\n if (doy <= 3) {\n var dow = date.dayOfWeek().ordinal();\n\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n var _dow = date.dayOfWeek().ordinal();\n\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n\n if (doy - _dow >= 0) {\n year++;\n }\n }\n\n return year;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.resolve = function resolve() {\n return null;\n };\n\n _proto.name = function name() {\n return this.toString();\n };\n\n return Field;\n}(TemporalField);\n\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n\n function DAY_OF_QUARTER_FIELD() {\n return _Field.apply(this, arguments) || this;\n }\n\n var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n\n _proto2.toString = function toString() {\n return 'DayOfQuarter';\n };\n\n _proto2.baseUnit = function baseUnit() {\n return ChronoUnit.DAYS;\n };\n\n _proto2.rangeUnit = function rangeUnit() {\n return QUARTER_YEARS;\n };\n\n _proto2.range = function range() {\n return ValueRange.of(1, 90, 92);\n };\n\n _proto2.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n };\n\n _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var qoy = temporal.getLong(QUARTER_OF_YEAR);\n\n if (qoy === 1) {\n var year = temporal.getLong(ChronoField.YEAR);\n return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n }\n\n return this.range();\n };\n\n _proto2.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n var year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n };\n\n _proto2.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n };\n\n _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var yearLong = fieldValues.get(ChronoField.YEAR);\n var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n\n var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n var doq = fieldValues.get(DAY_OF_QUARTER);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var max = 92;\n\n if (_qoy === 1) {\n max = IsoChronology.isLeapYear(y) ? 91 : 90;\n } else if (_qoy === 2) {\n max = 91;\n }\n\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this);\n }\n\n date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n };\n\n return DAY_OF_QUARTER_FIELD;\n}(Field);\n\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n\n function QUARTER_OF_YEAR_FIELD() {\n return _Field2.apply(this, arguments) || this;\n }\n\n var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n\n _proto3.toString = function toString() {\n return 'QuarterOfYear';\n };\n\n _proto3.baseUnit = function baseUnit() {\n return QUARTER_YEARS;\n };\n\n _proto3.rangeUnit = function rangeUnit() {\n return ChronoUnit.YEARS;\n };\n\n _proto3.range = function range() {\n return ValueRange.of(1, 4);\n };\n\n _proto3.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n };\n\n _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return this.range();\n };\n\n _proto3.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n\n var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv(moy + 2, 3);\n };\n\n _proto3.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n };\n\n return QUARTER_OF_YEAR_FIELD;\n}(Field);\n\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n\n function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n return _Field3.apply(this, arguments) || this;\n }\n\n var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto4.toString = function toString() {\n return 'WeekOfWeekBasedYear';\n };\n\n _proto4.baseUnit = function baseUnit() {\n return ChronoUnit.WEEKS;\n };\n\n _proto4.rangeUnit = function rangeUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto4.range = function range() {\n return ValueRange.of(1, 52, 53);\n };\n\n _proto4.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n };\n\n _proto4.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeek(LocalDate.from(temporal));\n };\n\n _proto4.adjustInto = function adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n };\n\n _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n\n var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var dow = dowLong;\n var weeks = 0;\n\n if (dow > 7) {\n weeks = MathUtil.intDiv(dow - 1, 7);\n dow = MathUtil.intMod(dow - 1, 7) + 1;\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var temp = LocalDate.of(wby, 1, 4);\n\n var range = Field._getWeekRangeByLocalDate(temp);\n\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this);\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n };\n\n _proto4.displayName = function displayName() {\n return 'Week';\n };\n\n return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n\n function WEEK_BASED_YEAR_FIELD() {\n return _Field4.apply(this, arguments) || this;\n }\n\n var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto5.toString = function toString() {\n return 'WeekBasedYear';\n };\n\n _proto5.baseUnit = function baseUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto5.rangeUnit = function rangeUnit() {\n return ChronoUnit.FOREVER;\n };\n\n _proto5.range = function range() {\n return ChronoField.YEAR.range();\n };\n\n _proto5.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n };\n\n _proto5.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n };\n\n _proto5.adjustInto = function adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n var date = LocalDate.from(temporal);\n var dow = date.get(ChronoField.DAY_OF_WEEK);\n\n var week = Field._getWeek(date);\n\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n\n var resolved = LocalDate.of(newWby, 1, 4);\n var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n };\n\n return WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar Unit = function (_TemporalUnit) {\n _inheritsLoose(Unit, _TemporalUnit);\n\n function Unit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto6 = Unit.prototype;\n\n _proto6.duration = function duration() {\n return this._duration;\n };\n\n _proto6.isDurationEstimated = function isDurationEstimated() {\n return true;\n };\n\n _proto6.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto6.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto6.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n };\n\n _proto6.addTo = function addTo(temporal, periodToAdd) {\n switch (this) {\n case WEEK_BASED_YEARS:\n {\n var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n\n case QUARTER_YEARS:\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.between = function between(temporal1, temporal2) {\n switch (this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.toString = function toString() {\n return name;\n };\n\n return Unit;\n}(TemporalUnit);\n\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$8() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DecimalStyle = function () {\n function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n var _proto = DecimalStyle.prototype;\n\n _proto.positiveSign = function positiveSign() {\n return this._positiveSign;\n };\n\n _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.negativeSign = function negativeSign() {\n return this._negativeSign;\n };\n\n _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n };\n\n _proto.zeroDigit = function zeroDigit() {\n return this._zeroDigit;\n };\n\n _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.decimalSeparator = function decimalSeparator() {\n return this._decimalSeparator;\n };\n\n _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n };\n\n _proto.convertToDigit = function convertToDigit(char) {\n var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n\n return val >= 0 && val <= 9 ? val : -1;\n };\n\n _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n\n var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n var convertedText = '';\n\n for (var i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n\n return convertedText;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof DecimalStyle) {\n return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n };\n\n _proto.toString = function toString() {\n return 'DecimalStyle[' + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + ']';\n };\n\n DecimalStyle.of = function of() {\n throw new Error('not yet supported');\n };\n\n DecimalStyle.availableLocales = function availableLocales() {\n throw new Error('not yet supported');\n };\n\n return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n _inheritsLoose(SignStyle, _Enum);\n\n function SignStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SignStyle.prototype;\n\n _proto.parse = function parse(positive, strict, fixedWidth) {\n switch (this) {\n case SignStyle.NORMAL:\n return !positive || !strict;\n\n case SignStyle.ALWAYS:\n case SignStyle.EXCEEDS_PAD:\n return true;\n\n default:\n return !strict && !fixedWidth;\n }\n };\n\n return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n _inheritsLoose(TextStyle, _Enum);\n\n function TextStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TextStyle.prototype;\n\n _proto.isStandalone = function isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n\n default:\n return false;\n }\n };\n\n _proto.asStandalone = function asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n\n default:\n return this;\n }\n };\n\n _proto.asNormal = function asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n\n default:\n return this;\n }\n };\n\n return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n function CharLiteralPrinterParser(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException('invalid literal, too long: \"' + literal + '\"');\n }\n\n this._literal = literal;\n }\n\n var _proto = CharLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n var ch = text.charAt(position);\n\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n\n return \"'\" + this._literal + \"'\";\n };\n\n return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CompositePrinterParser = function () {\n function CompositePrinterParser(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n var _proto = CompositePrinterParser.prototype;\n\n _proto.withOptional = function withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n\n return new CompositePrinterParser(this._printerParsers, optional);\n };\n\n _proto.print = function print(context, buf) {\n var length = buf.length();\n\n if (this._optional) {\n context.startOptional();\n }\n\n try {\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n\n if (pp.print(context, buf) === false) {\n buf.setLength(length);\n return true;\n }\n }\n } finally {\n if (this._optional) {\n context.endOptional();\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n if (this._optional) {\n context.startOptional();\n var pos = position;\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n pos = pp.parse(context, text, pos);\n\n if (pos < 0) {\n context.endOptional(false);\n return position;\n }\n }\n\n context.endOptional(true);\n return pos;\n } else {\n for (var _i = 0; _i < this._printerParsers.length; _i++) {\n var _pp = this._printerParsers[_i];\n position = _pp.parse(context, text, position);\n\n if (position < 0) {\n break;\n }\n }\n\n return position;\n }\n };\n\n _proto.toString = function toString() {\n var buf = '';\n\n if (this._printerParsers != null) {\n buf += this._optional ? '[' : '(';\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n buf += pp.toString();\n }\n\n buf += this._optional ? ']' : ')';\n }\n\n return buf;\n };\n\n return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n requireNonNull(field, 'field');\n\n if (field.range().isFixed() === false) {\n throw new IllegalArgumentException('Field must have a fixed set of values: ' + field);\n }\n\n if (minWidth < 0 || minWidth > 9) {\n throw new IllegalArgumentException('Minimum width must be from 0 to 9 inclusive but was ' + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException('Maximum width must be from 1 to 9 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException('Maximum width must exceed or equal the minimum width but ' + maxWidth + ' < ' + minWidth);\n }\n\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n var _proto = FractionPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var value = context.getValue(this.field);\n\n if (value === null) {\n return false;\n }\n\n var symbols = context.symbols();\n\n if (value === 0) {\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n for (var i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n var fraction = this.convertToFraction(value, symbols.zeroDigit());\n var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n\n if (fraction * 1 > 0) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n\n var str = fraction;\n str = symbols.convertNumberToI18N(str);\n\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n buf.append(str);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var effectiveMin = context.isStrict() ? this.minWidth : 0;\n var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n var length = text.length;\n\n if (position === length) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n position++;\n }\n\n var minEndPos = position + effectiveMin;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var maxEndPos = Math.min(position + effectiveMax, length);\n var total = 0;\n var pos = position;\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position;\n }\n\n pos--;\n break;\n }\n\n total = total * 10 + digit;\n }\n\n var moveLeft = pos - position;\n var scale = Math.pow(10, moveLeft);\n var value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n };\n\n _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n var range = this.field.range();\n range.checkValidValue(value, this.field);\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = value - _min;\n\n var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n\n var fraction = '' + _scaled;\n\n while (fraction.length < 9) {\n fraction = zeroDigit + fraction;\n }\n\n return fraction;\n };\n\n _proto.convertFromFraction = function convertFromFraction(total, scale) {\n var range = this.field.range();\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = MathUtil.intDiv(total * _range, scale);\n\n return _value;\n };\n\n _proto.toString = function toString() {\n var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n return 'Fraction(' + this.field + ',' + this.minWidth + ',' + this.maxWidth + decimal + ')';\n };\n\n return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n if (subsequentWidth === void 0) {\n subsequentWidth = 0;\n }\n\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n var _proto = NumberPrinterParser.prototype;\n\n _proto.field = function field() {\n return this._field;\n };\n\n _proto.minWidth = function minWidth() {\n return this._minWidth;\n };\n\n _proto.maxWidth = function maxWidth() {\n return this._maxWidth;\n };\n\n _proto.signStyle = function signStyle() {\n return this._signStyle;\n };\n\n _proto.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n };\n\n _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n };\n\n _proto._isFixedWidth = function _isFixedWidth() {\n return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n };\n\n _proto.print = function print(context, buf) {\n var contextValue = context.getValue(this._field);\n\n if (contextValue == null) {\n return false;\n }\n\n var value = this._getValue(context, contextValue);\n\n var symbols = context.symbols();\n var str = '' + Math.abs(value);\n\n if (str.length > this._maxWidth) {\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' exceeds the maximum print width of ' + this._maxWidth);\n }\n\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n\n break;\n\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' cannot be negative according to the SignStyle');\n }\n }\n\n for (var i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n\n buf.append(str);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n assert(position >= 0 && position < length);\n var sign = text.charAt(position);\n var negative = false;\n var positive = false;\n\n if (sign === context.symbols().positiveSign()) {\n if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n positive = true;\n position++;\n } else if (sign === context.symbols().negativeSign()) {\n if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n negative = true;\n position++;\n } else {\n if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n return ~position;\n }\n }\n\n var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n var minEndPos = position + effMinWidth;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n var total = 0;\n var pos = position;\n\n for (var pass = 0; pass < 2; pass++) {\n var maxEndPos = Math.min(pos + effMaxWidth, length);\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n pos--;\n\n if (pos < minEndPos) {\n return ~position;\n }\n\n break;\n }\n\n if (pos - position > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n\n if (this._subsequentWidth > 0 && pass === 0) {\n var parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1);\n }\n\n if (total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n var _parseLen = pos - position;\n\n if (positive) {\n if (_parseLen <= this._minWidth) {\n return ~(position - 1);\n }\n } else {\n if (_parseLen > this._minWidth) {\n return ~position;\n }\n }\n }\n\n return this._setValue(context, total, position, pos);\n };\n\n _proto._getValue = function _getValue(context, value) {\n return value;\n };\n\n _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto.toString = function toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return 'Value(' + this._field + ')';\n }\n\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return 'Value(' + this._field + ',' + this._minWidth + ')';\n }\n\n return 'Value(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + this._signStyle + ')';\n };\n\n return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n\n function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n var _this;\n\n _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException('The width must be from 1 to 10 inclusive but was ' + width);\n }\n\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException('The maxWidth must be from 1 to 10 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n\n if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n\n _this._baseValue = baseValue;\n _this._baseDate = baseDate;\n return _this;\n }\n\n var _proto2 = ReducedPrinterParser.prototype;\n\n _proto2._getValue = function _getValue(context, value) {\n var absValue = Math.abs(value);\n var baseValue = this._baseValue;\n\n if (this._baseDate !== null) {\n context.temporal();\n var chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n\n return absValue % EXCEED_POINTS[this._maxWidth];\n };\n\n _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n var baseValue = this._baseValue;\n\n if (this._baseDate != null) {\n var chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n var parseLen = successPos - errorPos;\n\n if (parseLen === this._minWidth && value >= 0) {\n var range = EXCEED_POINTS[this._minWidth];\n var lastPart = baseValue % range;\n var basePart = baseValue - lastPart;\n\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n\n if (value < baseValue) {\n value += range;\n }\n }\n\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto2.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n };\n\n _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n };\n\n _proto2.isFixedWidth = function isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n\n return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n };\n\n _proto2.toString = function toString() {\n return 'ReducedValue(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + (this._baseDate != null ? this._baseDate : this._baseValue) + ')';\n };\n\n return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n function OffsetIdPrinterParser(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n var _proto = OffsetIdPrinterParser.prototype;\n\n _proto._checkPattern = function _checkPattern(pattern) {\n for (var i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n\n throw new IllegalArgumentException('Invalid zone offset pattern: ' + pattern);\n };\n\n _proto.print = function print(context, buf) {\n var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs == null) {\n return false;\n }\n\n var totalSecs = MathUtil.safeToInt(offsetSecs);\n\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n var bufPos = buf.length();\n var output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + '0').appendChar(MathUtil.intMod(absHours, 10) + '0');\n\n if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + '0').appendChar(absMinutes % 10 + '0');\n output += absMinutes;\n\n if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + '0').appendChar(absSeconds % 10 + '0');\n output += absSeconds;\n }\n }\n\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n var noOffsetLen = this.noOffsetText.length;\n\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n var sign = text[position];\n\n if (sign === '+' || sign === '-') {\n var negative = sign === '-' ? -1 : 1;\n var array = [0, 0, 0, 0];\n array[0] = position + 1;\n\n if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n\n return ~position;\n };\n\n _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false;\n }\n\n var pos = array[0];\n\n if (this.type % 2 === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n\n pos++;\n }\n\n if (pos + 2 > parseText.length) {\n return required;\n }\n\n var ch1 = parseText[pos++];\n var ch2 = parseText[pos++];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n\n var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n\n if (value < 0 || value > 59) {\n return required;\n }\n\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n };\n\n _proto.toString = function toString() {\n var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return 'Offset(' + PATTERNS[this.type] + ',\\'' + converted + '\\')';\n };\n\n return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n var _proto = PadPrinterParserDecorator.prototype;\n\n _proto.print = function print(context, buf) {\n var preLen = buf.length();\n\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n\n var len = buf.length() - preLen;\n\n if (len > this._padWidth) {\n throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n }\n\n for (var i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var strict = context.isStrict();\n var caseSensitive = context.isCaseSensitive();\n assert(!(position > text.length));\n assert(position >= 0);\n\n if (position === text.length) {\n return ~position;\n }\n\n var endPos = position + this._padWidth;\n\n if (endPos > text.length) {\n if (strict) {\n return ~position;\n }\n\n endPos = text.length;\n }\n\n var pos = position;\n\n while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n\n text = text.substring(0, endPos);\n\n var resultPos = this._printerParser.parse(context, text, pos);\n\n if (resultPos !== endPos && strict) {\n return ~(position + pos);\n }\n\n return resultPos;\n };\n\n _proto.toString = function toString() {\n return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : ',\\'' + this._padChar + '\\')');\n };\n\n return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n _inheritsLoose(SettingsParser, _Enum);\n\n function SettingsParser() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SettingsParser.prototype;\n\n _proto.print = function print() {\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n switch (this) {\n case SettingsParser.SENSITIVE:\n context.setCaseSensitive(true);\n break;\n\n case SettingsParser.INSENSITIVE:\n context.setCaseSensitive(false);\n break;\n\n case SettingsParser.STRICT:\n context.setStrict(true);\n break;\n\n case SettingsParser.LENIENT:\n context.setStrict(false);\n break;\n }\n\n return position;\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case SettingsParser.SENSITIVE:\n return 'ParseCaseSensitive(true)';\n\n case SettingsParser.INSENSITIVE:\n return 'ParseCaseSensitive(false)';\n\n case SettingsParser.STRICT:\n return 'ParseStrict(true)';\n\n case SettingsParser.LENIENT:\n return 'ParseStrict(false)';\n }\n };\n\n return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n function StringLiteralPrinterParser(literal) {\n this._literal = literal;\n }\n\n var _proto = StringLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n var converted = this._literal.replace(\"'\", \"''\");\n\n return '\\'' + converted + '\\'';\n };\n\n return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n function ZoneRulesProvider() {}\n\n ZoneRulesProvider.getRules = function getRules(zoneId) {\n throw new DateTimeException('unsupported ZoneId:' + zoneId);\n };\n\n ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n return [];\n };\n\n return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n _inheritsLoose(ZoneRegion, _ZoneId);\n\n ZoneRegion.ofId = function ofId(zoneId) {\n var rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n };\n\n function ZoneRegion(id, rules) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._id = id;\n _this._rules = rules;\n return _this;\n }\n\n var _proto = ZoneRegion.prototype;\n\n _proto.id = function id() {\n return this._id;\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n function ZoneIdPrinterParser(query, description) {\n this.query = query;\n this.description = description;\n }\n\n var _proto = ZoneIdPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var zone = context.getValueQuery(this.query);\n\n if (zone == null) {\n return false;\n }\n\n buf.append(zone.id());\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position > length) {\n return ~position;\n }\n\n if (position === length) {\n return ~position;\n }\n\n var nextChar = text.charAt(position);\n\n if (nextChar === '+' || nextChar === '-') {\n var newContext = context.copy();\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n return endPos;\n }\n\n var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n var nextNextChar = text.charAt(position + 1);\n\n if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n\n if (text.substr(position, 6) === 'SYSTEM') {\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n var maxParseLength = length - position;\n var treeMap = zoneIdTree.treeMap;\n var parsedZoneId = null;\n var parseLength = 0;\n\n while (treeMap != null) {\n var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n };\n\n _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n var prefix = text.substring(prefixPos, position).toUpperCase();\n var newContext = context.copy();\n\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n };\n\n _proto.toString = function toString() {\n return this.description;\n };\n\n return ZoneIdPrinterParser;\n}();\n\nvar ZoneIdTree = function () {\n ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n return a.length - b.length;\n });\n var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n\n for (var i = 0; i < sortedZoneIds.length; i++) {\n treeMap.add(sortedZoneIds[i]);\n }\n\n return new ZoneIdTree(sortedZoneIds.length, treeMap);\n };\n\n function ZoneIdTree(size, treeMap) {\n this.size = size;\n this.treeMap = treeMap;\n }\n\n return ZoneIdTree;\n}();\n\nvar ZoneIdTreeMap = function () {\n function ZoneIdTreeMap(length, isLeaf) {\n if (length === void 0) {\n length = 0;\n }\n\n if (isLeaf === void 0) {\n isLeaf = false;\n }\n\n this.length = length;\n this.isLeaf = isLeaf;\n this._treeMap = {};\n }\n\n var _proto2 = ZoneIdTreeMap.prototype;\n\n _proto2.add = function add(zoneId) {\n var idLength = zoneId.length;\n\n if (idLength === this.length) {\n this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n } else if (idLength > this.length) {\n var subZoneId = zoneId.substr(0, this.length);\n var subTreeMap = this._treeMap[subZoneId];\n\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n\n subTreeMap.add(zoneId);\n }\n };\n\n _proto2.get = function get(zoneId) {\n return this._treeMap[zoneId];\n };\n\n return ZoneIdTreeMap;\n}();\n\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH$1 = 15;\nvar DateTimeFormatterBuilder = function () {\n function DateTimeFormatterBuilder() {\n this._active = this;\n this._parent = null;\n this._printerParsers = [];\n this._optional = false;\n this._padNextWidth = 0;\n this._padNextChar = null;\n this._valueParserIndex = -1;\n }\n\n DateTimeFormatterBuilder._of = function _of(parent, optional) {\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n var dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n return dtFormatterBuilder;\n };\n\n var _proto = DateTimeFormatterBuilder.prototype;\n\n _proto.parseCaseSensitive = function parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n\n return this;\n };\n\n _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n\n return this;\n };\n\n _proto.parseStrict = function parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n\n return this;\n };\n\n _proto.parseLenient = function parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n\n return this;\n };\n\n _proto.appendValue = function appendValue() {\n if (arguments.length === 1) {\n return this._appendValue1.apply(this, arguments);\n } else if (arguments.length === 2) {\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n };\n\n _proto._appendValue1 = function _appendValue1(field) {\n requireNonNull(field);\n\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH$1, SignStyle.NORMAL));\n\n return this;\n };\n\n _proto._appendValue2 = function _appendValue2(field, width) {\n requireNonNull(field);\n\n if (width < 1 || width > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + width);\n }\n\n var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n\n if (minWidth < 1 || minWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n }\n\n var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto.appendValueReduced = function appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n var activeValueParser = this._active._valueParserIndex;\n var basePP = this._active._printerParsers[activeValueParser];\n\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n\n this._appendInternal(pp.withFixedWidth());\n\n this._active._valueParserIndex = activeValueParser;\n } else {\n basePP = basePP.withFixedWidth();\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n return this;\n };\n\n _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n\n return this;\n };\n\n _proto.appendInstant = function appendInstant(fractionalDigits) {\n if (fractionalDigits === void 0) {\n fractionalDigits = -2;\n }\n\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException('Invalid fractional digits: ' + fractionalDigits);\n }\n\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n\n return this;\n };\n\n _proto.appendOffsetId = function appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n\n return this;\n };\n\n _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n\n return this;\n };\n\n _proto.appendZoneId = function appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n\n return this;\n };\n\n _proto.appendPattern = function appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n\n this._parsePattern(pattern);\n\n return this;\n };\n\n _proto.appendZoneText = function appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendText = function appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendWeekField = function appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto._parsePattern = function _parsePattern(pattern) {\n var FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (var pos = 0; pos < pattern.length; pos++) {\n var cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n var start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n var count = pos - start;\n\n if (cur === 'p') {\n var pad = 0;\n\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n pad = count;\n start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n count = pos - start;\n }\n }\n\n if (pad === 0) {\n throw new IllegalArgumentException('Pad letter \\'p\\' must be followed by valid pad pattern: ' + pattern);\n }\n\n this.padNext(pad);\n }\n\n var field = FIELD_MAP[cur];\n\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException('Pattern letter count must be 2: ' + cur);\n }\n\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException('Pattern letter count must be 1 or 4: ' + cur);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException('Unknown pattern letter: ' + cur);\n }\n\n pos--;\n } else if (cur === '\\'') {\n var _start = pos++;\n\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break;\n }\n }\n }\n\n if (pos >= pattern.length) {\n throw new IllegalArgumentException('Pattern ends with an incomplete string literal: ' + pattern);\n }\n\n var str = pattern.substring(_start + 1, pos);\n\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n } else if (cur === '[') {\n this.optionalStart();\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n\n this.optionalEnd();\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException('Pattern includes reserved character: \\'' + cur + '\\'');\n } else {\n this.appendLiteral(cur);\n }\n }\n };\n\n _proto._parseField = function _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.EXCEEDS_PAD);\n }\n\n break;\n\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n\n case 2:\n throw new IllegalArgumentException('Invalid number of pattern letters: ' + cur);\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n\n break;\n }\n };\n\n _proto.padNext = function padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n };\n\n _proto._padNext1 = function _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n };\n\n _proto._padNext2 = function _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException('The pad width must be at least one but was ' + padWidth);\n }\n\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n };\n\n _proto.optionalStart = function optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n };\n\n _proto.optionalEnd = function optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n\n if (this._active._printerParsers.length > 0) {\n var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n\n return this;\n };\n\n _proto._appendInternal = function _appendInternal(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.appendLiteral = function appendLiteral(literal) {\n assert(literal != null);\n\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n\n return this;\n };\n\n _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.append = function append(formatter) {\n requireNonNull(formatter, 'formatter');\n\n this._appendInternal(formatter._toPrinterParser(false));\n\n return this;\n };\n\n _proto.toFormatter = function toFormatter(resolverStyle) {\n if (resolverStyle === void 0) {\n resolverStyle = ResolverStyle.SMART;\n }\n\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n\n var pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n };\n\n return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\n\nvar InstantPrinterParser = function () {\n function InstantPrinterParser(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n var _proto2 = InstantPrinterParser.prototype;\n\n _proto2.print = function print(context, buf) {\n var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n var inNanos = 0;\n\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n\n if (inSecs == null) {\n return false;\n }\n\n var inSec = inSecs;\n var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n\n if (inSec >= -SECONDS_0000_TO_1970) {\n var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n\n buf.append(ldt);\n\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n\n var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n var pos = buf.length();\n buf.append(_ldt);\n\n if (_ldt.second() === 0) {\n buf.append(':00');\n }\n\n if (_hi < 0) {\n if (_ldt.year() === -10000) {\n buf.replace(pos, pos + 2, '' + (_hi - 1));\n } else if (_lo === 0) {\n buf.insert(pos, _hi);\n } else {\n buf.insert(pos + 1, Math.abs(_hi));\n }\n }\n }\n\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n } else {\n buf.append(('' + (inNano + 1000000000)).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n buf.append('.');\n var div = 100000000;\n\n for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n var digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - digit * div;\n div = MathUtil.intDiv(div, 10);\n }\n }\n\n buf.append('Z');\n return true;\n };\n\n _proto2.parse = function parse(context, text, position) {\n var newContext = context.copy();\n var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n\n var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n\n var pos = parser.parse(newContext, text, position);\n\n if (pos < 0) {\n return pos;\n }\n\n var yearParsed = newContext.getParsed(ChronoField.YEAR);\n var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n var sec = secVal != null ? secVal : 0;\n var nano = nanoVal != null ? nanoVal : 0;\n var year = MathUtil.intMod(yearParsed, 10000);\n var days = 0;\n\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n\n var instantSecs;\n\n try {\n var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n\n var successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n };\n\n _proto2.toString = function toString() {\n return 'Instant()';\n };\n\n return InstantPrinterParser;\n}();\n\nfunction _init$9() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringBuilder = function () {\n function StringBuilder() {\n this._str = '';\n }\n\n var _proto = StringBuilder.prototype;\n\n _proto.append = function append(str) {\n this._str += str;\n return this;\n };\n\n _proto.appendChar = function appendChar(str) {\n this._str += str[0];\n return this;\n };\n\n _proto.insert = function insert(offset, str) {\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n };\n\n _proto.replace = function replace(start, end, str) {\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n };\n\n _proto.length = function length() {\n return this._str.length;\n };\n\n _proto.setLength = function setLength(length) {\n this._str = this._str.slice(0, length);\n return this;\n };\n\n _proto.toString = function toString() {\n return this._str;\n };\n\n return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n };\n\n DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n };\n\n DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n };\n\n function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n if (chrono === void 0) {\n chrono = IsoChronology.INSTANCE;\n }\n\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n this._printerParser = printerParser;\n this._locale = locale;\n this._decimalStyle = decimalStyle;\n this._resolverStyle = resolverStyle;\n this._resolverFields = resolverFields;\n this._chrono = chrono;\n this._zone = zone;\n }\n\n var _proto = DateTimeFormatter.prototype;\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.decimalStyle = function decimalStyle() {\n return this._decimalStyle;\n };\n\n _proto.chronology = function chronology() {\n return this._chrono;\n };\n\n _proto.withChronology = function withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n };\n\n _proto.withLocale = function withLocale() {\n return this;\n };\n\n _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n };\n\n _proto.format = function format(temporal) {\n var buf = new StringBuilder(32);\n\n this._formatTo(temporal, buf);\n\n return buf.toString();\n };\n\n _proto._formatTo = function _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n var context = new DateTimePrintContext(temporal, this);\n\n this._printerParser.print(context, appendable);\n };\n\n _proto.parse = function parse(text, type) {\n if (arguments.length === 1) {\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n };\n\n _proto.parse1 = function parse1(text) {\n requireNonNull(text, 'text');\n\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto.parse2 = function parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n\n try {\n var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n\n return builder.build(type);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto._createError = function _createError(text, ex) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substring(0, 64) + '...';\n } else {\n abbr = text;\n }\n\n return new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed: ' + ex.message, text, 0, ex);\n };\n\n _proto._parseToBuilder = function _parseToBuilder(text, position) {\n var pos = position != null ? position : new ParsePosition(0);\n\n var result = this._parseUnresolved0(text, pos);\n\n if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substr(0, 64).toString() + '...';\n } else {\n abbr = text;\n }\n\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed at index ' + pos.getErrorIndex(), text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed, unparsed text found at index ' + pos.getIndex(), text, pos.getIndex());\n }\n }\n\n return result.toBuilder();\n };\n\n _proto.parseUnresolved = function parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n };\n\n _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n var context = new DateTimeParseContext(this);\n var pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n\n if (pos < 0) {\n position.setErrorIndex(~pos);\n return null;\n }\n\n position.setIndex(pos);\n return context.toParsed();\n };\n\n _proto._toPrinterParser = function _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n };\n\n _proto.toString = function toString() {\n var pattern = this._printerParser.toString();\n\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n };\n\n return DateTimeFormatter;\n}();\nfunction _init$a() {\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n _inheritsLoose(MonthDay, _TemporalAccessor);\n\n MonthDay.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n };\n\n MonthDay.now0 = function now0() {\n return this.nowClock(Clock.systemDefaultZone());\n };\n\n MonthDay.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n };\n\n MonthDay.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n var now = LocalDate.now(clock);\n return MonthDay.of(now.month(), now.dayOfMonth());\n };\n\n MonthDay.of = function of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n };\n\n MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException('Illegal value for DayOfMonth field, value ' + dayOfMonth + ' is not valid for month ' + month.toString());\n }\n\n return new MonthDay(month.value(), dayOfMonth);\n };\n\n MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n };\n\n MonthDay.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n\n try {\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain MonthDay from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n MonthDay.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n };\n\n MonthDay.parseString = function parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n };\n\n MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n };\n\n function MonthDay(month, dayOfMonth) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n return _this;\n }\n\n var _proto = MonthDay.prototype;\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n\n return _TemporalAccessor.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isValidYear = function isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n };\n\n _proto.withMonth = function withMonth(month) {\n return this.with(Month.of(month));\n };\n\n _proto.with = function _with(month) {\n requireNonNull(month, 'month');\n\n if (month.value() === this._month) {\n return this;\n }\n\n var day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n\n return MonthDay.of(this._month, dayOfMonth);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n };\n\n _proto.atYear = function atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n var cmp = this._month - other.monthValue();\n\n if (cmp === 0) {\n cmp = this._day - other.dayOfMonth();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof MonthDay) {\n var other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '--' + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return MonthDay;\n}(TemporalAccessor);\nvar PARSER;\nfunction _init$b() {\n PARSER = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n return MonthDay.from(temporal);\n });\n}\n\nvar YearMonth = function (_Temporal) {\n _inheritsLoose(YearMonth, _Temporal);\n\n YearMonth.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n };\n\n YearMonth.now0 = function now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n };\n\n YearMonth.nowZoneId = function nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n };\n\n YearMonth.nowClock = function nowClock(clock) {\n var now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n };\n\n YearMonth.of = function of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n };\n\n YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n };\n\n YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n };\n\n YearMonth.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n\n try {\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain YearMonth from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n YearMonth.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n };\n\n YearMonth.parseString = function parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER$1);\n };\n\n YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n };\n\n function YearMonth(year, month) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n return _this;\n }\n\n var _proto = YearMonth.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._getProlepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._getProlepticMonth = function _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.isValidDay = function isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.with = function _with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this.withAdjuster(adjusterOrField);\n } else {\n return this.withFieldValue(adjusterOrField, value);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n };\n\n _proto.withMonth = function withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return this.withYear(newYear);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusAmountUnit(MathUtil.MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n var end = YearMonth.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n\n switch (unit) {\n case ChronoUnit.MONTHS:\n return monthsUntil;\n\n case ChronoUnit.YEARS:\n return monthsUntil / 12;\n\n case ChronoUnit.DECADES:\n return monthsUntil / 120;\n\n case ChronoUnit.CENTURIES:\n return monthsUntil / 1200;\n\n case ChronoUnit.MILLENNIA:\n return monthsUntil / 12000;\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDay = function atDay(dayOfMonth) {\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.atEndOfMonth = function atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n var cmp = this._year - other.year();\n\n if (cmp === 0) {\n cmp = this._month - other.monthValue();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof YearMonth) {\n var other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return PARSER$1.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$c() {\n PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n return YearMonth.from(temporal);\n });\n}\n\nvar Year = function (_Temporal) {\n _inheritsLoose(Year, _Temporal);\n\n function Year(value) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(value);\n return _this;\n }\n\n var _proto = Year.prototype;\n\n _proto.value = function value() {\n return this._year;\n };\n\n Year.now = function now(zoneIdOrClock) {\n if (zoneIdOrClock === void 0) {\n zoneIdOrClock = undefined;\n }\n\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n };\n\n Year.now0 = function now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n };\n\n Year.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n };\n\n Year.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n var now = LocalDate.now(clock);\n return Year.of(now.year());\n };\n\n Year.of = function of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n };\n\n Year.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof Year) {\n return temporal;\n }\n\n try {\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Year from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n Year.parse = function parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n };\n\n Year.parseText = function parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER$2);\n };\n\n Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n if (formatter === void 0) {\n formatter = PARSER$2;\n }\n\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n };\n\n Year.isLeap = function isLeap(year) {\n return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isLeap = function isLeap() {\n return Year.isLeap(this._year);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return Year.of(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plus(MathUtil.MAX_SAFE_INTEGER, unit).plus(1, unit) : this.plus(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.YEAR, this._year);\n };\n\n _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n };\n\n _proto.length = function length() {\n return this.isLeap() ? 366 : 365;\n };\n\n _proto.atDay = function atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.atMonth = function atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n };\n\n _proto.atMonthMonth = function atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthNumber = function atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthDay = function atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query()');\n requireInstance(_query, TemporalQuery, 'query()');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '' + this._year;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var yearsUntil = end.value() - this.value();\n\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n return Year;\n}(Temporal);\nvar PARSER$2;\nfunction _init$d() {\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n PARSER$2 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n return Year.from(temporal);\n });\n}\n\nvar TemporalAdjusters = function () {\n function TemporalAdjusters() {}\n\n TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n };\n\n TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n };\n\n TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n };\n\n TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n };\n\n TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n };\n\n TemporalAdjusters.next = function next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n };\n\n TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n };\n\n TemporalAdjusters.previous = function previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n };\n\n TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n };\n\n return TemporalAdjusters;\n}();\n\nvar Impl = function (_TemporalAdjuster) {\n _inheritsLoose(Impl, _TemporalAdjuster);\n\n function Impl(ordinal) {\n var _this;\n\n _this = _TemporalAdjuster.call(this) || this;\n _this._ordinal = ordinal;\n return _this;\n }\n\n var _proto = Impl.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n switch (this._ordinal) {\n case 0:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n\n case 1:\n return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n case 2:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n\n case 3:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n\n case 4:\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n\n case 5:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n\n throw new IllegalStateException('Unreachable');\n };\n\n return Impl;\n}(TemporalAdjuster);\n\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n\n function DayOfWeekInMonth(ordinal, dow) {\n var _this2;\n\n _this2 = _TemporalAdjuster2.call(this) || this;\n _this2._ordinal = ordinal;\n _this2._dowValue = dow.value();\n return _this2;\n }\n\n var _proto2 = DayOfWeekInMonth.prototype;\n\n _proto2.adjustInto = function adjustInto(temporal) {\n if (this._ordinal >= 0) {\n var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n dowDiff += (this._ordinal - 1) * 7;\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n\n var daysDiff = this._dowValue - _curDow;\n daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n daysDiff -= (-this._ordinal - 1) * 7;\n return _temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return DayOfWeekInMonth;\n}(TemporalAdjuster);\n\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n\n function RelativeDayOfWeek(relative, dayOfWeek) {\n var _this3;\n\n _this3 = _TemporalAdjuster3.call(this) || this;\n requireNonNull(dayOfWeek, 'dayOfWeek');\n _this3._relative = relative;\n _this3._dowValue = dayOfWeek.value();\n return _this3;\n }\n\n var _proto3 = RelativeDayOfWeek.prototype;\n\n _proto3.adjustInto = function adjustInto(temporal) {\n var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n\n if ((this._relative & 1) === 0) {\n var daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n var _daysDiff = this._dowValue - calDow;\n\n return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n _inheritsLoose(IsoChronology, _Enum);\n\n function IsoChronology() {\n return _Enum.apply(this, arguments) || this;\n }\n\n IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n };\n\n var _proto = IsoChronology.prototype;\n\n _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n var current = fieldValues.get(field);\n\n if (current != null && current !== value) {\n throw new DateTimeException('Invalid state, field: ' + field + ' ' + current + ' conflicts with ' + field + ' ' + value);\n }\n\n fieldValues.put(field, value);\n };\n\n _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n\n var era = fieldValues.remove(ChronoField.ERA);\n\n if (era == null) {\n var year = fieldValues.get(ChronoField.YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n } else {\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException('Invalid value for era: ' + era);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n }\n\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var months = moy - 1;\n var days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART) {\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n\n return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n }\n\n var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(_y, doy);\n }\n\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n\n return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n }\n\n var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n\n return date;\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n\n return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n }\n\n var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n\n var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n\n if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n\n return _date;\n }\n }\n }\n\n return null;\n };\n\n _proto.date = function date(temporal) {\n return LocalDate.from(temporal);\n };\n\n return IsoChronology;\n}(Enum);\nfunction _init$e() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetTime, _DefaultInterfaceTemp);\n\n OffsetTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n\n try {\n var time = LocalTime.from(temporal);\n var offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n };\n\n OffsetTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n var now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n };\n\n OffsetTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n };\n\n function OffsetTime(time, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._time = time;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.atDate = function atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n };\n\n _proto.get = function get(field) {\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n\n return this._time.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localTime()) {\n return this._time;\n } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._time.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = OffsetTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end._toEpochNano() - this._toEpochNano();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return Math.floor(nanosUntil / 1000);\n\n case ChronoUnit.MILLIS:\n return Math.floor(nanosUntil / 1000000);\n\n case ChronoUnit.SECONDS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return Math.floor(nanosUntil / (12 * LocalTime.NANOS_PER_HOUR));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._time.plusSeconds(difference);\n\n return new OffsetTime(adjusted, offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n };\n\n _proto._toEpochNano = function _toEpochNano() {\n var nod = this._time.toNanoOfDay();\n\n var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetTime(time, offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n\n var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n\n return compare;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._time.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return OffsetTime;\n}(DefaultInterfaceTemporal);\nfunction _init$f() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n return OffsetTime.from(temporal);\n });\n}\n\nvar ChronoZonedDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoZonedDateTime, _DefaultInterfaceTemp);\n\n function ChronoZonedDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoZonedDateTime.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone();\n } else if (_query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.toInstant = function toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n\n return false;\n };\n\n return ChronoZonedDateTime;\n}(DefaultInterfaceTemporal);\n\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n\n ZonedDateTime.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n ZonedDateTime.of = function of() {\n if (arguments.length <= 2) {\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n };\n\n ZonedDateTime.of3 = function of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n };\n\n ZonedDateTime.of2 = function of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n };\n\n ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n };\n\n ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n\n var offset = null;\n var rules = zone.rules();\n var validOffsets = rules.validOffsets(localDateTime);\n\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n var trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null && validOffsets.some(function (validOffset) {\n return validOffset.equals(preferredOffset);\n })) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset');\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofInstant = function ofInstant() {\n if (arguments.length === 2) {\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n };\n\n ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n };\n\n ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n };\n\n ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n var rules = zone.rules();\n var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n };\n\n ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n\n if (rules.isValidOffset(localDateTime, offset) === false) {\n var trans = rules.transition(localDateTime);\n\n if (trans != null && trans.isGap()) {\n throw new DateTimeException('LocalDateTime ' + localDateTime + ' does not exist in zone ' + zone + ' due to a gap in the local time-line, typically caused by daylight savings');\n }\n\n throw new DateTimeException('ZoneOffset \"' + offset + '\" is not valid for LocalDateTime \"' + localDateTime + '\" in zone \"' + zone + '\"');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n\n var zone = ZoneId.from(temporal);\n\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n var zdt = ZonedDateTime._from(temporal, zone);\n\n if (zdt != null) return zdt;\n }\n\n var ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n };\n\n ZonedDateTime._from = function _from(temporal, zone) {\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if (!(ex instanceof DateTimeException)) throw ex;\n }\n };\n\n ZonedDateTime.__from = function __from(temporal, zone) {\n var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n };\n\n ZonedDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n };\n\n function ZonedDateTime(dateTime, offset, zone) {\n var _this;\n\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n _this = _ChronoZonedDateTime.call(this) || this;\n _this._dateTime = dateTime;\n _this._offset = offset;\n _this._zone = zone;\n return _this;\n }\n\n var _proto = ZonedDateTime.prototype;\n\n _proto._resolveLocal = function _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n };\n\n _proto._resolveInstant = function _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n };\n\n _proto._resolveOffset = function _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n\n return this;\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this._offset.totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n requireNonNull(field, 'field');\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this._dateTime);\n\n if (trans != null && trans.isOverlap()) {\n var earlierOffset = trans.offsetBefore();\n\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this.toLocalDateTime());\n\n if (trans != null) {\n var laterOffset = trans.offsetAfter();\n\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.zone = function zone() {\n return this._zone;\n };\n\n _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n };\n\n _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n var instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return ZonedDateTime._create(newValue, this.nano(), this._zone);\n\n case ChronoField.OFFSET_SECONDS:\n {\n var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n };\n\n _proto.withHour = function withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this.plusHours(-1 * hours);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n requireNonNull(_query, 'query');\n return _ChronoZonedDateTime.prototype.query.call(this, _query);\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = ZonedDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n\n var adjustedEnd = end._dateTime.plusSeconds(difference);\n\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n\n return unit.between(this, end);\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetDateTime = function toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n };\n\n _proto.toString = function toString() {\n var str = this._dateTime.toString() + this._offset.toString();\n\n if (this._offset !== this._zone) {\n str += '[' + this._zone.toString() + ']';\n }\n\n return str;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n };\n\n return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$g() {\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n return ZonedDateTime.from(temporal);\n });\n}\n\nvar OffsetDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetDateTime, _DefaultInterfaceTemp);\n\n OffsetDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n\n try {\n var offset = ZoneOffset.from(temporal);\n\n try {\n var ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n var instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetDateTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n var now = clockOrZone.instant();\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n };\n\n OffsetDateTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n };\n\n OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n var dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n };\n\n OffsetDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n };\n\n function OffsetDateTime(dateTime, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._dateTime = dateTime;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetDateTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = OffsetDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n };\n\n _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n throw new DateTimeException('Field too large for an int: ' + field);\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.get(field);\n }\n\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetTime = function toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n };\n\n _proto.toZonedDateTime = function toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.toInstant = function toInstant() {\n return this._dateTime.toInstant(this._offset);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster);\n\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field);\n\n if (field instanceof ChronoField) {\n var f = field;\n\n switch (f) {\n case ChronoField.INSTANT_SECONDS:\n return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n\n case ChronoField.OFFSET_SECONDS:\n {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetDateTime(dateTime, offset);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._dateTime.plusSeconds(difference);\n\n return new OffsetDateTime(adjusted, offset);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._dateTime.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return OffsetDateTime;\n}(DefaultInterfaceTemporal);\nfunction _init$h() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n return OffsetDateTime.from(temporal);\n });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n _inheritsLoose(LocalDate, _ChronoLocalDate);\n\n LocalDate.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone == null) {\n clock = Clock.systemDefaultZone();\n } else if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDate.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n var offset = zone.rules().offset(instant);\n var epochSec = instant.epochSecond() + offset.totalSeconds();\n var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n };\n\n LocalDate.of = function of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n };\n\n LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n var leap = IsoChronology.isLeapYear(year);\n\n if (dayOfYear === 366 && leap === false) {\n assert(false, 'Invalid date \\'DayOfYear 366\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n }\n\n var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n\n var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n };\n\n LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n if (epochDay === void 0) {\n epochDay = 0;\n }\n\n var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n\n yearEst += adjust;\n var marchDoy0 = doyEst;\n var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n var month = (marchMonth0 + 2) % 12 + 1;\n var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n var year = yearEst;\n return new LocalDate(year, month, dom);\n };\n\n LocalDate.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var date = temporal.query(TemporalQueries.localDate());\n\n if (date == null) {\n throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return date;\n };\n\n LocalDate.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n }\n\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n };\n\n LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n\n return LocalDate.of(year, month, day);\n };\n\n function LocalDate(year, month, dayOfMonth) {\n var _this;\n\n _this = _ChronoLocalDate.call(this) || this;\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n\n LocalDate._validate(_this._year, _this._month, _this._day);\n\n return _this;\n }\n\n LocalDate._validate = function _validate(year, month, dayOfMonth) {\n var dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, 'Invalid date \\'February 29\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n } else {\n assert(false, 'Invalid date \\'' + year + '\\' \\'' + month + '\\' \\'' + dayOfMonth + '\\'', DateTimeException);\n }\n }\n }\n };\n\n var _proto = LocalDate.prototype;\n\n _proto.isSupported = function isSupported(field) {\n return _ChronoLocalDate.prototype.isSupported.call(this, field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return ValueRange.of(1, this.lengthOfMonth());\n\n case ChronoField.DAY_OF_YEAR:\n return ValueRange.of(1, this.lengthOfYear());\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n\n case ChronoField.YEAR_OF_ERA:\n return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n assert(field != null, '', NullPointerException);\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK:\n return this.dayOfWeek().value();\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return MathUtil.intMod(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.DAY_OF_YEAR:\n return this.dayOfYear();\n\n case ChronoField.EPOCH_DAY:\n return this.toEpochDay();\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return MathUtil.intDiv(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._prolepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year >= 1 ? this._year : 1 - this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year >= 1 ? 1 : 0;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto._prolepticMonth = function _prolepticMonth() {\n return this._year * 12 + (this._month - 1);\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n switch (this._month) {\n case 2:\n return this.isLeapYear() ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.DAY_OF_WEEK:\n return this.plusDays(newValue - this.dayOfWeek().value());\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n\n case ChronoField.DAY_OF_MONTH:\n return this.withDayOfMonth(newValue);\n\n case ChronoField.DAY_OF_YEAR:\n return this.withDayOfYear(newValue);\n\n case ChronoField.EPOCH_DAY:\n return LocalDate.ofEpochDay(newValue);\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n if (this._year === year) {\n return this;\n }\n\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n };\n\n _proto.withMonth = function withMonth(month) {\n var m = month instanceof Month ? month.value() : month;\n\n if (this._month === m) {\n return this;\n }\n\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.plusDays(amountToAdd);\n\n case ChronoUnit.WEEKS:\n return this.plusWeeks(amountToAdd);\n\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n };\n\n _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n };\n\n _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this;\n }\n\n return _ChronoLocalDate.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(p1, p2) {\n if (arguments.length < 2) {\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n };\n\n _proto.until2 = function until2(endExclusive, unit) {\n var end = LocalDate.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.daysUntil(end);\n\n case ChronoUnit.WEEKS:\n return MathUtil.intDiv(this.daysUntil(end), 7);\n\n case ChronoUnit.MONTHS:\n return this._monthsUntil(end);\n\n case ChronoUnit.YEARS:\n return MathUtil.intDiv(this._monthsUntil(end), 12);\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(this._monthsUntil(end), 120);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(this._monthsUntil(end), 1200);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(this._monthsUntil(end), 12000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.daysUntil = function daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay();\n };\n\n _proto._monthsUntil = function _monthsUntil(end) {\n var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n return MathUtil.intDiv(packed2 - packed1, 32);\n };\n\n _proto.until1 = function until1(endDate) {\n var end = LocalDate.from(endDate);\n\n var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n\n var days = end._day - this._day;\n\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n var calcDate = this.plusMonths(totalMonths);\n days = end.toEpochDay() - calcDate.toEpochDay();\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n\n var years = MathUtil.intDiv(totalMonths, 12);\n var months = MathUtil.intMod(totalMonths, 12);\n return Period.of(years, months, days);\n };\n\n _proto.atTime = function atTime() {\n if (arguments.length === 1) {\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n };\n\n _proto.atTime1 = function atTime1(time) {\n requireNonNull(time, 'time');\n\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException('time must be an instance of LocalTime or OffsetTime' + (time && time.constructor && time.constructor.name ? ', but is ' + time.constructor.name : ''));\n }\n };\n\n _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n };\n\n _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n };\n\n _proto.atStartOfDay = function atStartOfDay(zone) {\n if (zone != null) {\n return this.atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n };\n\n _proto.atStartOfDayWithZone = function atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n var ldt = this.atTime(LocalTime.MIDNIGHT);\n\n if (zone instanceof ZoneOffset === false) {\n var trans = zone.rules().transition(ldt);\n\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n\n return ZonedDateTime.of(ldt, zone);\n };\n\n _proto.toEpochDay = function toEpochDay() {\n var y = this._year;\n var m = this._month;\n var total = 0;\n total += 365 * y;\n\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n\n if (m > 2) {\n total--;\n\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n\n return total - DAYS_0000_TO_1970;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(otherDate) {\n var cmp = this._year - otherDate._year;\n\n if (cmp === 0) {\n cmp = this._month - otherDate._month;\n\n if (cmp === 0) {\n cmp = this._day - otherDate._day;\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n };\n\n _proto.toString = function toString() {\n var dayString, monthString, yearString;\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n var absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = '-' + ('' + (yearValue - 10000)).slice(-4);\n } else {\n yearString = ('' + (yearValue + 10000)).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = '+' + yearValue;\n } else {\n yearString = '' + yearValue;\n }\n }\n\n if (monthValue < 10) {\n monthString = '-0' + monthValue;\n } else {\n monthString = '-' + monthValue;\n }\n\n if (dayValue < 10) {\n dayString = '-0' + dayValue;\n } else {\n dayString = '-' + dayValue;\n }\n\n return yearString + monthString + dayString;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return _ChronoLocalDate.prototype.format.call(this, formatter);\n };\n\n return LocalDate;\n}(ChronoLocalDate);\nfunction _init$i() {\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n return LocalDate.from(temporal);\n });\n}\n\nvar ChronoLocalDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDateTime, _DefaultInterfaceTemp);\n\n function ChronoLocalDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDateTime.prototype;\n\n _proto.chronology = function chronology() {\n return this.toLocalDate().chronology();\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n };\n\n _proto.toInstant = function toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n };\n\n return ChronoLocalDateTime;\n}(DefaultInterfaceTemporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n\n LocalDateTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalDateTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.of = function of() {\n if (arguments.length <= 2) {\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var date = LocalDate.of(year, month, dayOfMonth);\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n var offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n };\n\n LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n if (epochSecond === void 0) {\n epochSecond = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n\n requireNonNull(offset, 'offset');\n var localSecond = epochSecond + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n\n try {\n var date = LocalDate.from(temporal);\n var time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n LocalDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n };\n\n function LocalDateTime(date, time) {\n var _this;\n\n _this = _ChronoLocalDateTime.call(this) || this;\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n _this._date = date;\n _this._time = time;\n return _this;\n }\n\n var _proto = LocalDateTime.prototype;\n\n _proto._withDateTime = function _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n\n return new LocalDateTime(newDate, newTime);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n }\n\n return _ChronoLocalDateTime.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.year = function year() {\n return this._date.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._date.monthValue();\n };\n\n _proto.month = function month() {\n return this._date.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._date.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._date.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._date.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n };\n\n _proto.withHour = function withHour(hour) {\n var newTime = this._time.withHour(hour);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withMinute = function withMinute(minute) {\n var newTime = this._time.withMinute(minute);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withSecond = function withSecond(second) {\n var newTime = this._time.withSecond(second);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n var newTime = this._time.withNano(nanoOfSecond);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n }\n\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n var newDate = this._date.plusYears(years);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n var newDate = this._date.plusMonths(months);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n var newDate = this._date.plusWeeks(weeks);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusDays = function plusDays(days) {\n var newDate = this._date.plusDays(days);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n };\n\n _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n\n var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n totDays *= sign;\n var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n\n var curNoD = this._time.toNanoOfDay();\n\n totNanos = totNanos * sign + curNoD;\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n return _ChronoLocalDateTime.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n var daysUntil = this._date.daysUntil(end._date);\n\n var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n\n var amount = daysUntil;\n\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n var endDate = end._date;\n var endTime = end._time;\n\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n\n return this._date.until(endDate, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.of(this, zone);\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._date;\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(other) {\n var cmp = this._date.compareTo(other.toLocalDate());\n\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._date.toString() + 'T' + this._time.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$j() {\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n return LocalDateTime.from(temporal);\n });\n}\n\nvar LocalTime = function (_Temporal) {\n _inheritsLoose(LocalTime, _Temporal);\n\n LocalTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalTime._now = function _now(clock) {\n if (clock === void 0) {\n clock = Clock.systemDefaultZone();\n }\n\n requireNonNull(clock, 'clock');\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n var offset = zone.rules().offset(instant);\n var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n };\n\n LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n };\n\n LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n if (secondOfDay === void 0) {\n secondOfDay = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n };\n\n LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n if (nanoOfDay === void 0) {\n nanoOfDay = 0;\n }\n\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n };\n\n LocalTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var time = temporal.query(TemporalQueries.localTime());\n\n if (time == null) {\n throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return time;\n };\n\n LocalTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n };\n\n function LocalTime(hour, minute, second, nanoOfSecond) {\n var _this;\n\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n _this = _Temporal.call(this) || this;\n\n var _hour = MathUtil.safeToInt(hour);\n\n var _minute = MathUtil.safeToInt(minute);\n\n var _second = MathUtil.safeToInt(second);\n\n var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n }\n\n return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n }\n\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n return _this;\n }\n\n LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n };\n\n var _proto = LocalTime.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n requireNonNull(field);\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nano;\n\n case ChronoField.NANO_OF_DAY:\n return this.toNanoOfDay();\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this._second;\n\n case ChronoField.SECOND_OF_DAY:\n return this.toSecondOfDay();\n\n case ChronoField.MINUTE_OF_HOUR:\n return this._minute;\n\n case ChronoField.MINUTE_OF_DAY:\n return this._hour * 60 + this._minute;\n\n case ChronoField.HOUR_OF_AMPM:\n return MathUtil.intMod(this._hour, 12);\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n {\n var ham = MathUtil.intMod(this._hour, 12);\n return ham % 12 === 0 ? 12 : ham;\n }\n\n case ChronoField.HOUR_OF_DAY:\n return this._hour;\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this._hour === 0 ? 24 : this._hour;\n\n case ChronoField.AMPM_OF_DAY:\n return MathUtil.intDiv(this._hour, 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto.hour = function hour() {\n return this._hour;\n };\n\n _proto.minute = function minute() {\n return this._minute;\n };\n\n _proto.second = function second() {\n return this._second;\n };\n\n _proto.nano = function nano() {\n return this._nano;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this.withNano(newValue);\n\n case ChronoField.NANO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue);\n\n case ChronoField.MICRO_OF_SECOND:\n return this.withNano(newValue * 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return this.withNano(newValue * 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this.withSecond(newValue);\n\n case ChronoField.SECOND_OF_DAY:\n return this.plusSeconds(newValue - this.toSecondOfDay());\n\n case ChronoField.MINUTE_OF_HOUR:\n return this.withMinute(newValue);\n\n case ChronoField.MINUTE_OF_DAY:\n return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n\n case ChronoField.HOUR_OF_AMPM:\n return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.HOUR_OF_DAY:\n return this.withHour(newValue);\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this.withHour(newValue === 24 ? 0 : newValue);\n\n case ChronoField.AMPM_OF_DAY:\n return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withHour = function withHour(hour) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (this._hour === hour) {\n return this;\n }\n\n return new LocalTime(hour, this._minute, this._second, this._nano);\n };\n\n _proto.withMinute = function withMinute(minute) {\n if (minute === void 0) {\n minute = 0;\n }\n\n if (this._minute === minute) {\n return this;\n }\n\n return new LocalTime(this._hour, minute, this._second, this._nano);\n };\n\n _proto.withSecond = function withSecond(second) {\n if (second === void 0) {\n second = 0;\n }\n\n if (this._second === second) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, second, this._nano);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (this._nano === nanoOfSecond) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n\n var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n\n if (mofd === newMofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n\n var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n\n if (sofd === newSofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n\n var nofd = this.toNanoOfDay();\n var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n\n if (nofd === newNofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localTime()) {\n return this;\n }\n\n if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(nanosUntil, 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.intDiv(nanosUntil, 1000000);\n\n case ChronoUnit.SECONDS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDate = function atDate(date) {\n return LocalDateTime.of(date, this);\n };\n\n _proto.toSecondOfDay = function toSecondOfDay() {\n var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n };\n\n _proto.toNanoOfDay = function toNanoOfDay() {\n var total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n };\n\n _proto.toString = function toString() {\n var buf = '';\n var hourValue = this._hour;\n var minuteValue = this._minute;\n var secondValue = this._second;\n var nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n\n if (nanoValue > 0) {\n buf += '.';\n\n if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n } else {\n buf += ('' + (nanoValue + 1000000000)).substring(1);\n }\n }\n }\n\n return buf;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalTime;\n}(Temporal);\nfunction _init$k() {\n LocalTime.HOURS = [];\n\n for (var hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n LocalTime.MIN = LocalTime.HOURS[0];\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n LocalTime.NOON = LocalTime.HOURS[12];\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n return LocalTime.from(temporal);\n });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n _inheritsLoose(Instant, _Temporal);\n\n Instant.now = function now(clock) {\n if (clock === void 0) {\n clock = Clock.systemUTC();\n }\n\n return clock.instant();\n };\n\n Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n };\n\n Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n var secs = MathUtil.floorDiv(epochMilli, 1000);\n var mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n };\n\n Instant.from = function from(temporal) {\n try {\n var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Instant from TemporalAccessor: ' + temporal + ', type ' + typeof temporal, ex);\n }\n };\n\n Instant.parse = function parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n };\n\n Instant._create = function _create(seconds, nanoOfSecond) {\n if (seconds === 0 && nanoOfSecond === 0) {\n return Instant.EPOCH;\n }\n\n return new Instant(seconds, nanoOfSecond);\n };\n\n Instant._validate = function _validate(seconds, nanoOfSecond) {\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n };\n\n function Instant(seconds, nanoOfSecond) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n\n Instant._validate(seconds, nanoOfSecond);\n\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n return _this;\n }\n\n var _proto = Instant.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nanos;\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nanos, 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n\n case ChronoField.INSTANT_SECONDS:\n return this._seconds;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.epochSecond = function epochSecond() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.MILLI_OF_SECOND:\n {\n var nval = newValue * NANOS_PER_MILLI;\n return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n }\n\n case ChronoField.MICRO_OF_SECOND:\n {\n var _nval = newValue * 1000;\n\n return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n }\n\n case ChronoField.NANO_OF_SECOND:\n return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n\n case ChronoField.INSTANT_SECONDS:\n return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n\n var result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this._plus(MathUtil.intDiv(amountToAdd, 1000000), MathUtil.intMod(amountToAdd, 1000000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n\n case ChronoUnit.DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n };\n\n _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n\n if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = Instant.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this._nanosUntil(end);\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(this._nanosUntil(end), 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n\n case ChronoUnit.SECONDS:\n return this._secondsUntil(end);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto._nanosUntil = function _nanosUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n };\n\n _proto._secondsUntil = function _secondsUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var nanosDiff = end.nano() - this.nano();\n\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n\n return secsDiff;\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n var millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n };\n\n _proto.compareTo = function compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherInstant._nanos;\n };\n\n _proto.isAfter = function isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n };\n\n _proto.isBefore = function isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Instant) {\n return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n };\n\n _proto.toString = function toString() {\n return DateTimeFormatter.ISO_INSTANT.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Instant;\n}(Temporal);\nfunction _init$l() {\n Instant.MIN_SECONDS = -31619119219200;\n Instant.MAX_SECONDS = 31494816403199;\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n return Instant.from(temporal);\n });\n}\n\nvar Clock = function () {\n function Clock() {}\n\n Clock.systemUTC = function systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n };\n\n Clock.systemDefaultZone = function systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n };\n\n Clock.system = function system(zone) {\n return new SystemClock(zone);\n };\n\n Clock.fixed = function fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n };\n\n Clock.offset = function offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration);\n };\n\n var _proto = Clock.prototype;\n\n _proto.millis = function millis() {\n abstractMethodFail('Clock.millis');\n };\n\n _proto.instant = function instant() {\n abstractMethodFail('Clock.instant');\n };\n\n _proto.zone = function zone() {\n abstractMethodFail('Clock.zone');\n };\n\n _proto.withZone = function withZone() {\n abstractMethodFail('Clock.withZone');\n };\n\n return Clock;\n}();\n\nvar SystemClock = function (_Clock) {\n _inheritsLoose(SystemClock, _Clock);\n\n function SystemClock(zone) {\n var _this;\n\n requireNonNull(zone, 'zone');\n _this = _Clock.call(this) || this;\n _this._zone = zone;\n return _this;\n }\n\n var _proto2 = SystemClock.prototype;\n\n _proto2.zone = function zone() {\n return this._zone;\n };\n\n _proto2.millis = function millis() {\n return new Date().getTime();\n };\n\n _proto2.instant = function instant() {\n return Instant.ofEpochMilli(this.millis());\n };\n\n _proto2.equals = function equals(obj) {\n if (obj instanceof SystemClock) {\n return this._zone.equals(obj._zone);\n }\n\n return false;\n };\n\n _proto2.withZone = function withZone(zone) {\n if (zone.equals(this._zone)) {\n return this;\n }\n\n return new SystemClock(zone);\n };\n\n _proto2.toString = function toString() {\n return 'SystemClock[' + this._zone.toString() + ']';\n };\n\n return SystemClock;\n}(Clock);\n\nvar FixedClock = function (_Clock2) {\n _inheritsLoose(FixedClock, _Clock2);\n\n function FixedClock(fixedInstant, zoneId) {\n var _this2;\n\n _this2 = _Clock2.call(this) || this;\n _this2._instant = fixedInstant;\n _this2._zoneId = zoneId;\n return _this2;\n }\n\n var _proto3 = FixedClock.prototype;\n\n _proto3.instant = function instant() {\n return this._instant;\n };\n\n _proto3.millis = function millis() {\n return this._instant.toEpochMilli();\n };\n\n _proto3.zone = function zone() {\n return this._zoneId;\n };\n\n _proto3.toString = function toString() {\n return 'FixedClock[]';\n };\n\n _proto3.equals = function equals(obj) {\n if (obj instanceof FixedClock) {\n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n\n return false;\n };\n\n _proto3.withZone = function withZone(zone) {\n if (zone.equals(this._zoneId)) {\n return this;\n }\n\n return new FixedClock(this._instant, zone);\n };\n\n return FixedClock;\n}(Clock);\n\nvar OffsetClock = function (_Clock3) {\n _inheritsLoose(OffsetClock, _Clock3);\n\n function OffsetClock(baseClock, offset) {\n var _this3;\n\n _this3 = _Clock3.call(this) || this;\n _this3._baseClock = baseClock;\n _this3._offset = offset;\n return _this3;\n }\n\n var _proto4 = OffsetClock.prototype;\n\n _proto4.zone = function zone() {\n return this._baseClock.zone();\n };\n\n _proto4.withZone = function withZone(zone) {\n if (zone.equals(this._baseClock.zone())) {\n return this;\n }\n\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n };\n\n _proto4.millis = function millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n };\n\n _proto4.instant = function instant() {\n return this._baseClock.instant().plus(this._offset);\n };\n\n _proto4.equals = function equals(obj) {\n if (obj instanceof OffsetClock) {\n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n\n return false;\n };\n\n _proto4.toString = function toString() {\n return 'OffsetClock[' + this._baseClock + ',' + this._offset + ']';\n };\n\n return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n };\n\n function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n\n if (transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n var _proto = ZoneOffsetTransition.prototype;\n\n _proto.instant = function instant() {\n return this._transition.toInstant(this._offsetBefore);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n };\n\n _proto.dateTimeBefore = function dateTimeBefore() {\n return this._transition;\n };\n\n _proto.dateTimeAfter = function dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n };\n\n _proto.offsetBefore = function offsetBefore() {\n return this._offsetBefore;\n };\n\n _proto.offsetAfter = function offsetAfter() {\n return this._offsetAfter;\n };\n\n _proto.duration = function duration() {\n return Duration.ofSeconds(this.durationSeconds());\n };\n\n _proto.durationSeconds = function durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n };\n\n _proto.isGap = function isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n };\n\n _proto.isOverlap = function isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n };\n\n _proto.isValidOffset = function isValidOffset(offset) {\n return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n };\n\n _proto.validOffsets = function validOffsets() {\n if (this.isGap()) {\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n };\n\n _proto.compareTo = function compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ZoneOffsetTransition) {\n var d = other;\n return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n };\n\n _proto.toString = function toString() {\n return 'Transition[' + (this.isGap() ? 'Gap' : 'Overlap') + ' at ' + this._transition.toString() + this._offsetBefore.toString() + ' to ' + this._offsetAfter + ']';\n };\n\n return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$m() {\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n return temporal.query(TemporalQueries.CHRONO);\n });\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n return temporal.query(TemporalQueries.PRECISION);\n });\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n\n return null;\n });\n TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n var zone = temporal.query(TemporalQueries.ZONE_ID);\n return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n });\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n\n return null;\n });\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n\n return null;\n });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n\n function SystemDefaultZoneRules() {\n return _ZoneRules.apply(this, arguments) || this;\n }\n\n var _proto = SystemDefaultZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n return false;\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n return [this.offsetOfLocalDateTime(localDateTime)];\n };\n\n _proto.transition = function transition() {\n return null;\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n return this.offsetOfInstant(instant);\n };\n\n _proto.daylightSavings = function daylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isDaylightSavings = function isDaylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n };\n\n _proto.nextTransition = function nextTransition() {\n this._throwNotSupported();\n };\n\n _proto.previousTransition = function previousTransition() {\n this._throwNotSupported();\n };\n\n _proto.transitions = function transitions() {\n this._throwNotSupported();\n };\n\n _proto.transitionRules = function transitionRules() {\n this._throwNotSupported();\n };\n\n _proto._throwNotSupported = function _throwNotSupported() {\n throw new DateTimeException('not supported operation');\n };\n\n _proto.equals = function equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.toString = function toString() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n\n function SystemDefaultZoneId() {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._rules = new SystemDefaultZoneRules();\n return _this;\n }\n\n var _proto = SystemDefaultZoneId.prototype;\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n return false;\n };\n\n _proto.id = function id() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n function ZoneIdFactory() {}\n\n ZoneIdFactory.systemDefault = function systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n };\n\n ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n };\n\n ZoneIdFactory.of = function of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n\n if (zoneId.length === 1) {\n throw new DateTimeException('Invalid zone: ' + zoneId);\n }\n\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n var offset = ZoneOffset.of(zoneId.substring(3));\n\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n var _offset = ZoneOffset.of(zoneId.substring(2));\n\n if (_offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', _offset.rules());\n }\n\n return new ZoneRegion('UT' + _offset.id(), _offset.rules());\n }\n\n if (zoneId === 'SYSTEM') {\n return ZoneId.systemDefault();\n }\n\n return ZoneRegion.ofId(zoneId);\n };\n\n ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n\n if (prefix.length === 0) {\n return offset;\n }\n\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n\n throw new IllegalArgumentException('Invalid prefix, must be GMT, UTC or UT: ' + prefix);\n };\n\n ZoneIdFactory.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var obj = temporal.query(TemporalQueries.zone());\n\n if (obj == null) {\n throw new DateTimeException('Unable to obtain ZoneId from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return obj;\n };\n\n return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init$n() {\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\n\nfunction init() {\n if (isInit) {\n return;\n }\n\n isInit = true;\n _init$1();\n _init();\n _init$2();\n _init$3();\n _init$k();\n _init$8();\n _init$m();\n _init$4();\n _init$l();\n _init$i();\n _init$j();\n _init$d();\n _init$5();\n _init$c();\n _init$b();\n _init$6();\n _init$7();\n _init$g();\n _init$n();\n _init$e();\n _init$a();\n _init$9();\n _init$h();\n _init$f();\n}\n\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar ToNativeJsConverter = function () {\n function ToNativeJsConverter(temporal, zone) {\n var zonedDateTime;\n\n if (temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException('unsupported instance for convert operation:' + temporal);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n var _proto = ToNativeJsConverter.prototype;\n\n _proto.toDate = function toDate() {\n return new Date(this.instant.toEpochMilli());\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n return this.instant.toEpochMilli();\n };\n\n return ToNativeJsConverter;\n}();\n\nfunction convert(temporal, zone) {\n return new ToNativeJsConverter(temporal, zone);\n}\n\nvar NativeJsTemporal = function (_TemporalAccessor) {\n _inheritsLoose(NativeJsTemporal, _TemporalAccessor);\n\n function NativeJsTemporal(date, zone) {\n var _this;\n\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n _this = _TemporalAccessor.call(this) || this;\n _this._zone = zone;\n\n if (date instanceof Date) {\n _this._epochMilli = date.getTime();\n return _assertThisInitialized(_this);\n } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n _this._epochMilli = date.toDate().getTime();\n return _assertThisInitialized(_this);\n }\n\n assert(false, 'date must be either a javascript date or a moment');\n return _this;\n }\n\n var _proto = NativeJsTemporal.prototype;\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.localTime()) {\n return LocalTime.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.zone()) {\n return this._zone;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return MathUtil.floorMod(this._epochMilli, 1000) * 1000000;\n\n case ChronoField.INSTANT_SECONDS:\n return MathUtil.floorDiv(this._epochMilli, 1000);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n return field === ChronoField.INSTANT_SECONDS || field === ChronoField.NANO_OF_SECOND;\n };\n\n return NativeJsTemporal;\n}(TemporalAccessor);\n\nfunction nativeJs(date, zone) {\n return new NativeJsTemporal(date, zone);\n}\n\nfunction bindUse(jsJoda) {\n var used = [];\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n\n return jsJoda;\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n assert: assert$1,\n DateTimeBuilder: DateTimeBuilder,\n DateTimeParseContext: DateTimeParseContext,\n DateTimePrintContext: DateTimePrintContext,\n MathUtil: MathUtil,\n StringUtil: StringUtil,\n StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n _: _,\n convert: convert,\n nativeJs: nativeJs,\n ArithmeticException: ArithmeticException,\n DateTimeException: DateTimeException,\n DateTimeParseException: DateTimeParseException,\n IllegalArgumentException: IllegalArgumentException,\n IllegalStateException: IllegalStateException,\n UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n NullPointerException: NullPointerException,\n Clock: Clock,\n DayOfWeek: DayOfWeek,\n Duration: Duration,\n Instant: Instant,\n LocalDate: LocalDate,\n LocalTime: LocalTime,\n LocalDateTime: LocalDateTime,\n OffsetTime: OffsetTime,\n OffsetDateTime: OffsetDateTime,\n Month: Month,\n MonthDay: MonthDay,\n Period: Period,\n Year: Year,\n YearConstants: YearConstants,\n YearMonth: YearMonth,\n ZonedDateTime: ZonedDateTime,\n ZoneOffset: ZoneOffset,\n ZoneId: ZoneId,\n ZoneRegion: ZoneRegion,\n ZoneOffsetTransition: ZoneOffsetTransition,\n ZoneRules: ZoneRules,\n ZoneRulesProvider: ZoneRulesProvider,\n ChronoLocalDate: ChronoLocalDate,\n ChronoLocalDateTime: ChronoLocalDateTime,\n ChronoZonedDateTime: ChronoZonedDateTime,\n IsoChronology: IsoChronology,\n ChronoField: ChronoField,\n ChronoUnit: ChronoUnit,\n IsoFields: IsoFields,\n Temporal: Temporal,\n TemporalAccessor: TemporalAccessor,\n TemporalAdjuster: TemporalAdjuster,\n TemporalAdjusters: TemporalAdjusters,\n TemporalAmount: TemporalAmount,\n TemporalField: TemporalField,\n TemporalQueries: TemporalQueries,\n TemporalQuery: TemporalQuery,\n TemporalUnit: TemporalUnit,\n ValueRange: ValueRange,\n DateTimeFormatter: DateTimeFormatter,\n DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n DecimalStyle: DecimalStyle,\n ResolverStyle: ResolverStyle,\n SignStyle: SignStyle,\n TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package earth.worldwind.tutorials\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"0cf1472588d8984f73d63fea43188617\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val airport_terminal: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/airport_terminal.png\\\")\") as String, fileName = \"airport_terminal.png\")\n\n public actual val aircraft_fighter: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fighter.png\\\")\") as String, fileName = \"aircraft_fighter.png\")\n\n public actual val aircraft_fixwing: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fixwing.png\\\")\") as String, fileName = \"aircraft_fixwing.png\")\n\n public actual val pattern_sample_houndstooth: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/pattern_sample_houndstooth.png\\\")\") as String, fileName =\n \"pattern_sample_houndstooth.png\")\n\n public actual val worldwind_logo: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_logo.png\\\")\") as String, fileName = \"worldwind_logo.png\")\n\n public actual val ehipcc: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/ehipcc.png\\\")\") as String, fileName = \"ehipcc.png\")\n\n public actual override fun values(): List = listOf(airport_terminal,\n aircraft_fighter, aircraft_fixwing, pattern_sample_houndstooth, worldwind_logo, ehipcc)\n }\n}\n","package earth.worldwind.tutorials\n\nabstract class AbstractTutorial {\n\n /**\n * Defines a list of custom actions\n */\n open val actions: ArrayList? = null\n\n /**\n * Runs any of custom actions listed in [actions]\n */\n open fun runAction(actionName: String) {}\n\n /**\n * Runs after switching to this example\n */\n open fun start() {}\n\n /**\n * Runs before switching to another example\n */\n open fun stop() {}\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport kotlinx.datetime.Clock\n\nclass BasicTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n var starFieldLayer: StarFieldLayer? = null\n var atmosphereLayer: AtmosphereLayer? = null\n\n override fun start() {\n super.start()\n engine.layers.run {\n val time = Clock.System.now()\n starFieldLayer = (getLayer(indexOfLayerNamed(\"StarField\")) as StarFieldLayer).apply { this.time = time }\n atmosphereLayer = (getLayer(indexOfLayerNamed(\"Atmosphere\")) as AtmosphereLayer).apply { this.time = time }\n }\n }\n\n override fun stop() {\n super.stop()\n starFieldLayer?.time = null\n atmosphereLayer?.time = null\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\n\nclass CameraViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setCameraAction()\n }\n\n private fun setCameraAction() {\n // Create a view of Point Mugu airport as seen from an aircraft above Oxnard, CA.\n val aircraft = Position.fromDegrees(34.2, -119.2, 3000.0) // Above Oxnard CA, altitude in meters\n val airport = Position.fromDegrees(34.1192744, -119.1195850, 4.0) // KNTD airport, Point Mugu CA, altitude MSL\n\n // Compute heading and tilt angles from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply the camera view\n engine.camera.set(\n aircraft.latitude, aircraft.longitude, aircraft.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.heatmap.ElevationHeatmapLayer\n\nclass ElevationHeatmapTutorial(private val engine: WorldWind) : AbstractTutorial() {\n var elevationHeatmapLayer = ElevationHeatmapLayer();\n\n override fun start() {\n super.start()\n engine.layers.addLayer(elevationHeatmapLayer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(50.4501 , 30.5234 , 0.0), // Kyiv\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 0.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(elevationHeatmapLayer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Ellipse\n\nclass EllipsesTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Ellipses\").apply {\n // Create a surface ellipse with the default attributes, a 500km major-radius and a 300km minor-radius. Surface\n // ellipses are configured with a CLAMP_TO_GROUND altitudeMode and followTerrain set to true.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with custom attributes that make the interior 50% transparent and increase the\n // outline width.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -100.0, 0.0), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with a heading of 45 degrees, causing the semi-major axis to point Northeast and the\n // semi-minor axis to point Southeast.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n heading = 45.0.degrees\n }\n )\n\n // Create a surface circle with the default attributes and 400km radius.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -100.0, 0.0), 400000.0, 400000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create an ellipse with the default attributes, an altitude of 200 km, and a 500km major-radius and a 300km\n // minor-radius.\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -120.0, 200e3), 500000.0, 300000.0)\n )\n\n // Create an ellipse with custom attributes that make the interior 50% transparent and an extruded outline with\n // vertical lines\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -100.0, 200e3), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n isDrawVerticals = true\n }\n isExtrude = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-110.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmInline\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n@JvmInline\nvalue class Angle private constructor(\n /**\n * Size of this angle in degrees.\n */\n val inDegrees: Double\n): Comparable {\n /**\n * Size of this angle in radians. This may be useful for functions, which\n * generally take radians as trigonometric arguments.\n */\n val inRadians get() = toRadians(inDegrees)\n /**\n * Size of this angle in minutes.\n */\n val inMinutes get() = toMinutes(inDegrees)\n /**\n * Size of this angle in seconds.\n */\n val inSeconds get() = toSeconds(inDegrees)\n /**\n * Size of this angle in milliradians.\n */\n val inMrad get() = toMrad(inDegrees)\n /**\n * Size of this angle in mil NATO.\n */\n val inMilNATO get() = toMilNATO(inDegrees)\n /**\n * Size of this angle in mil Warsaw Pact.\n */\n val inMilWP get() = toMilWP(inDegrees)\n /**\n * Size of this angle in Streck.\n */\n val inStreck get() = toStreck(inDegrees)\n /**\n * Size of this angle in minute of angle (MOA).\n */\n val inMOA get() = toMOA(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of latitude, [-90, 90].\n */\n val isValidLatitude get() = isValidLatitude(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of longitude, [-180, 180].\n */\n val isValidLongitude get() = isValidLongitude(inDegrees)\n /**\n * Return North or South notation depends on sign\n */\n val latitudeLetter get() = if (inDegrees < 0.0) \"S\" else \"N\"\n /**\n * Return West or East notation depends on sign\n */\n val longitudeLetter get() = if (inDegrees < 0.0) \"W\" else \"E\"\n /**\n * Relative latitude (from wiki.openstreetmap.org)\n */\n val relativeLatitude get() = (1 - ln(tan(inRadians) + 1 / cos(inRadians)) / PI) / 2\n /**\n * Relative longitude (from wiki.openstreetmap.org)\n */\n val relativeLongitude get() = (inDegrees + 180.0) / 360.0\n\n companion object {\n /** Represents an angle of zero degrees */\n @JvmStatic val ZERO = 0.0.degrees\n /** Represents a right angle of positive 90 degrees */\n @JvmStatic val POS90 = 90.0.degrees\n /** Represents a right angle of negative 90 degrees */\n @JvmStatic val NEG90 = (-90.0).degrees\n /** Represents an angle of positive 180 degrees */\n @JvmStatic val POS180 = 180.0.degrees\n /** Represents an angle of negative 180 degrees */\n @JvmStatic val NEG180 = (-180.0).degrees\n /** Represents an angle of positive 360 degrees */\n @JvmStatic val POS360 = 360.0.degrees\n /** Represents an angle of negative 360 degrees */\n @JvmStatic val NEG360 = (-360.0).degrees\n /** Represents an angle of 1 minute */\n @JvmStatic val MINUTE = (1.0 / 60.0).degrees\n /** Represents an angle of 1 second */\n @JvmStatic val SECOND = (1.0 / 3600.0).degrees\n /**\n * Conversion factor for degrees to radians.\n */\n const val DEGREES_TO_RADIANS = PI / 180.0\n /**\n * Conversion factor for radians to degrees.\n */\n const val RADIANS_TO_DEGREES = 180.0 / PI\n /**\n * Conversion factor for degrees to minutes.\n */\n const val DEGREES_TO_MINUTES = 60.0\n /**\n * Conversion factor for minutes to degrees.\n */\n const val MINUTES_TO_DEGREES = 1.0 / 60.0\n /**\n * Conversion factor for degrees to seconds.\n */\n const val DEGREES_TO_SECONDS = 3600.0\n /**\n * Conversion factor for seconds to degrees.\n */\n const val SECONDS_TO_DEGREES = 1.0 / 3600.0\n /**\n * Conversion factor for degrees to milliradians.\n */\n const val DEGREES_TO_MRAD = PI * 2.0 / 360.0\n /**\n * Conversion factor for milliradians to degrees.\n */\n const val MRAD_TO_DEGREES = 360.0 / PI / 2.0\n /**\n * Conversion factor for degrees to milliradians (NATO).\n */\n const val DEGREES_TO_MIL_NATO = 6400.0 / 360.0\n /**\n * Conversion factor for milliradians (NATO) to degrees.\n */\n const val MIL_NATO_TO_DEGREES = 360.0 / 6400.0\n /**\n * Conversion factor for degrees to milliradians (Warsaw Pact).\n */\n const val DEGREES_TO_MIL_WP = 6000.0 / 360.0\n /**\n * Conversion factor for milliradians (Warsaw Pact) to degrees.\n */\n const val MIL_WP_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to milliradians (Sweden).\n */\n const val DEGREES_TO_STRECK = 6300.0 / 360.0\n /**\n * Conversion factor for milliradians (Sweden) to degrees.\n */\n const val STRECK_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to minute of angle (MOA).\n */\n const val DEGREES_TO_MOA = 21600.0 / 360.0\n /**\n * Conversion factor for minute of angle (MOA) to degrees.\n */\n const val MOA_TO_DEGREES = 360.0 / 21600.0\n\n /**\n * Returns an Angle equal to this Double number in degrees.\n */\n inline val Double.degrees get() = fromDegrees(this)\n\n /**\n * Returns an Angle equal to this Double number in radians.\n */\n inline val Double.radians get() = fromRadians(this)\n\n /**\n * Returns an Angle equal to this Double number in minutes.\n */\n inline val Double.minutes get() = fromMinutes(this)\n\n /**\n * Returns an Angle equal to this Double number in seconds.\n */\n inline val Double.seconds get() = fromSeconds(this)\n\n /**\n * Returns an Angle equal to this Double number in milliradians.\n */\n inline val Double.mrad get() = fromMrad(this)\n\n /**\n * Returns an Angle equal to this Double number in mil NATO.\n */\n inline val Double.milNATO get() = fromMilNATO(this)\n\n /**\n * Returns an Angle equal to this Double number in mil Warsaw Pact.\n */\n inline val Double.milWP get() = fromMilWP(this)\n\n /**\n * Returns an Angle equal to this Double number in Streck.\n */\n inline val Double.streck get() = fromStreck(this)\n\n /**\n * Returns an Angle equal to this Double number in minute of angle (MOA).\n */\n inline val Double.MOA get() = fromMOA(this)\n\n /**\n * Convert radians to degrees\n *\n * @param radians value in radians\n *\n * @return value in degrees\n */\n @JvmStatic fun toDegrees(radians: Double) = radians * RADIANS_TO_DEGREES\n\n /**\n * Convert degrees to radians\n *\n * @param degrees value in degrees\n *\n * @return value in radians\n */\n @JvmStatic fun toRadians(degrees: Double) = degrees * DEGREES_TO_RADIANS\n\n /**\n * Convert degrees to minutes\n *\n * @param degrees value in degrees\n *\n * @return value in minutes\n */\n @JvmStatic fun toMinutes(degrees: Double) = degrees * DEGREES_TO_MINUTES\n\n /**\n * Convert degrees to seconds\n *\n * @param degrees value in degrees\n *\n * @return value in seconds\n */\n @JvmStatic fun toSeconds(degrees: Double) = degrees * DEGREES_TO_SECONDS\n\n /**\n * Convert degrees to milliradians\n *\n * @param degrees value in degrees\n *\n * @return value in milliradians\n */\n @JvmStatic fun toMrad(degrees: Double) = degrees * DEGREES_TO_MRAD\n\n /**\n * Convert degrees to mil NATO\n *\n * @param degrees value in degrees\n *\n * @return value in mil NATO\n */\n @JvmStatic fun toMilNATO(degrees: Double) = degrees * DEGREES_TO_MIL_NATO\n\n /**\n * Convert degrees to mil Warsaw Pact\n *\n * @param degrees value in degrees\n *\n * @return value in mil Warsaw Pact\n */\n @JvmStatic fun toMilWP(degrees: Double) = degrees * DEGREES_TO_MIL_WP\n\n /**\n * Convert degrees to Streck\n *\n * @param degrees value in degrees\n *\n * @return value in mil Streck\n */\n @JvmStatic fun toStreck(degrees: Double) = degrees * DEGREES_TO_STRECK\n\n /**\n * Convert degrees to minute of angle (MOA)\n *\n * @param degrees value in degrees\n *\n * @return value in minute of angle (MOA)\n */\n @JvmStatic fun toMOA(degrees: Double) = degrees * DEGREES_TO_MOA\n\n /**\n * Obtains an angle from a specified number of degrees.\n *\n * @param degrees the size in degrees of the angle to be obtained\n *\n * @return a new angle, whose size in degrees is given by [degrees]\n */\n @JvmStatic fun fromDegrees(degrees: Double) = Angle(degrees)\n\n /**\n * Obtains an angle from a specified number of radians.\n *\n * @param radians the size in radians of the angle to be obtained.\n *\n * @return a new angle, whose size in radians is given by [radians].\n */\n @JvmStatic fun fromRadians(radians: Double) = Angle(radians * RADIANS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minutes.\n *\n * @param minutes the size in minutes of the angle to be obtained.\n *\n * @return a new angle, whose size in minutes is given by [minutes].\n */\n @JvmStatic fun fromMinutes(minutes: Double) = Angle(minutes * MINUTES_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of seconds.\n *\n * @param seconds the size in seconds of the angle to be obtained.\n *\n * @return a new angle, whose size in seconds is given by [seconds].\n */\n @JvmStatic fun fromSeconds(seconds: Double) = Angle(seconds * SECONDS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of milliradians.\n *\n * @param mrad the size in milliradians of the angle to be obtained.\n *\n * @return a new angle, whose size in milliradians is given by [mrad].\n */\n @JvmStatic fun fromMrad(mrad: Double) = Angle(mrad * MRAD_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil NATO.\n *\n * @param milNATO the size in mil NATO of the angle to be obtained.\n *\n * @return a new angle, whose size in mil NATO is given by [milNATO].\n */\n @JvmStatic fun fromMilNATO(milNATO: Double) = Angle(milNATO * MIL_NATO_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil Warsaw Pact.\n *\n * @param milWP the size in mil WP of the angle to be obtained.\n *\n * @return a new angle, whose size in mil WP is given by [milWP].\n */\n @JvmStatic fun fromMilWP(milWP: Double) = Angle(milWP * MIL_WP_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of Streck.\n *\n * @param streck the size in Streck of the angle to be obtained.\n *\n * @return a new angle, whose size in Streck is given by [streck].\n */\n @JvmStatic fun fromStreck(streck: Double) = Angle(streck * STRECK_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minute of angle (MOA).\n *\n * @param moa the size in MOA of the angle to be obtained.\n *\n * @return a new angle, whose size in MOA is given by [moa].\n */\n @JvmStatic fun fromMOA(moa: Double) = Angle(moa * MOA_TO_DEGREES)\n\n /**\n * Obtains an angle from rectangular coordinates.\n *\n * @param x the abscissa coordinate.\n * @param y the ordinate coordinate.\n *\n * @return a new angle, whose size is determined from `x` and `y`.\n */\n @JvmStatic fun fromXY(x: Double, y: Double) = atan2(y, x).radians\n\n /**\n * Obtain an angle from a given number of positive degrees, minutes and seconds.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes integer number of minutes, positive only between 0 and 60.\n * @param seconds integer number of seconds, positive only between 0 and 60.\n *\n * @return a new angle whose size in degrees is given by `degrees`, `minutes` and `seconds`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDMS(degrees: Int, minutes: Int, seconds: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidDegrees\")\n }\n require(minutes in 0 until 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidMinutes\")\n }\n require(seconds >= 0 && seconds < 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidSeconds\")\n }\n return fromDegrees(degrees + minutes / 60.0 + seconds / 3600.0)\n }\n\n /**\n * Obtain an angle from a given number of positive degrees and decimal minutes.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes double representing the decimal representation of minutes and seconds.\n *\n * @return a new angle whose size in degrees is given by `degrees` and decimal `minutes`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDM(degrees: Int, minutes: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidDegrees\")\n }\n require(minutes >= 0 && minutes < 60) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidMinutes\")\n }\n return fromDegrees(degrees + minutes / 60.0)\n }\n\n /**\n * Obtain an angle from a degrees, minute and seconds character string.\n *\n * eg:
\n         * 123 34 42\n         * -123* 34' 42\" (where * stands for the degree symbol)\n         * +45* 12' 30\" (where * stands for the degree symbol)\n         * 45 12 30 S\n         * 45 12 30 N\n         * 
\n * For a string containing both a sign and compass direction, the compass direction will take precedence.\n *\n * @param dmsString the degrees, minute and second character string.\n *\n * @return the corresponding angle.\n *\n * @throws IllegalArgumentException if dmsString is not properly formatted.\n */\n @JvmStatic\n fun fromDMS(dmsString: String): Angle {\n var dms = dmsString\n // Check for string format validity\n val regex = Regex(\"([-+]?\\\\d{1,3}[dD°\\\\s](\\\\s*\\\\d{1,2}['’\\\\s])?(\\\\s*\\\\d{1,2}[\\\"”\\\\s])?\\\\s*([NnSsEeWw])?\\\\s?)\")\n require(regex.matches(\"$dms \")) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidFormat\")\n }\n // Replace degree, min and sec signs with space\n dms = dms.replace(\"[Dd°'’\\\"”]\".toRegex(), \" \")\n // Replace multiple spaces with single ones\n dms = dms.replace(\"\\\\s+\".toRegex(), \" \")\n dms = dms.trim { it <= ' ' }\n\n // Check for sign prefix and suffix\n var sign = 1\n val suffix = dms.uppercase()[dms.length - 1]\n val prefix = dms[0]\n if (!suffix.isDigit()) {\n sign = if (suffix == 'S' || suffix == 'W') -1 else 1\n dms = dms.substring(0, dms.length - 1)\n dms = dms.trim { it <= ' ' }\n\n // check and trim the prefix if it is erroneously included\n if (!prefix.isDigit()) {\n dms = dms.substring(1, dms.length)\n dms = dms.trim { it <= ' ' }\n }\n } else if (!prefix.isDigit()) {\n sign *= if (prefix == '-') -1 else 1\n dms = dms.substring(1, dms.length)\n }\n\n // Extract degrees, minutes and seconds\n val dmsArray = dms.split(\" \")\n val d = dmsArray[0].toInt()\n val m = if (dmsArray.size > 1) dmsArray[1].toInt() else 0\n val s = if (dmsArray.size > 2) dmsArray[2].toDouble() else 0.0\n return fromDMS(d, m, s) * sign.toDouble()\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than -180 wrap back to +180, while angles greater than\n * +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeAngle180(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle > 180) angle - 360 else if (angle < -180) 360 + angle else angle\n }\n\n /**\n * Restricts an angle to the range [0, 360] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than 0 wrap back to 360, while angles greater than 360\n * wrap back to 0.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [0, 360] degrees\n */\n @JvmStatic\n fun normalizeAngle360(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle >= 0) angle else 360 + angle\n }\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, wrapping angles outside the range. Wrapping takes place along\n * a line of constant longitude which may pass through the poles. In which case, 135 degrees normalizes to 45\n * degrees; 181 degrees normalizes to -1 degree.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun normalizeLatitude(degrees: Double): Double {\n val lat = degrees % 180\n val normalizedLat = if (lat > 90) 180 - lat else if (lat < -90) -180 - lat else lat\n // Determine whether the latitude is in the north or south hemisphere\n val numEquatorCrosses = (degrees / 180).toInt()\n return if (numEquatorCrosses % 2 == 0) normalizedLat else -normalizedLat\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing a line of constant latitude which may pass through the antimeridian; angles less than -180 wrap\n * back to +180, while angles greater than +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeLongitude(degrees: Double): Double {\n val lon = degrees % 360\n return if (lon > 180) lon - 360 else if (lon < -180) 360 + lon else lon\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as -180, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampAngle180(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Restricts an angle to the range [0, 360] degrees, clamping angles outside the range. Angles less than 0 are\n * returned as 0, and angles greater than 360 are returned as 360. Angles within the range are returned unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [0, 360] degrees\n */\n @JvmStatic\n fun clampAngle360(degrees: Double) = degrees.coerceIn(0.0, 360.0)\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, clamping angles outside the range. Angles less than -90 are\n * returned as -90, and angles greater than +90 are returned as +90. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun clampLatitude(degrees: Double) = degrees.coerceIn(-90.0, 90.0)\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as 0, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampLongitude(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Computes the linear interpolation of two angles in the range [-180, +180] degrees according to a specified\n * fractional amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0\n * indicates the first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second\n * angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle in degrees\n * @param angle2 the second angle in degrees\n *\n * @return the interpolated angle in the range [-180, +180] degrees\n */\n @JvmStatic\n fun interpolateAngle180(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle180(angle).degrees\n }\n\n /**\n * Computes the linear interpolation of two angles in the range [0, 360] degrees according to a specified fractional\n * amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0 indicates the\n * first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle\n * @param angle2 the second angle\n *\n * @return the interpolated angle in the range [0, 360] degrees\n */\n @JvmStatic\n fun interpolateAngle360(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle360(angle).degrees\n }\n\n /**\n * Obtains the average of two angles. This method is commutative, so `midAngle(m, n)` and\n * `midAngle(n, m)` are equivalent.\n *\n * @param a1 the first angle.\n * @param a2 the second angle.\n *\n * @return the average of `a1` and `a2`\n */\n @JvmStatic\n fun average(a1: Angle, a2: Angle) = fromDegrees(0.5 * (a1.inDegrees + a2.inDegrees))\n\n @JvmStatic\n fun max(a: Angle, b: Angle) = if (a.inDegrees >= b.inDegrees) a else b\n\n @JvmStatic\n fun min(a: Angle, b: Angle) = if (a.inDegrees <= b.inDegrees) a else b\n\n /**\n * Indicates whether a specified value is within the normal range of latitude, [-90, 90].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of latitude, otherwise false.\n */\n @JvmStatic\n fun isValidLatitude(degrees: Double) = degrees >= -90 && degrees <= 90\n\n /**\n * Indicates whether a specified value is within the normal range of longitude, [-180, 180].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of longitude, otherwise false.\n */\n @JvmStatic\n fun isValidLongitude(degrees: Double) = degrees >= -180 && degrees <= 180\n }\n\n init {\n // NaN value is not suppoted due to unpredictable `compareTo(NaN)` behavior\n require(!inDegrees.isNaN()) {\n logMessage(ERROR, \"Angle\", \"init\", \"NaN is not supported!\")\n }\n }\n\n /**\n * Obtains the sum of these two angles.\n * This method is commutative, so `a.add(b)` and `b.add(a)` are equivalent.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to add to this one.\n *\n * @return an angle whose size is the total of these angles and angles size.\n */\n operator fun plus(angle: Angle) = fromDegrees(inDegrees + angle.inDegrees)\n fun plusDegrees(degrees: Double) = fromDegrees(this.inDegrees + degrees)\n fun plusRadians(radians: Double) = fromRadians(this.inRadians + radians)\n\n /**\n * Obtains the difference of these two angles. This method is not commutative.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to subtract from this angle.\n *\n * @return a new angle corresponding to this angle's size minus angle's size.\n */\n operator fun minus(angle: Angle) = fromDegrees(inDegrees - angle.inDegrees)\n fun minusDegrees(degrees: Double) = fromDegrees(this.inDegrees - degrees)\n fun minusRadians(radians: Double) = fromRadians(this.inRadians - radians)\n\n /**\n * Multiplies this angle by another angle.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to multiply.\n *\n * @return a new angle whose size equals this angle's size multiplied by angle's size.\n */\n operator fun times(angle: Angle) = this * angle.inDegrees\n\n /**\n * Multiplies this angle by `multiplier`.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param multiplier a scalar by which this angle is multiplied.\n *\n * @return a new angle whose size equals this angle's size multiplied by `multiplier`.\n */\n operator fun times(multiplier: Number) = fromDegrees(inDegrees * multiplier.toDouble())\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to divide.\n *\n * @return this angle's degrees divided by angle's degrees.\n */\n operator fun div(angle: Angle) = this / angle.inDegrees\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param divisor a scalar by which to divide.\n *\n * @return this angle's degrees divided by divisor.\n */\n operator fun div(divisor: Number): Angle {\n require(divisor != 0.0) {\n logMessage(ERROR, \"Angle\", \"div\", \"divideByZero\")\n }\n return fromDegrees(inDegrees / divisor.toDouble())\n }\n\n /**\n * Returns new angle with opposite sign.\n */\n operator fun unaryMinus() = Angle(-inDegrees)\n\n /**\n * Computes the shortest distance between this and angle, as an angle.\n *\n * @param angle the angle to measure angular distance to.\n *\n * @return the angular distance between this and `value`.\n */\n fun distanceTo(angle: Angle): Angle {\n var distance = angle.inDegrees - inDegrees\n if (distance < -180) distance += 360.0 else if (distance > 180) distance -= 360.0\n return abs(distance).degrees\n }\n\n fun normalize180() = if (inDegrees in -180.0..180.0) this else normalizeAngle180(inDegrees).degrees\n\n fun normalize360() = if (inDegrees in 0.0..360.0) this else normalizeAngle360(inDegrees).degrees\n\n fun normalizeLatitude() = if (inDegrees in -90.0..90.0) this else normalizeLatitude(inDegrees).degrees\n\n fun normalizeLongitude() = if (inDegrees in -180.0..180.0) this else normalizeLongitude(inDegrees).degrees\n\n fun clampAngle180() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun clampAngle360() = inDegrees.coerceIn(0.0, 360.0).degrees\n\n fun clampLatitude() = inDegrees.coerceIn(-90.0, 90.0).degrees\n\n fun clampLongitude() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun toDMS(): DoubleArray {\n var angle = inDegrees\n val sign = sign(angle)\n angle *= sign\n var d = floor(angle)\n angle = (angle - d) * 60.0\n var m = floor(angle)\n angle = (angle - m) * 60.0\n var s = round(angle * 100) / 100 // keep two decimals for seconds\n if (s == 60.0) {\n m++\n s = 0.0\n }\n if (m == 60.0) {\n d++\n m = 0.0\n }\n return doubleArrayOf(sign, d, m, s)\n }\n\n /**\n * Forms a decimal degrees [String] representation of this [Angle].\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in decimal degrees as a string with the specified number of digits beyond the\n * decimal point. The string is padded with trailing zeros to fill the number of post-decimal point\n * positions requested.\n */\n fun toDDString(digits: Int = 6): String {\n require(digits in 0..15) {\n logMessage(ERROR, \"Angle\", \"toDecimalDegreesString\", \"outOfRange\")\n }\n return \"%.${digits}f°\".format(inDegrees)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees and decimal minutes.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees and decimal minutes as a string.\n */\n fun toDMString(digits: Int = 3): String {\n val dms = toDMS()\n val mf = if (dms[3] == 0.0) dms[2] else dms[2] + dms[3] / 60.0\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2.${digits}f’\".format(dms[1], mf)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees, minutes and seconds.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees, minutes and seconds as a string.\n */\n fun toDMSString(digits: Int = 1): String {\n val dms = toDMS()\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2d’ %2.${digits}f”\".format(dms[1], dms[2], dms[3])\n }\n\n /**\n * Compares this [Angle] with another. Returns a negative integer if this is the smaller angle, a positive\n * integer if this is the larger, and zero if both angles are equal.\n *\n * @param other the angle to compare against.\n *\n * @return -1 if this angle is smaller, 0 if both are equal and +1 if this angle is larger.\n */\n override operator fun compareTo(other: Angle) = inDegrees.compareTo(other.inDegrees)\n\n override fun toString() = \"$inDegrees°\"\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer\n\nclass GKGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n private val layer = GKGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.OrientationMode\n\nclass LabelsTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Labels\").apply {\n // Create a basic label with the default attributes, including the default text color (white), the default text\n // size (24 pixels), the system default font, and the default alignment (bottom center).\n addRenderable(\n Label(Position.fromDegrees(38.8977, -77.0365, 0.0), \"The White House\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create a label with a black text color, the default text size, the system default font, the default\n // alignment, and a thick white text outline.\n addRenderable(\n Label(Position.fromDegrees(38.881389, -77.036944, 0.0), \"Thomas Jefferson Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply {\n textColor = Color(0f, 0f, 0f, 1f) // black text via r,g,b,a\n outlineColor = Color(1f, 1f, 1f, 1f) // white outline via r,g,b,a\n outlineWidth = 5f // thicken the white outline\n }\n }\n )\n\n // Create a right-aligned label using a bottom-right offset.\n addRenderable(\n Label(Position.fromDegrees(38.8893, -77.050111, 0.0), \"Lincoln Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomRight() }\n }\n )\n\n // Create a left-aligned label using a bottom-left offset.\n addRenderable(\n Label(Position.fromDegrees(38.889803, -77.009114, 0.0), \"United States Capitol\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomLeft() }\n }\n )\n\n // Create a label with a 48 pixel text size and a bold font.\n addRenderable(\n Label(Position.fromDegrees(38.907192, -77.036871, 0.0), \"Washington\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { font = Font(\"arial\", FontWeight.BOLD, 28) }\n }\n )\n\n // Create a label with its orientation fixed relative to the globe.\n addRenderable(\n Label(Position.fromDegrees(38.89, -77.023611, 0.0), \"National Mall\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n rotationMode = OrientationMode.RELATIVE_TO_GLOBE\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 38.89.degrees, (-77.023611).degrees, 10e3,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass LookAtViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setLookAtAction()\n }\n\n private fun setLookAtAction() {\n // Create a view of LAX airport as seen from an aircraft above Santa Monica, CA.\n val aircraft = Position.fromDegrees(34.0158333, -118.4513056, 2500.0)\n // Aircraft above Santa Monica airport, altitude in meters\n val airport = Position.fromDegrees(33.9424368, -118.4081222, 38.7)\n\n // Compute heading and distance from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n\n // Compute camera settings\n val altitude = aircraft.altitude - airport.altitude\n val range = sqrt(altitude * altitude + distanceMeters * distanceMeters)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply new \"look at\" view\n engine.cameraFromLookAt(LookAt(airport, AltitudeMode.ABSOLUTE, range, heading, tilt, roll = Angle.ZERO))\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer\n\nclass MGRSGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = MGRSGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Path\n\nclass PathsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Paths\").apply {\n // Create a basic path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(50.0, -180.0, 1e5),\n Position.fromDegrees(30.0, -100.0, 1e6),\n Position.fromDegrees(50.0, -40.0, 1e5)\n )\n )\n )\n\n // Create a terrain following path with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(40.0, -180.0, 0.0),\n Position.fromDegrees(20.0, -100.0, 0.0),\n Position.fromDegrees(40.0, -40.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the path vertices to the ground\n isFollowTerrain = true // follow the ground between path vertices\n }\n )\n\n // Create an extruded path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(30.0, -180.0, 1e5),\n Position.fromDegrees(10.0, -100.0, 1e6),\n Position.fromDegrees(30.0, -40.0, 1e5)\n )\n ).apply {\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n\n // Create an extruded path with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the path line with.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(20.0, -180.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e6),\n Position.fromDegrees(20.0, -40.0, 1e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-100.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Placemark\nimport earth.worldwind.shape.PlacemarkAttributes\n\nclass PlacemarksTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Placemarks\").apply {\n // Create a simple placemark at downtown Ventura, CA. This placemark is a 20x20 cyan square centered on the\n // geographic position. This placemark demonstrates the creation with a convenient factory method.\n addRenderable(\n Placemark.createWithColorAndSize(\n Position.fromDegrees(34.281, -119.293, 0.0), Color(0f, 1f, 1f, 1f), 20\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create an image-based placemark of an aircraft above the ground with a leader-line to the surface.\n // This placemark demonstrates creation via a constructor and a convenient PlacemarkAttributes factory method.\n // The image is scaled to 1.5 times its original size.\n addRenderable(\n Placemark(Position.fromDegrees(34.260, -119.2, 5000.0)).apply {\n attributes = PlacemarkAttributes.createWithImageAndLeader(ImageSource.fromResource(MR.images.aircraft_fixwing)).apply {\n imageScale = 1.5\n }\n }\n )\n\n // Create an image-based placemark with a label at Oxnard Airport, CA. This placemark demonstrates creation\n // with a constructor and a convenient PlacemarkAttributes factory method. The image is scaled to 2x\n // its original size, with the bottom center of the image anchored at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.200, -119.208, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.airport_terminal)).apply {\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n }\n displayName = \"Oxnard Airport\"\n }\n )\n\n // Create an image-based placemark from a bitmap. This placemark demonstrates creation with a\n // constructor and a convenient PlacemarkAttributes factory method. First, a 64x64 bitmap is loaded,\n // and then it is passed into the placemark attributes. The bottom center of the image anchored\n // at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.300, -119.25, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.ehipcc)).apply {\n imageOffset = Offset.bottomCenter()\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(34.200, -119.208, 0.0),\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 80.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Polygon\n\nclass PolygonsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Polygons\").apply {\n // Create a basic polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -135.0, 5.0e5),\n Position.fromDegrees(45.0, -140.0, 7.0e5),\n Position.fromDegrees(50.0, -130.0, 9.0e5),\n Position.fromDegrees(45.0, -120.0, 7.0e5),\n Position.fromDegrees(40.0, -125.0, 5.0e5)\n )\n )\n )\n\n // Create a terrain following polygon with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -105.0, 0.0),\n Position.fromDegrees(45.0, -110.0, 0.0),\n Position.fromDegrees(50.0, -100.0, 0.0),\n Position.fromDegrees(45.0, -90.0, 0.0),\n Position.fromDegrees(40.0, -95.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the polygon vertices to the ground\n isFollowTerrain = true // follow the ground between polygon vertices\n }\n )\n\n // Create an extruded polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -135.0, 5.0e5),\n Position.fromDegrees(25.0, -140.0, 7.0e5),\n Position.fromDegrees(30.0, -130.0, 9.0e5),\n Position.fromDegrees(25.0, -120.0, 7.0e5),\n Position.fromDegrees(20.0, -125.0, 5.0e5)\n )\n ).apply {\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create an extruded polygon with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -105.0, 5.0e5),\n Position.fromDegrees(25.0, -110.0, 7.0e5),\n Position.fromDegrees(30.0, -100.0, 9.0e5),\n Position.fromDegrees(25.0, -90.0, 7.0e5),\n Position.fromDegrees(20.0, -95.0, 5.0e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create a polygon with an inner hole by specifying multiple polygon boundaries\n addRenderable(\n Polygon().apply {\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -135.0, 5.0e5),\n Position.fromDegrees(5.0, -140.0, 7.0e5),\n Position.fromDegrees(10.0, -130.0, 9.0e5),\n Position.fromDegrees(5.0, -120.0, 7.0e5),\n Position.fromDegrees(0.0, -125.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -130.0, 6.0e5),\n Position.fromDegrees(5.0, -135.0, 7.0e5),\n Position.fromDegrees(7.5, -130.0, 8.0e5),\n Position.fromDegrees(5.0, -125.0, 7.0e5)\n )\n )\n }\n )\n\n // Create an extruded polygon with an inner hole and custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon().apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -105.0, 5.0e5),\n Position.fromDegrees(5.0, -110.0, 7.0e5),\n Position.fromDegrees(10.0, -100.0, 9.0e5),\n Position.fromDegrees(5.0, -90.0, 7.0e5),\n Position.fromDegrees(0.0, -95.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -100.0, 6.0e5),\n Position.fromDegrees(5.0, -105.0, 7.0e5),\n Position.fromDegrees(7.5, -100.0, 8.0e5),\n Position.fromDegrees(5.0, -95.0, 7.0e5)\n )\n )\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-115.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Ellipse\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.Polygon\nimport earth.worldwind.shape.ShapeAttributes\n\nclass ShapesDashAndFillTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Dash and fill\").apply {\n // Thicken all lines used in the tutorial.\n val thickenLine = ShapeAttributes().apply { outlineWidth = 4f }\n\n // Create a path with a simple dashed pattern generated from the ImageSource factory. The\n // ImageSource.fromLineStipple function generates a texture based on the provided factor and pattern, similar to\n // stipple parameters of OpenGL 2. The binary representation of the pattern value will be the pattern displayed,\n // where positions with a 1 appearing as opaque and a 0 as transparent.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -100.0, 1e5),\n Position.fromDegrees(30.0, -120.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e5)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 2, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Modify the factor of the pattern for comparison to first path. Only the factor is modified, not the pattern.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -90.0, 5e4),\n Position.fromDegrees(30.0, -110.0, 5e4),\n Position.fromDegrees(0.0, -90.0, 5e4)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 4, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Create a path conforming to the terrain with a different pattern from the first two Paths.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -80.0, 0.0),\n Position.fromDegrees(30.0, -100.0, 0.0),\n Position.fromDegrees(0.0, -80.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 8, pattern = 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n\n // Create an Ellipse using an image as a repeating fill pattern\n addRenderable(\n Ellipse(Position.fromDegrees(40.0, -70.0, 1e5), 1.5e6, 800e3).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n }\n }\n )\n\n // Create a surface polygon using an image as a repeating fill pattern and a dash pattern for the outline\n // of the polygon.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(25.0, -85.0, 0.0),\n Position.fromDegrees(10.0, -80.0, 0.0),\n Position.fromDegrees(10.0, -60.0, 0.0),\n Position.fromDegrees(25.0, -55.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n outlineImageSource = ImageSource.fromLineStipple(8, 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-85.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.ShowTessellationLayer\n\nclass ShowTessellationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = ShowTessellationLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.OmnidirectionalSightline\nimport earth.worldwind.shape.Placemark\n\nclass SightlineTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Sightline\").apply {\n // Specify the sightline position, which is the origin of the line of sight calculation\n val position = Position.fromDegrees(46.230, -122.190, 2500.0)\n // Create the sightline, specifying the range of the sightline (meters)\n addRenderable(\n OmnidirectionalSightline(position, 10000.0).apply {\n // Create attributes for the visible terrain\n attributes.apply { interiorColor = Color(0f, 1f, 0f, 0.5f) }\n // Create attributes for the occluded terrain\n occludeAttributes.apply { interiorColor = Color(0.1f, 0.1f, 0.1f, 0.8f) }\n }\n )\n // Create a Placemark to visualize the position of the sightline\n addRenderable(\n Placemark(position).apply {\n attributes.apply {\n imageSource = earth.worldwind.render.image.ImageSource.fromResource(MR.images.aircraft_fixwing)\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n isDrawLeader = true\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position(46.230.degrees, (-122.190).degrees, 500.0), altitudeMode = AltitudeMode.ABSOLUTE,\n range = 1.5e4, heading = 45.0.degrees, tilt = 70.0.degrees, roll = 0.0.degrees\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\n\nclass SurfaceImageTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Surface image\").apply {\n // Configure a Surface Image to display an Android resource showing the WorldWindEarth logo.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46, 15.5, 0.5, 0.6),\n ImageSource.fromResource(MR.images.worldwind_logo)\n )\n )\n\n // Configure a Surface Image to display a remote image showing Mount Etna erupting on July 13th, 2001.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46543388598137, 14.60128369746704, 0.45360804083528, 0.75704283995502),\n ImageSource.fromUrlString(\"https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg\")\n )\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 37.46543388598137.degrees, 14.97980511744455.degrees, 4.0e5,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.Wcs100ElevationCoverage\nimport kotlin.math.atan\n\nclass WcsElevationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create an elevation coverage from a version 1.0.0 WCS\n private val wcsElevationCoverage = Wcs100ElevationCoverage(\n // Specify the version 1.0.0 WCS address\n serviceAddress = \"https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer\",\n // Specify the coverage name\n coverageName = \"DEP3Elevation\",\n // Specify the output format\n outputFormat = \"geotiff\",\n // Specify the bounding sector - provided by the WCS\n sector = Sector.fromDegrees(25.0, -125.0, 25.0, 60.0),\n // Specify the data resolution of 10m (1/3 arc-second)\n resolution = Angle.fromSeconds(1.0 / 3.0)\n )\n\n override fun start() {\n super.start()\n engine.globe.elevationModel.apply {\n forEach { coverage -> coverage.isEnabled = false }\n addCoverage(wcsElevationCoverage)\n }\n positionView()\n }\n\n override fun stop() {\n super.stop()\n engine.globe.elevationModel.apply {\n removeCoverage(wcsElevationCoverage)\n forEach { coverage -> coverage.isEnabled = true }\n }\n }\n\n private fun positionView() {\n val mtRainier = Position.fromDegrees(46.852886, -121.760374, 4392.0)\n val eye = Position.fromDegrees(46.912, -121.527, 2000.0)\n\n // Compute heading and distance from peak to eye\n val heading = eye.greatCircleAzimuth(mtRainier)\n val distanceRadians = mtRainier.greatCircleDistance(eye)\n val distance = distanceRadians * engine.globe.getRadiusAt(mtRainier.latitude, mtRainier.longitude)\n\n // Compute camera settings\n val tilt = atan(distance / eye.altitude).radians\n\n // Apply the new view\n engine.camera.set(\n eye.latitude, eye.longitude, eye.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Service (WMS) layer to display the\n // surface temperature layer from NASA's Near Earth Observations WMS.\n WmsLayerFactory.createLayer(\"https://neo.gsfc.nasa.gov/wms/wms\", listOf(\"MOD_LSTD_CLIM_M\")).also {\n if (isActive) {\n wmsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmsLayer?.let { engine.layers.removeLayer(it) }.also { wmsLayer = null }\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmtsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmtsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Tile Service (WMTS) layer to display Global Hillshade based on GMTED2010\n WmtsLayerFactory.createLayer(\"https://tiles.geoservice.dlr.de/service/wmts\", \"hillshade\").also {\n if (isActive) {\n wmtsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMTS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMTS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmtsLayer?.let { engine.layers.removeLayer(it) }.also { wmtsLayer = null }\n }\n\n}","@file:JsExport\n@file:Suppress(\"OPT_IN_USAGE\", \"NON_EXPORTABLE_TYPE\")\n\npackage earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.gesture.SelectDragCallback\nimport earth.worldwind.globe.elevation.coverage.BasicElevationCoverage\nimport earth.worldwind.globe.projection.MercatorProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport earth.worldwind.layer.BackgroundLayer\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.mercator.WebMercatorLayerFactory\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Movable\nimport kotlinx.browser.document\nimport kotlinx.browser.window\nimport org.w3c.dom.*\n\nfun main() {\n // Register an event listener to be called when the page is loaded.\n window.onload = {\n // Create a WorldWindow for the canvas.\n val wwd = WorldWindow(document.getElementById(\"WorldWindow\") as HTMLCanvasElement)\n val tutorialSelect = document.getElementById(\"Tutorials\") as HTMLSelectElement\n val projectionSelect = document.getElementById(\"Projections\") as HTMLSelectElement\n val actionsContainer = document.getElementById(\"Actions\") as HTMLDivElement\n val tutorials = mapOf (\n \"Basic globe\" to BasicTutorial(wwd.engine),\n \"Set camera view\" to CameraViewTutorial(wwd.engine),\n \"Set \\\"look at\\\" view\" to LookAtViewTutorial(wwd.engine),\n \"Placemarks\" to PlacemarksTutorial(wwd.engine),\n \"Paths\" to PathsTutorial(wwd.engine),\n \"Polygons\" to PolygonsTutorial(wwd.engine),\n \"Ellipses\" to EllipsesTutorial(wwd.engine),\n \"Dash and fill\" to ShapesDashAndFillTutorial(wwd.engine),\n \"Labels\" to LabelsTutorial(wwd.engine),\n \"Sight line\" to SightlineTutorial(wwd.engine),\n \"Surface image\" to SurfaceImageTutorial(wwd.engine),\n \"Show tessellation\" to ShowTessellationTutorial(wwd.engine),\n \"MGRS Graticule\" to MGRSGraticuleTutorial(wwd.engine),\n \"Gauss-Kruger Graticule\" to GKGraticuleTutorial(wwd.engine),\n \"WMS Layer\" to WmsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WMTS Layer\" to WmtsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WCS Elevation\" to WcsElevationTutorial(wwd.engine),\n \"Elevation Heatmap\" to ElevationHeatmapTutorial(wwd.engine),\n )\n val projections = mapOf (\n \"WGS84 Projection\" to Wgs84Projection(),\n \"Mercator Projection\" to MercatorProjection()\n )\n var currentTutorial: String? = null\n\n // Add some image layers to the WorldWindow's globe.\n wwd.engine.layers.apply {\n addLayer(BackgroundLayer())\n addLayer(WebMercatorLayerFactory.createLayer(\n urlTemplate = \"https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}\",\n imageFormat = \"image/jpeg\",\n name = \"Google Satellite\"\n ))\n addLayer(StarFieldLayer())\n addLayer(AtmosphereLayer())\n }\n\n // Add elevation coverage source\n wwd.engine.globe.elevationModel.addCoverage(BasicElevationCoverage())\n\n // Allow pick and move any movable object\n wwd.selectDragDetector.callback = object : SelectDragCallback {\n override fun canPickRenderable(renderable: Renderable) = renderable is Movable\n override fun canMoveRenderable(renderable: Renderable) = renderable is Movable\n }\n\n fun callAction(actionName: String) { currentTutorial?.let { tutorials[it]?.runAction(actionName) } }\n\n fun createAction(actionName: String) {\n (document.createElement(\"button\") as HTMLButtonElement).apply {\n innerHTML = actionName\n actionsContainer.append(this)\n onclick = { callAction(actionName) }\n }\n }\n\n fun selectTutorial(tutorial: String) {\n currentTutorial?.let { tutorials[it]?.stop() }\n currentTutorial = tutorial\n tutorials[tutorial]?.run {\n start()\n //TODO actions\n actionsContainer.innerHTML = \"\"\n actions?.forEach { action -> createAction(action) }\n actionsContainer.hidden = actions?.isEmpty() != false\n }\n wwd.requestRedraw()\n }\n\n fun selectProjection(projectionName: String) {\n wwd.engine.globe.projection = projections[projectionName]!!\n wwd.requestRedraw()\n }\n\n tutorials.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n tutorialSelect.append(this)\n }\n }\n projections.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n projectionSelect.append(this)\n }\n }\n tutorialSelect.onchange = { event -> selectTutorial((event.target as HTMLSelectElement).value) }\n projectionSelect.onchange = { event -> selectProjection((event.target as HTMLSelectElement).value)}\n selectTutorial(tutorials.keys.first())\n selectProjection(projections.keys.first())\n }\n}",null,"package earth.worldwind\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"9b24c64f544c9d9ebb21130e2d2e72f5\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val sun_texture: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/sun_texture.png\\\")\") as String, fileName = \"sun_texture.png\")\n\n public actual val dnb_land_ocean_ice_2012: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/dnb_land_ocean_ice_2012.png\\\")\") as String, fileName =\n \"dnb_land_ocean_ice_2012.png\")\n\n public actual val worldwind_worldtopobathy2004053: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_worldtopobathy2004053.png\\\")\") as String, fileName =\n \"worldwind_worldtopobathy2004053.png\")\n\n public actual override fun values(): List = listOf(sun_texture,\n dnb_land_ocean_ice_2012, worldwind_worldtopobathy2004053)\n }\n\n public actual object files : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val stars_json: FileResource = FileResource(fileUrl =\n js(\"require(\\\"files/stars.json\\\")\") as String)\n\n public actual override fun values(): List = listOf(stars_json)\n }\n}\n","package earth.worldwind\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.min\nimport kotlin.math.roundToInt\n\n/**\n * Incrementally and smoothly moves the Camera to a specified position.\n */\nopen class GoToAnimator(\n /**\n * The [WorldWind] engine associated with this animator.\n */\n protected val engine: WorldWind\n) {\n /**\n * The frequency in milliseconds at which to animate the position change.\n */\n var animationFrequency = 20L\n /**\n * The animation's duration, in milliseconds. When the distance is short, less than twice the viewport\n * size, the travel time is reduced proportionally to the distance to travel. It therefore takes less\n * time to move shorter distances.\n */\n var travelTime = 3000\n /**\n * Main scope to launch animation\n */\n protected val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * A temp variable used to hold the current view as a look at during calculations. Using an object level temp\n * property negates the need for ad-hoc allocations and reduces load on the garbage collector.\n */\n protected val lookAt = LookAt()\n protected var animationJob: Job? = null\n protected var completionCallback: ((GoToAnimator) -> Unit)? = null\n protected var targetPosition: Position? = null\n protected var startPosition: Position? = null\n protected var startTime = Instant.DISTANT_PAST\n protected var maxAltitude = 0.0\n protected var maxAltitudeReachedTime = Instant.DISTANT_PAST\n protected var panVelocity = 0.0\n protected var rangeVelocity = 0.0\n\n /**\n * Stop the current animation.\n */\n fun cancel() { animationJob?.cancel() }\n\n /**\n * Moves the camera to a specified look at location or position.\n *\n * @param position The [Location] or [Position] to move the camera to. If this\n * argument contains an \"altitude\" property, as [Position] does, the end point of the navigation is\n * at the specified altitude. Otherwise, the end point is at the current altitude of the camera.\n * @param completionCallback If not null, specifies a function to call when the animation completes.\n * The completion callback is called with a single argument, this animator.\n */\n open fun goTo(position: Location, completionCallback: ((GoToAnimator) -> Unit)? = null) {\n if (engine.viewport.isEmpty) return\n\n this.completionCallback = completionCallback\n\n engine.cameraAsLookAt(lookAt)\n // Capture the target position and determine its altitude.\n val targetPosition = Position(\n position.latitude, position.longitude, if (position is Position) position.altitude else lookAt.range\n ).also { targetPosition = it }\n\n // Capture the start position and start time.\n val startPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range).also { startPosition = it }\n startTime = Clock.System.now()\n\n // Determination of the pan and range velocities requires the distance to be travelled.\n var animationDuration = travelTime\n val panDistance = startPosition.greatCircleDistance(targetPosition)\n\n // Determine how high we need to go to give the user context. The max altitude computed is approximately\n // that needed to fit the start and end positions in the same viewport assuming a 45 degree field of view.\n val pA = engine.globe.geographicToCartesian(startPosition.latitude, startPosition.longitude, 0.0, Vec3())\n val pB = engine.globe.geographicToCartesian(targetPosition.latitude, targetPosition.longitude, 0.0, Vec3())\n maxAltitude = pA.distanceTo(pB)\n\n // Determine an approximate viewport size in radians in order to determine whether we actually change\n // the range as we pan to the new location. We don't want to change the range if the distance between\n // the start and target positions is small relative to the current viewport.\n val viewportSize = engine.pixelSizeAtDistance(startPosition.altitude) *\n engine.viewport.width / engine.globe.equatorialRadius\n\n // Start and target positions are close, so don't back out.\n if (panDistance <= 2 * viewportSize) maxAltitude = startPosition.altitude\n\n // We need to capture the time the max altitude is reached in order to begin decreasing the range\n // midway through the animation. If we're already above the max altitude, then that time is now since\n // we don't back out if the current altitude is above the computed max altitude.\n maxAltitudeReachedTime = if (maxAltitude <= lookAt.range) Clock.System.now() else Instant.DISTANT_PAST\n\n // Compute the total range to travel since we need that to compute the range velocity.\n // Note that the range velocity and pan velocity are computed so that the respective animations, which\n // operate independently, finish at the same time.\n val rangeDistance = if (maxAltitude > startPosition.altitude) {\n max(0.0, maxAltitude - startPosition.altitude) + abs(targetPosition.altitude - maxAltitude)\n } else {\n abs(targetPosition.altitude - startPosition.altitude)\n }\n\n // Determine which distance governs the animation duration.\n val animationDistance = max(panDistance, rangeDistance / engine.globe.equatorialRadius)\n if (animationDistance == 0.0) return // current and target positions are the same\n\n if (animationDistance < 2 * viewportSize) {\n // Start and target positions are close, so reduce the travel time based on the\n // distance to travel relative to the viewport size.\n animationDuration = min(((animationDistance / viewportSize) * travelTime).roundToInt(), travelTime)\n }\n\n // Don't let the animation duration go to 0.\n animationDuration = max(1, animationDuration)\n\n // Determine the pan velocity, in radians per millisecond.\n panVelocity = panDistance / animationDuration\n\n // Determine the range velocity, in meters per millisecond.\n rangeVelocity = rangeDistance / animationDuration // meters per millisecond\n\n // Set up the animation timer.\n setUpAnimationTimer()\n }\n\n protected open fun setUpAnimationTimer() {\n animationJob?.cancel()\n animationJob = mainScope.launch {\n delay(animationFrequency)\n if (!isActive || !update()) completionCallback?.invoke(this@GoToAnimator) else setUpAnimationTimer()\n }\n }\n\n /**\n * This is the timer callback function. It invokes the range animator and the pan animator.\n */\n protected open fun update(): Boolean {\n val currentPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range)\n val continueUpdateRange = updateRange(currentPosition)\n val continueUpdateLocation = updateLocation(currentPosition)\n WorldWind.requestRedraw()\n return continueUpdateRange || continueUpdateLocation\n }\n\n /**\n * This function animates the range.\n */\n protected open fun updateRange(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n\n // If we haven't reached the maximum altitude, then step-wise increase it. Otherwise, step-wise change\n // the range towards the target altitude.\n val continueAnimation = if (maxAltitudeReachedTime == Instant.DISTANT_PAST) {\n val elapsedTime = Clock.System.now() - startTime\n val nextRange = min(startPosition.altitude + rangeVelocity * elapsedTime.inWholeMilliseconds, maxAltitude)\n // We're done if we get withing 1 meter of the desired range.\n if (abs(lookAt.range - nextRange) < 1) maxAltitudeReachedTime = Clock.System.now()\n lookAt.range = nextRange\n true\n } else {\n val elapsedTime = Clock.System.now() - maxAltitudeReachedTime\n val nextRange = if (maxAltitude > targetPosition.altitude) {\n max(maxAltitude - (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n } else {\n min(maxAltitude + (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n }\n lookAt.range = nextRange\n // We're done if we get withing 1 meter of the desired range.\n abs(lookAt.range - targetPosition.altitude) > 1\n }\n\n engine.cameraFromLookAt(lookAt)\n\n return continueAnimation\n }\n\n /**\n * This function animates the pan to the desired location.\n */\n protected open fun updateLocation(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n val elapsedTime = Clock.System.now() - startTime\n val distanceTravelled = startPosition.greatCircleDistance(currentPosition)\n val distanceRemaining = currentPosition.greatCircleDistance(targetPosition)\n val azimuthToTarget = currentPosition.greatCircleAzimuth(targetPosition)\n val distanceForNow = panVelocity * elapsedTime.inWholeMilliseconds\n val nextDistance = min(distanceForNow - distanceTravelled, distanceRemaining)\n val nextLocation = currentPosition.greatCircleLocation(azimuthToTarget, nextDistance, Location())\n var locationReached = false\n\n lookAt.position.latitude = nextLocation.latitude\n lookAt.position.longitude = nextLocation.longitude\n engine.cameraFromLookAt(lookAt)\n\n // We're done if we're within a meter of the desired location.\n if (nextDistance < 1.0 / engine.globe.equatorialRadius) locationReached = true\n\n return !locationReached\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Renderable\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.roundToInt\n\nopen class PickedObject protected constructor(\n val identifier: Int, val userObject: Any, val layer: Layer? = null, val terrainPosition: Position? = null\n) {\n var isOnTop = false\n protected set\n val isTerrain get() = terrainPosition != null\n\n companion object {\n @JvmStatic\n fun fromRenderable(identifier: Int, renderable: Renderable, layer: Layer) =\n PickedObject(identifier, renderable.pickDelegate ?: renderable, layer)\n\n @JvmStatic\n fun fromTerrain(identifier: Int, position: Position): PickedObject {\n val positionCopy = Position(position)\n return PickedObject(identifier, positionCopy, terrainPosition = positionCopy)\n }\n\n @JvmStatic\n fun identifierToUniqueColor(identifier: Int, result: Color): Color {\n val r8 = identifier shr 16 and 0xFF\n val g8 = identifier shr 8 and 0xFF\n val b8 = identifier and 0xFF\n result.red = r8 / 0xFF.toFloat()\n result.green = g8 / 0xFF.toFloat()\n result.blue = b8 / 0xFF.toFloat()\n result.alpha = 1f\n return result\n }\n\n @JvmStatic\n fun uniqueColorToIdentifier(color: Color): Int {\n val r8 = (color.red * 0xFF).roundToInt()\n val g8 = (color.green * 0xFF).roundToInt()\n val b8 = (color.blue * 0xFF).roundToInt()\n return r8 shl 16 or (g8 shl 8) or b8\n }\n }\n\n internal fun markOnTop() { isOnTop = true }\n\n override fun toString() = \"PickedObject(isOnTop=$isOnTop, identifier=$identifier, userObject=$userObject, layer=$layer, terrainPosition=$terrainPosition)\"\n}","package earth.worldwind\n\nopen class PickedObjectList {\n protected val objectsById = mutableMapOf()\n val objects get() = objectsById.values\n val count get() = objectsById.size\n val topPickedObject get() = objects.firstOrNull { po -> po.isOnTop }\n val terrainPickedObject get() = objects.firstOrNull { po -> po.isTerrain }\n val hasNonTerrainObjects get() = objects.firstOrNull { po -> !po.isTerrain } != null\n\n fun offerPickedObject(pickedObject: PickedObject) { objectsById[pickedObject.identifier] = pickedObject }\n\n fun pickedObjectWithId(identifier: Int) = objectsById[identifier]\n\n fun clearPickedObjects() = objectsById.clear()\n\n fun keepTopAndTerrainObjects() = objectsById.entries.removeAll { e -> !e.value.isOnTop && !e.value.isTerrain }\n\n override fun toString() = objects.joinToString(\", \", \"PickedObjectList{\", \"}\") { po -> po.toString() }\n}",null,"package earth.worldwind\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.frame.BasicFrameController\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.frame.FrameController\nimport earth.worldwind.frame.FrameMetrics\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.BasicTessellator\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.kgl.*\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.asSharedFlow\nimport kotlinx.datetime.TimeZone\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Main WorldWind model, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\nopen class WorldWind @JvmOverloads constructor(\n /**\n * Platform-dependent OpenGL implementation\n */\n gl: Kgl,\n /**\n * Platform-dependent GPU resource cache manager.\n */\n var renderResourceCache: RenderResourceCache,\n /**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models.\n */\n var globe: Globe = Globe(),\n /**\n * Terrain model tessellator.\n */\n var tessellator: Tessellator = BasicTessellator(),\n /**\n * Frame rendering and drawing logic implementation.\n */\n var frameController: FrameController = BasicFrameController(),\n /**\n * Helper class implementing [FrameMetrics] to measure performance.\n */\n var frameMetrics: FrameMetrics? = null\n) {\n /**\n * List of renderable object layers to be displayed by this WorldWind.\n */\n var layers = LayerList()\n /**\n * Current user view point parameters: location, altitude, orientation and field of view.\n */\n var camera = Camera()\n /**\n * The [GoToAnimator] used by this WorldWindow to respond to its goTo method.\n */\n val goToAnimator = GoToAnimator(this)\n /**\n * Screen area occupied by this WorldWind.\n */\n val viewport = Viewport()\n /**\n * Keep pixel scale when changing the height of viewport by adapting field of view\n */\n var isKeepScale = true\n /**\n * Scale of logical pixel size to hardware display pixel size. Used to adopt general level of details to screen density.\n */\n var densityFactor = 1f\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setDensityFactor\", \"invalidDensityFactor\"\n )\n }\n field = value\n }\n /**\n * Vertical exaggeration (VE) is a scale that is used to emphasize vertical features, which might be too small\n * to identify relative to the horizontal scale.\n */\n var verticalExaggeration = 1.0\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setVerticalExaggeration\", \"invalidVerticalExaggeration\"\n )\n }\n field = value\n }\n /**\n * Atmosphere altitude above ellipsoid. Used to control when objects are clipped by the far plain behind the globe.\n */\n var atmosphereAltitude = 160000.0\n /**\n * Context related to frame rendering phase\n */\n protected val rc = RenderContext()\n /**\n * Context related to frame drawing phase\n */\n protected val dc = DrawContext(gl)\n /**\n * The number of bits in the depth buffer associated with this WorldWind.\n */\n protected var depthBits = 0\n private val scratchModelview = Matrix4()\n private val scratchProjection = Matrix4()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n init {\n // Initialize default camera location based on user time zone\n val initLocation = Location.fromTimeZone(TimeZone.currentSystemDefault())\n // Fit globe to screen vertically with 10% margin.\n val initAltitude = distanceToViewGlobeExtents * 1.1\n camera.position.set(initLocation.latitude, initLocation.longitude, initAltitude)\n }\n\n /**\n * Reset internal WorldWind state to initial values.\n */\n open fun reset() {\n // Clear the render resource cache; it's entries are now invalid.\n renderResourceCache.clear()\n\n // Invalidate elevation model.\n globe.elevationModel.invalidate()\n\n // Clear the viewport dimensions.\n viewport.setEmpty()\n\n // Reset screen density factor.\n densityFactor = 1f\n }\n\n /**\n * Specify the default WorldWind OpenGL state.\n */\n open fun setupDrawContext() {\n dc.gl.enable(GL_BLEND)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.enableVertexAttribArray(0)\n dc.gl.disable(GL_DITHER)\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.depthFunc(GL_LEQUAL)\n\n // Clear any cached OpenGL resources and state, which are now invalid.\n dc.contextLost()\n\n // Set the WorldWindow's depth bits.\n depthBits = dc.gl.getParameteri(GL_DEPTH_BITS)\n }\n\n /**\n * Apply new viewport dimensions.\n */\n open fun setupViewport(width: Int, height: Int) {\n dc.gl.viewport(0, 0, width, height)\n\n // Keep pixel scale by adapting field of view on view port resize\n if (isKeepScale && viewport.height != 0) {\n try {\n camera.fieldOfView *= height / viewport.height.toDouble()\n } catch (ignore: IllegalArgumentException) {\n // Keep original field of view in case new one does not fit requirements\n }\n }\n\n viewport.set(0, 0, width, height)\n }\n\n /**\n * Get look at orientation and range based on current camera position and specified geographic position\n *\n * @param result Pre-allocated look at object\n * @param lookAtPosition Custom \"look at\" position. Terrain position on viewport center will be used by default.\n * @return Look at orientation and range based on current camera position and specified geographic position\n */\n open fun cameraAsLookAt(result: LookAt, lookAtPosition: Position? = null): LookAt {\n if (lookAtPosition != null) {\n cameraToViewingTransform(scratchModelview)\n globe.geographicToCartesian(lookAtPosition.latitude, lookAtPosition.longitude, lookAtPosition.altitude, scratchPoint)\n result.position.copy(lookAtPosition)\n } else if (viewport.isEmpty || !pickTerrainPosition(viewport.width / 2.0, viewport.height / 2.0, result.position)) {\n // Use point on horizon as a backup\n cameraToViewingTransform(scratchModelview)\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n scratchRay.pointAt(globe.horizonDistance(cameraPosition.altitude), scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result.position)\n }\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n result.range = -scratchModelview.m[11]\n result.heading = scratchModelview.extractHeading(camera.roll) // disambiguate heading and roll\n result.tilt = scratchModelview.extractTilt()\n result.roll = camera.roll // roll passes straight through\n return result\n }\n\n /**\n * Set camera position and orientation, based on look at position, orientation and range\n *\n * @param lookAt Look at position, orientation and range\n */\n open fun cameraFromLookAt(lookAt: LookAt) {\n applyLookAtLimits(lookAt)\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.extractEyePoint(scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, camera.position)\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n camera.altitudeMode = AltitudeMode.ABSOLUTE // Calculated position is absolute\n camera.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n camera.tilt = scratchModelview.extractTilt()\n camera.roll = lookAt.roll // roll passes straight through\n\n // Check if camera altitude is not under the surface\n val position = camera.position\n val elevation = if (globe.is2D) COLLISION_THRESHOLD else globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration + COLLISION_THRESHOLD\n if (elevation > position.altitude) {\n // Set camera altitude above the surface\n position.altitude = elevation\n // Compute new camera point\n globe.geographicToCartesian(position.latitude, position.longitude, position.altitude, scratchPoint)\n // Compute look at point\n globe.geographicToCartesian(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude, scratchRay.origin\n )\n // Compute normal to globe in look at point\n globe.geographicToCartesianNormal(lookAt.position.latitude, lookAt.position.longitude, scratchRay.direction)\n // Calculate tilt angle between new camera point and look at point\n scratchPoint.subtract(scratchRay.origin).normalize()\n val dot = scratchRay.direction.dot(scratchPoint)\n if (dot >= -1 && dot <= 1) camera.tilt = acos(dot).radians\n }\n }\n\n /**\n * More efficient way to determine terrain position at screen point using terrain from last rendered frame.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return true if the screen point could be converted; false if the screen point is not on the terrain\n */\n open fun pickTerrainPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && frameController.lastTerrains.values.any {\n it.intersect(scratchRay, scratchPoint)\n }) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param point the Cartesian point in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun cartesianToScreenPoint(point: Vec3, result: Vec2) = cartesianToScreenPoint(point.x, point.y, point.z, result)\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param x the Cartesian point's x component in meters\n * @param y the Cartesian point's y component in meters\n * @param z the Cartesian point's z component in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun cartesianToScreenPoint(x: Double, y: Double, z: Double, result: Vec2): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the WorldWindow's modelview-projection matrix.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview)\n\n // Transform the Cartesian point to OpenGL screen coordinates. Complete the transformation by converting to\n // viewport coordinates and discarding the screen Z component.\n if (scratchProjection.project(x, y, z, viewport, scratchPoint)) {\n result.x = scratchPoint.x\n result.y = viewport.height - scratchPoint.y\n return true\n }\n return false\n }\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param position the geographic position\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun geographicToScreenPoint(position: Position, result: Vec2) =\n geographicToScreenPoint(position.latitude, position.longitude, position.altitude, result)\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun geographicToScreenPoint(\n latitude: Angle, longitude: Angle, altitude: Double, result: Vec2\n ): Boolean {\n // Convert the position from geographic coordinates to Cartesian coordinates.\n globe.geographicToCartesian(latitude, longitude, altitude, scratchPoint)\n\n // Convert the position from Cartesian coordinates to screen coordinates.\n return cartesianToScreenPoint(scratchPoint, result)\n }\n\n /**\n * Converts a screen point to the geographic coordinates on the globe ellipsoid, ignoring terrain altitude.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result Pre-allocated Position receives the geographic coordinates\n *\n * @return true if the screen point could be converted; false if the screen point is not on the globe\n */\n open fun screenPointToGroundPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && globe.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Computes a Cartesian coordinate ray that passes through a screen point.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated Line in which to return the computed ray\n *\n * @return the result set to the computed ray in Cartesian coordinates\n */\n open fun rayThroughScreenPoint(x: Double, y: Double, result: Line): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the inverse modelview-projection matrix corresponding to the WorldWindow's current Camera state.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview).invert()\n\n // Convert from viewport coordinates to OpenGL screen coordinates by inverting the Y axis.\n // Transform the screen point to Cartesian coordinates at the near and far clip planes, store the result in the\n // ray's origin and direction, respectively. Complete the ray direction by subtracting the near point from the\n // far point and normalizing.\n if (scratchProjection.unProject(x, viewport.height - y, viewport, result.origin, result.direction)) {\n result.direction.subtract(result.origin).normalize()\n return true\n }\n return false\n }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n open fun pixelSizeAtDistance(distance: Double): Double {\n val tanFovY2 = tan(camera.fieldOfView.inRadians * 0.5)\n val frustumHeight = 2 * distance * tanFovY2\n return frustumHeight / viewport.height\n }\n\n /**\n * Returns the minimum distance from the globe's surface necessary to make the globe's extents visible in this World\n * Window.\n */\n val distanceToViewGlobeExtents get(): Double {\n val sinFovY2 = sin(camera.fieldOfView.inRadians * 0.5)\n val radius = globe.equatorialRadius\n return radius / sinFovY2 - radius\n }\n\n open fun renderFrame(frame: Frame): Boolean {\n // Mark the beginning of a frame render.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginRendering(rc)\n\n // Restrict camera tilt and roll in 2D\n if (globe.is2D) {\n camera.tilt = ZERO\n camera.roll = ZERO\n }\n\n // Set up the render context according to the WorldWindow's current state.\n rc.globe = globe\n rc.terrainTessellator = tessellator\n rc.layers = layers\n rc.camera = camera\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n rc.horizonDistance = globe.horizonDistance(cameraPosition.altitude)\n globe.geographicToCartesian(\n cameraPosition.latitude, cameraPosition.longitude, cameraPosition.altitude, rc.cameraPoint\n )\n rc.renderResourceCache = renderResourceCache\n rc.verticalExaggeration = verticalExaggeration\n rc.densityFactor = densityFactor\n rc.atmosphereAltitude = atmosphereAltitude\n rc.globeState = globe.state\n rc.elevationModelTimestamp = globe.elevationModel.timestamp\n\n // Configure the frame's Cartesian modelview matrix and eye coordinate projection matrix.\n computeViewingTransform(frame.projection, frame.modelview)\n frame.viewport.copy(viewport)\n// frame.infiniteProjection.setToInfiniteProjection(viewport.width, viewport.height, camera.fieldOfView, 1.0)\n// frame.infiniteProjection.multiplyByMatrix(frame.modelview)\n rc.viewport.copy(frame.viewport)\n rc.projection.copy(frame.projection)\n rc.modelview.copy(frame.modelview)\n rc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n if (pickMode) rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport, frame.pickViewport!!)\n else rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport)\n\n // Compute viewing distance and pixel size (for 3D view it will be done after terrain tessellation)\n if (globe.is2D) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (globe.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n // Accumulate the Drawables in the frame's drawable queue and drawable terrain data structures.\n rc.drawableQueue = frame.drawableQueue\n rc.drawableTerrain = frame.drawableTerrain\n rc.pickedObjects = frame.pickedObjects\n rc.pickDeferred = frame.pickDeferred\n rc.pickViewport = frame.pickViewport\n rc.pickPoint = frame.pickPoint\n rc.pickRay = frame.pickRay\n rc.isPickMode = frame.isPickMode\n\n // Let the frame controller render the WorldWindow's current state.\n frameController.renderFrame(rc)\n\n // Propagate redraw requests submitted during rendering.\n val isRedrawRequested = !pickMode && rc.isRedrawRequested\n\n // Mark the end of a frame render.\n if (!pickMode) frameMetrics?.endRendering(rc)\n\n // Reset the render context's state in preparation for the next frame.\n rc.reset()\n\n return isRedrawRequested\n }\n\n open fun drawFrame(frame: Frame) {\n // Mark the beginning of a frame draw.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginDrawing(dc)\n\n // Set up the draw context according to the frame's current state.\n dc.eyePoint.copy(frame.modelview.extractEyePoint(dc.eyePoint))\n dc.viewport.copy(frame.viewport)\n dc.projection.copy(frame.projection)\n dc.modelview.copy(frame.modelview)\n dc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n// dc.infiniteProjection.copy(frame.infiniteProjection)\n dc.screenProjection.setToScreenProjection(\n frame.viewport.width.toDouble(), frame.viewport.height.toDouble()\n )\n\n // Process the drawables in the frame's drawable queue and drawable terrain data structures.\n dc.drawableQueue = frame.drawableQueue\n dc.drawableTerrain = frame.drawableTerrain\n dc.pickedObjects = frame.pickedObjects\n dc.pickViewport = frame.pickViewport\n dc.pickPoint = frame.pickPoint\n dc.isPickMode = frame.isPickMode\n\n // Let the frame controller draw the frame.\n frameController.drawFrame(dc)\n\n // Increment render resource cache age on each frame\n renderResourceCache.incAge()\n\n // Release resources evicted during the previous frame.\n renderResourceCache.releaseEvictedResources(dc)\n\n // Mark the end of a frame draw.\n if (!pickMode) frameMetrics?.endDrawing(dc)\n\n // Reset the draw context's state in preparation for the next frame.\n dc.reset()\n }\n\n protected open fun computeViewingTransform(projection: Matrix4, modelview: Matrix4) {\n // Compute the clip plane distances. The near distance is set to a large value that does not clip the globe's\n // surface. The far distance is set to the smallest value that does not clip the atmosphere.\n val eyeAltitude = globe.getAbsolutePosition(camera.position, camera.altitudeMode).altitude\n val eyeHorizon = globe.horizonDistance(eyeAltitude)\n val atmosphereHorizon = globe.horizonDistance(atmosphereAltitude)\n\n // The far distance is set to the smallest value that does not clip the atmosphere.\n var far = eyeHorizon + atmosphereHorizon\n if (far < 1e3) far = 1e3\n\n //The near distance is set to a large value that does not clip the globe's surface.\n val maxDepthValue = (1 shl depthBits) - 1\n val farResolution = 10.0\n var near = far / (maxDepthValue / (1 - farResolution / far) - maxDepthValue + 1)\n\n // Prevent the near clip plane from intersecting the terrain.\n val distanceToSurface = if (globe.is2D) eyeAltitude else eyeAltitude - globe.getElevation(\n camera.position.latitude, camera.position.longitude\n ) * verticalExaggeration\n if (distanceToSurface > 0) {\n val tanHalfFov = tan(0.5 * camera.fieldOfView.inRadians)\n val maxNearDistance = distanceToSurface / (2 * sqrt(2 * tanHalfFov * tanHalfFov + 1))\n if (near > maxNearDistance) near = maxNearDistance\n }\n if (near < 1) near = 1.0\n\n // Compute a perspective projection matrix given the WorldWindow's viewport, field of view, and clip distances.\n projection.setToPerspectiveProjection(viewport.width, viewport.height, camera.fieldOfView, near, far)\n\n // Compute a Cartesian transform matrix from the Camera.\n cameraToViewingTransform(modelview)\n }\n\n protected open fun cameraToViewingTransform(result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the camera's position.\n geographicToCartesianTransform(camera.position, camera.altitudeMode, result)\n\n // Transform by the heading, tilt and roll.\n result.multiplyByRotation(0.0, 0.0, 1.0, -camera.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, camera.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, camera.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun lookAtToViewingTransform(lookAt: LookAt, result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the look-at's position.\n geographicToCartesianTransform(lookAt.position, lookAt.altitudeMode, result)\n\n // Transform by the heading and tilt.\n result.multiplyByRotation(0.0, 0.0, 1.0, -lookAt.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, lookAt.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, lookAt.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Transform by the range.\n result.multiplyByTranslation(0.0, 0.0, lookAt.range)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun geographicToCartesianTransform(position: Position, altitudeMode: AltitudeMode, result: Matrix4): Matrix4 {\n when (altitudeMode) {\n AltitudeMode.ABSOLUTE -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, position.altitude, result\n )\n AltitudeMode.CLAMP_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration, result\n )\n AltitudeMode.RELATIVE_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, (position.altitude + globe.getElevation(\n position.latitude, position.longitude\n )) * verticalExaggeration, result\n )\n }\n return result\n }\n\n protected open fun applyLookAtLimits(lookAt: LookAt) {\n // Clamp latitude to between -90 and +90, and normalize longitude to between -180 and +180.\n lookAt.position.latitude = lookAt.position.latitude.clampLatitude()\n lookAt.position.longitude = lookAt.position.longitude.normalizeLongitude()\n\n // Clamp range to values greater than 1 in order to prevent degenerating to a first-person lookAt when\n // range is zero.\n lookAt.range = lookAt.range.coerceIn(10.0, distanceToViewGlobeExtents * 2)\n\n // Normalize heading to between -180 and +180.\n lookAt.heading = lookAt.heading.normalize180()\n\n // Clamp tilt to between 0 and +90 to prevent the viewer from going upside down.\n lookAt.tilt = lookAt.tilt.inDegrees.coerceIn(0.0, 90.0).degrees\n\n // Normalize heading to between -180 and +180.\n lookAt.roll = lookAt.roll.normalize180()\n\n // Apply 2D limits when the globe is 2D.\n if (globe.is2D) {\n // Clamp range to prevent more than 360 degrees of visible longitude. Assumes a 45 degree horizontal\n // field of view.\n lookAt.range = lookAt.range.coerceIn(1.0, 2.0 * PI * globe.equatorialRadius)\n\n // Force tilt to 0 when in 2D mode to keep the viewer looking straight down.\n lookAt.tilt = ZERO\n lookAt.roll = ZERO\n }\n }\n\n companion object {\n protected const val COLLISION_THRESHOLD = 10.0 // 10m above surface\n\n private val _events = MutableSharedFlow(extraBufferCapacity = 1)\n\n /**\n * Provides a global mechanism for broadcasting notifications within the WorldWind library.\n */\n @JvmStatic\n val events = _events.asSharedFlow()\n\n /**\n * Requests that all WorldWindow instances update their display. Internally, this dispatches a REQUEST_REDRAW\n * message to the WorldWind message center.\n */\n @JvmStatic\n fun requestRedraw() { _events.tryEmit(Event.RequestRedraw) }\n\n /**\n * Requests render resource cache to remove specified resource ID from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n @JvmStatic\n suspend fun unmarkResourceAbsent(resourceId: Int) { _events.emit(Event.UnmarkResourceAbsent(resourceId)) }\n }\n\n sealed interface Event {\n /**\n * Event requesting WorldWindow instances to update their display.\n */\n object RequestRedraw : Event\n /**\n * Event requesting RenderResourceCache to un-mark resource from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n data class UnmarkResourceAbsent(val resourceId: Int) : Event\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport earth.worldwind.util.kgl.GL_UNSIGNED_SHORT\nimport kotlin.jvm.JvmStatic\n\nopen class BasicDrawableTerrain protected constructor(): DrawableTerrain {\n override var offset = Globe.Offset.Center\n override val sector = Sector()\n override val vertexOrigin = Vec3()\n val lineElementRange = Range()\n val triStripElementRange = Range()\n var vertexPoints: FloatBufferObject? = null\n var vertexHeights: FloatBufferObject? = null\n var vertexTexCoords: FloatBufferObject? = null\n var elements: ShortBufferObject? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): BasicDrawableTerrain {\n val instance = pool.acquire() ?: BasicDrawableTerrain()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n vertexPoints = null\n vertexHeights = null\n vertexTexCoords = null\n elements = null\n pool?.release(this)\n pool = null\n }\n\n override fun useVertexPointAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexPoints?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 3, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexHeightsAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexHeights?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 1, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexTexCoordAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexTexCoords?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 2, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun drawLines(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_LINES, lineElementRange.length,\n GL_UNSIGNED_SHORT, lineElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun drawTriangles(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_TRIANGLE_STRIP, triStripElementRange.length,\n GL_UNSIGNED_SHORT, triStripElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun draw(dc: DrawContext) {\n drawTriangles(dc)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Framebuffer\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.BufferPool\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.util.kgl.*\n\nopen class DrawContext(val gl: Kgl) {\n val eyePoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n// val infiniteProjection = Matrix4()\n val screenProjection = Matrix4()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var isPickMode = false\n private var framebuffer = KglFramebuffer.NONE\n private var program = KglProgram.NONE\n private var textureUnit = GL_TEXTURE0\n private val textures = Array(32) { KglTexture.NONE }\n private var arrayBuffer = KglBuffer.NONE\n private var elementArrayBuffer = KglBuffer.NONE\n private var scratchFramebufferCache: Framebuffer? = null\n private var unitSquareBufferCache: FloatBufferObject? = null\n private var rectangleElementsBufferCache: IntBufferObject? = null\n private var scratchBuffer = ByteArray(4)\n private val pixelArray = ByteArray(4)\n private var bufferPool = BufferPool(GL_ARRAY_BUFFER, GL_DYNAMIC_DRAW)\n /**\n * Returns count of terrain drawables in queue\n */\n val drawableTerrainCount get() = drawableTerrain?.count?:0\n /**\n * Returns the name of the OpenGL framebuffer object that is currently active.\n */\n val currentFramebuffer get() = framebuffer\n /**\n * Returns the name of the OpenGL program object that is currently active.\n */\n val currentProgram get() = program\n /**\n * Returns the OpenGL multitexture unit that is currently active. Returns a value from the GL_TEXTUREi enumeration,\n * where i ranges from 0 to 32.\n */\n val currentTextureUnit get() = textureUnit\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the active multitexture unit. The active\n * multitexture unit may be determined by calling currentTextureUnit.\n */\n val currentTexture get() = currentTexture(textureUnit)\n /**\n * Returns an OpenGL framebuffer object suitable for offscreen drawing. The framebuffer has a 32-bit color buffer\n * and a 32-bit depth buffer, both attached as OpenGL texture 2D objects.\n *
\n * The framebuffer may be used by any drawable and for any purpose. However, the draw context makes no guarantees\n * about the framebuffer's contents. Drawables must clear the framebuffer before use, and must assume its contents\n * may be modified by another drawable, either during the current frame or in a subsequent frame.\n *
\n * The OpenGL framebuffer object is created on first use and cached. Subsequent calls to this method return the\n * cached buffer object.\n */\n val scratchFramebuffer get() = scratchFramebufferCache ?: Framebuffer().apply {\n val colorAttachment = Texture(1024, 1024, GL_RGBA, GL_UNSIGNED_BYTE, true)\n val depthAttachment = Texture(1024, 1024, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, true)\n // TODO consider modifying Texture's tex parameter behavior in order to make this unnecessary\n depthAttachment.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n depthAttachment.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n attachTexture(this@DrawContext, colorAttachment, GL_COLOR_ATTACHMENT0)\n attachTexture(this@DrawContext, depthAttachment, GL_DEPTH_ATTACHMENT)\n }.also { scratchFramebufferCache = it }\n /**\n * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and\n * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order\n * required by a triangle strip.\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val unitSquareBuffer get() = unitSquareBufferCache ?: FloatBufferObject(\n GL_ARRAY_BUFFER, floatArrayOf(0f, 1f, 0f, 0f, 1f, 1f, 1f, 0f)\n ).also { unitSquareBufferCache = it }\n /**\n * Returns an OpenGL buffer object containing indices needed to render triangle\n * Expected vertex data layout for this buffer is something like this\n * 1 ---- 0\n * | /|\n * | / |\n * | / |\n * | / |\n * | / |\n * 3 ---- 2\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val rectangleElementsBuffer get() = rectangleElementsBufferCache ?: IntBufferObject(\n GL_ELEMENT_ARRAY_BUFFER, intArrayOf(0, 1, 2, 2, 1, 3)\n ).also { rectangleElementsBufferCache = it }\n /**\n * Returns a scratch list suitable for accumulating entries during drawing. The list is cleared before each frame,\n * otherwise its contents are undefined.\n */\n val scratchList = mutableListOf()\n\n fun reset() {\n eyePoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n screenProjection.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickViewport = null\n pickPoint = null\n isPickMode = false\n scratchBuffer.fill(0)\n scratchList.clear()\n bufferPool.reset()\n }\n\n fun contextLost() {\n // Clear objects and values associated with the current OpenGL context.\n framebuffer = KglFramebuffer.NONE\n program = KglProgram.NONE\n textureUnit = GL_TEXTURE0\n arrayBuffer = KglBuffer.NONE\n elementArrayBuffer = KglBuffer.NONE\n scratchFramebufferCache = null\n unitSquareBufferCache = null\n rectangleElementsBufferCache = null\n textures.fill(KglTexture.NONE)\n bufferPool.contextLost()\n }\n\n fun peekDrawable() = drawableQueue?.peekDrawable()\n\n fun pollDrawable() = drawableQueue?.pollDrawable()\n\n fun rewindDrawables() { drawableQueue?.rewindDrawables() }\n\n fun getDrawableTerrain(index: Int) = drawableTerrain?.getDrawable(index) as DrawableTerrain? ?: error(\"Invalid index\")\n\n /**\n * Makes an OpenGL framebuffer object active. The active framebuffer becomes the target of all OpenGL commands that\n * render to the framebuffer or read from the framebuffer. This has no effect if the specified framebuffer object is\n * already active. The default is framebuffer 0, indicating that the default framebuffer provided by the windowing\n * system is active.\n *\n * @param framebuffer the name of the OpenGL framebuffer object to make active, or 0 to make the default\n * framebuffer provided by the windowing system active\n */\n fun bindFramebuffer(framebuffer: KglFramebuffer) {\n if (this.framebuffer != framebuffer) {\n this.framebuffer = framebuffer\n gl.bindFramebuffer(GL_FRAMEBUFFER, framebuffer)\n }\n }\n\n /**\n * Makes an OpenGL program object active as part of current rendering state. This has no effect if the specified\n * program object is already active. The default is program 0, indicating that no program is active.\n *\n * @param program the name of the OpenGL program object to make active, or 0 to make no program active\n */\n fun useProgram(program: KglProgram) {\n if (this.program != program) {\n this.program = program\n gl.useProgram(program)\n }\n }\n\n /**\n * Specifies the OpenGL multitexture unit to make active. This has no effect if the specified multitexture unit is\n * already active. The default is GL_TEXTURE0.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n */\n fun activeTextureUnit(textureUnit: Int) {\n if (this.textureUnit != textureUnit) {\n this.textureUnit = textureUnit\n gl.activeTexture(textureUnit)\n }\n }\n\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the specified multitexture unit.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n *\n * @return the currently bound texture 2D object, or 0 if no texture object is bound\n */\n fun currentTexture(textureUnit: Int) = textures[textureUnit - GL_TEXTURE0]\n\n /**\n * Makes an OpenGL texture 2D object bound to the current multitexture unit. This has no effect if the specified\n * texture object is already bound. The default is texture 0, indicating that no texture is bound.\n *\n * @param texture the name of the OpenGL texture 2D object to make active, or 0 to make no texture active\n */\n fun bindTexture(texture: KglTexture) {\n val textureUnitIndex = textureUnit - GL_TEXTURE0\n if (textures[textureUnitIndex] != texture) {\n textures[textureUnitIndex] = texture\n gl.bindTexture(GL_TEXTURE_2D, texture)\n }\n }\n\n /**\n * Returns the name of the OpenGL buffer object bound to the specified target buffer.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n *\n * @return the currently bound buffer object, or 0 if no buffer object is bound\n */\n fun currentBuffer(target: Int): KglBuffer {\n return when (target) {\n GL_ARRAY_BUFFER -> arrayBuffer\n GL_ELEMENT_ARRAY_BUFFER -> elementArrayBuffer\n else -> KglBuffer.NONE\n }\n }\n\n /**\n * Makes an OpenGL buffer object bound to a specified target buffer. This has no effect if the specified buffer\n * object is already bound. The default is buffer 0, indicating that no buffer object is bound.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n * @param buffer the name of the OpenGL buffer object to make active\n */\n fun bindBuffer(target: Int, buffer: KglBuffer) {\n if (target == GL_ARRAY_BUFFER && arrayBuffer != buffer) {\n arrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else if (target == GL_ELEMENT_ARRAY_BUFFER && elementArrayBuffer != buffer) {\n elementArrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else {\n gl.bindBuffer(target, buffer)\n }\n }\n\n /**\n * Puts dynamic vertex data into the buffer pool and returns offset.\n *\n * @param vertexData dynamic vertex data to be added in the buffer pool\n * @return offset in the buffer pool\n */\n fun bindBufferPool(vertexData: FloatArray) = bufferPool.bindBuffer(this, vertexData)\n\n /**\n * Reads the fragment color at a screen point in the currently active OpenGL frame buffer. The X and Y components\n * indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param result an optional pre-allocated Color in which to return the fragment color, or null to return a new\n * color\n *\n * @return the result argument set to the fragment color, or a new color if the result is null\n */\n fun readPixelColor(x: Int, y: Int, result: Color): Color {\n // Read the fragment pixel as an RGBA 8888 color.\n gl.readPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelArray)\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelArray[0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelArray[1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelArray[2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelArray[3].toInt() and 0xFF) / 0xFF.toFloat()\n return result\n }\n\n /**\n * Reads the unique fragment colors within a screen rectangle in the currently active OpenGL frame buffer. The\n * components indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen rectangle's X component\n * @param y the screen rectangle's Y component\n * @param width the screen rectangle's width\n * @param height the screen rectangle's height\n *\n * @return a set containing the unique fragment colors\n */\n fun readPixelColors(x: Int, y: Int, width: Int, height: Int): Set {\n // Read the fragment pixels as a tightly packed array of RGBA 8888 colors.\n val pixelCount = width * height\n val pixelBuffer = scratchBuffer(pixelCount * 4)\n val packAlignment = gl.getParameteri(GL_PACK_ALIGNMENT)\n gl.pixelStorei(GL_PACK_ALIGNMENT, 1) // read byte aligned\n gl.readPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBuffer)\n gl.pixelStorei(GL_PACK_ALIGNMENT, packAlignment) // restore the pack alignment\n val resultSet = mutableSetOf()\n var result = Color()\n for (i in 0 until pixelCount) {\n val idx = i * 4\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelBuffer[idx + 0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelBuffer[idx + 1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelBuffer[idx + 2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelBuffer[idx + 3].toInt() and 0xFF) / 0xFF.toFloat()\n\n // Accumulate the unique colors in a set.\n if (resultSet.add(result)) result = Color()\n }\n return resultSet\n }\n\n /**\n * Returns a scratch NIO buffer suitable for use during drawing. The returned buffer has capacity at least equal to\n * the specified capacity. The buffer is cleared before each frame, otherwise its contents, position, limit and mark\n * are undefined.\n *\n * @param capacity the buffer's minimum capacity in bytes\n *\n * @return the draw context's scratch buffer\n */\n fun scratchBuffer(capacity: Int): ByteArray {\n if (scratchBuffer.size < capacity) scratchBuffer = ByteArray(capacity)\n return scratchBuffer\n }\n}","package earth.worldwind.util.kgl\n\nexpect class KglShader {\n companion object{ val NONE: KglShader }\n fun isValid(): Boolean\n}\nexpect class KglProgram {\n companion object{ val NONE: KglProgram }\n fun isValid(): Boolean\n}\nexpect class KglUniformLocation {\n companion object{ val NONE: KglUniformLocation }\n fun isValid(): Boolean\n}\nexpect class KglBuffer {\n companion object{ val NONE: KglBuffer }\n fun isValid(): Boolean\n}\nexpect class KglTexture {\n companion object{ val NONE: KglTexture }\n fun isValid(): Boolean\n}\nexpect class KglFramebuffer {\n companion object{ val NONE: KglFramebuffer }\n fun isValid(): Boolean\n}\n\nconst val GL_ACTIVE_TEXTURE = 0x84E0\nconst val GL_DEPTH_BUFFER_BIT = 0x00000100\nconst val GL_STENCIL_BUFFER_BIT = 0x00000400\nconst val GL_COLOR_BUFFER_BIT = 0x00004000\nconst val GL_FALSE = 0\nconst val GL_TRUE = 1\nconst val GL_POINTS = 0x0000\nconst val GL_LINES = 0x0001\nconst val GL_LINE_LOOP = 0x0002\nconst val GL_LINE_STRIP = 0x0003\nconst val GL_TRIANGLES = 0x0004\nconst val GL_TRIANGLE_STRIP = 0x0005\nconst val GL_TRIANGLE_FAN = 0x0006\nconst val GL_ZERO = 0\nconst val GL_ONE = 1\nconst val GL_SRC_COLOR = 0x0300\nconst val GL_ONE_MINUS_SRC_COLOR = 0x0301\nconst val GL_SRC_ALPHA = 0x0302\nconst val GL_ONE_MINUS_SRC_ALPHA = 0x0303\nconst val GL_DST_ALPHA = 0x0304\nconst val GL_ONE_MINUS_DST_ALPHA = 0x0305\nconst val GL_DST_COLOR = 0x0306\nconst val GL_ONE_MINUS_DST_COLOR = 0x0307\nconst val GL_SRC_ALPHA_SATURATE = 0x0308\nconst val GL_FUNC_ADD = 0x8006\nconst val GL_BLEND_EQUATION = 0x8009\nconst val GL_BLEND_EQUATION_RGB = 0x8009\nconst val GL_BLEND_EQUATION_ALPHA = 0x883D\nconst val GL_FUNC_SUBTRACT = 0x800A\nconst val GL_FUNC_REVERSE_SUBTRACT = 0x800B\nconst val GL_BLEND_DST_RGB = 0x80C8\nconst val GL_BLEND_SRC_RGB = 0x80C9\nconst val GL_BLEND_DST_ALPHA = 0x80CA\nconst val GL_BLEND_SRC_ALPHA = 0x80CB\nconst val GL_CONSTANT_COLOR = 0x8001\nconst val GL_ONE_MINUS_CONSTANT_COLOR = 0x8002\nconst val GL_CONSTANT_ALPHA = 0x8003\nconst val GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004\nconst val GL_BLEND_COLOR = 0x8005\nconst val GL_ARRAY_BUFFER = 0x8892\nconst val GL_ELEMENT_ARRAY_BUFFER = 0x8893\nconst val GL_ARRAY_BUFFER_BINDING = 0x8894\nconst val GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895\nconst val GL_STREAM_DRAW = 0x88E0\nconst val GL_STATIC_DRAW = 0x88E4\nconst val GL_DYNAMIC_DRAW = 0x88E8\nconst val GL_BUFFER_SIZE = 0x8764\nconst val GL_BUFFER_USAGE = 0x8765\nconst val GL_CURRENT_VERTEX_ATTRIB = 0x8626\nconst val GL_FRONT = 0x0404\nconst val GL_BACK = 0x0405\nconst val GL_FRONT_AND_BACK = 0x0408\nconst val GL_TEXTURE_2D = 0x0DE1\nconst val GL_CULL_FACE = 0x0B44\nconst val GL_BLEND = 0x0BE2\nconst val GL_DITHER = 0x0BD0\nconst val GL_STENCIL_TEST = 0x0B90\nconst val GL_DEPTH_TEST = 0x0B71\nconst val GL_SCISSOR_TEST = 0x0C11\nconst val GL_POLYGON_OFFSET_FILL = 0x8037\nconst val GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nconst val GL_SAMPLE_COVERAGE = 0x80A0\nconst val GL_NO_ERROR = 0\nconst val GL_INVALID_ENUM = 0x0500\nconst val GL_INVALID_VALUE = 0x0501\nconst val GL_INVALID_OPERATION = 0x0502\nconst val GL_OUT_OF_MEMORY = 0x0505\nconst val GL_INVALID_FRAMEBUFFER_OPERATION = 0x506\nconst val GL_CW = 0x0900\nconst val GL_CCW = 0x0901\nconst val GL_LINE_WIDTH = 0x0B21\nconst val GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nconst val GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\nconst val GL_CULL_FACE_MODE = 0x0B45\nconst val GL_FRONT_FACE = 0x0B46\nconst val GL_DEPTH_RANGE = 0x0B70\nconst val GL_DEPTH_WRITEMASK = 0x0B72\nconst val GL_DEPTH_CLEAR_VALUE = 0x0B73\nconst val GL_DEPTH_FUNC = 0x0B74\nconst val GL_STENCIL_CLEAR_VALUE = 0x0B91\nconst val GL_STENCIL_FUNC = 0x0B92\nconst val GL_STENCIL_FAIL = 0x0B94\nconst val GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95\nconst val GL_STENCIL_PASS_DEPTH_PASS = 0x0B96\nconst val GL_STENCIL_REF = 0x0B97\nconst val GL_STENCIL_VALUE_MASK = 0x0B93\nconst val GL_STENCIL_WRITEMASK = 0x0B98\nconst val GL_STENCIL_BACK_FUNC = 0x8800\nconst val GL_STENCIL_BACK_FAIL = 0x8801\nconst val GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802\nconst val GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803\nconst val GL_STENCIL_BACK_REF = 0x8CA3\nconst val GL_STENCIL_BACK_VALUE_MASK = 0x8CA4\nconst val GL_STENCIL_BACK_WRITEMASK = 0x8CA5\nconst val GL_VIEWPORT = 0x0BA2\nconst val GL_SCISSOR_BOX = 0x0C10\nconst val GL_COLOR_CLEAR_VALUE = 0x0C22\nconst val GL_COLOR_WRITEMASK = 0x0C23\nconst val GL_UNPACK_ALIGNMENT = 0x0CF5\nconst val GL_PACK_ALIGNMENT = 0x0D05\nconst val GL_MAX_TEXTURE_SIZE = 0x0D33\nconst val GL_MAX_VIEWPORT_DIMS = 0x0D3A\nconst val GL_SUBPIXEL_BITS = 0x0D50\nconst val GL_RED_BITS = 0x0D52\nconst val GL_GREEN_BITS = 0x0D53\nconst val GL_BLUE_BITS = 0x0D54\nconst val GL_ALPHA_BITS = 0x0D55\nconst val GL_DEPTH_BITS = 0x0D56\nconst val GL_STENCIL_BITS = 0x0D57\nconst val GL_POLYGON_OFFSET_UNITS = 0x2A00\nconst val GL_POLYGON_OFFSET_FACTOR = 0x8038\nconst val GL_TEXTURE_BINDING_2D = 0x8069\nconst val GL_SAMPLE_BUFFERS = 0x80A8\nconst val GL_SAMPLES = 0x80A9\nconst val GL_SAMPLE_COVERAGE_VALUE = 0x80AA\nconst val GL_SAMPLE_COVERAGE_INVERT = 0x80AB\nconst val GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2\nconst val GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\nconst val GL_DONT_CARE = 0x1100\nconst val GL_FASTEST = 0x1101\nconst val GL_NICEST = 0x1102\nconst val GL_GENERATE_MIPMAP_HINT = 0x8192\nconst val GL_BYTE = 0x1400\nconst val GL_UNSIGNED_BYTE = 0x1401\nconst val GL_SHORT = 0x1402\nconst val GL_UNSIGNED_SHORT = 0x1403\nconst val GL_INT = 0x1404\nconst val GL_UNSIGNED_INT = 0x1405\nconst val GL_FLOAT = 0x1406\nconst val GL_FIXED = 0x140C\nconst val GL_STENCIL_INDEX = 0x1901\nconst val GL_DEPTH_COMPONENT = 0x1902\nconst val GL_RED = 0x1903\nconst val GL_GREEN = 0x1904\nconst val GL_BLUE = 0x1905\nconst val GL_ALPHA = 0x1906\nconst val GL_RGB = 0x1907\nconst val GL_RGBA = 0x1908\nconst val GL_LUMINANCE = 0x1909\nconst val GL_LUMINANCE_ALPHA = 0x190A\nconst val GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nconst val GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nconst val GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nconst val GL_FRAGMENT_SHADER = 0x8B30\nconst val GL_VERTEX_SHADER = 0x8B31\nconst val GL_MAX_VERTEX_ATTRIBS = 0x8869\nconst val GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nconst val GL_MAX_VARYING_VECTORS = 0x8DFC\nconst val GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nconst val GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nconst val GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nconst val GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nconst val GL_SHADER_TYPE = 0x8B4F\nconst val GL_DELETE_STATUS = 0x8B80\nconst val GL_LINK_STATUS = 0x8B82\nconst val GL_VALIDATE_STATUS = 0x8B83\nconst val GL_ATTACHED_SHADERS = 0x8B85\nconst val GL_ACTIVE_UNIFORMS = 0x8B86\nconst val GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87\nconst val GL_ACTIVE_ATTRIBUTES = 0x8B89\nconst val GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A\nconst val GL_SHADING_LANGUAGE_VERSION = 0x8B8C\nconst val GL_CURRENT_PROGRAM = 0x8B8D\nconst val GL_NEVER = 0x0200\nconst val GL_LESS = 0x0201\nconst val GL_EQUAL = 0x0202\nconst val GL_LEQUAL = 0x0203\nconst val GL_GREATER = 0x0204\nconst val GL_NOTEQUAL = 0x0205\nconst val GL_GEQUAL = 0x0206\nconst val GL_ALWAYS = 0x0207\nconst val GL_KEEP = 0x1E00\nconst val GL_REPLACE = 0x1E01\nconst val GL_INCR = 0x1E02\nconst val GL_DECR = 0x1E03\nconst val GL_INVERT = 0x150A\nconst val GL_INCR_WRAP = 0x8507\nconst val GL_DECR_WRAP = 0x8508\nconst val GL_VENDOR = 0x1F00\nconst val GL_RENDERER = 0x1F01\nconst val GL_VERSION = 0x1F02\nconst val GL_EXTENSIONS = 0x1F03\nconst val GL_NEAREST = 0x2600\nconst val GL_LINEAR = 0x2601\nconst val GL_NEAREST_MIPMAP_NEAREST = 0x2700\nconst val GL_LINEAR_MIPMAP_NEAREST = 0x2701\nconst val GL_NEAREST_MIPMAP_LINEAR = 0x2702\nconst val GL_LINEAR_MIPMAP_LINEAR = 0x2703\nconst val GL_TEXTURE_MAG_FILTER = 0x2800\nconst val GL_TEXTURE_MIN_FILTER = 0x2801\nconst val GL_TEXTURE_WRAP_S = 0x2802\nconst val GL_TEXTURE_WRAP_T = 0x2803\nconst val GL_TEXTURE = 0x1702\nconst val GL_TEXTURE_CUBE_MAP = 0x8513\nconst val GL_TEXTURE_BINDING_CUBE_MAP = 0x8514\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A\nconst val GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nconst val GL_TEXTURE0 = 0x84C0\nconst val GL_TEXTURE1 = 0x84C1\nconst val GL_TEXTURE2 = 0x84C2\nconst val GL_TEXTURE3 = 0x84C3\nconst val GL_TEXTURE4 = 0x84C4\nconst val GL_TEXTURE5 = 0x84C5\nconst val GL_TEXTURE6 = 0x84C6\nconst val GL_TEXTURE7 = 0x84C7\nconst val GL_TEXTURE8 = 0x84C8\nconst val GL_TEXTURE9 = 0x84C9\nconst val GL_TEXTURE10 = 0x84CA\nconst val GL_TEXTURE11 = 0x84CB\nconst val GL_TEXTURE12 = 0x84CC\nconst val GL_TEXTURE13 = 0x84CD\nconst val GL_TEXTURE14 = 0x84CE\nconst val GL_TEXTURE15 = 0x84CF\nconst val GL_TEXTURE16 = 0x84D0\nconst val GL_TEXTURE17 = 0x84D1\nconst val GL_TEXTURE18 = 0x84D2\nconst val GL_TEXTURE19 = 0x84D3\nconst val GL_TEXTURE20 = 0x84D4\nconst val GL_TEXTURE21 = 0x84D5\nconst val GL_TEXTURE22 = 0x84D6\nconst val GL_TEXTURE23 = 0x84D7\nconst val GL_TEXTURE24 = 0x84D8\nconst val GL_TEXTURE25 = 0x84D9\nconst val GL_TEXTURE26 = 0x84DA\nconst val GL_TEXTURE27 = 0x84DB\nconst val GL_TEXTURE28 = 0x84DC\nconst val GL_TEXTURE29 = 0x84DD\nconst val GL_TEXTURE30 = 0x84DE\nconst val GL_TEXTURE31 = 0x84DF\nconst val GL_REPEAT = 0x2901\nconst val GL_CLAMP_TO_EDGE = 0x812F\nconst val GL_MIRRORED_REPEAT = 0x8370\nconst val GL_FLOAT_VEC2 = 0x8B50\nconst val GL_FLOAT_VEC3 = 0x8B51\nconst val GL_FLOAT_VEC4 = 0x8B52\nconst val GL_INT_VEC2 = 0x8B53\nconst val GL_INT_VEC3 = 0x8B54\nconst val GL_INT_VEC4 = 0x8B55\nconst val GL_BOOL = 0x8B56\nconst val GL_BOOL_VEC2 = 0x8B57\nconst val GL_BOOL_VEC3 = 0x8B58\nconst val GL_BOOL_VEC4 = 0x8B59\nconst val GL_FLOAT_MAT2 = 0x8B5A\nconst val GL_FLOAT_MAT3 = 0x8B5B\nconst val GL_FLOAT_MAT4 = 0x8B5C\nconst val GL_SAMPLER_2D = 0x8B5E\nconst val GL_SAMPLER_CUBE = 0x8B60\nconst val GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622\nconst val GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623\nconst val GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624\nconst val GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625\nconst val GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A\nconst val GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645\nconst val GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F\nconst val GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A\nconst val GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B\nconst val GL_COMPILE_STATUS = 0x8B81\nconst val GL_INFO_LOG_LENGTH = 0x8B84\nconst val GL_SHADER_SOURCE_LENGTH = 0x8B88\nconst val GL_SHADER_COMPILER = 0x8DFA\nconst val GL_SHADER_BINARY_FORMATS = 0x8DF8\nconst val GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9\nconst val GL_LOW_FLOAT = 0x8DF0\nconst val GL_MEDIUM_FLOAT = 0x8DF1\nconst val GL_HIGH_FLOAT = 0x8DF2\nconst val GL_LOW_INT = 0x8DF3\nconst val GL_MEDIUM_INT = 0x8DF4\nconst val GL_HIGH_INT = 0x8DF5\nconst val GL_FRAMEBUFFER = 0x8D40\nconst val GL_RENDERBUFFER = 0x8D41\nconst val GL_RGBA4 = 0x8056\nconst val GL_RGBA8 = 0x8058\nconst val GL_BGR = 0x80e0\nconst val GL_BGRA = 0x80e1\nconst val GL_RGB5_A1 = 0x8057\nconst val GL_RGB565 = 0x8D62\nconst val GL_DEPTH_COMPONENT16 = 0x81A5\nconst val GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nconst val GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nconst val GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nconst val GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB\nconst val GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC\nconst val GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\nconst val GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56\nconst val GL_FRAMEBUFFER_UNDEFINED = 0x8219\nconst val GL_COLOR_ATTACHMENT0 = 0x8CE0\nconst val GL_COLOR_ATTACHMENT1 = 0x8CE1\nconst val GL_COLOR_ATTACHMENT2 = 0x8CE2\nconst val GL_COLOR_ATTACHMENT3 = 0x8CE3\nconst val GL_COLOR_ATTACHMENT4 = 0x8CE4\nconst val GL_COLOR_ATTACHMENT5 = 0x8CE5\nconst val GL_COLOR_ATTACHMENT6 = 0x8CE6\nconst val GL_COLOR_ATTACHMENT7 = 0x8CE7\nconst val GL_COLOR_ATTACHMENT8 = 0x8CE8\nconst val GL_COLOR_ATTACHMENT9 = 0x8CE9\nconst val GL_COLOR_ATTACHMENT10 = 0x8CEA\nconst val GL_COLOR_ATTACHMENT11 = 0x8CEB\nconst val GL_COLOR_ATTACHMENT12 = 0x8CEC\nconst val GL_COLOR_ATTACHMENT13 = 0x8CED\nconst val GL_COLOR_ATTACHMENT14 = 0x8CEE\nconst val GL_COLOR_ATTACHMENT15 = 0x8CEF\nconst val GL_COLOR_ATTACHMENT16 = 0x8CF0\nconst val GL_COLOR_ATTACHMENT17 = 0x8CF1\nconst val GL_COLOR_ATTACHMENT18 = 0x8CF2\nconst val GL_COLOR_ATTACHMENT19 = 0x8CF3\nconst val GL_COLOR_ATTACHMENT20 = 0x8CF4\nconst val GL_COLOR_ATTACHMENT21 = 0x8CF5\nconst val GL_COLOR_ATTACHMENT22 = 0x8CF6\nconst val GL_COLOR_ATTACHMENT23 = 0x8CF7\nconst val GL_COLOR_ATTACHMENT24 = 0x8CF8\nconst val GL_COLOR_ATTACHMENT25 = 0x8CF9\nconst val GL_COLOR_ATTACHMENT26 = 0x8CFA\nconst val GL_COLOR_ATTACHMENT27 = 0x8CFB\nconst val GL_COLOR_ATTACHMENT28 = 0x8CFC\nconst val GL_COLOR_ATTACHMENT29 = 0x8CFD\nconst val GL_COLOR_ATTACHMENT30 = 0x8CFE\nconst val GL_COLOR_ATTACHMENT31 = 0x8CFF\nconst val GL_DEPTH_ATTACHMENT = 0x8D00\nconst val GL_STENCIL_ATTACHMENT = 0x8D20\nconst val GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\nconst val GL_R8 = 0x8229\nconst val GL_R16 = 0x822A\nconst val GL_RG8 = 0x822B\nconst val GL_RG16 = 0x822C\nconst val GL_R16F = 0x822D\nconst val GL_R32F = 0x822E\nconst val GL_RG16F = 0x822F\nconst val GL_RG32F = 0x8230\nconst val GL_R8I = 0x8231\nconst val GL_R8UI = 0x8232\nconst val GL_R16I = 0x8233\nconst val GL_R16UI = 0x8234\nconst val GL_R32I = 0x8235\nconst val GL_R32UI = 0x8236\nconst val GL_RG8I = 0x8237\nconst val GL_RG8UI = 0x8238\nconst val GL_RG16I = 0x8239\nconst val GL_RG16UI = 0x823A\nconst val GL_RG32I = 0x823B\nconst val GL_RG32UI = 0x823C\nconst val GL_RG = 0x8227\nconst val GL_COMPRESSED_RED = 0x8225\nconst val GL_COMPRESSED_RG = 0x8226\n\ninterface Kgl {\n abstract val hasMaliOOMBug: Boolean\n \n fun createShader(type: Int): KglShader\n fun shaderSource(shader: KglShader, source: String)\n fun compileShader(shader: KglShader)\n fun deleteShader(shader: KglShader)\n\n fun getShaderParameteri(shader: KglShader, pname: Int): Int\n\n fun getProgramInfoLog(program: KglProgram) : String\n fun getShaderInfoLog(shader: KglShader) : String\n\n fun createProgram(): KglProgram\n fun attachShader(program: KglProgram, shader: KglShader)\n fun linkProgram(program: KglProgram)\n fun useProgram(program: KglProgram)\n fun deleteProgram(program: KglProgram)\n\n fun getProgramParameteri(program: KglProgram, pname: Int): Int\n\n fun getUniformLocation(program: KglProgram, name: String): KglUniformLocation\n fun bindAttribLocation(program: KglProgram, index: Int, name: String)\n\n fun enable(cap: Int)\n fun disable(cap: Int)\n\n fun enableVertexAttribArray(location: Int)\n fun disableVertexAttribArray(location: Int)\n\n fun getParameteri(pname: Int): Int\n fun getParameterf(pname: Int): Float\n fun getParameteriv(pname: Int): IntArray\n fun getParameterfv(pname: Int): FloatArray\n\n fun createBuffer(): KglBuffer\n fun bindBuffer(target: Int, buffer: KglBuffer)\n fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int = 0)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray)\n fun deleteBuffer(buffer: KglBuffer)\n\n fun vertexAttribPointer(location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n\n fun uniform1f(location: KglUniformLocation, f: Float)\n fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform1i(location: KglUniformLocation, i: Int)\n\n fun uniform2f(location: KglUniformLocation, x: Float, y: Float)\n fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform2i(location: KglUniformLocation, x: Int, y: Int)\n\n fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float)\n fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int)\n\n fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int)\n\n fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n\n fun cullFace(mode: Int)\n fun frontFace (mode: Int)\n\n fun polygonOffset(factor: Float, units: Float)\n\n fun depthFunc(func: Int)\n fun depthMask(mask: Boolean)\n\n fun blendFunc(sFactor: Int, dFactor: Int)\n\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n fun clearColor(r: Float, g: Float, b: Float, a: Float)\n fun clear(mask: Int)\n\n fun createTexture(): KglTexture\n fun deleteTexture(texture: KglTexture)\n fun texImage2D(target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?)\n fun activeTexture(texture: Int)\n fun bindTexture(target: Int, texture: KglTexture)\n fun generateMipmap(target: Int)\n fun texParameteri(target: Int, pname: Int, value: Int)\n\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n\n fun getError(): Int\n fun finish()\n\n fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer)\n fun createFramebuffer(): KglFramebuffer\n fun deleteFramebuffer(framebuffer: KglFramebuffer)\n fun checkFramebufferStatus(target: Int): Int\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int)\n\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray)\n fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean)\n fun lineWidth(width: Float)\n fun pixelStorei(pname: Int, param: Int)\n}\n","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.TriangleShaderProgram\n\nopen class DrawShapeState internal constructor() {\n companion object {\n const val MAX_DRAW_ELEMENTS = 4\n }\n\n var program: TriangleShaderProgram? = null\n var vertexBuffer: FloatBufferObject? = null\n var elementBuffer: AbstractBufferObject? = null\n val vertexOrigin = Vec3()\n var vertexStride = 0\n var enableCullFace = true\n var enableDepthTest = true\n var enableDepthWrite = true\n var depthOffset = 0.0\n var isLine = false\n protected val color = Color()\n protected var opacity = 1.0f\n protected var lineWidth = 1f\n protected var texture: Texture? = null\n protected val texCoordMatrix = Matrix3()\n private val texCoordAttrib = VertexAttrib()\n internal var primCount = 0\n internal val prims = Array(MAX_DRAW_ELEMENTS) { DrawElements() }\n\n open fun reset() {\n program = null\n vertexBuffer = null\n elementBuffer = null\n vertexOrigin.set(0.0, 0.0, 0.0)\n vertexStride = 0\n enableCullFace = true\n enableDepthTest = true\n isLine = false\n depthOffset = 0.0\n color.set(1f, 1f, 1f, 1f)\n opacity = 1.0f\n lineWidth = 1f\n texture = null\n texCoordMatrix.setToIdentity()\n texCoordAttrib.size = 0\n texCoordAttrib.offset = 0\n primCount = 0\n for (idx in 0 until MAX_DRAW_ELEMENTS) prims[idx].texture = null\n }\n\n fun color(color: Color) = apply { this.color.copy(color) }\n\n fun opacity(opacity: Float) = apply { this.opacity = opacity }\n\n fun lineWidth(width: Float) = apply { lineWidth = width }\n\n fun texture(texture: Texture?) = apply { this.texture = texture }\n\n fun texCoordMatrix(matrix: Matrix3) = apply { texCoordMatrix.copy(matrix) }\n\n fun texCoordAttrib(size: Int, offset: Int) = apply {\n texCoordAttrib.size = size\n texCoordAttrib.offset = offset\n }\n\n open fun drawElements(mode: Int, count: Int, type: Int, offset: Int) {\n val prim = prims[primCount++]\n prim.mode = mode\n prim.count = count\n prim.type = type\n prim.offset = offset\n prim.color.copy(color)\n prim.opacity = opacity\n prim.lineWidth = lineWidth\n prim.texture = texture\n prim.texCoordMatrix.copy(texCoordMatrix)\n prim.texCoordAttrib.size = texCoordAttrib.size\n prim.texCoordAttrib.offset = texCoordAttrib.offset\n }\n\n internal open class DrawElements {\n var mode = 0\n var count = 0\n var type = 0\n var offset = 0\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 0f\n var texture: Texture? = null\n val texCoordMatrix = Matrix3()\n val texCoordAttrib = VertexAttrib()\n }\n\n internal open class VertexAttrib {\n var size = 0\n var offset = 0\n }\n}","package earth.worldwind.draw\n\n/**\n * Drawable group provides a standard set of group IDs for organizing WorldWindow drawing into four phases:\n * background, surface, shape, and screen.\n * Accepted values are [BACKGROUND], [SURFACE], [SHAPE] and [SCREEN].\n */\nenum class DrawableGroup {\n /**\n * Indicating drawables displayed before everything else. This group is typically\n * used to display atmosphere and stars before all other drawables.\n */\n BACKGROUND,\n /**\n * Indicating drawables displayed on the globe's surface. Surface drawables are\n * displayed beneath shapes and screen drawables.\n */\n SURFACE,\n /**\n * Indicating shape drawables, such as placemarks, polygons and polylines. Shape\n * drawables are displayed on top of surface drawables, but beneath screen drawables.\n */\n SHAPE,\n /**\n * Indicating drawables displayed in the plane of the screen. Screen drawables are\n * displayed on top of everything else.\n */\n SCREEN;\n}","package earth.worldwind.draw\n\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.layer.heatmap.ElevationHeatmapProgram\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableHeatmap protected constructor(): Drawable {\n val heightLimits = FloatArray(2)\n val colors = Array(5) { Color() }\n var opacity = 1.0f\n var offset = Globe.Offset.Center\n var program: ElevationHeatmapProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableHeatmap {\n val instance = pool.acquire() ?: DrawableHeatmap()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n try {\n dc.gl.enableVertexAttribArray(1)\n\n program.setLimits(heightLimits)\n program.setColors(colors)\n program.setOpacity(opacity)\n\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n if (terrain.offset != offset) continue\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexHeightsAttrib(dc, 1 /*vertexHeights*/)\n ) {\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n } else continue // terrain vertex attribute failed to bind\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n dc.gl.disableVertexAttribArray(1)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_UNSIGNED_INT\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableLines protected constructor(): Drawable {\n /**\n * Leader line vertex array. Initially sized to store two xyz points.\n */\n var vertexPoints = FloatArray(40)\n val mvpMatrix = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 1f\n var enableDepthTest = true\n var program: TriangleShaderProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableLines {\n val instance = pool.acquire() ?: DrawableLines()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n /**\n * Performs the actual rendering of the Placemark.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.rectangleElementsBuffer.bindBuffer(dc)) return // element buffer failed to bind\n val offset = dc.bindBufferPool(vertexPoints)\n if (offset < 0) return // vertex buffer unspecified or failed to bind\n\n // Disable texturing.\n program.enableTexture(false)\n\n // Ensure program is in triangles mode\n program.enableOneVertexMode(false)\n\n // Use the leader's color.\n program.loadColor(color)\n\n // Use the leader's opacity.\n program.loadOpacity(opacity)\n\n // Use the leader's modelview-projection matrix.\n program.loadModelviewProjection(mvpMatrix)\n\n // Use render target dimensions\n program.loadScreen(dc.viewport.width.toFloat(), dc.viewport.height.toFloat())\n\n // Use the leader's line width in screen pixels.\n program.loadLineWidth(lineWidth)\n\n // Disable depth testing if requested.\n if (!enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the leader line as the vertex point attribute.\n dc.gl.enableVertexAttribArray(1 /*value*/)\n dc.gl.enableVertexAttribArray(2 /*value*/)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.vertexAttribPointer(0 /*pointA*/, 4, GL_FLOAT, false, 20, offset + 0)\n dc.gl.vertexAttribPointer(1 /*pointB*/, 4, GL_FLOAT, false, 20, offset + 40)\n dc.gl.vertexAttribPointer(2 /*pointC*/, 4, GL_FLOAT, false, 20, offset + 80)\n\n // Draw the leader line.\n dc.gl.drawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0)\n\n // Restore the default WorldWind OpenGL state.\n if (!enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n\n dc.gl.disableVertexAttribArray(1 /*value*/)\n dc.gl.disableVertexAttribArray(2 /*value*/)\n }\n}","package earth.worldwind.draw\n\nimport kotlin.math.max\n\nopen class DrawableQueue internal constructor(){\n protected var size = 0\n protected var position = 0\n protected var entries = arrayOfNulls(size)\n val count get() = size\n /**\n * Sorts drawables by ascending group ID, then ascending order, then by ascending ordinal.\n */\n protected open val sortComparator = Comparator { lhs, rhs ->\n // Comparator accepts only non-null Entries\n var result = lhs!!.groupId.compareTo(rhs!!.groupId)\n if (result == 0) result = lhs.order.compareTo(rhs.order)\n if (result == 0) result = lhs.ordinal.compareTo(rhs.ordinal)\n result\n }\n\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, depth: Double) {\n val capacity = entries.size\n if (capacity == size) {\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries)\n entries = newEntries\n }\n val entry = entries[size] ?: Entry().also { entries[size] = it }\n entry.set(drawable, groupId, depth, size++)\n }\n\n fun getDrawable(index: Int) = if (index < size) entries[index]?.drawable else null\n\n fun peekDrawable() = getDrawable(position)\n\n fun pollDrawable() = getDrawable(position++)\n\n fun rewindDrawables() { position = 0 }\n\n fun sortDrawables() {\n // Limit sort to non-null Entries only\n entries.sortWith(sortComparator, 0, size)\n position = 0\n }\n\n fun clearDrawables() {\n for (idx in 0 until size) {\n entries[idx]?.recycle()\n }\n size = 0\n position = 0\n }\n\n protected open class Entry {\n var drawable: Drawable? = null\n var groupId = DrawableGroup.BACKGROUND\n var order = 0.0\n var ordinal = 0\n\n fun set(drawable: Drawable, groupId: DrawableGroup, order: Double, ordinal: Int) {\n this.drawable = drawable\n this.groupId = groupId\n this.order = order\n this.ordinal = ordinal\n }\n\n fun recycle() {\n drawable?.recycle()\n drawable = null\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableScreenTexture protected constructor(): Drawable {\n val unitSquareTransform = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n var texture: Texture? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableScreenTexture {\n val instance = pool.acquire() ?: DrawableScreenTexture()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n texture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.unitSquareBuffer.bindBuffer(dc)) return // vertex buffer failed to bind\n\n // Use the draw context's pick mode and use the drawable's color.\n program.enablePickMode(dc.isPickMode)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Disable writing to the depth buffer.\n dc.gl.depthMask(false)\n\n // Use a unit square as the vertex point and vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 2, GL_FLOAT, false, 0, 0)\n dc.gl.vertexAttribPointer(1 /*vertexTexCoord*/, 2, GL_FLOAT, false, 0, 0)\n\n // Draw this DrawableScreenTextures.\n doDraw(dc, this)\n\n // Draw all DrawableScreenTextures adjacent in the queue that share the same GLSL program.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n val drawable = dc.pollDrawable() as DrawableScreenTexture // take it off the queue\n doDraw(dc, drawable)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n\n protected open fun doDraw(dc: DrawContext, drawable: DrawableScreenTexture) {\n val program = drawable.program ?: return\n\n // Use the drawable's color.\n program.loadColor(drawable.color)\n program.loadOpacity(drawable.opacity)\n\n // Attempt to bind the drawable's texture, configuring the shader program appropriately if there is no texture\n // or if the texture failed to bind.\n val texture = drawable.texture\n if (texture?.bindTexture(dc) == true) {\n program.enableTexture(true)\n program.loadTexCoordMatrix(texture.coordTransform)\n } else {\n program.enableTexture(false)\n }\n\n // Use a modelview-projection matrix that transforms the unit square to screen coordinates.\n drawable.mvpMatrix.setToMultiply(dc.screenProjection, drawable.unitSquareTransform)\n program.loadModelviewProjection(drawable.mvpMatrix)\n\n // Disable depth testing if requested.\n if (!drawable.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Draw the unit square as triangles.\n dc.gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4)\n\n // Restore the default WorldWind OpenGL state.\n if (!drawable.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableScreenTexture && program === that.program\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_CULL_FACE\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableShape protected constructor(): Drawable {\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableShape {\n val instance = pool.acquire() ?: DrawableShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n // TODO shape batching\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (drawState.vertexBuffer?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n if (drawState.elementBuffer?.bindBuffer(dc) != true) return // element buffer unspecified or failed to bind\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Use the draw context's modelview projection matrix, transformed to shape local coordinates.\n if (drawState.depthOffset != 0.0) {\n mvpMatrix.copy(dc.projection).offsetProjectionDepth(drawState.depthOffset)\n mvpMatrix.multiplyByMatrix(dc.modelview)\n } else {\n mvpMatrix.copy(dc.modelviewProjection)\n }\n mvpMatrix.multiplyByTranslation(\n drawState.vertexOrigin.x,\n drawState.vertexOrigin.y,\n drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable triangle back face culling if requested.\n if (!drawState.enableCullFace) dc.gl.disable(GL_CULL_FACE)\n\n // Disable depth testing if requested.\n if (!drawState.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Disable depth writing if requested.\n if (!drawState.enableDepthWrite) dc.gl.depthMask(false)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(3 /*vertexTexCoord*/)\n\n if (drawState.isLine) {\n program.enableOneVertexMode(false)\n program.loadScreen(dc.viewport.width.toFloat(), dc.viewport.height.toFloat())\n dc.gl.vertexAttribPointer(0 /*pointA*/, 4, GL_FLOAT, false, 20, 0)\n dc.gl.vertexAttribPointer(1 /*pointB*/, 4, GL_FLOAT, false, 20, 40)\n dc.gl.vertexAttribPointer(2 /*pointC*/, 4, GL_FLOAT, false, 20, 80)\n dc.gl.vertexAttribPointer(3 /*texCoord*/, 1, GL_FLOAT, false, 20, 56)\n } else {\n program.enableOneVertexMode(true)\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(1 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(2 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0)\n }\n // Draw the specified primitives.\n for (idx in 0 until drawState.primCount) {\n val prim = drawState.prims[idx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n if (drawState.isLine) {\n program.loadLineWidth(prim.lineWidth)\n } else {\n dc.gl.vertexAttribPointer(\n 3 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n }\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Restore the default WorldWind OpenGL state.\n if (!drawState.enableCullFace) dc.gl.enable(GL_CULL_FACE)\n if (!drawState.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n if (!drawState.enableDepthWrite) dc.gl.depthMask(true)\n dc.gl.lineWidth(1f)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(3 /*vertexTexCoord*/)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSightline protected constructor(): Drawable {\n val centerTransform = Matrix4()\n var range = 0f\n val visibleColor = Color(0f, 0f, 0f, 0f)\n val occludedColor = Color(0f, 0f, 0f, 0f)\n var program: SightlineProgram? = null\n private var pool: Pool? = null\n private val sightlineView = Matrix4()\n private val matrix = Matrix4()\n private val cubeMapProjection = Matrix4()\n private val cubeMapFace = arrayOf(\n Matrix4().setToRotation(0.0, 0.0, 1.0, NEG90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // positive X\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative X\n Matrix4().setToRotation(1.0, 0.0, 0.0, POS90), // positive Y\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS180).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative Y\n /*Matrix4().setToRotation(1.0, 0.0, 0.0, POS180),*/ // positive Z, intentionally omitted as terrain is never visible when looking up\n Matrix4() // negative Z\n )\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSightline {\n val instance = pool.acquire() ?: DrawableSightline()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n visibleColor.set(0f, 0f, 0f, 0f)\n occludedColor.set(0f, 0f, 0f, 0f)\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the drawable's color.\n program.loadRange(range)\n program.loadColor(visibleColor, occludedColor)\n\n // Configure the cube map projection matrix to capture one face of the cube map as far as the sightline's range.\n cubeMapProjection.setToPerspectiveProjection(1, 1, POS90, 1.0, range.toDouble())\n\n // TODO accumulate only the visible terrain, which can be used in both passes\n // TODO give terrain a bounding box, test with a frustum set using depthviewProjection\n for (i in cubeMapFace.indices) {\n sightlineView.copy(centerTransform)\n sightlineView.multiplyByMatrix(cubeMapFace[i])\n sightlineView.invertOrthonormal()\n if (drawSceneDepth(dc)) drawSceneOcclusion(dc)\n }\n }\n\n protected open fun drawSceneDepth(dc: DrawContext): Boolean {\n val program = program ?: return false\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return false // framebuffer failed to bind\n\n // Clear the framebuffer.\n val depthTexture = framebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n dc.gl.viewport(0, 0, depthTexture.width, depthTexture.height)\n dc.gl.clear(GL_DEPTH_BUFFER_BIT)\n\n // Draw only depth values offset slightly away from the viewer.\n dc.gl.colorMask(r = false, g = false, b = false, a = false)\n dc.gl.enable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(4f, 4f)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Draw the terrain onto one face of the cube map, from the sightline's point of view.\n matrix.setToMultiply(cubeMapProjection, sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Restore the default World Wind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.colorMask(r = true, g = true, b = true, a = true)\n dc.gl.disable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(0f, 0f)\n }\n return true\n }\n\n protected open fun drawSceneOcclusion(dc: DrawContext) {\n val program = program ?: return\n try {\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n val depthTexture = dc.scratchFramebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n if (!depthTexture.bindTexture(dc)) return // framebuffer texture failed to bind\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n matrix.copy(dc.modelviewProjection)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Map the terrain into one face of the cube map, from the sightline's point of view.\n matrix.copy(sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadSightlineProjection(cubeMapProjection, matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Unbind depth attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.layer.starfield.StarFieldProgram\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_ALIASED_POINT_SIZE_RANGE\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_POINTS\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableStarField protected constructor(): Drawable {\n val matrix = Matrix4()\n var julianDate = 0.0\n var minMagnitude = 0.0f\n var maxMagnitude = 0.0f\n var numStars = 0\n var isShowSun = false\n var sunSize = 0.0f\n var sunTexture: Texture? = null\n var starsPositionsBuffer: FloatBufferObject? = null\n var sunPositionsBuffer: FloatBufferObject? = null\n var program: StarFieldProgram? = null\n private var pool: Pool? = null\n\n companion object {\n var maxGlPointSize = 0f\n\n @JvmStatic\n fun obtain(pool: Pool): DrawableStarField {\n val instance = pool.acquire() ?: DrawableStarField()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n starsPositionsBuffer = null\n sunPositionsBuffer = null\n sunTexture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n try {\n dc.gl.depthMask(false)\n drawStars(dc, program, starsPositionsBuffer)\n if (isShowSun) drawSun(dc, program, sunPositionsBuffer, sunTexture)\n } finally {\n dc.gl.depthMask(true)\n }\n }\n\n protected open fun drawStars(dc: DrawContext, program: StarFieldProgram, buffer: FloatBufferObject?) {\n if (buffer?.bindBuffer(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n // This subtraction does not work properly on the GPU due to precision loss. It must be done on the CPU.\n program.loadModelviewProjection(matrix)\n program.loadNumDays((julianDate - 2451545.0).toFloat())\n program.loadMagnitudeRange(minMagnitude, maxMagnitude)\n program.loadTextureEnabled(false)\n dc.gl.drawArrays(GL_POINTS, 0, numStars)\n }\n\n protected open fun drawSun(\n dc: DrawContext, program: StarFieldProgram, sunBuffer: FloatBufferObject?, sunTexture: Texture?\n ) {\n if (maxGlPointSize == 0f) maxGlPointSize = dc.gl.getParameterfv(GL_ALIASED_POINT_SIZE_RANGE)[1]\n\n if (sunSize > maxGlPointSize) {\n Logger.log(Logger.WARN, \"StarFieldLayer - sunSize is to big, max size allowed is: $maxGlPointSize\")\n }\n\n if (sunBuffer?.bindBuffer(dc) != true) return\n if (sunTexture?.bindTexture(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadTextureEnabled(true)\n dc.gl.drawArrays(GL_POINTS, 0, 1)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceColor protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceColor {\n val instance = pool.acquire() ?: DrawableSurfaceColor()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceShape protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val sector = Sector()\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val textureMvpMatrix = Matrix4()\n private val identityMatrix3 = Matrix3()\n private val color = Color()\n private var opacity = 1.0f\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceShape {\n val instance = pool.acquire() ?: DrawableSurfaceShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(3 /*vertexTexCoord*/)\n\n // Accumulate shapes in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this shape.\n scratchList.add(this)\n\n // Add all shapes that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (next !is DrawableSurfaceShape) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated shapes on each drawable terrain.\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n // Draw the accumulated surface shapes to a texture representing the terrain's sector.\n if (drawShapesToTexture(dc, terrain) > 0) {\n // Draw the texture containing the rasterized shapes onto the terrain geometry.\n drawTextureToTerrain(dc, terrain)\n }\n }\n } finally {\n // Clear the accumulated shapes.\n scratchList.clear()\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(3 /*vertexTexCoord*/)\n }\n }\n\n protected open fun drawShapesToTexture(dc: DrawContext, terrain: DrawableTerrain): Int {\n // Shapes have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n\n // The terrain's sector defines the geographic region in which to draw.\n val terrainSector = terrain.sector\n\n // Keep track of the number of shapes drawn into the texture.\n var shapeCount = 0\n val program = drawState.program ?: return 0\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return 0 // framebuffer failed to bind\n\n // Clear the framebuffer and disable the depth test.\n val colorAttachment = framebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n dc.gl.viewport(0, 0, colorAttachment.width, colorAttachment.height)\n dc.gl.clear(GL_COLOR_BUFFER_BIT)\n dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Compute the tile common matrix that transforms geographic coordinates to texture fragments appropriate\n // for the terrain sector.\n // TODO capture this in a method on Matrix4\n textureMvpMatrix.setToIdentity()\n textureMvpMatrix.multiplyByTranslation(-1.0, -1.0, 0.0)\n textureMvpMatrix.multiplyByScale(\n 2.0 / terrainSector.deltaLongitude.inDegrees,\n 2.0 / terrainSector.deltaLatitude.inDegrees,\n 0.0\n )\n textureMvpMatrix.multiplyByTranslation(\n -terrainSector.minLongitude.inDegrees,\n -terrainSector.minLatitude.inDegrees,\n 0.0\n )\n for (element in scratchList) {\n // Get the shape.\n val shape = element as DrawableSurfaceShape\n if (shape.offset != terrain.offset || !shape.sector.intersectsOrNextTo(terrainSector)) continue\n if (shape.drawState.vertexBuffer?.bindBuffer(dc) != true) continue // vertex buffer unspecified or failed to bind\n if (shape.drawState.elementBuffer?.bindBuffer(dc) != true) continue // element buffer unspecified or failed to bind\n\n // Transform local shape coordinates to texture fragments appropriate for the terrain sector.\n mvpMatrix.copy(textureMvpMatrix)\n mvpMatrix.multiplyByTranslation(\n shape.drawState.vertexOrigin.x,\n shape.drawState.vertexOrigin.y,\n shape.drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n if (shape.drawState.isLine) {\n program.enableOneVertexMode(false)\n program.loadScreen(colorAttachment.width.toFloat(), colorAttachment.height.toFloat())\n\n dc.gl.vertexAttribPointer(0 /*pointA*/, 4, GL_FLOAT, false, 20, 0)\n dc.gl.vertexAttribPointer(1 /*pointB*/, 4, GL_FLOAT, false, 20, 40)\n dc.gl.vertexAttribPointer(2 /*pointC*/, 4, GL_FLOAT, false, 20, 80)\n dc.gl.vertexAttribPointer(3 /*vertexTexCoord*/, 1, GL_FLOAT, false, 20, 56)\n } else {\n program.enableOneVertexMode(true)\n\n // Use the shape's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(1 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(2 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0)\n }\n // Draw the specified primitives to the framebuffer texture.\n for (primIdx in 0 until shape.drawState.primCount) {\n val prim = shape.drawState.prims[primIdx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n if (shape.drawState.isLine) {\n program.loadLineWidth(prim.lineWidth)\n } else {\n dc.gl.vertexAttribPointer(\n 3 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n shape.drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n }\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Accumulate the number of shapes drawn into the texture.\n shapeCount++\n }\n } finally {\n // Restore the default WorldWind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.lineWidth(1f)\n }\n return shapeCount\n }\n\n protected open fun drawTextureToTerrain(dc: DrawContext, terrain: DrawableTerrain) {\n val program = drawState.program ?: return\n try {\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexPointAttrib(dc, 1 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexPointAttrib(dc, 2 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexTexCoordAttrib(dc, 3 /*vertexTexCoord*/)) return // terrain vertex attribute failed to bind\n val colorAttachment = dc.scratchFramebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n if (!colorAttachment.bindTexture(dc)) return // framebuffer texture failed to bind\n\n // Configure the program to draw texture fragments unmodified and aligned with the terrain.\n // TODO consolidate pickMode and enableTexture into a single textureMode\n // TODO it's confusing that pickMode must be disabled during surface shape render-to-texture\n program.enableOneVertexMode(true)\n program.enablePickMode(false)\n program.enableTexture(true)\n program.loadTexCoordMatrix(identityMatrix3)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n } finally {\n // Unbind color attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceTexture protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val textureSector = Sector()\n val terrainSector = Sector()\n val color = Color()\n var opacity = 1.0f\n val texCoordMatrix = Matrix3()\n var texture: Texture? = null\n var program: SurfaceTextureProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceTexture {\n val instance = pool.acquire() ?: DrawableSurfaceTexture()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(\n program: SurfaceTextureProgram?, textureSector: Sector, opacity: Float, texture: Texture,\n texCoordMatrix: Matrix3, offset: Globe.Offset, terrainSector: Sector = textureSector\n ) = apply {\n this.offset = offset\n this.textureSector.copy(textureSector)\n this.terrainSector.copy(terrainSector)\n this.color.set(1f, 1f, 1f, 1f)\n this.opacity = opacity\n this.texCoordMatrix.copy(texCoordMatrix)\n this.texture = texture\n this.program = program\n }\n\n override fun recycle() {\n texture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Accumulate surface textures in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this surface texture.\n scratchList.add(this)\n\n // Add all surface textures that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated surface textures.\n drawSurfaceTextures(dc)\n } finally {\n // Clear the accumulated surface textures.\n scratchList.clear()\n }\n }\n\n protected open fun drawSurfaceTextures(dc: DrawContext) {\n val program = program ?: return // program unspecified\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Enable the program to display surface textures from multi-texture unit 0.\n program.enableTexture(true)\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Surface textures have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainSector = terrain.sector\n val terrainOrigin = terrain.vertexOrigin\n var usingTerrainAttrs = false\n for (element in scratchList) {\n // Get the surface texture and its sector.\n val texture = element as DrawableSurfaceTexture\n val textureSector = texture.textureSector\n if (texture.offset != terrain.offset || !texture.terrainSector.intersects(terrainSector)) continue\n if (!texture.bindTexture(dc)) continue // texture failed to bind\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!usingTerrainAttrs &&\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) {\n // Suppress subsequent tile state application until the next terrain.\n usingTerrainAttrs = true\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n }\n if (!usingTerrainAttrs) continue // terrain vertex attribute failed to bind\n\n // Use tex coord matrices that register the surface texture correctly and mask terrain fragments that\n // fall outside the surface texture's sector.\n program.texCoordMatrix[0].copy(texture.texCoordMatrix)\n program.texCoordMatrix[0].multiplyByTileTransform(terrainSector, textureSector)\n program.texCoordMatrix[1].setToTileTransform(terrainSector, textureSector)\n program.loadTexCoordMatrix()\n\n // Use the surface texture's RGBA color.\n program.loadColor(texture.color)\n\n // Use the surface texture's opacity.\n program.loadOpacity(texture.opacity)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableSurfaceTexture && program === that.program\n\n private fun bindTexture(dc: DrawContext) = texture?.bindTexture(dc) == true\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableTessellation protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val offsetMvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableTessellation {\n val instance = pool.acquire() ?: DrawableTessellation()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(program: BasicShaderProgram, color: Color, opacity: Float) = apply {\n this.program = program\n this.color.copy(color)\n this.opacity = opacity\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Suppress writes to the OpenGL depth buffer.\n dc.gl.depthMask(false)\n\n // Compute the portion of the modelview projection matrix that remains constant for each tile.\n offsetMvpMatrix.copy(dc.projection)\n offsetMvpMatrix.offsetProjectionDepth(-1.0e-3) // offset this layer's depth values toward the eye\n offsetMvpMatrix.multiplyByMatrix(dc.modelview)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(offsetMvpMatrix)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as lines.\n terrain.drawLines(dc)\n }\n\n // Restore default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObject.Companion.fromTerrain\nimport earth.worldwind.PickedObject.Companion.identifierToUniqueColor\nimport earth.worldwind.PickedObject.Companion.uniqueColorToIdentifier\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableSurfaceColor\nimport earth.worldwind.draw.DrawableSurfaceColor.Companion.obtain\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_COLOR_BUFFER_BIT\nimport earth.worldwind.util.kgl.GL_DEPTH_BUFFER_BIT\nimport kotlin.math.roundToInt\n\nopen class BasicFrameController: FrameController {\n override val lastTerrains = mutableMapOf()\n private val pickColor = Color()\n private val pickPoint = Vec3()\n private val pickPos = Position()\n private val boundingBox = BoundingBox()\n private val fullSphere = Sector().setFullSphere()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n override fun renderFrame(rc: RenderContext) {\n if (!rc.isPickMode) lastTerrains.clear()\n if (rc.globe.is2D && rc.globe.isContinuous) {\n // Tessellate and render all visible globe offsets of 2D continuous terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n renderGlobeOffset(rc, Globe.Offset.Right)\n renderGlobeOffset(rc, Globe.Offset.Left)\n // Reset globe offset for correct projection calculations after frame rendered\n rc.globe.offset = Globe.Offset.Center\n } else {\n // Tessellate and render single 3D terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n }\n rc.sortDrawables()\n }\n\n protected open fun renderGlobeOffset(rc: RenderContext, globeOffset: Globe.Offset) {\n rc.globe.offset = globeOffset\n\n // Check if 2D globe offset intersects current frustum\n if (rc.globe.is2D && !boundingBox.setToSector(fullSphere, rc.globe, 0f, 0f).intersectsFrustum(rc.frustum)) return\n\n // Prepare terrain for specified globe offset\n rc.terrain = rc.terrainTessellator.tessellate(rc)\n\n // Compute viewing distance and pixel size based on available terrain\n if (!rc.globe.is2D) adjustViewingParameters(rc)\n\n // Render the terrain picked object or remember the last terrain for future intersect operations\n if (rc.isPickMode) renderTerrainPickedObject(rc) else lastTerrains[globeOffset] = rc.terrain\n\n // Render all layers on specified globe offset\n rc.layers.render(rc)\n }\n\n protected open fun adjustViewingParameters(rc: RenderContext) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (rc.terrain.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = rc.globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n protected open fun renderTerrainPickedObject(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to pick\n\n // Acquire a unique picked object ID for terrain.\n val pickedObjectId = rc.nextPickedObjectId()\n\n // Enqueue a drawable for processing on the OpenGL thread that displays terrain in the unique pick color.\n val pool = rc.getDrawablePool()\n val drawable = obtain(pool)\n identifierToUniqueColor(pickedObjectId, drawable.color)\n drawable.opacity = 1.0f // Just to be sure to reset opacity\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n rc.offerSurfaceDrawable(drawable, Double.NEGATIVE_INFINITY)\n\n // If the pick ray intersects the terrain, enqueue a picked object that associates the terrain drawable with its\n // picked object ID and the intersection position.\n val pickRay = rc.pickRay\n if (pickRay != null && rc.terrain.intersect(pickRay, pickPoint)) {\n rc.globe.cartesianToGeographic(pickPoint.x, pickPoint.y, pickPoint.z, pickPos)\n rc.offerPickedObject(fromTerrain(pickedObjectId, pickPos))\n }\n }\n\n override fun drawFrame(dc: DrawContext) {\n clearFrame(dc)\n drawDrawables(dc)\n if (dc.isPickMode) resolvePick(dc)\n }\n\n protected open fun clearFrame(dc: DrawContext) {\n dc.gl.clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)\n }\n\n protected open fun drawDrawables(dc: DrawContext) {\n dc.rewindDrawables()\n while (true) {\n val next = dc.pollDrawable() ?: break\n try {\n next.draw(dc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"BasicFrameController\", \"drawDrawables\",\n \"Exception while drawing '$next'\", e\n )\n // Keep going. Draw the remaining drawables.\n }\n }\n }\n\n protected open fun resolvePick(dc: DrawContext) {\n val pickedObjects = dc.pickedObjects ?: return\n if (pickedObjects.count == 0) return // no eligible objects; avoid expensive calls to glReadPixels\n val pickViewport = dc.pickViewport ?: return\n val pickPointOnly = dc.pickPoint != null && pickViewport.width <= 3 && pickViewport.height <= 3\n var objectFound = false\n\n dc.pickPoint?.let { pickPoint ->\n // Read the fragment color at the pick point.\n dc.readPixelColor(pickPoint.x.roundToInt(), pickPoint.y.roundToInt(), pickColor)\n\n // Convert the fragment color to a picked object ID. It returns zero if the color cannot indicate a picked\n // object ID, in which case no objects have been drawn at the pick point.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject != null) {\n if (!topObject.isTerrain) objectFound = true // Non-terrain object found in pick point\n if (pickPointOnly || objectFound) {\n topObject.markOnTop()\n // Remove picked objects except top and terrain in case of object found or point only mode\n // Using clearPickedObjects and two offerPickedObject is faster than keepTopAndTerrainObjects\n val terrainObject = pickedObjects.terrainPickedObject\n pickedObjects.clearPickedObjects()\n pickedObjects.offerPickedObject(topObject)\n // handles null objects and duplicate objects\n if (terrainObject != null) pickedObjects.offerPickedObject(terrainObject)\n }\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no eligible objects drawn at the pick point\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no objects drawn at the pick point\n }\n\n if (!pickPointOnly && !objectFound) {\n // Read the unique fragment colors in the pick rectangle.\n dc.readPixelColors(pickViewport.x, pickViewport.y, pickViewport.width, pickViewport.height).forEach { pickColor ->\n // Convert the fragment color to a picked object ID. This returns zero if the color cannot indicate a picked\n // object ID.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject?.isTerrain == false) topObject.markOnTop()\n }\n }\n }\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.util.Pool\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.jvm.JvmStatic\n\nopen class Frame {\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n// val infiniteProjection = Matrix4()\n val drawableQueue = DrawableQueue()\n val drawableTerrain = DrawableQueue()\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): Frame {\n val instance = pool.acquire() ?: Frame() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n open fun recycle() {\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue.clearDrawables()\n drawableTerrain.clearDrawables()\n pickedObjects?.let { pickDeferred?.complete(it) } // Complete deferred pick if available\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pool?.release(this) // return this instance to the pool\n pool = null\n }\n}","package earth.worldwind.geom\n\n/**\n * Altitude mode indicates how WorldWind interprets a position's altitude component.\n * Accepted values are [ABSOLUTE], [CLAMP_TO_GROUND] and [RELATIVE_TO_GROUND].\n */\nenum class AltitudeMode {\n /**\n * Indicating an altitude relative to the globe's ellipsoid. Ignores the elevation of\n * the terrain directly beneath the position's latitude and longitude.\n */\n ABSOLUTE,\n /**\n * Indicating an altitude on the terrain. Ignores a position's specified altitude, and\n * always places the position on the terrain.\n */\n CLAMP_TO_GROUND,\n /**\n * Indicating an altitude relative to the terrain. The altitude indicates height above\n * the terrain directly beneath the position's latitude and longitude.\n */\n RELATIVE_TO_GROUND;\n}","package earth.worldwind.geom\n\nimport earth.worldwind.globe.Globe\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * Represents a bounding box in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingBox {\n /**\n * The box's center point.\n */\n internal val center = Vec3(0.0, 0.0, 0.0)\n /**\n * The center point of the box's bottom. (The origin of the R axis.)\n */\n protected val bottomCenter = Vec3(-0.5, 0.0, 0.0)\n /**\n * The center point of the box's top. (The end of the R axis.)\n */\n protected val topCenter = Vec3(0.5, 0.0, 0.0)\n /**\n * The box's R axis, its longest axis.\n */\n protected val r = Vec3(1.0, 0.0, 0.0)\n /**\n * The box's S axis, its mid-length axis.\n */\n protected val s = Vec3(0.0, 1.0, 0.0)\n /**\n * The box's T axis, its shortest axis.\n */\n protected val t = Vec3(0.0, 0.0, 1.0)\n /**\n * The box's radius. (The half-length of its diagonal.)\n */\n protected var radius = sqrt(3.0)\n\n private val endPoint1 = Vec3()\n private val endPoint2 = Vec3()\n private val scratchHeights = FloatArray(NUM_LAT * NUM_LON)\n private val scratchPoints = FloatArray(NUM_LAT * NUM_LON * 3)\n private var coherentPlaneIdx = -1\n\n /**\n * Indicates whether this bounding box is a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return true if this bounding box is a unit box, otherwise false\n */\n val isUnitBox get() = center.x == 0.0 && center.y == 0.0 && center.z == 0.0 && radius == sqrt(3.0)\n\n /**\n * Sets this bounding box to a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return This bounding box set to a unit box\n */\n fun setToUnitBox() = apply {\n center.set(0.0, 0.0, 0.0)\n bottomCenter.set(-0.5, 0.0, 0.0)\n topCenter.set(0.5, 0.0, 0.0)\n\n r.set(1.0, 0.0, 0.0)\n s.set(0.0, 1.0, 0.0)\n t.set(0.0, 0.0, 1.0)\n\n radius = sqrt(3.0)\n }\n\n /**\n * Sets this bounding box such that it minimally encloses a specified array of points.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return This bounding box set to contain the specified array of points.\n */\n fun setToPoints(array: FloatArray, count: Int, stride: Int) = apply {\n // Compute this box's axes by performing a principal component analysis on the array of points.\n val matrix = Matrix4()\n matrix.setToCovarianceOfPoints(array, count, stride)\n matrix.extractEigenvectors(r, s, t)\n r.normalize()\n s.normalize()\n t.normalize()\n\n // Find the extremes along each axis.\n var rMin = Double.POSITIVE_INFINITY\n var rMax = Double.NEGATIVE_INFINITY\n var sMin = Double.POSITIVE_INFINITY\n var sMax = Double.NEGATIVE_INFINITY\n var tMin = Double.POSITIVE_INFINITY\n var tMax = Double.NEGATIVE_INFINITY\n\n val p = Vec3()\n for (idx in 0 until count step stride) {\n p.set(array[idx].toDouble(), array[idx + 1].toDouble(), array[idx + 2].toDouble())\n\n val pdr = p.dot(r)\n if (rMin > pdr) rMin = pdr\n if (rMax < pdr) rMax = pdr\n\n val pds = p.dot(s)\n if (sMin > pds) sMin = pds\n if (sMax < pds) sMax = pds\n\n val pdt = p.dot(t)\n if (tMin > pdt) tMin = pdt\n if (tMax < pdt) tMax = pdt\n }\n\n // Ensure that the extremes along each axis have nonzero separation.\n if (rMax == rMin) rMax = rMin + 1\n if (sMax == sMin) sMax = sMin + 1\n if (tMax == tMin) tMax = tMin + 1\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rMax - rMin\n val sLen = sMax - sMin\n val tLen = tMax - tMin\n\n val rSum = rMax + rMin\n val sSum = sMax + sMin\n val tSum = tMax + tMin\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Sets this bounding box such that it contains a specified sector on a specified globe with min and max terrain\n * height.\n *
\n * To create a bounding box that contains the sector at mean sea level, specify zero for the minimum and maximum\n * height. To create a bounding box that contains the terrain surface in this sector, specify the actual minimum and\n * maximum height values associated with the terrain in the sector, multiplied by the scene's vertical\n * exaggeration.\n *
\n *\n * @param sector the sector for which to create the bounding box\n * @param globe the globe associated with the sector\n * @param minHeight the minimum terrain height within the sector\n * @param maxHeight the maximum terrain height within the sector\n *\n * @return this bounding box set to contain the specified sector\n */\n fun setToSector(sector: Sector, globe: Globe, minHeight: Float, maxHeight: Float) = apply {\n // Compute the cartesian points for a 3x3 geographic grid. This grid captures enough detail to bound the\n // sector. Use minimum elevation at the corners and max elevation everywhere else.\n val heights = scratchHeights\n heights.fill(maxHeight)\n heights[0] = minHeight\n heights[2] = minHeight\n heights[6] = minHeight\n heights[8] = minHeight\n val points = scratchPoints\n globe.geographicToCartesianGrid(sector, NUM_LAT, NUM_LON, heights, 1.0f, null, points)\n\n // Compute the local coordinate axes. Since we know this box is bounding a geographic sector, we use the\n // local coordinate axes at its centroid as the box axes. Using these axes results in a box that has +-10%\n // the volume of a box with axes derived from a principal component analysis, but is faster to compute.\n val centroidLat = sector.centroidLatitude\n val centroidLon = sector.centroidLongitude\n val matrix = globe.geographicToCartesianTransform(centroidLat, centroidLon, 0.0, Matrix4())\n val m = matrix.m\n r.set(m[0], m[4], m[8])\n s.set(m[1], m[5], m[9])\n t.set(m[2], m[6], m[10])\n\n // Find the extremes along each axis.\n val rExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val sExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val tExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n\n val p = Vec3()\n for (idx in points.indices step 3) {\n p.set(points[idx].toDouble(), points[idx + 1].toDouble(), points[idx + 2].toDouble())\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, p)\n }\n\n // If the sector encompasses more than one hemisphere, the 3x3 grid does not capture enough detail to bound\n // the sector. The antipodal points along the parallel through the sector's centroid represent its extremes\n // in longitude. Incorporate those antipodal points into the extremes along each axis.\n if (sector.deltaLongitude.inDegrees > 180.0) {\n val altitude = maxHeight.toDouble()\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.plusDegrees(90.0), altitude, endPoint1)\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.minusDegrees(90.0), altitude, endPoint2)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint1)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint2)\n }\n\n // Sort the axes from most prominent to least prominent. The frustum intersection methods assume that the axes\n // are defined in this way.\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n if (sExtremes[1] - sExtremes[0] < tExtremes[1] - tExtremes[0]) swapAxes(s, sExtremes, t, tExtremes)\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rExtremes[1] - rExtremes[0]\n val sLen = sExtremes[1] - sExtremes[0]\n val tLen = tExtremes[1] - tExtremes[0]\n\n val rSum = rExtremes[1] + rExtremes[0]\n val sSum = sExtremes[1] + sExtremes[0]\n val tSum = tExtremes[1] + tExtremes[0]\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Translates this bounding box by specified components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this bounding box translated by the specified components\n */\n fun translate(x: Double, y: Double, z: Double) = apply {\n center.x += x\n center.y += y\n center.z += z\n\n bottomCenter.x += x\n bottomCenter.y += y\n bottomCenter.z += z\n\n topCenter.x += x\n topCenter.y += y\n topCenter.z += z\n }\n\n fun distanceTo(point: Vec3): Double {\n var minDist2 = Double.POSITIVE_INFINITY\n\n // Start with distance to the center of the box.\n var dist2 = center.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the R axis.\n dist2 = bottomCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the R axis.\n dist2 = topCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the S axis.\n endPoint1.x = center.x - 0.5 * s.x\n endPoint1.y = center.y - 0.5 * s.y\n endPoint1.z = center.z - 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the S axis.\n endPoint1.x = center.x + 0.5 * s.x\n endPoint1.y = center.y + 0.5 * s.y\n endPoint1.z = center.z + 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n return sqrt(minDist2)\n }\n\n /**\n * Indicates whether this bounding box intersects a specified frustum.\n *\n * @param frustum The frustum of interest.\n *\n * @return true if the specified frustum intersects this bounding box, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n endPoint1.copy(bottomCenter)\n endPoint2.copy(topCenter)\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { intersectsAt(it) >= 0 } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || intersectsAt(plane) >= 0).also { if (!it) coherentPlaneIdx = idx }\n }\n }\n\n private fun intersectsAt(plane: Plane): Double {\n val n = plane.normal\n val effectiveRadius = 0.5 * (abs(s.dot(n)) + abs(t.dot(n)))\n\n // Test the distance from the first end-point.\n val dq1 = plane.dot(endPoint1)\n val bq1 = dq1 <= -effectiveRadius\n\n // Test the distance from the second end-point.\n val dq2 = plane.dot(endPoint2)\n val bq2 = dq2 <= -effectiveRadius\n if (bq1 && bq2) return -1.0 // endpoints more distant from plane than effective radius; box is on neg. side of plane\n if (bq1 == bq2) return 0.0 // endpoints less distant from plane than effective radius; can't draw any conclusions\n\n // Compute and return the endpoints of the box on the positive side of the plane\n val dot = n.x * (endPoint1.x - endPoint2.x) + n.y * (endPoint1.y - endPoint2.y) + n.z * (endPoint1.z - endPoint2.z)\n val t = (effectiveRadius + dq1) / dot\n\n // Truncate the line to only that in the positive half-space, e.g., inside the frustum.\n val x = (endPoint2.x - endPoint1.x) * t + endPoint1.x\n val y = (endPoint2.y - endPoint1.y) * t + endPoint1.y\n val z = (endPoint2.z - endPoint1.z) * t + endPoint1.z\n if (bq1) endPoint1.set(x, y, z) else endPoint2.set(x, y, z)\n return t\n }\n\n override fun toString() = \"BoundingBox(center=$center, bottomCenter=$bottomCenter, topCenter=$topCenter, r=$r, s=$s, t=$t, radius=$radius)\"\n\n companion object {\n private const val NUM_LAT = 3\n private const val NUM_LON = 3\n\n private fun adjustExtremes(\n r: Vec3, rExtremes: DoubleArray, s: Vec3, sExtremes: DoubleArray, t: Vec3, tExtremes: DoubleArray, p: Vec3\n ) {\n val pdr = p.dot(r)\n if (rExtremes[0] > pdr) rExtremes[0] = pdr\n if (rExtremes[1] < pdr) rExtremes[1] = pdr\n\n val pds = p.dot(s)\n if (sExtremes[0] > pds) sExtremes[0] = pds\n if (sExtremes[1] < pds) sExtremes[1] = pds\n\n val pdt = p.dot(t)\n if (tExtremes[0] > pdt) tExtremes[0] = pdt\n if (tExtremes[1] < pdt) tExtremes[1] = pdt\n }\n\n private fun swapAxes(a: Vec3, aExtremes: DoubleArray, b: Vec3, bExtremes: DoubleArray) {\n a.swap(b)\n\n var tmp = aExtremes[0]\n aExtremes[0] = bExtremes[0]\n bExtremes[0] = tmp\n\n tmp = aExtremes[1]\n aExtremes[1] = bExtremes[1]\n bExtremes[1] = tmp\n }\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a bounding sphere in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingSphere {\n /**\n * The sphere's center point.\n */\n val center = Vec3()\n /**\n * The sphere's radius.\n */\n var radius = 1.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"BoundingSphere\", \"setRadius\", \"invalidRadius\")\n }\n field = value\n }\n private var coherentPlaneIdx = -1\n\n /**\n * Sets this bounding sphere to the specified center point and radius.\n *\n * @param center the new center point\n * @param radius the new radius\n *\n * @return This bounding sphere with its center point and radius set to the specified values\n */\n fun set(center: Vec3, radius: Double) = apply {\n this.center.copy(center)\n this.radius = radius\n }\n\n /**\n * Indicates whether this bounding sphere intersects a specified frustum.\n *\n * @param frustum the frustum of interest\n *\n * @return true if the specified frustum intersects this bounding sphere, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n // See if the extent's bounding sphere is within or intersects the frustum. The dot product of the extent's\n // center point with each plane's vector provides a distance to each plane. If this distance is less than\n // -radius, the extent is completely clipped by that plane and therefore does not intersect the space enclosed\n // by this Frustum.\n val nr = -radius\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { it.distanceToPoint(center) > nr } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || plane.distanceToPoint(center) > nr).also { if (!it) coherentPlaneIdx = idx }\n }\n\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is BoundingSphere) return false\n return center == other.center && radius == other.radius\n }\n\n override fun hashCode(): Int {\n var result = center.hashCode()\n result = 31 * result + radius.hashCode()\n return result\n }\n\n override fun toString() = \"BoundingSphere(center=$center, radius=$radius)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.AltitudeMode.ABSOLUTE\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class Camera {\n val position = Position()\n var altitudeMode = ABSOLUTE\n var heading = ZERO\n var tilt = ZERO\n var roll = ZERO\n var fieldOfView = 45.0.degrees\n set(value) {\n require(value.inDegrees > 0.0 && value.inDegrees < 180.0) {\n logMessage(ERROR, \"Camera\", \"setFieldOfView\", \"invalidFieldOfView\")\n }\n field = value\n }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle, fieldOfView: Angle\n ) = set(latitude, longitude, altitude, altitudeMode, heading, tilt, roll).apply { this.fieldOfView = fieldOfView }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(camera: Camera) = set(\n camera.position.latitude,\n camera.position.longitude,\n camera.position.altitude,\n camera.altitudeMode,\n camera.heading,\n camera.tilt,\n camera.roll,\n camera.fieldOfView\n )\n\n override fun toString() = \"Camera(position=$position, altitudeMode=$altitudeMode, heading=$heading, tilt=$tilt, roll=$roll, fieldOfView=$fieldOfView)\"\n}","package earth.worldwind.geom\n\nimport kotlin.jvm.JvmStatic\n\n/**\n * Oblate ellipsoid with semi-major axis and inverse flattening.\n */\ndata class Ellipsoid(\n /**\n * One half of the ellipsoid's major axis length in meters, which runs through the center to opposite points on the\n * equator.\n */\n val semiMajorAxis: Double,\n /**\n * Measure of the ellipsoid's compression. Indicates how much the ellipsoid's semi-minor axis is compressed relative\n * to the semi-major axis. Expressed as `1/f`, where `f = (a - b) / a`, given the semi-major axis `a` and the semi-minor axis `b`.\n */\n val inverseFlattening: Double\n) {\n /**\n * Computes this ellipsoid's semi-minor length axis in meters. The semi-minor axis is one half of the ellipsoid's\n * minor axis, which runs through the center to opposite points on the poles.\n */\n val semiMinorAxis: Double get() {\n val f = 1 / inverseFlattening\n return semiMajorAxis * (1 - f)\n }\n /**\n * Computes this ellipsoid's eccentricity squared. The returned value is equivalent to `2*f - f*f`,\n * where `f` is this ellipsoid's flattening.\n */\n val eccentricitySquared: Double get() {\n val f = 1 / inverseFlattening\n return 2 * f - f * f\n }\n\n companion object {\n /**\n * WGS 84 reference ellipsoid for Earth. The ellipsoid's semi-major axis and inverse flattening factor are\n * configured according to the WGS 84 reference system (aka WGS 1984, EPSG:4326). WGS 84 reference values taken from\n * [here](http://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf).\n */\n @JvmStatic val WGS84 = Ellipsoid(6378137.0, 298.257223563)\n /**\n * Krasovsky 1940 reference ellipsoid for Earth.\n */\n @JvmStatic val Krasovsky = Ellipsoid(6378245.0, 298.3)\n }\n}","package earth.worldwind.geom\n\n/**\n * Represents a six-sided view frustum in Cartesian coordinates with a corresponding viewport in screen coordinates.\n */\nopen class Frustum {\n internal val left = Plane(1.0, 0.0, 0.0, 1.0)\n internal val right = Plane(-1.0, 0.0, 0.0, 1.0)\n internal val bottom = Plane(0.0, 1.0, 0.0, 1.0)\n internal val top = Plane(0.0, -1.0, 0.0, 1.0)\n internal val near = Plane(0.0, 0.0, -1.0, 1.0)\n internal val far = Plane(0.0, 0.0, 1.0, 1.0)\n internal val viewport = Viewport(0, 0, 1, 1)\n internal val planes = arrayOf(near, far, left, right, top, bottom)\n private val scratchMatrix = Matrix4()\n\n /**\n * Constructs a new unit frustum with each of its planes 1 meter from the center and a viewport with width and\n * height both 1.\n */\n constructor()\n\n /**\n * Constructs a frustum from planes.\n *\n * @param left the frustum's left plane\n * @param right the frustum's right plane\n * @param bottom the frustum's bottom plane\n * @param top the frustum's top plane\n * @param near the frustum's near plane\n * @param far the frustum's far plane\n * @param viewport the frustum's viewport\n */\n constructor(left: Plane, right: Plane, bottom: Plane, top: Plane, near: Plane, far: Plane, viewport: Viewport): this() {\n this.left.copy(left)\n this.right.copy(right)\n this.bottom.copy(bottom)\n this.top.copy(top)\n this.near.copy(near)\n this.far.copy(far)\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to a unit frustum with each of its planes 1 meter from the center a viewport with width and\n * height both 1.\n *\n * @return this frustum, set to a unit frustum\n */\n fun setToUnitFrustum() = apply {\n left.set(1.0, 0.0, 0.0, 1.0)\n right.set(-1.0, 0.0, 0.0, 1.0)\n bottom.set(0.0, 1.0, 0.0, 1.0)\n top.set(0.0, -1.0, 0.0, 1.0)\n near.set(0.0, 0.0, -1.0, 1.0)\n far.set(0.0, 0.0, 1.0, 1.0)\n viewport.set(0, 0, 1, 1)\n }\n\n /**\n * Sets this frustum to one appropriate for a modelview-projection matrix. A modelview-projection matrix's view\n * frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport) = apply {\n // Compute the transpose of the modelview matrix.\n scratchMatrix.transposeMatrix(modelview)\n\n // Get the components of the projection matrix.\n val m = projection.m\n\n // Left Plane = row 4 + row 1:\n var x = m[12] + m[0]\n var y = m[13] + m[1]\n var z = m[14] + m[2]\n var w = m[15] + m[3]\n left.set(x, y, z, w) // normalizes the plane's coordinates\n left.transformByMatrix(scratchMatrix)\n\n // Right Plane = row 4 - row 1:\n x = m[12] - m[0]\n y = m[13] - m[1]\n z = m[14] - m[2]\n w = m[15] - m[3]\n right.set(x, y, z, w) // normalizes the plane's coordinates\n right.transformByMatrix(scratchMatrix)\n\n // Bottom Plane = row 4 + row 2:\n x = m[12] + m[4]\n y = m[13] + m[5]\n z = m[14] + m[6]\n w = m[15] + m[7]\n bottom.set(x, y, z, w) // normalizes the plane's coordinates\n bottom.transformByMatrix(scratchMatrix)\n\n // Top Plane = row 4 - row 2:\n x = m[12] - m[4]\n y = m[13] - m[5]\n z = m[14] - m[6]\n w = m[15] - m[7]\n top.set(x, y, z, w) // normalizes the plane's coordinates\n top.transformByMatrix(scratchMatrix)\n\n // Near Plane = row 4 + row 3:\n x = m[12] + m[8]\n y = m[13] + m[9]\n z = m[14] + m[10]\n w = m[15] + m[11]\n near.set(x, y, z, w) // normalizes the plane's coordinates\n near.transformByMatrix(scratchMatrix)\n\n // Far Plane = row 4 - row 3:\n x = m[12] - m[8]\n y = m[13] - m[9]\n z = m[14] - m[10]\n w = m[15] - m[11]\n far.set(x, y, z, w) // normalizes the plane's coordinates\n far.transformByMatrix(scratchMatrix)\n\n // Copy the specified viewport.\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to one appropriate for a subset of a modelview-projection matrix. A modelview-projection\n * matrix's view frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix. The subset is defined by the region within the original viewport that the frustum\n * contains.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n * @param subViewport the screen coordinate region the frustum should contain\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport, subViewport: Viewport) = apply {\n // Compute the sub-viewport's four edges in screen coordinates.\n val left = subViewport.x.toDouble()\n val right = (subViewport.x + subViewport.width).toDouble()\n val bottom = subViewport.y.toDouble()\n val top = (subViewport.y + subViewport.height).toDouble()\n\n // Transform the sub-viewport's four edges from screen coordinates to Cartesian coordinates.\n var bln: Vec3\n var blf: Vec3\n var brn: Vec3\n var brf: Vec3\n var tln: Vec3\n var tlf: Vec3\n var trn: Vec3\n var trf: Vec3\n val mvpInv = scratchMatrix.setToMultiply(projection, modelview).invert()\n mvpInv.unProject(left, bottom, viewport, Vec3().also { bln = it }, Vec3().also { blf = it })\n mvpInv.unProject(right, bottom, viewport, Vec3().also { brn = it }, Vec3().also { brf = it })\n mvpInv.unProject(left, top, viewport, Vec3().also { tln = it }, Vec3().also { tlf = it })\n mvpInv.unProject(right, top, viewport, Vec3().also { trn = it }, Vec3().also { trf = it })\n\n val va = Vec3(tlf.x - bln.x, tlf.y - bln.y, tlf.z - bln.z)\n val vb = Vec3(tln.x - blf.x, tln.y - blf.y, tln.z - blf.z)\n\n val nl = va.cross(vb)\n this.left.set(nl.x, nl.y, nl.z, -nl.dot(bln))\n va.set(trn.x - brf.x, trn.y - brf.y, trn.z - brf.z)\n vb.set(trf.x - brn.x, trf.y - brn.y, trf.z - brn.z)\n\n val nr = va.cross(vb)\n this.right.set(nr.x, nr.y, nr.z, -nr.dot(brn))\n va.set(brf.x - bln.x, brf.y - bln.y, brf.z - bln.z)\n vb.set(blf.x - brn.x, blf.y - brn.y, blf.z - brn.z)\n\n val nb = va.cross(vb)\n this.bottom.set(nb.x, nb.y, nb.z, -nb.dot(brn))\n va.set(tlf.x - trn.x, tlf.y - trn.y, tlf.z - trn.z)\n vb.set(trf.x - tln.x, trf.y - tln.y, trf.z - tln.z)\n\n val nt = va.cross(vb)\n this.top.set(nt.x, nt.y, nt.z, -nt.dot(tln))\n va.set(tln.x - brn.x, tln.y - brn.y, tln.z - brn.z)\n vb.set(trn.x - bln.x, trn.y - bln.y, trn.z - bln.z)\n\n val nn = va.cross(vb)\n this.near.set(nn.x, nn.y, nn.z, -nn.dot(bln))\n va.set(trf.x - blf.x, trf.y - blf.y, trf.z - blf.z)\n vb.set(tlf.x - brf.x, tlf.y - brf.y, tlf.z - brf.z)\n\n val nf = va.cross(vb)\n this.far.set(nf.x, nf.y, nf.z, -nf.dot(blf))\n\n // Copy the specified sub-viewport.\n this.viewport.copy(subViewport)\n }\n\n /**\n * See if the point is entirely within the frustum. The dot product of the point with each plane's vector\n * provides a distance to each plane. If this distance is less than 0, the point is clipped by that plane and\n * neither intersects nor is contained by the space enclosed by this Frustum.\n *\n * @param point Vector to check\n *\n * @return true if point contains in frustum\n */\n fun containsPoint(point: Vec3) = far.dot(point) > 0 && left.dot(point) > 0 && right.dot(point) > 0\n && top.dot(point) > 0 && bottom.dot(point) > 0 && near.dot(point) > 0\n\n /**\n * Determines whether a line segment intersects this frustum.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return true if the segment intersects or is contained in this frustum, otherwise false\n */\n fun intersectsSegment(pointA: Vec3, pointB: Vec3): Boolean {\n // First do a trivial accept test.\n if (containsPoint(pointA) || containsPoint(pointB)) return true\n if (pointA == pointB) return false\n for (i in planes.indices) {\n val plane = planes[i]\n // See if both points are behind the plane and therefore not in the frustum.\n if (plane.onSameSide(pointA, pointB) < 0) return false\n // See if the segment intersects the plane.\n if (plane.clip(pointA, pointB) != null) return true\n }\n return false // segment does not intersect frustum\n }\n\n /**\n * Determines whether a screen coordinate viewport intersects this frustum.\n *\n * @param viewport the viewport to test\n *\n * @return true if the viewport intersects or is contained in this frustum, otherwise false\n */\n fun intersectsViewport(viewport: Viewport) = this.viewport.intersects(viewport)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a line in Cartesian coordinates.\n */\nopen class Line {\n /**\n * This line's origin.\n */\n val origin = Vec3()\n /**\n * This line's direction.\n */\n val direction = Vec3()\n\n /**\n * Constructs a line with origin and direction both zero.\n */\n constructor()\n\n /**\n * Constructs a line with a specified origin and direction.\n *\n * @param origin the line's origin\n * @param direction the line's direction\n */\n constructor(origin: Vec3, direction: Vec3): this() { set(origin, direction) }\n\n /**\n * Constructs a line with the origin and direction from a specified line.\n *\n * @param line the line specifying origin and direction\n */\n constructor(line: Line): this(line.origin, line.direction)\n\n /**\n * Sets this line to a specified origin and direction.\n *\n * @param origin the line's new origin\n * @param direction the line's new direction\n *\n * @return this line, set to the new origin and direction\n */\n fun set(origin: Vec3, direction: Vec3) = apply {\n this.origin.copy(origin)\n this.direction.copy(direction)\n }\n\n /**\n * Sets this line to the specified segment. This line has its origin at the first endpoint and its direction\n * extending from the first endpoint to the second.\n *\n * @param pointA the segment's first endpoint\n * @param pointB the segment's second endpoint\n *\n * @return this line, set to the specified segment\n */\n fun setToSegment(pointA: Vec3, pointB: Vec3) = apply {\n origin.copy(pointA)\n direction.set(pointB.x - pointA.x, pointB.y - pointA.y, pointB.z - pointA.z)\n }\n\n /**\n * Computes a Cartesian point a specified distance along this line.\n *\n * @param distance The distance from this line's origin at which to compute the point.\n * @param result A pre-allocated [Vec3] instance in which to return the computed point.\n *\n * @return The specified result argument containing the computed point.\n */\n fun pointAt(distance: Double, result: Vec3): Vec3 {\n result.x = origin.x + direction.x * distance\n result.y = origin.y + direction.y * distance\n result.z = origin.z + direction.z * distance\n return result\n }\n\n /**\n * Computes the first intersection of a triangle strip with this line. This line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *
\n * The triangle strip is specified by a list of vertex points and a list of elements indicating the triangle strip\n * tessellation of those vertices. The triangle strip elements are interpreted in the same manner as OpenGL, where\n * each index indicates a vertex position rather than an actual index into the points array (e.g. a triangle strip\n * index of 1 indicates the XYZ tuple starting at array index 3).\n *\n * @param points an array of points containing XYZ tuples\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n * @param elements an array of indices into the points defining the triangle strip organization\n * @param count the number of indices to consider\n * @param result a pre-allocated Vec3 in which to return the nearest intersection point, if any\n *\n * @return true if this line intersects the triangle strip, otherwise false\n *\n * @throws IllegalArgumentException If array is empty, if the stride is less than 3,\n * if the count is less than 0\n */\n fun triStripIntersection(points: FloatArray, stride: Int, elements: ShortArray, count: Int, result: Vec3): Boolean {\n require(points.size >= stride) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidStride\")\n }\n require(elements.isNotEmpty()) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidCount\")\n }\n\n // Taken from Moller and Trumbore\n // http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf\n\n // Adapted from the original ray-triangle intersection algorithm to optimize for ray-triangle strip\n // intersection. We optimize by reusing constant terms, replacing use of Vec3 with inline primitives, and\n // exploiting the triangle strip organization to reuse computations common to adjacent triangles. These\n // optimizations reduced worst-case terrain picking performance for Web WorldWind by approximately 50% in\n // Chrome on a 2010 iMac and a Nexus 9.\n val vx = direction.x\n val vy = direction.y\n val vz = direction.z\n val sx = origin.x\n val sy = origin.y\n val sz = origin.z\n var tMin = Double.POSITIVE_INFINITY\n val epsilon = 0.00001\n\n // Get the triangle strip's first vertex.\n var vertex = elements[0] * stride\n var vert1x = points[vertex++]\n var vert1y = points[vertex++]\n var vert1z = points[vertex]\n\n // Get the triangle strip's second vertex.\n vertex = elements[1] * stride\n var vert2x = points[vertex++]\n var vert2y = points[vertex++]\n var vert2z = points[vertex]\n\n // Compute the intersection of each triangle with the specified ray.\n for (idx in 2 until count) {\n // Move the last two vertices into the first two vertices. This takes advantage of the triangle strip's\n // structure and avoids redundant reads from points and elements. During the first iteration this places the\n // triangle strip's first three vertices in vert0, vert1 and vert2, respectively.\n val vert0x = vert1x\n val vert0y = vert1y\n val vert0z = vert1z\n vert1x = vert2x\n vert1y = vert2y\n vert1z = vert2z\n\n // Get the triangle strip's next vertex.\n vertex = elements[idx] * stride\n vert2x = points[vertex++]\n vert2y = points[vertex++]\n vert2z = points[vertex]\n\n // find vectors for two edges sharing point a: vert1 - vert0 and vert2 - vert0\n val edge1x = vert1x - vert0x\n val edge1y = vert1y - vert0y\n val edge1z = vert1z - vert0z\n val edge2x = vert2x - vert0x\n val edge2y = vert2y - vert0y\n val edge2z = vert2z - vert0z\n\n // Compute cross product of line direction and edge2\n val px = vy * edge2z - vz * edge2y\n val py = vz * edge2x - vx * edge2z\n val pz = vx * edge2y - vy * edge2x\n\n // Get determinant\n val det = edge1x * px + edge1y * py + edge1z * pz // edge1 dot p\n // if det is near zero then ray lies in plane of triangle\n if (det > -epsilon && det < epsilon) continue\n\n val invDet = 1.0 / det\n\n // Compute distance for vertex A to ray origin: origin - vert0\n val tx = sx - vert0x\n val ty = sy - vert0y\n val tz = sz - vert0z\n\n // Calculate u parameter and test bounds: 1/det * t dot p\n val u = invDet * (tx * px + ty * py + tz * pz)\n if (u < -epsilon || u > 1 + epsilon) continue\n\n // Prepare to test v parameter: tvec cross edge1\n val qx = ty * edge1z - tz * edge1y\n val qy = tz * edge1x - tx * edge1z\n val qz = tx * edge1y - ty * edge1x\n\n // Calculate v parameter and test bounds: 1/det * dir dot q\n val v = invDet * (vx * qx + vy * qy + vz * qz)\n if (v < -epsilon || u + v > 1 + epsilon) continue\n\n // Calculate the point of intersection on the line: t = 1/det * edge2 dot q\n val t = invDet * (edge2x * qx + edge2y * qy + edge2z * qz)\n if (t >= 0 && t < tMin) tMin = t\n }\n if (tMin != Double.POSITIVE_INFINITY) result.set(sx + vx * tMin, sy + vy * tMin, sz + vz * tMin)\n return tMin != Double.POSITIVE_INFINITY\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Line) return false\n return origin == other.origin && direction == other.direction\n }\n\n override fun hashCode(): Int {\n var result = origin.hashCode()\n result = 31 * result + direction.hashCode()\n return result\n }\n\n override fun toString() = \"Line(origin=$origin, direction=$direction)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.normalizeLongitude\nimport earth.worldwind.shape.PathType\nimport earth.worldwind.shape.PathType.GREAT_CIRCLE\nimport earth.worldwind.shape.PathType.RHUMB_LINE\nimport earth.worldwind.util.format.format\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.offsetIn\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographic location with a latitude and longitude.\n */\nopen class Location(\n /**\n * The location's latitude.\n */\n var latitude: Angle,\n /**\n * The location's longitude.\n */\n var longitude: Angle\n) {\n /**\n * Constructs a location with latitude and longitude both 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO)\n\n /**\n * Constructs a location with the latitude and longitude of a specified location.\n *\n * @param location the location specifying the coordinates\n */\n constructor(location: Location): this(location.latitude, location.longitude)\n\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-15\n protected val timeZoneLatitudes = mapOf(\n -12 to -45, // GMT-12\n -11 to -30, // GMT-11\n -10 to 20, // GMT-10\n -9 to 45, // GMT-9\n -8 to 40, // GMT-8\n -7 to 35, // GMT-7\n -6 to 30, // GMT-6\n -5 to 25, // GMT-5\n -4 to -15, // GMT-4\n -3 to 0, // GMT-3\n -2 to 45, // GMT-2\n -1 to 30, // GMT-1\n 0 to 30, // GMT+0\n 1 to 20, // GMT+1\n 2 to 20, // GMT+2\n 3 to 25, // GMT+3\n 4 to 30, // GMT+4\n 5 to 35, // GMT+5\n 6 to 30, // GMT+6\n 7 to 25, // GMT+7\n 8 to -30, // GMT+8\n 9 to -30, // GMT+9\n 10 to -30, // GMT+10\n 11 to -45, // GMT+11\n 12 to -45 // GMT+12\n )\n\n /**\n * Constructs a location with a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n *\n * @return the new location\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n Location(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Constructs a location with a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n *\n * @return the new location\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double) =\n Location(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Constructs an approximate location for a specified time zone. Used when selecting an initial camera position\n * based on the device's current time zone.\n *\n * @param timeZone the time zone in question\n *\n * @return the new location\n */\n @JvmStatic\n fun fromTimeZone(timeZone: TimeZone): Location {\n val secPerHour = 3.6e3\n val offsetSec = Clock.System.now().offsetIn(timeZone).totalSeconds\n val offsetHours = (offsetSec / secPerHour).toInt()\n // use a pre-determined latitude or 0 if none is available\n val latDegrees = (timeZoneLatitudes[offsetHours]?:0).toDouble()\n val lonDegrees = 180.0 * offsetHours / 12 // center on the time zone's average longitude\n return Location(fromDegrees(latDegrees), fromDegrees(lonDegrees))\n }\n\n /**\n * Determines whether a list of locations crosses the antimeridian.\n *\n * @param locations the locations to test\n *\n * @return true if the antimeridian is crossed, false otherwise\n */\n @JvmStatic\n fun locationsCrossAntimeridian(locations: List): Boolean {\n // Check the list's length. A list with fewer than two locations does not cross the antimeridan.\n val len = locations.size\n if (len < 2) return false\n\n // Compute the longitude attributes associated with the first location.\n var lon1 = normalizeLongitude(locations[0].longitude.inDegrees)\n var sig1 = sign(lon1)\n\n // Iterate over the segments in the list. A segment crosses the antimeridian if its endpoint longitudes have\n // different signs and are more than 180 degrees apart (but not 360, which indicates the longitudes are the same).\n for (idx in 1 until len) {\n val lon2 = normalizeLongitude(locations[idx].longitude.inDegrees)\n val sig2 = sign(lon2)\n if (sig1 != sig2) {\n val delta = abs(lon1 - lon2)\n if (delta > 180 && delta < 360) return true\n }\n lon1 = lon2\n sig1 = sig2\n }\n return false\n }\n\n @JvmStatic\n fun fromString(coordinates: String): Location {\n val tokens = coordinates.replace(\"[*'\\\"NSEW;°′″,]\".toRegex(), \" \").trim { it <= ' ' }.split(\"\\\\s+\".toRegex())\n // Lat\n var lat = 0.0\n var exponent = 0\n var i = 0\n while (i < tokens.size / 2) {\n lat += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n // Lon\n var lon = 0.0\n exponent = 0\n while (i < tokens.size) {\n lon += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n return fromDegrees(if (coordinates.contains(\"S\")) -lat else lat, if (coordinates.contains(\"W\")) -lon else lon)\n }\n }\n\n /**\n * Sets this location to a specified latitude and longitude.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle) = apply {\n this.latitude = latitude\n this.longitude = longitude\n }\n\n /**\n * Sets this location to a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n set(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Sets this location to a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double) =\n set(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Sets this location to the latitude and longitude of a specified location.\n *\n * @param location the location specifying the new coordinates\n *\n * @return this location with its latitude and longitude set to that of the specified location\n */\n fun copy(location: Location) = set(location.latitude, location.longitude)\n\n /**\n * Compute a location along a path between two locations. The amount indicates the fraction of the path at which to\n * compute a location. This value is typically between 0 and 1, where 0 indicates the begin location (this location)\n * and 1 indicates the end location.\n *\n * @param endLocation the path's end location\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a location\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun interpolateAlongPath(endLocation: Location, pathType: PathType, amount: Double, result: Location): Location {\n return if (this == endLocation) {\n result.latitude = latitude\n result.longitude = longitude\n result\n } else when (pathType) {\n GREAT_CIRCLE -> {\n val azimuth = greatCircleAzimuth(endLocation)\n val distanceRadians = greatCircleDistance(endLocation) * amount\n greatCircleLocation(azimuth, distanceRadians, result)\n }\n RHUMB_LINE -> {\n val azimuth = rhumbAzimuth(endLocation)\n val distanceRadians = rhumbDistance(endLocation) * amount\n rhumbLocation(azimuth, distanceRadians, result)\n }\n else -> {\n val azimuth = linearAzimuth(endLocation)\n val distanceRadians = linearDistance(endLocation) * amount\n linearLocation(azimuth, distanceRadians, result)\n }\n }\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the great circle path between this location and a specified\n * location. This angle can be used as the starting azimuth for a great circle path beginning at this location, and\n * passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed azimuth\n */\n fun greatCircleAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n if (lon1 == lon2) return if (lat1 > lat2) POS180 else ZERO\n\n // Taken from \"Map Projections - A Working Manual\", page 30, equation 5-4b.\n // The atan2() function is used in place of the traditional atan(y/x) to simplify the case when x == 0.\n val y = cos(lat2) * sin(lon2 - lon1)\n val x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1)\n val azimuthRadians = atan2(y, x)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the great circle path between this location and a specified location. In\n * radians, this angle is the arc length of the segment between the two locations. To compute a distance in meters\n * from this value, multiply the return value by the radius of the globe. This function uses a spherical model, not\n * elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun greatCircleDistance(location: Location): Double {\n val lat1Radians = latitude.inRadians\n val lon1Radians = longitude.inRadians\n val lat2Radians = location.latitude.inRadians\n val lon2Radians = location.longitude.inRadians\n if (lat1Radians == lat2Radians && lon1Radians == lon2Radians) return 0.0\n\n // \"Haversine formula,\" taken from http://en.wikipedia.org/wiki/Great-circle_distance#Formul.C3.A6\n val a = sin((lat2Radians - lat1Radians) / 2.0)\n val b = sin((lon2Radians - lon1Radians) / 2.0)\n val c = a * a + cos(lat1Radians) * cos(lat2Radians) * b * b\n val distanceRadians = 2.0 * asin(sqrt(c))\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the great circle path starting at this location and traversing with the specified\n * azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun greatCircleLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n val cosLat = cos(latRadians)\n val sinLat = sin(latRadians)\n val cosAzimuth = cos(azimuthRadians)\n val sinAzimuth = sin(azimuthRadians)\n val sinDistance = sin(distanceRadians)\n val cosDistance = cos(distanceRadians)\n\n // Taken from \"Map Projections - A Working Manual\", page 31, equation 5-5 and 5-6.\n val endLatRadians = asin(sinLat * cosDistance + cosLat * sinDistance * cosAzimuth)\n val endLonRadians = lonRadians + atan2(\n sinDistance * sinAzimuth, cosLat * cosDistance - sinLat * sinDistance * cosAzimuth\n )\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the rhumb path (line of constant azimuth) between this\n * location and a specified location. This angle can be used as the starting azimuth for a rhumb path beginning at\n * this location, and passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the rhumb path's ending location\n *\n * @return the computed azimuth\n */\n fun rhumbAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the rhumb path (line of constant azimuth) between this location and a specified\n * location. In radians, this angle is the arc length of the segment between the two locations. To compute a\n * distance in meters from this value, multiply the return value by the radius of the globe. This function uses a\n * spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun rhumbDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(lat1)\n else {\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n dLat / dPhi\n }\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + q * q * dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on a rhumb path (line of constant azimuth) starting at this location and traversing with\n * the specified azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun rhumbLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n val dLat = endLatRadians - latRadians\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(latRadians)\n else {\n val dPhi = ln(tan(endLatRadians / 2 + PI / 4) / tan(latRadians / 2 + PI / 4))\n dLat / dPhi\n }\n val dLon = distanceRadians * sin(azimuthRadians) / q\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + dLon + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the linear path between this location and a specified\n * location. This angle can be used as the starting azimuth for a linear path beginning at this location, and\n * passing through the specified location. This function uses a flat-earth approximation proximal to this location.\n *\n * @param location the linear path's ending location\n *\n * @return the computed azimuth\n */\n fun linearAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = lat2 - lat1\n\n // If longitude change is over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the linear path between this location and a specified location. In radians, this\n * angle is the arc length of the segment between the two locations. To compute a distance in meters from this\n * value, multiply the return value by the radius of the globe. This function uses a flat-earth approximation\n * proximal to this location.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun linearDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n\n // If lonChange over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the linear path starting at this location and traversing with the specified azimuth and\n * angular distance. This function uses a flat-earth approximation proximal to this location.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun linearLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + distanceRadians * sin(azimuthRadians) + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n fun equals(other: Location, tolerance: Double): Boolean {\n if (this === other) return true\n return abs(latitude.inDegrees - other.latitude.inDegrees) < tolerance\n && abs(longitude.inDegrees - other.longitude.inDegrees) < tolerance\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Location) return false\n return latitude.inDegrees == other.latitude.inDegrees && longitude.inDegrees == other.longitude.inDegrees\n }\n\n override fun hashCode(): Int {\n var result = latitude.hashCode()\n result = 31 * result + longitude.hashCode()\n return result\n }\n\n override fun toString() = \"Location(latitude=$latitude, longitude=$longitude)\"\n\n fun toDDString() = \"%s%09.6f°, %s%010.6f°\"\n .format(latitude.latitudeLetter, abs(latitude.inDegrees), longitude.longitudeLetter, abs(longitude.inDegrees))\n\n fun toDMString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%06.3f′, %s%03d°%06.3f′\".format(\n latitude.latitudeLetter, lat[1], lat[2] + lat[3] / 60.0,\n longitude.longitudeLetter, lon[1], lon[2] + lon[3] / 60.0\n )\n }\n\n fun toDMSString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%02d′%04.1f″, %s%03d°%02d′%04.1f″\".format(\n latitude.latitudeLetter, lat[1], lat[2], lat[3],\n longitude.longitudeLetter, lon[1], lon[2], lon[3]\n )\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\n\nopen class LookAt(\n val position: Position, var altitudeMode: AltitudeMode, var range: Double, var heading: Angle, var tilt: Angle, var roll: Angle,\n) {\n constructor(): this(\n position = Position(),\n altitudeMode = AltitudeMode.ABSOLUTE,\n range = 0.0,\n heading = ZERO,\n tilt = ZERO,\n roll = ZERO)\n\n constructor(lookAt: LookAt): this(\n Position(lookAt.position),\n lookAt.altitudeMode,\n lookAt.range,\n lookAt.heading,\n lookAt.tilt,\n lookAt.roll\n )\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n range: Double, heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.range = range\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(lookAt: LookAt) = set(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude,\n lookAt.altitudeMode, lookAt.range, lookAt.heading, lookAt.tilt, lookAt.roll\n )\n\n override fun toString() = \"LookAt(position=$position, altitudeMode=$altitudeMode, range=$range, heading=$heading, tilt=$tilt, roll=$roll)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.cos\nimport kotlin.math.sin\n\n/**\n * 3 x 3 matrix in row-major order.\n */\nopen class Matrix3 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n /**\n * The components for the 3 x 3 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n )\n }\n\n /**\n * Constructs a 3 x 3 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 3 x 3 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n */\n constructor(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ): this(doubleArrayOf(m11, m12, m13, m21, m22, m23, m31, m32, m33))\n\n /**\n * Constructs a 3 x 3 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix3): this(matrix.m.copyOf())\n\n /**\n * Sets this 3 x 3 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m21\n m[4] = m22\n m[5] = m23\n m[6] = m31\n m[7] = m32\n m[8] = m33\n }\n\n /**\n * Sets this 3 x 3 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix3) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double) = apply {\n m[2] = x\n m[5] = y\n }\n\n /**\n * Sets the rotation components of this matrix to a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[3] = s\n m[4] = c\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[4] = yScale\n }\n\n /**\n * Sets this matrix to the 3 x 3 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = x\n m[3] = 0.0\n m[4] = 1.0\n m[5] = y\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[2] = 0.0\n m[3] = s\n m[4] = c\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = yScale\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that flips and shifts the y-axis. The resultant matrix maps Y=0 to Y=1 and Y=1 to Y=0.\n * All existing values are overwritten. This matrix is usually used to change the coordinate origin from an upper\n * left coordinate origin to a lower left coordinate origin.\n *
\n * This matrix is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix set to values described above\n */\n fun setToVerticalFlip() = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = -1.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that transforms normalized coordinates from a source sector to a destination sector.\n * Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner and (1, 1)\n * indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its corresponding\n * normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix set to values described above\n */\n fun setToTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n m[0] = xs\n m[1] = 0.0\n m[2] = xt\n m[3] = 0.0\n m[4] = ys\n m[5] = yt\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix3, b: Matrix3) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[3] + ma[2] * mb[6]\n m[1] = ma[0] * mb[1] + ma[1] * mb[4] + ma[2] * mb[7]\n m[2] = ma[0] * mb[2] + ma[1] * mb[5] + ma[2] * mb[8]\n m[3] = ma[3] * mb[0] + ma[4] * mb[3] + ma[5] * mb[6]\n m[4] = ma[3] * mb[1] + ma[4] * mb[4] + ma[5] * mb[7]\n m[5] = ma[3] * mb[2] + ma[4] * mb[5] + ma[5] * mb[8]\n m[6] = ma[6] * mb[0] + ma[7] * mb[3] + ma[8] * mb[6]\n m[7] = ma[6] * mb[1] + ma[7] * mb[4] + ma[8] * mb[7]\n m[8] = ma[6] * mb[2] + ma[7] * mb[5] + ma[8] * mb[8]\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double) = apply {\n multiplyByMatrix(1.0, 0.0, x, 0.0, 1.0, y, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(c, -s, 0.0, s, c, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double) = apply {\n multiplyByMatrix(xScale, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a matrix that flips and shifts the y-axis. The vertical flip matrix maps Y=0 to Y=1 and\n * Y=1 to Y=0. This matrix is usually used to change the coordinate origin from an upper left coordinate origin to a\n * lower left coordinate origin.\n *
\n * This is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix multiplied by a vertical flip matrix implied by values described above\n */\n fun multiplyByVerticalFlip() = apply {\n m[2] += m[1]\n m[5] += m[4]\n m[8] += m[7]\n m[1] = -m[1]\n m[4] = -m[4]\n m[7] = -m[7]\n }\n\n /**\n * Multiplies this matrix by a matrix that transforms normalized coordinates from a source sector to a destination\n * sector. Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner\n * and (1, 1) indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its\n * corresponding normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix multiplied by the transform matrix implied by values described above\n */\n fun multiplyByTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n\n m[2] += m[0] * xt + m[1] * yt\n m[5] += m[3] * xt + m[4] * yt\n m[8] += m[6] * xt + m[6] * yt\n m[0] *= xs\n m[1] *= ys\n m[3] *= xs\n m[4] *= ys\n m[6] *= xs\n m[7] *= ys\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n ma[0] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[1] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[2] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[3]\n ma1 = ma[4]\n ma2 = ma[5]\n ma[3] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[4] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[5] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[6]\n ma1 = ma[7]\n ma2 = ma[8]\n ma[6] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[7] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[8] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[3]\n mr2 = m[4]\n mr3 = m[5]\n m[3] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[4] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[5] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[6]\n mr2 = m[7]\n mr3 = m[8]\n m[6] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[7] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[8] = mr1 * m13 + mr2 * m23 + mr3 * m33\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[3]\n m[3] = tmp\n\n tmp = m[2]\n m[2] = m[6]\n m[6] = tmp\n\n tmp = m[5]\n m[5] = m[7]\n m[7] = tmp\n }\n\n /**\n * Transposes the specified matrix and stores the result in this matrix.\n *\n * @param matrix the matrix whose transpose is computed\n *\n * @return this matrix set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix3) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[3]\n m[2] = matrix.m[6]\n m[3] = matrix.m[1]\n m[4] = matrix.m[4]\n m[5] = matrix.m[7]\n m[6] = matrix.m[2]\n m[7] = matrix.m[5]\n m[8] = matrix.m[8]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix3fv.\n *\n * @param result a pre-allocated array of length 9 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 9) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[5].toFloat()\n result[o] = m[8].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert(): Matrix3 {\n throw UnsupportedOperationException(\"Matrix3.invert is not implemented\") // TODO\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun invertMatrix(matrix: Matrix3): Matrix3 {\n TODO(\"Matrix3.invertMatrix is not implemented\")\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix3) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix3([${m[0]}, ${m[1]}, ${m[2]}], [${m[3]}, ${m[4]}, ${m[5]}], [${m[6]}, ${m[7]}, ${m[8]}])\"\n}",null,"package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/**\n * 4 x 4 matrix in row-major order.\n */\nopen class Matrix4 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1.0e-8\n protected const val TINY = 1.0e-20\n protected const val EPSILON = 1.0e-10\n protected const val MAX_SWEEPS = 32\n\n /**\n * The components for the 4 x 4 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0\n )\n\n /**\n * Inverts a 4 x 4 matrix, storing the result in a destination argument. The source and destination arguments\n * represent a 4 x 4 matrix with a one-dimensional array in row-major order. The source and destination may\n * reference the same array.\n *\n * @param src the matrix components to invert in row-major order\n * @param dst the inverted components in row-major order\n *\n * @return true if the matrix was successfully inverted, false otherwise\n */\n protected fun invert(src: DoubleArray, dst: DoubleArray): Boolean {\n // Copy the specified matrix into a mutable two-dimensional array.\n val a = Array(4) { DoubleArray(4) }\n a[0][0] = src[0]\n a[0][1] = src[1]\n a[0][2] = src[2]\n a[0][3] = src[3]\n a[1][0] = src[4]\n a[1][1] = src[5]\n a[1][2] = src[6]\n a[1][3] = src[7]\n a[2][0] = src[8]\n a[2][1] = src[9]\n a[2][2] = src[10]\n a[2][3] = src[11]\n a[3][0] = src[12]\n a[3][1] = src[13]\n a[3][2] = src[14]\n a[3][3] = src[15]\n\n val index = IntArray(4)\n var d = ludcmp(a, index)\n\n // Compute the matrix's determinant.\n for (i in 0..3) d *= a[i][i]\n\n // The matrix is singular if its determinant is zero or very close to zero.\n if (abs(d) < NEAR_ZERO_THRESHOLD) return false\n\n val y = Array(4) { DoubleArray(4) }\n val col = DoubleArray(4)\n for (j in 0..3) {\n for (i in 0..3) col[i] = 0.0\n col[j] = 1.0\n lubksb(a, index, col)\n for (i in 0..3) y[i][j] = col[i]\n }\n dst[0] = y[0][0]\n dst[1] = y[0][1]\n dst[2] = y[0][2]\n dst[3] = y[0][3]\n dst[4] = y[1][0]\n dst[5] = y[1][1]\n dst[6] = y[1][2]\n dst[7] = y[1][3]\n dst[8] = y[2][0]\n dst[9] = y[2][1]\n dst[10] = y[2][2]\n dst[11] = y[2][3]\n dst[12] = y[3][0]\n dst[13] = y[3][1]\n dst[14] = y[3][2]\n dst[15] = y[3][3]\n return true\n }\n\n /**\n * Utility method to perform an LU factorization of a matrix. Algorithm derived from \"Numerical Recipes in C\", Press\n * et al., 1988.\n *\n * @param A matrix to be factored\n * @param index permutation vector\n *\n * @return condition number of matrix\n */\n protected fun ludcmp(A: Array, index: IntArray): Double {\n val vv = DoubleArray(4)\n var d = 1.0\n var temp: Double\n for (i in 0..3) {\n var big = 0.0\n for (j in 0..3) if (abs(A[i][j]).also { temp = it } > big) big = temp\n if (big == 0.0) return 0.0 // Matrix is singular if the entire row contains zero.\n else vv[i] = 1 / big\n }\n for (j in 0..3) {\n for (i in 0 until j) {\n var sum = A[i][j]\n for (k in 0 until i) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n }\n var big = 0.0\n var imax = -1\n var dum: Double\n for (i in j..3) {\n var sum = A[i][j]\n for (k in 0 until j) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n if (vv[i] * abs(sum).also { dum = it } >= big) {\n big = dum\n imax = i\n }\n }\n if (j != imax) {\n for (k in 0..3) {\n dum = A[imax][k]\n A[imax][k] = A[j][k]\n A[j][k] = dum\n }\n d = -d\n vv[imax] = vv[j]\n }\n index[j] = imax\n if (A[j][j] == 0.0) A[j][j] = TINY\n if (j != 3) {\n dum = 1.0 / A[j][j]\n for (i in (j + 1)..3) {\n A[i][j] *= dum\n }\n }\n }\n return d\n }\n\n /**\n * Utility method to solve a linear system with an LU factorization of a matrix. Solves Ax=b, where A is in LU\n * factorized form. Algorithm derived from \"Numerical Recipes in C\", Press et al., 1988\n *\n * @param A an LU factorization of a matrix\n * @param index permutation vector of that LU factorization\n * @param b vector to be solved\n */\n protected fun lubksb(A: Array, index: IntArray, b: DoubleArray) {\n var ii = -1\n for (i in 0..3) {\n val ip = index[i]\n var sum = b[ip]\n b[ip] = b[i]\n if (ii != -1) for (j in ii until i) sum -= A[i][j] * b[j]\n else if (sum != 0.0) ii = i\n b[i] = sum\n }\n for (i in 3 downTo 0) {\n var sum = b[i]\n for (j in (i + 1)..3) sum -= A[i][j] * b[j]\n b[i] = sum / A[i][i]\n }\n }\n }\n\n /**\n * Constructs a 4 x 4 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 4 x 4 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n */\n constructor(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ): this(doubleArrayOf(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))\n\n /**\n * Constructs a 4 x 4 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix4): this(matrix.m.copyOf())\n\n /**\n * Sets this 4 x 4 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m14\n m[4] = m21\n m[5] = m22\n m[6] = m23\n m[7] = m24\n m[8] = m31\n m[9] = m32\n m[10] = m33\n m[11] = m34\n m[12] = m41\n m[13] = m42\n m[14] = m43\n m[15] = m44\n }\n\n /**\n * Sets this 4 x 4 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix4) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] = x\n m[7] = y\n m[11] = z\n }\n\n /**\n * Sets the rotation components of this matrix to a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[5] = yScale\n m[10] = zScale\n }\n\n /**\n * Sets this matrix to the 4 x 4 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double, z: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = x\n m[4] = 0.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = y\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 1.0\n m[11] = z\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[3] = 0.0\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[7] = 0.0\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = yScale\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = zScale\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix4, b: Matrix4) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[4] + ma[2] * mb[8] + ma[3] * mb[12]\n m[1] = ma[0] * mb[1] + ma[1] * mb[5] + ma[2] * mb[9] + ma[3] * mb[13]\n m[2] = ma[0] * mb[2] + ma[1] * mb[6] + ma[2] * mb[10] + ma[3] * mb[14]\n m[3] = ma[0] * mb[3] + ma[1] * mb[7] + ma[2] * mb[11] + ma[3] * mb[15]\n m[4] = ma[4] * mb[0] + ma[5] * mb[4] + ma[6] * mb[8] + ma[7] * mb[12]\n m[5] = ma[4] * mb[1] + ma[5] * mb[5] + ma[6] * mb[9] + ma[7] * mb[13]\n m[6] = ma[4] * mb[2] + ma[5] * mb[6] + ma[6] * mb[10] + ma[7] * mb[14]\n m[7] = ma[4] * mb[3] + ma[5] * mb[7] + ma[6] * mb[11] + ma[7] * mb[15]\n m[8] = ma[8] * mb[0] + ma[9] * mb[4] + ma[10] * mb[8] + ma[11] * mb[12]\n m[9] = ma[8] * mb[1] + ma[9] * mb[5] + ma[10] * mb[9] + ma[11] * mb[13]\n m[10] = ma[8] * mb[2] + ma[9] * mb[6] + ma[10] * mb[10] + ma[11] * mb[14]\n m[11] = ma[8] * mb[3] + ma[9] * mb[7] + ma[10] * mb[11] + ma[11] * mb[15]\n m[12] = ma[12] * mb[0] + ma[13] * mb[4] + ma[14] * mb[8] + ma[15] * mb[12]\n m[13] = ma[12] * mb[1] + ma[13] * mb[5] + ma[14] * mb[9] + ma[15] * mb[13]\n m[14] = ma[12] * mb[2] + ma[13] * mb[6] + ma[14] * mb[10] + ma[15] * mb[14]\n m[15] = ma[12] * mb[3] + ma[13] * mb[7] + ma[14] * mb[11] + ma[15] * mb[15]\n }\n\n /**\n * Sets this matrix to an infinite perspective projection matrix for the specified viewport dimensions, vertical\n * field of view and near clip distance.\n *
\n * An infinite perspective projection matrix maps points in a manner similar to a standard projection matrix, but is\n * not bounded by depth. Objects at any depth greater than or equal to the near distance may be rendered. In\n * addition, this matrix interprets vertices with a w-coordinate of 0 as infinitely far from the camera in the\n * direction indicated by the point's coordinates.\n *
\n * The field of view must be positive and less than 180. The near distance must be positive.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near distance is\n * less than or equal to zero\n */\n fun setToInfiniteProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -1.0\n m[11] = -2 * nearDistance\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a perspective projection matrix for the specified viewport dimensions, vertical field of view\n * and clip distances.\n *
\n * A perspective projection matrix maps points in eye coordinates into clip coordinates in a way that causes distant\n * objects to appear smaller, and preserves the appropriate depth information for each point. In model coordinates,\n * a perspective projection is defined by frustum originating at the eye position and extending outward in the\n * viewer's direction. The near distance and the far distance identify the minimum and maximum distance,\n * respectively, at which an object in the scene is visible.\n *
\n * The field of view must be positive and less than 180. Near and far distances must be positive and must not be\n * equal to one another.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n * @param farDistance the far clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near and far\n * distances are equal, or if either the near or far distance are less than or\n * equal to zero\n */\n fun setToPerspectiveProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double, farDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance != farDistance) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n require(nearDistance > 0 && farDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -(farDistance + nearDistance) / (farDistance - nearDistance)\n m[11] = -(2 * nearDistance * farDistance) / (farDistance - nearDistance)\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a screen projection matrix for the specified viewport dimensions.\n *
\n * A screen projection matrix is an orthographic projection that interprets points in model coordinates as\n * representing a screen XY and a Z depth. Screen projection matrices therefore map coordinates directly into screen\n * coordinates without modification. A point's XY coordinates are interpreted as literal screen coordinates and must\n * be in the viewport to be visible. A point's Z coordinate is interpreted as a depth value that ranges from 0 to 1.\n * Additionally, the screen projection matrix preserves the depth value returned by\n * `RenderContext.project`.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero\n */\n fun setToScreenProjection(viewportWidth: Double, viewportHeight: Double) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidHeight\")\n }\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.57.\n // Simplified to assume that the viewport origin is (0, 0).\n //\n // The third row of this projection matrix is configured so that points with z coordinates representing\n // depth values ranging from 0 to 1 are not modified after transformation into window coordinates. This\n // projection matrix maps z values in the range [0, 1] to the range [-1, 1] by applying the following\n // function to incoming z coordinates:\n //\n // zp = z0 * 2 - 1\n //\n // Where 'z0' is the point's z coordinate and 'zp' is the projected z coordinate. The GPU then maps the\n // projected z coordinate into window coordinates in the range [0, 1] by applying the following function:\n //\n // zw = zp * 0.5 + 0.5\n //\n // The result is that a point's z coordinate is effectively passed to the GPU without modification.\n m[0] = 2 / viewportWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = -1.0\n m[4] = 0.0\n m[5] = 2 / viewportHeight\n m[6] = 0.0\n m[7] = -1.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 2.0\n m[11] = -1.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the symmetric covariance Matrix computed from an array of points.\n *
\n * The computed covariance matrix represents the correlation between each pair of x-, y-, and z-coordinates as\n * they're distributed about the point array's arithmetic mean. Its layout is as follows:\n *
\n * ` C(x, x) C(x, y) C(x, z)
C(x, y) C(y, y) C(y, z)
C(x, z) C(y, z) C(z, z) `\n *
\n * C(i, j) is the covariance of coordinates i and j, where i or j are a coordinate's dispersion about its mean\n * value. If any entry is zero, then there's no correlation between the two coordinates defining that entry. If the\n * returned matrix is diagonal, then all three coordinates are uncorrelated, and the specified point is distributed\n * evenly about its mean point.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return this matrix set to the covariance matrix for the specified array of points\n *\n * @throws IllegalArgumentException If the array is null or empty, if the count is less than 0, or if the stride is\n * less than 3\n */\n fun setToCovarianceOfPoints(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidCount\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidStride\")\n }\n\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var c11 = 0.0\n var c22 = 0.0\n var c33 = 0.0\n var c12 = 0.0\n var c13 = 0.0\n var c23 = 0.0\n var numPoints = 0.0\n for (idx in 0 until count step stride) {\n mx += array[idx]\n my += array[idx + 1]\n mz += array[idx + 2]\n numPoints++\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n for (idx in 0 until count step stride) {\n val dx = array[idx] - mx\n val dy = array[idx + 1] - my\n val dz = array[idx + 2] - mz\n c11 += dx * dx\n c22 += dy * dy\n c33 += dz * dz\n c12 += dx * dy // c12 = c21\n c13 += dx * dz // c13 = c31\n c23 += dy * dz // c23 = c32\n }\n m[0] = c11 / numPoints\n m[1] = c12 / numPoints\n m[2] = c13 / numPoints\n m[3] = 0.0\n m[4] = c12 / numPoints\n m[5] = c22 / numPoints\n m[6] = c23 / numPoints\n m[7] = 0.0\n m[8] = c13 / numPoints\n m[9] = c23 / numPoints\n m[10] = c33 / numPoints\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 0.0\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] += m[0] * x + m[1] * y + m[2] * z\n m[7] += m[4] * x + m[5] * y + m[6] * z\n m[11] += m[8] * x + m[9] * y + m[10] * z\n m[15] += m[12] * x + m[13] * y + m[14] * z\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis.\n *\n * @param x the X component of the rotation axis\n * @param y the Y component of the rotation axis\n * @param z the Z component of the rotation axis\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(\n c + (1 - c) * x * x,\n (1 - c) * x * y - s * z,\n (1 - c) * x * z + s * y,\n 0.0,\n (1 - c) * x * y + s * z,\n c + (1 - c) * y * y,\n (1 - c) * y * z - s * x,\n 0.0,\n (1 - c) * x * z - s * y,\n (1 - c) * y * z + s * x,\n c + (1 - c) * z * z,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n )\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] *= xScale\n m[4] *= xScale\n m[8] *= xScale\n m[12] *= xScale\n m[1] *= yScale\n m[5] *= yScale\n m[9] *= yScale\n m[13] *= yScale\n m[2] *= zScale\n m[6] *= zScale\n m[10] *= zScale\n m[14] *= zScale\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n var ma3 = ma[3]\n ma[0] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[1] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[2] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[3] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[4]\n ma1 = ma[5]\n ma2 = ma[6]\n ma3 = ma[7]\n ma[4] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[5] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[6] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[7] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[8]\n ma1 = ma[9]\n ma2 = ma[10]\n ma3 = ma[11]\n ma[8] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[9] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[10] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[11] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[12]\n ma1 = ma[13]\n ma2 = ma[14]\n ma3 = ma[15]\n ma[12] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[13] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[14] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[15] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n var mr4 = m[3]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[3] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[4]\n mr2 = m[5]\n mr3 = m[6]\n mr4 = m[7]\n m[4] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[5] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[6] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[7] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[8]\n mr2 = m[9]\n mr3 = m[10]\n mr4 = m[11]\n m[8] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[9] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[10] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[11] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[12]\n mr2 = m[13]\n mr3 = m[14]\n mr4 = m[15]\n m[12] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[13] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[14] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[15] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[3]\n m[3] = m[12]\n m[12] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n tmp = m[7]\n m[7] = m[13]\n m[13] = tmp\n\n tmp = m[11]\n m[11] = m[14]\n m[14] = tmp\n }\n\n /**\n * Sets this matrix to the transpose of a specified matrix.\n *\n * @param matrix the matrix whose transpose is to be computed\n *\n * @return this matrix with its values set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix4) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = matrix.m[12]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = matrix.m[13]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = matrix.m[14]\n m[12] = matrix.m[3]\n m[13] = matrix.m[7]\n m[14] = matrix.m[11]\n m[15] = matrix.m[15]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix4fv.\n *\n * @param result a pre-allocated array of length 16 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 16) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[8].toFloat()\n result[o++] = m[12].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[5].toFloat()\n result[o++] = m[9].toFloat()\n result[o++] = m[13].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[10].toFloat()\n result[o++] = m[14].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[11].toFloat()\n result[o] = m[15].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert() = apply {\n val success = invert(m, m) // passing the same array as src and dst is supported\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the specified matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n *\n * @throws IllegalArgumentException If the matrix cannot be inverted\n */\n fun invertMatrix(matrix: Matrix4) = apply {\n val success = invert(matrix.m, m) // store inverse of matrix in this matrix\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts this orthonormal transform matrix in place. This matrix's upper 3x3 is transposed, then its fourth column\n * is transformed by the transposed upper 3x3 and negated.\n *
\n * The result of this method is undefined if this matrix's values are not consistent with those of an orthonormal\n * transform.\n *\n * @return this matrix, inverted\n */\n fun invertOrthonormal() = apply {\n // This is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n val x = m[3]\n val y = m[7]\n val z = m[11]\n\n m[3] = -(m[0] * x) - m[1] * y - m[2] * z\n m[7] = -(m[4] * x) - m[5] * y - m[6] * z\n m[11] = -(m[8] * x) - m[9] * y - m[10] * z\n\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Inverts the specified orthonormal transform matrix and stores the result in 'this' matrix. The specified matrix's\n * upper 3x3 is transposed, then its fourth column is transformed by the transposed upper 3x3 and negated. The\n * result is stored in 'this' matrix.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert, or if the matrix's\n * values are not consistent with those of an orthonormal transform.\n *\n * @param matrix the matrix whose inverse is computed. The matrix is assumed to represent an orthonormal transform\n * matrix.\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertOrthonormalMatrix(matrix: Matrix4) = apply {\n // The matrix is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = -(matrix.m[0] * matrix.m[3]) - matrix.m[4] * matrix.m[7] - matrix.m[8] * matrix.m[11]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = -(matrix.m[1] * matrix.m[3]) - matrix.m[5] * matrix.m[7] - matrix.m[9] * matrix.m[11]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = -(matrix.m[2] * matrix.m[3]) - matrix.m[6] * matrix.m[7] - matrix.m[10] * matrix.m[11]\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Applies a specified depth offset to this projection matrix. The depth offset may be any real number and is\n * typically used to draw geometry slightly closer to the user's eye in order to give those shapes visual priority\n * over nearby or geometry. An offset of zero has no effect. An offset less than zero brings depth values closer to\n * the eye, while an offset greater than zero pushes depth values away from the eye.\n *
\n * The result of this method is undefined if this matrix is not a projection matrix. Projection matrices can be\n * created by calling `setToPerspectiveProjection` or `setToScreenProjection`\n *
\n * Depth offset may be applied to both perspective and screen projection matrices. The effect on each type is\n * outlined here:\n *
\n * **Perspective Projection**\n *
\n * The effect of depth offset on a perspective projection increases exponentially with distance from the eye. This\n * has the effect of adjusting the offset for the loss in depth precision with geometry drawn further from the eye.\n * Distant geometry requires a greater offset to differentiate itself from nearby geometry, while close geometry\n * does not.\n *
\n * **Screen Projection**\n *
\n * The effect of depth offset on an screen projection increases linearly with distance from the eye. While it is\n * reasonable to apply a depth offset to an screen projection, the effect is most appropriate when applied to the\n * projection used to draw the scene. For example, when an object's coordinates are projected by a perspective\n * projection into screen coordinates then drawn using a screen projection, it is best to apply the offset to the\n * original perspective projection. The method `RenderContext.project` performs the correct behavior for\n * the projection type used to draw the scene.\n *\n * @param depthOffset the amount of offset to apply\n *\n * @return this matrix with its components adjusted to account for the specified depth offset\n */\n fun offsetProjectionDepth(depthOffset: Double) = apply { m[10] *= 1 + depthOffset }\n\n /**\n * Returns this viewing matrix's eye point. In model coordinates, a viewing matrix's eye point is the point the\n * viewer is looking from and maps to the center of the screen.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's eye point\n */\n fun extractEyePoint(result: Vec3): Vec3 {\n // The eye point of a modelview matrix is computed by transforming the origin (0, 0, 0, 1) by the matrix's\n // inverse. This is equivalent to transforming the inverse of this matrix's translation components in the\n // rightmost column by the transpose of its upper 3x3 components.\n result.x = -(m[0] * m[3]) - m[4] * m[7] - m[8] * m[11]\n result.y = -(m[1] * m[3]) - m[5] * m[7] - m[9] * m[11]\n result.z = -(m[2] * m[3]) - m[6] * m[7] - m[10] * m[11]\n return result\n }\n\n /**\n * Returns this viewing matrix's forward vector.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's forward vector\n */\n fun extractForwardVector(result: Vec3): Vec3 {\n // The forward vector of a modelview matrix is computed by transforming the negative Z axis (0, 0, -1, 0) by the\n // matrix's inverse. We have pre-computed the result inline here to simplify this computation.\n result.x = -m[8]\n result.y = -m[9]\n result.z = -m[10]\n return result\n }\n\n /**\n * Returns this viewing matrix's heading angle. The roll argument enables the caller to disambiguate\n * heading and roll when the two rotation axes for heading and roll are parallel, causing gimbal lock.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param roll the viewing matrix's roll angle, or 0 if the roll angle is unknown\n *\n * @return the extracted heading angle\n */\n fun extractHeading(roll: Angle): Angle {\n val cr = cos(roll.inRadians)\n val sr = sin(roll.inRadians)\n val ch = cr * m[0] - sr * m[4]\n val sh = sr * m[5] - cr * m[1]\n return atan2(sh, ch).radians\n }\n\n /**\n * Returns this viewing matrix's tilt angle.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @return the extracted heading angle\n */\n fun extractTilt(): Angle {\n val ct = m[10]\n val st = sqrt(m[2] * m[2] + m[6] * m[6])\n return atan2(st, ct).radians\n }\n\n /**\n * Returns this symmetric matrix's eigenvectors. The eigenvectors are returned in the specified result arguments in\n * order of descending magnitude (most prominent to least prominent). Each eigenvector has length equal to its\n * corresponding eigenvalue.\n *
\n * This method returns false if this matrix is not a symmetric matrix.\n *\n * @param result1 a pre-allocated Vec3 in which to return the most prominent eigenvector\n * @param result2 a pre-allocated Vec3 in which to return the second most prominent eigenvector\n * @param result3 a pre-allocated Vec3 in which to return the least prominent eigenvector\n *\n * @return true if this matrix is symmetric and its eigenvectors can be determined, otherwise false\n */\n fun extractEigenvectors(result1: Vec3, result2: Vec3, result3: Vec3): Boolean {\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition,\n // listing 14.6.\n if (m[1] != m[4] || m[2] != m[8] || m[6] != m[9]) return false // matrix is not symmetric\n\n // Since the matrix is symmetric m12=m21, m13=m31 and m23=m32, therefore we can ignore the values m21,\n // m32 and m32.\n var m11 = m[0]\n var m12 = m[1]\n var m13 = m[2]\n var m22 = m[5]\n var m23 = m[6]\n var m33 = m[10]\n val r = Array(3) { DoubleArray(3) }\n r[2][2] = 1.0\n r[1][1] = r[2][2]\n r[0][0] = r[1][1]\n for (a in 0 until MAX_SWEEPS) {\n // Exit if off-diagonal entries small enough\n if (abs(m12) < EPSILON && abs(m13) < EPSILON && abs(m23) < EPSILON) break\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n val u = (m22 - m11) * 0.5 / m12\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m12\n m22 += t * m12\n m12 = 0.0\n var temp = c * m13 - s * m23\n m23 = s * m13 + c * m23\n m13 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][1]\n r[i][1] = s * r[i][0] + c * r[i][1]\n r[i][0] = temp\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n val u = (m33 - m11) * 0.5 / m13\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m13\n m33 += t * m13\n m13 = 0.0\n var temp = c * m12 - s * m23\n m23 = s * m12 + c * m23\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][2]\n r[i][2] = s * r[i][0] + c * r[i][2]\n r[i][0] = temp\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n val u = (m33 - m22) * 0.5 / m23\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m22 -= t * m23\n m33 += t * m23\n m23 = 0.0\n var temp = c * m12 - s * m13\n m13 = s * m12 + c * m13\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][1] - s * r[i][2]\n r[i][2] = s * r[i][1] + c * r[i][2]\n r[i][1] = temp\n }\n }\n }\n\n // Sort the eigenvectors by descending magnitude.\n var i1 = 0\n var i2 = 1\n var i3 = 2\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n if (m22 < m33) {\n val temp = m22\n m22 = m33\n m33 = temp\n val itemp = i2\n i2 = i3\n i3 = itemp\n }\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n result1.set(r[0][i1], r[1][i1], r[2][i1])\n result2.set(r[0][i2], r[1][i2], r[2][i2])\n result3.set(r[0][i3], r[1][i3], r[2][i3])\n result1.normalize()\n result2.normalize()\n result3.normalize()\n result1.multiply(m11)\n result2.multiply(m22)\n result3.multiply(m33)\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. This method assumes this matrix represents an inverse\n * modelview-projection matrix. The result of this method is undefined if this matrix is not an inverse\n * modelview-projection matrix.\n *
\n * The resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes\n * that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's y component\n * @param z the Cartesian point's z component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(x: Double, y: Double, z: Double, viewport: Viewport, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This inverts\n // the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n var sx = m[0] * x + m[1] * y + m[2] * z + m[3]\n var sy = m[4] * x + m[5] * y + m[6] * z + m[7]\n var sz = m[8] * x + m[9] * y + m[10] * z + m[11]\n val sw = m[12] * x + m[13] * y + m[14] * z + m[15]\n if (sw == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n sx /= sw\n sy /= sw\n sz /= sw\n\n // Clip the point against the near and far clip planes.\n if (sz < -1 || sz > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n sx = sx * 0.5 + 0.5\n sy = sy * 0.5 + 0.5\n sz = sz * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n sx = sx * viewport.width + viewport.x\n sy = sy * viewport.height + viewport.y\n result.x = sx\n result.y = sy\n result.z = sz\n return true\n }\n\n /**\n * Un-projects a screen coordinate point to Cartesian coordinates at the near clip plane and the far clip plane.\n * This method assumes this matrix represents an inverse modelview-projection matrix. The result of this method is\n * undefined if this matrix is not an inverse modelview-projection matrix.\n *
\n * The screen point is understood to be in OpenGL screen coordinates, with the origin in the bottom-left corner and\n * axes that extend up and to the right from the origin.\n *
\n * This function stores the un-projected points in the result argument, and a boolean value indicating whether the\n * un-projection is successful.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param nearResult a pre-allocated [Vec3] in which to return the un-projected near clip plane point\n * @param farResult a pre-allocated [Vec3] in which to return the un-projected far clip plane point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun unProject(x: Double, y: Double, viewport: Viewport, nearResult: Vec3, farResult: Vec3): Boolean {\n // Convert the XY screen coordinates to coordinates in the range [0, 1]. This enables the XY coordinates to\n // be converted to clip coordinates.\n var sx = (x - viewport.x) / viewport.width\n var sy = (y - viewport.y) / viewport.height\n\n // Convert from coordinates in the range [0, 1] to clip coordinates in the range [-1, 1].\n sx = sx * 2 - 1\n sy = sy * 2 - 1\n\n // Transform the screen point from clip coordinates to model coordinates. This is a partial transformation that\n // factors out the contribution from the screen point's X and Y components. The contribution from the Z\n // component, which is both -1 and +1, is included next.\n val mx = m[0] * sx + m[1] * sy + m[3]\n val my = m[4] * sx + m[5] * sy + m[7]\n val mz = m[8] * sx + m[9] * sy + m[11]\n val mw = m[12] * sx + m[13] * sy + m[15]\n\n // Transform the screen point at the near clip plane (z = -1) to model coordinates.\n val nx = mx - m[2]\n val ny = my - m[6]\n val nz = mz - m[10]\n val nw = mw - m[14]\n\n // Transform the screen point at the far clip plane (z = +1) to model coordinates.\n val fx = mx + m[2]\n val fy = my + m[6]\n val fz = mz + m[10]\n val fw = mw + m[14]\n if (nw == 0.0 || fw == 0.0) return false\n\n // Complete the conversion from near clip coordinates to model coordinates by dividing by the W component.\n nearResult.x = nx / nw\n nearResult.y = ny / nw\n nearResult.z = nz / nw\n\n // Complete the conversion from far clip coordinates to model coordinates by dividing by the W component.\n farResult.x = fx / fw\n farResult.y = fy / fw\n farResult.z = fz / fw\n return true\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix4) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix4([${m[0]}, ${m[1]}, ${m[2]}, ${m[3]}], [${m[4]}, ${m[5]}, ${m[6]}, ${m[7]}], [${m[8]}, ${m[9]}, ${m[10]}, ${m[11]}], [${m[12]}, ${m[13]}, ${m[14]}, ${m[15]}])\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.OffsetMode.FRACTION\nimport earth.worldwind.geom.OffsetMode.INSET_PIXELS\nimport kotlin.jvm.JvmStatic\n\n/**\n * Specifies an offset relative to a rectangle. Used by renderable shapes.\n */\ndata class Offset(\n /**\n * The units of this instance's X offset. See this class' constructor description for a list of the possible\n * values.\n */\n var xUnits: OffsetMode,\n /**\n * The offset in the X dimension, interpreted according to this instance's xUnits argument.\n */\n var x: Double,\n /**\n * The units of this instance's Y offset. See this class' constructor description for a list of the possible\n * values.\n */\n var yUnits: OffsetMode,\n /**\n * The offset in the Y dimension, interpreted according to this instance's yUnits argument.\n */\n var y: Double\n) {\n /**\n * Creates a new offset of this offset with identical property values.\n */\n constructor(offset: Offset): this(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n companion object {\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its center.\n */\n @JvmStatic fun center() = Offset(FRACTION, 0.5, FRACTION, 0.5)\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its bottom-left corner.\n */\n @JvmStatic fun bottomLeft() = Offset(FRACTION, 0.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its center of its bottom edge.\n */\n @JvmStatic fun bottomCenter() = Offset(FRACTION, 0.5, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its bottom-right corner.\n */\n @JvmStatic fun bottomRight() = Offset(FRACTION, 1.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle its top-left corner.\n */\n @JvmStatic fun topLeft() = Offset(FRACTION, 0.0, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to the center of its top edge.\n */\n @JvmStatic fun topCenter() = Offset(FRACTION, 0.5, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its top-right corner.\n */\n @JvmStatic fun topRight() = Offset(FRACTION, 1.0, FRACTION, 1.0)\n }\n\n /**\n * Sets this offset to specified property values.\n */\n fun set(xUnits: OffsetMode, x: Double, yUnits: OffsetMode, y: Double) = apply {\n this.xUnits = xUnits\n this.x = x\n this.yUnits = yUnits\n this.y = y\n }\n\n /**\n * Sets this offset to identical property values of the specified offset.\n */\n fun copy(offset: Offset) = set(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n /**\n * Returns this offset's absolute X and Y coordinates in pixels for a rectangle of a specified size in pixels. The\n * returned offset is in pixels relative to the rectangle's origin, and is defined in the coordinate system used by\n * the caller.\n *\n * @param width the rectangle's width in pixels\n * @param height the rectangles height in pixels\n * @param result a pre-allocated Vec2 in which to return the computed offset relative to the rectangle's origin\n *\n * @return the result argument set to the computed offset\n */\n fun offsetForSize(width: Double, height: Double, result: Vec2): Vec2 {\n val x = when (xUnits) {\n FRACTION -> width * x\n INSET_PIXELS -> width - x\n else -> x // default to OFFSET_PIXELS\n }\n val y = when (yUnits) {\n FRACTION -> height * y\n INSET_PIXELS -> height - y\n else -> y // default to OFFSET_PIXELS\n }\n return result.set(x, y)\n }\n}","package earth.worldwind.geom\n\n/**\n * Offset mode indicates how WorldWind interprets an offset's x and y values.\n * Accepted values are [FRACTION], [INSET_PIXELS] and [PIXELS].\n */\nenum class OffsetMode {\n /**\n * Indicating that the associated parameters are fractional values of the virtual\n * rectangle's width or height in the range [0, 1], where 0 indicates the rectangle's origin and 1 indicates the\n * corner opposite its origin.\n */\n FRACTION,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's corner opposite its origin corner.\n */\n INSET_PIXELS,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's origin.\n */\n PIXELS;\n}","package earth.worldwind.geom\n\n/**\n * Represents a plane in Cartesian coordinates. The plane's X, Y and Z components indicate the plane's normal vector.\n * The distance component indicates the plane's distance from the origin relative to its unit normal.\n */\nopen class Plane {\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-10\n }\n\n /**\n * The normal vector to the plane.\n */\n val normal = Vec3(0.0, 0.0, 1.0)\n /**\n * The plane's distance from the origin.\n */\n var distance = 0.0\n\n /**\n * Constructs a plane in the X-Y plane with its unit normal pointing along the Z axis.\n */\n constructor()\n\n /**\n * Constructs a plane with specified normal vector components and distance from the origin.\n * This constructor normalizes the components, ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n */\n constructor(x: Double, y: Double, z: Double, distance: Double) { set(x, y, z, distance) }\n\n /**\n * Constructs a plane with the normal vector and distance from a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n */\n constructor(plane: Plane): this() { copy(plane) }\n\n /**\n * Computes the distance between this plane and a point.\n *\n * @param point the point whose distance to compute\n *\n * @return the computed distance\n */\n fun distanceToPoint(point: Vec3) = dot(point)\n\n /**\n * Sets this plane's specified normal vector and distance to specified values. This normalizes the components,\n * ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n *\n * @return this plane with its normal vector and distance set to specified values\n */\n fun set(x: Double, y: Double, z: Double, distance: Double) = apply {\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Sets this plane's normal vector and distance to that of a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n *\n * @return this plane with its normal vector and distance set to those of the specified plane\n */\n fun copy(plane: Plane) = apply {\n // Assumes the specified plane's parameters are normalized.\n normal.copy(plane.normal)\n distance = plane.distance\n }\n\n /**\n * Transforms this plane by a specified matrix.\n *\n * @param matrix the matrix to apply to this plane\n *\n * @return this plane transformed by the specified matrix\n */\n fun transformByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * normal.x + m[1] * normal.y + m[2] * normal.z + m[3] * distance\n val y = m[4] * normal.x + m[5] * normal.y + m[6] * normal.z + m[7] * distance\n val z = m[8] * normal.x + m[9] * normal.y + m[10] * normal.z + m[11] * distance\n val distance = m[12] * normal.x + m[13] * normal.y + m[14] * normal.z + m[15] * distance\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Computes the dot product of this plane's components with a specified vector. Since the plane was defined with a\n * unit normal vector, this function returns the distance of the vector from the plane.\n *\n * @param vector the vector to dot with this plane's components\n *\n * @return the computed dot product\n */\n fun dot(vector: Vec3) = normal.dot(vector) + distance\n\n /**\n * Determines whether a specified line segment intersects this plane.\n *\n * @param endPoint1 the line segment's first end point\n * @param endPoint2 the line segment's second end point\n *\n * @return true if the line segment intersects this plane, otherwise false\n */\n fun intersectsSegment(endPoint1: Vec3, endPoint2: Vec3): Boolean {\n val distance1 = dot(endPoint1)\n val distance2 = dot(endPoint2)\n return distance1 * distance2 <= 0\n }\n\n /**\n * Determines whether two points are on the same side of this plane.\n *\n * @param pointA the first point\n * @param pointB the second point\n *\n * @return -1 if both points are on the negative side of this plane, +1 if both points are on the positive side of\n * this plane, 0 if the points are on opposite sides of this plane\n */\n fun onSameSide(pointA: Vec3, pointB: Vec3): Int {\n val da = distanceToPoint(pointA)\n val db = distanceToPoint(pointB)\n if (da < 0 && db < 0) return -1\n return if (da > 0 && db > 0) 1 else 0\n }\n\n /**\n * Clips a line segment to this plane, returning an two-point array indicating the clipped segment. If the direction\n * of the line formed by the two points is positive with respect to this plane's normal vector, the first point in\n * the array will be the intersection point on the plane, and the second point will be the original segment end\n * point. If the direction of the line is negative with respect to this plane's normal vector, the first point in\n * the array will be the original segment's begin point, and the second point will be the intersection point on the\n * plane. If the segment does not intersect the plane, null is returned. If the segment is coincident with the\n * plane, the input points are returned, in their input order.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return an array of two points both on the positive side of the plane, or null if the segment does not intersect\n * this plane\n */\n fun clip(pointA: Vec3, pointB: Vec3): Array? {\n if (pointA == pointB) return null\n\n // Get the projection of the segment onto the plane.\n val line = Line().setToSegment(pointA, pointB)\n val lDotV = normal.dot(line.direction)\n\n // Are the line and plane parallel?\n if (lDotV == 0.0) { // line and plane are parallel and may be coincident.\n val lDotS = dot(line.origin)\n return if (lDotS == 0.0) arrayOf(pointA, pointB) // line is coincident with the plane\n else null // line is not coincident with the plane.\n }\n\n // Not parallel so the line intersects. But does the segment intersect?\n val t = -dot(line.origin) / lDotV // lDotS / lDotV\n if (t < 0 || t > 1) return null // segment does not intersect\n val p = line.pointAt(t, Vec3())\n return if (lDotV > 0) arrayOf(p, pointB) else arrayOf(pointA, p)\n }\n\n protected open fun normalizeIfNeeded() {\n // Compute the plane normal's magnitude in order to determine whether or not the plane needs normalization.\n val magnitude = normal.magnitude\n\n // Don't normalize a zero vector; the result is NaN when it should be 0.0.\n if (magnitude == 0.0) return\n\n // Don't normalize a unit vector, this indicates that the caller has already normalized the vector, but floating\n // point round-off results in a length not exactly 1.0. Since we're normalizing on the caller's behalf, we want\n // to avoid unnecessary any normalization that modifies the specified values.\n if (magnitude >= 1 - NEAR_ZERO_THRESHOLD && magnitude <= 1 + NEAR_ZERO_THRESHOLD) return\n\n // Normalize the caller-specified plane coordinates.\n normal.x /= magnitude\n normal.y /= magnitude\n normal.z /= magnitude\n distance /= magnitude\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Plane) return false\n return normal == other.normal && distance == other.distance\n }\n\n override fun hashCode(): Int {\n var result = normal.hashCode()\n result = 31 * result + distance.hashCode()\n return result\n }\n\n override fun toString() = \"Plane(normal=$normal, distance=$distance)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.shape.PathType\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic position with a latitude and longitude and altitude in meters.\n */\nopen class Position(\n /**\n * The position's latitude.\n */\n latitude: Angle,\n /**\n * The position's longitude.\n */\n longitude: Angle,\n /**\n * The position's altitude in meters.\n */\n var altitude: Double\n): Location(latitude, longitude) {\n /**\n * Constructs a position with latitude, longitude and altitude all 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO, altitude = 0.0)\n\n /**\n * Constructs a position with the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the coordinates\n */\n constructor(position: Position): this(position.latitude, position.longitude, position.altitude)\n\n companion object {\n /**\n * Constructs a position with a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) =\n Position(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees), altitude)\n\n /**\n * Constructs a position with a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) =\n Position(fromRadians(latitudeRadians), fromRadians(longitudeRadians), altitude)\n }\n\n /**\n * Sets this position to a specified latitude and longitude and altitude in meters.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle, altitude: Double) = apply {\n set(latitude, longitude)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) = apply {\n setDegrees(latitudeDegrees, longitudeDegrees)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) = apply {\n setRadians(latitudeRadians, longitudeRadians)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the new coordinates\n *\n * @return this position with its latitude, longitude and altitude set to that of the specified position\n */\n fun copy(position: Position) = set(position.latitude, position.longitude, position.altitude)\n\n /**\n * Compute a position along a path between two positions. The amount indicates the fraction of the path at which to\n * compute a position. This value is typically between 0 and 1, where 0 indicates the begin position (this position)\n * and 1 indicates the end position.\n *\n * @param endPosition the path's end position\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a position\n * @param result a pre-allocated Position in which to return the computed result\n *\n * @return the result argument set to the computed position\n */\n fun interpolateAlongPath(endPosition: Position, pathType: PathType, amount: Double, result: Position): Position {\n // Interpolate latitude and longitude.\n super.interpolateAlongPath(endPosition, pathType, amount, result)\n // Interpolate altitude.\n result.altitude = (1 - amount) * altitude + amount * endPosition.altitude\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Position) return false\n if (!super.equals(other)) return false\n return altitude == other.altitude\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + altitude.hashCode()\n return result\n }\n\n override fun toString() = \"Position(latitude=$latitude, longitude=$longitude, altitude=$altitude)\"\n}","package earth.worldwind.geom\n\n/**\n * Continuous interval in a one-dimensional coordinate system expressed as a lower bound an an upper bound, inclusive.\n */\nopen class Range(\n /**\n * The range's lower bound, inclusive.\n */\n var lower: Int,\n /**\n * The range's upper bound, inclusive.\n */\n var upper: Int\n) {\n /**\n * Constructs an empty range with lower and upper both zero.\n */\n constructor(): this(lower = 0, upper = 0)\n\n /**\n * Constructs a range with the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the values\n */\n constructor(range: Range) : this(range.lower, range.upper)\n\n /**\n * Returns the length of the interval between this range's lower bound and upper bound, or 0 if this range is empty.\n */\n val length get() = if (upper > lower) upper - lower else 0\n\n /**\n * Indicates whether or not this range is empty. An range is empty when its lower bound is greater than or equal to\n * its upper bound.\n *\n * @return true if this range is empty, false otherwise\n */\n val isEmpty get() = lower >= upper\n\n /**\n * Sets this range to an empty range.\n *\n * @return this range with its lower bound and upper bound both set to zero\n */\n fun setEmpty() = set(0, 0)\n\n /**\n * Sets this range to the specified lower bound and upper bound.\n *\n * @param lower the new lower bound, inclusive\n * @param upper the new upper bound, inclusive\n *\n * @return this range set to the specified values\n */\n fun set(lower: Int, upper: Int) = apply {\n this.lower = lower\n this.upper = upper\n }\n\n /**\n * Sets this range to the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the new values\n *\n * @return this range with its lower bound and upper bound set to that of the specified range\n */\n fun copy(range: Range) = set(range.lower, range.upper)\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Range) return false\n return lower == other.lower && upper == other.upper\n }\n\n override fun hashCode(): Int {\n var result = lower\n result = 31 * result + upper\n return result\n }\n\n override fun toString() = \"Range(lower=$lower, upper=$upper)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.geom.Angle.Companion.clampLatitude\nimport earth.worldwind.geom.Angle.Companion.clampLongitude\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.max\nimport earth.worldwind.geom.Angle.Companion.min\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Geographic rectangular region.\n */\nopen class Sector(\n /**\n * The sector's minimum latitude.\n */\n var minLatitude: Angle,\n /**\n * The sector's maximum latitude.\n */\n var maxLatitude: Angle,\n /**\n * The sector's minimum longitude.\n */\n var minLongitude: Angle,\n /**\n * The sector's maximum longitude.\n */\n var maxLongitude: Angle\n) {\n /**\n * Indicates whether this sector has no dimensions.\n */\n val isEmpty get() = minLatitude == ZERO && maxLatitude == ZERO && minLongitude == ZERO && maxLongitude == ZERO\n /**\n * Indicates whether this sector contains the full range of latitude [90 to +90] and longitude [-180 to +180].\n */\n val isFullSphere get() = minLatitude == NEG90 && maxLatitude == POS90 && minLongitude == NEG180 && maxLongitude == POS180\n /**\n * Returns the angle between this sector's minimum and maximum latitudes.\n */\n val deltaLatitude get() = maxLatitude - minLatitude\n /**\n * Returns the angle between this sector's minimum and maximum longitudes.\n */\n val deltaLongitude get() = maxLongitude - minLongitude\n /**\n * Returns the angle midway between this sector's minimum and maximum latitudes.\n */\n val centroidLatitude get() = average(minLatitude, maxLatitude)\n /**\n * Returns the angle midway between this sector's minimum and maximum longitudes.\n */\n val centroidLongitude get() = average(minLongitude, maxLongitude)\n\n /**\n * Constructs an empty sector with minimum and maximum latitudes and longitudes all 0.\n */\n constructor(): this(minLatitude = ZERO, maxLatitude = ZERO, minLongitude = ZERO, maxLongitude = ZERO)\n\n /**\n * Constructs a sector with the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the coordinates\n */\n constructor(sector: Sector): this(sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude)\n\n companion object {\n @JvmStatic\n fun fromDegrees(minLatDegrees: Double, minLonDegrees: Double, deltaLatDegrees: Double, deltaLonDegrees: Double): Sector {\n val maxLatDegrees = if (deltaLatDegrees > 0)\n clampLatitude(minLatDegrees + deltaLatDegrees) else minLatDegrees\n val maxLonDegrees = if (deltaLonDegrees > 0)\n clampLongitude(minLonDegrees + deltaLonDegrees) else minLonDegrees\n return Sector(\n fromDegrees(minLatDegrees), fromDegrees(maxLatDegrees),\n fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n }\n\n @JvmStatic\n fun fromRadians(minLatRadians: Double, minLonRadians: Double, deltaLatRadians: Double, deltaLonRadians: Double): Sector {\n val maxLatRadians = if (deltaLatRadians > 0)\n clampLatitude(minLatRadians + deltaLatRadians) else minLatRadians\n val maxLonRadians = if (deltaLonRadians > 0)\n clampLongitude(minLonRadians + deltaLonRadians) else minLonRadians\n return Sector(\n fromRadians(minLatRadians), fromRadians(maxLatRadians),\n fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n }\n }\n\n /**\n * Computes the location of the angular center of this sector, which is the mid-angle of each of this sector's\n * latitude and longitude dimensions.\n *\n * @param result a pre-allocated [Location] in which to return the computed centroid\n *\n * @return the specified result argument containing the computed centroid\n */\n fun centroid(result: Location): Location {\n result.latitude = centroidLatitude\n result.longitude = centroidLongitude\n return result\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension.\n *\n * @param minLatitude the minimum latitude, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun set(minLatitude: Angle, minLongitude: Angle, deltaLatitude: Angle, deltaLongitude: Angle) = apply {\n this.minLatitude = minLatitude\n this.minLongitude = minLongitude\n maxLatitude = if (deltaLatitude.inDegrees > 0.0) (minLatitude + deltaLatitude).clampLatitude() else minLatitude\n maxLongitude = if (deltaLongitude.inDegrees > 0.0) (minLongitude + deltaLongitude).clampLongitude() else minLongitude\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in degrees.\n *\n * @param minLatitude the minimum latitude in degrees, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in degrees, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in degrees; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in degrees; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setDegrees(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromDegrees(minLatitude), fromDegrees(minLongitude),\n fromDegrees(deltaLatitude), fromDegrees(deltaLongitude),\n )\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in radians.\n *\n * @param minLatitude the minimum latitude in radians, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in radians, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in radians; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in radians; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setRadians(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromRadians(minLatitude), fromRadians(minLongitude),\n fromRadians(deltaLatitude), fromRadians(deltaLongitude),\n )\n\n /**\n * Sets this sector to the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the new coordinates\n *\n * @return this sector with its coordinates set to that of the specified sector\n */\n fun copy(sector: Sector) = apply {\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n\n /**\n * Sets this sector to an empty sector.\n *\n * @return this sector with its coordinates set to an empty sector\n */\n fun setEmpty() = apply {\n minLatitude = ZERO\n maxLatitude = ZERO\n minLongitude = ZERO\n maxLongitude = ZERO\n }\n\n /**\n * Sets this sector to the full range of latitude [90 to +90] and longitude [-180 to +180].\n *\n * @return this sector with its coordinates set to the full range of latitude and longitude\n */\n fun setFullSphere() = apply {\n minLatitude = NEG90\n maxLatitude = POS90\n minLongitude = NEG180\n maxLongitude = POS180\n }\n\n /**\n * Indicates whether this sector intersects a specified sector. Two sectors intersect when both the latitude\n * boundaries and the longitude boundaries overlap by a non-zero amount. An empty sector never intersects another\n * sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersections this sector, false otherwise\n */\n fun intersects(sector: Sector) = minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n\n /**\n * Indicates if this sector is next to, or intersects, a specified sector. Two sectors intersect when the conditions\n * of the [Sector.intersects] methods have been met, and if the boundary or corner is shared with the\n * specified sector. This is a temporary implementation and will be deprecated in future releases.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersects or is next to this sector, false otherwise\n */\n fun intersectsOrNextTo(sector: Sector) = minLatitude.inDegrees <= sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.minLatitude.inDegrees\n && minLongitude.inDegrees <= sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.minLongitude.inDegrees\n\n /**\n * Computes the intersection of this sector and a specified sector, storing the result in this sector and returning\n * whether or not the sectors intersect. Two sectors intersect when both the latitude boundaries and the longitude\n * boundaries overlap by a non-zero amount. An empty sector never intersects another sector. When there is no\n * intersection, this returns false and leaves this sector unchanged.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to intersect with\n *\n * @return this true if this sector intersects the specified sector, false otherwise\n */\n fun intersect(sector: Sector): Boolean {\n if (minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n ) {\n if (minLatitude.inDegrees < sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees > sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees < sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees > sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n return true\n }\n return false // the two sectors do not intersect\n }\n\n /**\n * Indicates whether this sector contains a specified geographic location.\n * An empty sector never contains a location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(latitude: Angle, longitude: Angle) = latitude.inDegrees in minLatitude.inDegrees..maxLatitude.inDegrees\n && longitude.inDegrees in minLongitude.inDegrees..maxLongitude.inDegrees\n\n /**\n * Indicates whether this sector contains a specified geographic location. An empty sector never contains a\n * location.\n *\n * @param location the location\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(location: Location) = contains(location.latitude, location.longitude)\n\n /**\n * Indicates whether this sector fully contains a specified sector. This sector contains the specified sector when\n * the specified sector's boundaries are completely contained within this sector's boundaries, or are equal to this\n * sector's boundaries. An empty sector never contains another sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test containment with\n *\n * @return true if the specified sector contains this sector, false otherwise\n */\n fun contains(sector: Sector) = minLatitude.inDegrees <= sector.minLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.maxLatitude.inDegrees\n && minLongitude.inDegrees <= sector.minLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.maxLongitude.inDegrees\n\n /**\n * Sets this sector to the union of itself and a specified location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(latitude: Angle, longitude: Angle) = apply {\n if (!isEmpty) {\n minLatitude = min(minLatitude, latitude)\n maxLatitude = max(maxLatitude, latitude)\n minLongitude = min(minLongitude, longitude)\n maxLongitude = max(maxLongitude, longitude)\n } else {\n minLatitude = latitude\n maxLatitude = latitude\n minLongitude = longitude\n maxLongitude = longitude\n }\n }\n\n /**\n * Sets this sector to the union of itself and a specified location.\n *\n * @param location the location\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(location: Location) = union(location.latitude, location.longitude)\n\n /**\n * Sets this sector to the union of itself and an array of specified locations. If this sector is empty, it bounds\n * the specified locations. The array is understood to contain location of at least two coordinates organized as\n * (longitude, latitude, ...), where stride indicates the number of coordinates between longitude values.\n *\n * @param array the array of locations to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent locations - must be at least 2\n *\n * @return This bounding box set to contain the specified array of locations.\n *\n * @throws IllegalArgumentException If the array is empty, if the count is less than 0, or if the stride is\n * less than 2\n */\n fun union(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Sector\", \"union\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidCount\")\n }\n require(stride >= 2) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidStride\")\n }\n val empty = isEmpty\n var minLat = if (empty) Double.MAX_VALUE else minLatitude.inDegrees\n var maxLat = if (empty) -Double.MAX_VALUE else maxLatitude.inDegrees\n var minLon = if (empty) Double.MAX_VALUE else minLongitude.inDegrees\n var maxLon = if (empty) -Double.MAX_VALUE else maxLongitude.inDegrees\n for (idx in 0 until count step stride) {\n val lon = array[idx].toDouble()\n val lat = array[idx + 1].toDouble()\n if (maxLat < lat) maxLat = lat\n if (minLat > lat) minLat = lat\n if (maxLon < lon) maxLon = lon\n if (minLon > lon) minLon = lon\n }\n if (minLat < Double.MAX_VALUE) minLatitude = fromDegrees(minLat)\n if (maxLat > -Double.MAX_VALUE) maxLatitude = fromDegrees(maxLat)\n if (minLon < Double.MAX_VALUE) minLongitude = fromDegrees(minLon)\n if (maxLon > -Double.MAX_VALUE) maxLongitude = fromDegrees(maxLon)\n }\n\n /**\n * Sets this sector to the union of itself and a specified sector.\n * This has no effect if the specified sector is empty.\n * If this sector is empty, it is set to the specified sector.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param sector the sector to union with\n *\n * @return this sector, set to its union with the specified sector\n */\n fun union(sector: Sector) = apply {\n if (!sector.isEmpty) {\n // specified sector not empty\n if (!isEmpty) {\n // this sector not empty, make a union\n if (minLatitude.inDegrees > sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees < sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees > sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees < sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n } else {\n // this sector is empty, set to the specified sector\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n }\n }\n\n /**\n * Translates this sector by a specified geographic increment.\n *
\n * The translated sector is assumed to have normalized angles (angles within the range [-90, +90] latitude and\n * [-180, +180] longitude).\n *\n * @param deltaLatitudeDegrees the translation's latitude increment in degrees\n * @param deltaLongitudeDegrees the translation's longitude increment in degrees\n *\n * @return this sector, translated by the specified increment\n */\n fun translate(deltaLatitudeDegrees: Double, deltaLongitudeDegrees: Double) = apply {\n minLatitude = minLatitude.plusDegrees(deltaLatitudeDegrees)\n maxLatitude = maxLatitude.plusDegrees(deltaLatitudeDegrees)\n minLongitude = minLongitude.plusDegrees(deltaLongitudeDegrees)\n maxLongitude = maxLongitude.plusDegrees(deltaLongitudeDegrees)\n }\n\n /**\n * Determines minimal level number relevant for sector of the specified size\n * @param maxLevelNumber Maximum available level number\n * @return Minimal relevant level number for sector\n */\n fun minLevelNumber(maxLevelNumber: Int): Int {\n val relWidth = abs(maxLongitude.relativeLongitude - minLongitude.relativeLongitude)\n val relHeight = abs(maxLatitude.relativeLatitude - minLatitude.relativeLatitude)\n val delta = 0.00001\n\n for (minLevelNumber in 0 until maxLevelNumber) {\n val tileSize = 1.0 / (1 shl (minLevelNumber + 1))\n if (relWidth - delta > tileSize && relHeight - delta > tileSize) return minLevelNumber\n }\n\n return maxLevelNumber\n }\n\n fun equals(other: Sector, tolerance: Double): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return abs(minLatitude.inDegrees - other.minLatitude.inDegrees) < tolerance\n && abs(maxLatitude.inDegrees - other.maxLatitude.inDegrees) < tolerance\n && abs(minLongitude.inDegrees - other.minLongitude.inDegrees) < tolerance\n && abs(maxLongitude.inDegrees - other.maxLongitude.inDegrees) < tolerance\n }\n\n /**\n * Computes a row number for a tile within a level given the tile's latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's minimum latitude\n *\n * @return the computed row number\n */\n open fun computeRow(tileDelta: Angle, latitude: Angle): Int {\n var row = floor((latitude.inDegrees - minLatitude.inDegrees) / tileDelta.inDegrees).toInt()\n // if latitude is at the end of the grid, subtract 1 from the computed row to return the last row\n if (latitude.inDegrees - minLatitude.inDegrees == 180.0) row -= 1\n return row\n }\n\n /**\n * Computes a column number for a tile within a level given the tile's longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's minimum longitude\n *\n * @return The computed column number\n */\n open fun computeColumn(tileDelta: Angle, longitude: Angle): Int {\n var col = floor((longitude.inDegrees - minLongitude.inDegrees) / tileDelta.inDegrees).toInt()\n // if longitude is at the end of the grid, subtract 1 from the computed column to return the last column\n if (longitude.inDegrees - minLongitude.inDegrees == 360.0) col -= 1\n return col\n }\n\n /**\n * Computes the last row number for a tile within a level given the tile's maximum latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's maximum latitude\n *\n * @return the computed row number\n */\n open fun computeLastRow(tileDelta: Angle, latitude: Angle): Int {\n var row = ceil((latitude.inDegrees - minLatitude.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max latitude is in the first row, set the max row to 0\n if (latitude.inDegrees - minLatitude.inDegrees < tileDelta.inDegrees) row = 0\n return row\n }\n\n /**\n * Computes the last column number for a tile within a level given the tile's maximum longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's maximum longitude\n *\n * @return The computed column number\n */\n open fun computeLastColumn(tileDelta: Angle, longitude: Angle): Int {\n var col = ceil((longitude.inDegrees - minLongitude.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max longitude is in the first column, set the max column to 0\n if (longitude.inDegrees - minLongitude.inDegrees < tileDelta.inDegrees) col = 0\n return col\n }\n\n override fun equals(other: Any?): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (other !is Sector) return false\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return minLatitude == other.minLatitude && maxLatitude == other.maxLatitude\n && minLongitude == other.minLongitude && maxLongitude == other.maxLongitude\n }\n\n override fun hashCode(): Int {\n var result = minLatitude.hashCode()\n result = 31 * result + maxLatitude.hashCode()\n result = 31 * result + minLongitude.hashCode()\n result = 31 * result + maxLongitude.hashCode()\n return result\n }\n\n override fun toString() = \"Sector(minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\n\nopen class TileMatrix internal constructor(\n val sector: Sector, val ordinal: Int, val matrixWidth: Int, val matrixHeight: Int, val tileWidth: Int, val tileHeight: Int\n) {\n val resolution get() = sector.deltaLatitude.div(matrixHeight * tileHeight)\n\n fun tileKey(row: Int, column: Int): Long {\n val lOrd = (ordinal and 0xFF).toLong() // 8 bits\n val lRow = (row and 0xFFFFFFF).toLong() // 28 bits\n val lCol = (column and 0xFFFFFFF).toLong() // 28 bits\n return lOrd.shl(56) or lRow.shl(28) or lCol\n }\n\n fun tileSector(row: Int, column: Int): Sector {\n val deltaLat = sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = sector.deltaLongitude.inDegrees / matrixWidth\n val minLat = sector.maxLatitude.inDegrees - deltaLat * (row + 1)\n val minLon = sector.minLongitude.inDegrees + deltaLon * column\n return fromDegrees(minLat, minLon, deltaLat, deltaLon)\n }\n\n /**\n * Calculates number of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector) = with(this.sector) {\n val deltaLat = deltaLatitude / matrixHeight\n val deltaLon = deltaLongitude / matrixWidth\n val firstRow = computeRow(deltaLat, sector.minLatitude)\n val lastRow = computeLastRow(deltaLat, sector.maxLatitude)\n val firstCol = computeColumn(deltaLon, sector.minLongitude)\n val lastCol = computeLastColumn(deltaLon, sector.maxLongitude)\n (lastRow - firstRow + 1).toLong() * (lastCol - firstCol + 1).toLong()\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.makeMessage\nimport kotlin.jvm.JvmStatic\n\nopen class TileMatrixSet(val sector: Sector, val entries: List) {\n /**\n * Construct empty tile matrix set.\n */\n constructor(): this(Sector(), emptyList())\n\n companion object {\n @JvmStatic\n fun fromTilePyramid(\n sector: Sector, matrixWidth: Int, matrixHeight: Int, tileWidth: Int, tileHeight: Int, resolution: Angle\n ): TileMatrixSet {\n require(resolution.inDegrees > 0.0) {\n makeMessage(\"TileMatrixSet\", \"fromTilePyramid\", \"invalidResolution\")\n }\n var idx = 0\n var width = matrixWidth\n var height = matrixHeight\n val tileMatrices = mutableListOf()\n do {\n val matrix = TileMatrix(sector, idx++, width, height, tileWidth, tileHeight)\n tileMatrices.add(matrix)\n width *= 2\n height *= 2\n } while (matrix.resolution.inDegrees > resolution.inDegrees)\n return TileMatrixSet(sector, tileMatrices)\n }\n }\n\n val maxResolution get() = entries[entries.size - 1].resolution // entries.maxOf { it.resolution }\n\n fun indexOfMatrixNearest(resolution: Angle): Int {\n var nearestIdx = -1\n var nearestDelta2 = Double.POSITIVE_INFINITY\n for (idx in entries.indices) {\n val delta = entries[idx].resolution - resolution\n val delta2 = delta.inDegrees * delta.inDegrees\n if (nearestDelta2 > delta2) {\n nearestDelta2 = delta2\n nearestIdx = idx\n }\n }\n return nearestIdx\n }\n\n /**\n * Determine the min relevant index of matrix for the sector of this matrix set\n *\n * @param maxIndex Maximum available index\n * @return Minimum relevant index\n */\n fun minRelevantIndexOfMatrix(maxIndex: Int = entries.size - 1) = sector.minLevelNumber(maxIndex)\n\n /**\n * Calculates approximate count of tiles in specified sector within specified resolution range\n *\n * @param sector co calculate tiles amount\n * @param minIdx minimal required index of matrix\n * @param maxIdx maximal required index of matrix\n * @return tiles count\n */\n fun tileCount(sector: Sector, minIdx: Int, maxIdx: Int): Long {\n var tileCount = 0L\n for (i in minIdx..maxIdx) tileCount += entries[i].tilesInSector(sector)\n return tileCount\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Two-component vector with X and Y coordinates.\n */\nopen class Vec2(\n /**\n * The vector's X component.\n */\n var x: Double,\n /**\n * The vector's Y component.\n */\n var y: Double\n) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n *\n * @return the squared magnitude of this vector\n */\n open val magnitudeSquared get() = x * x + y * y\n /**\n * Computes the magnitude of this vector.\n *\n * @return the magnitude of this vector\n */\n val magnitude get() = sqrt(magnitudeSquared)\n\n /**\n * Constructs a two-component vector with X and Y both 0.\n */\n constructor(): this(x = 0.0, y = 0.0)\n\n /**\n * Constructs a two-component vector with the X and Y of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec2): this(vector.x, vector.y)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform2fv.\n *\n * @param result a pre-allocated array of length 2 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n open fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 2) {\n logMessage(ERROR, \"Vec2\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o] = y.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec2) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec2): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n return dx * dx + dy * dy\n }\n\n /**\n * Sets this vector to the specified X and Y.\n *\n * @param x the new X component\n * @param y the new Y component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double) = apply {\n this.x = x\n this.y = y\n }\n\n /**\n * Sets this vector to the X and Y of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X and Y set to that of the specified vector\n */\n fun copy(vector: Vec2) = set(vector.x, vector.y)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec2) = apply {\n var tmp = x\n x = vector.x\n vector.x = tmp\n\n tmp = y\n y = vector.y\n vector.y = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec2) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec2) = Vec2(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec2) {\n x += vector.x\n y += vector.y\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec2) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec2) = Vec2(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec2) {\n x -= vector.x\n y -= vector.y\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n open fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n open operator fun times(scalar: Double) = Vec2(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n open operator fun timesAssign(scalar: Double) {\n x *= scalar\n y *= scalar\n }\n\n /**\n * Multiplies this vector by a 3x3 matrix. The multiplication is performed with an implicit Z component of 1. The\n * resultant Z component of the product is then divided through the X and Y components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2]\n val y = m[3] * this.x + m[4] * y + m[5]\n val z = m[6] * this.x + m[7] * this.y + m[8]\n this.x = x / z\n this.y = y / z\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n open fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n open operator fun div(divisor: Double) = Vec2(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n open operator fun divAssign(divisor: Double) {\n x /= divisor\n y /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n open operator fun unaryMinus() = Vec2(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n open fun negate() = apply {\n x = -x\n y = -y\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n open fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec2) = x * vector.x + y * vector.y\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec2, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec2) return false\n return x == other.x && y == other.y\n }\n\n override fun hashCode(): Int {\n var result = x.hashCode()\n result = 31 * result + y.hashCode()\n return result\n }\n\n override fun toString() = \"Vec2(x=$x, y=$y)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Three-component vector with X, Y and Z coordinates.\n */\nopen class Vec3(\n /**\n * The vector's X component.\n */\n x: Double,\n /**\n * The vector's Y component.\n */\n y: Double,\n /**\n * The vector's Z component.\n */\n var z: Double\n): Vec2(x, y) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n */\n override val magnitudeSquared get() = super.magnitudeSquared + z * z\n\n /**\n * Constructs a three-component vector with X, Y and Z all 0.\n */\n constructor(): this(x = 0.0, y = 0.0, z = 0.0)\n\n /**\n * Constructs a three-component vector with the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec3): this(vector.x, vector.y, vector.z)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform3fv.\n *\n * @param result a pre-allocated array of length 3 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n override fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 3) {\n logMessage(ERROR, \"Vec3\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o++] = y.toFloat()\n result[o] = z.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector The vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec3) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec3): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n val dz = z - vector.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Sets this vector to the specified X, Y and Z.\n *\n * @param x the new X component\n * @param y the new Y component\n * @param z the new Z component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double, z: Double) = apply {\n set(x, y)\n this.z = z\n }\n\n /**\n * Sets this vector to the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X, Y and Z set to that of the specified vector\n */\n fun copy(vector: Vec3) = set(vector.x, vector.y, vector.z)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec3) = apply {\n super.swap(vector)\n val tmp = z\n z = vector.z\n vector.z = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec3) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec3) = Vec3(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec3) {\n super.plusAssign(vector)\n z += vector.z\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec3) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec3) = Vec3(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec3) {\n super.minusAssign(vector)\n z -= vector.z\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n override fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n override fun times(scalar: Double) = Vec3(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n override fun timesAssign(scalar: Double) {\n super.timesAssign(scalar)\n z *= scalar\n }\n\n /**\n * Multiplies this vector by a 4x4 matrix. The multiplication is performed with an implicit W component of 1. The\n * resultant W component of the product is then divided through the X, Y, and Z components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2] * z + m[3]\n val y = m[4] * this.x + m[5] * y + m[6] * z + m[7]\n val z = m[8] * this.x + m[9] * this.y + m[10] * z + m[11]\n val w = m[12] * this.x + m[13] * this.y + m[14] * this.z + m[15]\n this.x = x / w\n this.y = y / w\n this.z = z / w\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n override fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n override fun div(divisor: Double) = Vec3(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n override fun divAssign(divisor: Double) {\n super.divAssign(divisor)\n z /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n override fun unaryMinus() = Vec3(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n override fun negate() = apply {\n super.negate()\n z = -z\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n override fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n z /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec3) = super.dot(vector) + z * vector.z\n\n /**\n * Computes the cross product of this vector and a specified vector, modifying this vector.\n *\n * @param vector the vector to cross with this vector\n *\n * @return this vector set to the cross product of itself and the specified vector\n */\n fun cross(vector: Vec3) = apply {\n val x = y * vector.z - z * vector.y\n val y = z * vector.x - this.x * vector.z\n val z = this.x * vector.y - this.y * vector.x\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Computes the cross product of two vectors, setting this vector to the result.\n *\n * @param a the first vector\n * @param b the second vector\n *\n * @return this vector set to the cross product of the two specified vectors\n */\n fun cross(a: Vec3, b: Vec3) = apply {\n x = a.y * b.z - a.z * b.y\n y = a.z * b.x - a.x * b.z\n z = a.x * b.y - a.y * b.x\n }\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec3, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n z = z * w0 + vector.z * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec3) return false\n if (!super.equals(other)) return false\n return z == other.z\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + z.hashCode()\n return result\n }\n\n override fun toString() = \"Vec3(x=$x, y=$y, z=$z)\"\n}","package earth.worldwind.geom\n\n/**\n * Rectangular region in a two-dimensional coordinate system expressed as an origin and dimensions extending from the\n * origin.\n */\nopen class Viewport(\n /**\n * The X component of the viewport's origin.\n */\n var x: Int,\n /**\n * The Y component of the viewport's origin.\n */\n var y: Int,\n /**\n * The viewport's width.\n */\n var width: Int,\n /**\n * The viewport's height.\n */\n var height: Int\n) {\n /**\n * Constructs an empty viewport width X, Y, width and height all zero.\n */\n constructor(): this(x = 0, y = 0, width = 0, height = 0)\n\n /**\n * Constructs a viewport with the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the values\n */\n constructor(viewport: Viewport): this(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport is empty. A viewport is empty when either its width or its height are\n * zero (or negative).\n *\n * @return true if this viewport is empty, false otherwise\n */\n val isEmpty get() = width <= 0 || height <= 0\n\n /**\n * Sets this viewport to an empty viewport.\n *\n * @return this viewport with its width and height both set to zero\n */\n fun setEmpty() = apply {\n width = 0\n height = 0\n }\n\n /**\n * Sets this viewport to the specified origin and dimensions.\n *\n * @param x the new X component of the viewport's lower left corner\n * @param y the new Y component of the viewport's lower left corner\n * @param width the viewport's new width\n * @param height the viewport's new height\n *\n * @return this viewport set to the specified values\n */\n fun set(x: Int, y: Int, width: Int, height: Int) = apply {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n /**\n * Sets this viewport to the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the new values\n *\n * @return this viewport with its origin and dimensions set to that of the specified viewport\n */\n fun copy(viewport: Viewport) = set(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param x the X component of the viewport to test intersection with\n * @param y the Y component of the viewport to test intersection with\n * @param width the viewport width to test intersection with\n * @param height the viewport height to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(x: Int, y: Int, width: Int, height: Int) =\n this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param viewport the viewport to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(viewport: Viewport) =\n width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param x the X component of the viewport to intersect with\n * @param y the Y component of the viewport to intersect with\n * @param width the viewport width to intersect with\n * @param height the viewport height to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(x: Int, y: Int, width: Int, height: Int): Boolean {\n if (this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height) {\n if (this.x < x) {\n this.width -= x - this.x\n this.x = x\n }\n if (this.y < y) {\n this.height -= y - this.y\n this.y = y\n }\n if (this.x + this.width > x + width) this.width = x + width - this.x\n if (this.y + this.height > y + height) this.height = y + height - this.y\n return true\n }\n return false\n }\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param viewport the viewport to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(viewport: Viewport): Boolean {\n if (width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height) {\n if (x < viewport.x) {\n width -= viewport.x - x\n x = viewport.x\n }\n if (y < viewport.y) {\n height -= viewport.y - y\n y = viewport.y\n }\n if (x + width > viewport.x + viewport.width) width = viewport.x + viewport.width - x\n if (y + height > viewport.y + viewport.height) height = viewport.y + viewport.height - y\n return true\n }\n return false\n }\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param point the point\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(point: Vec2) = contains(point.x, point.y)\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param x the point's X component\n * @param y the point's Y component\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(x: Number, y: Number) = x.toDouble() >= this.x && x.toDouble() < this.x + width\n && y.toDouble() >= this.y && y.toDouble() < this.y + height\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Viewport) return false\n return x == other.x && y == other.y && width == other.width && height == other.height\n }\n\n override fun hashCode(): Int {\n var result = x\n result = 31 * result + y\n result = 31 * result + width\n result = 31 * result + height\n return result\n }\n\n override fun toString() = \"Viewport(x=$x, y=$y, width=$width, height=$height)\"\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.roundToInt\n\nclass GKCoord private constructor(val latitude: Angle, val longitude: Angle, val x: Double, val y: Double) {\n companion object {\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 0)\n\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n * @param zone optional zone to force coordinates conversion in it.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle, zone: Int): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGeodeticToGK(latitude.inRadians, longitude.inRadians, zone)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(latitude, longitude, converter.northing, converter.easting)\n }\n\n /**\n * Create a set of Gauss-Kruger coordinates.\n *\n * @param x the northing distance (X) in meters.\n * @param y the easting distance (Y) in meters\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to Gauss-Kruger coordinates fails.\n */\n @JvmStatic\n fun fromXY(x: Double, y: Double): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGKToGeodetic(y, x)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(converter.latitude.radians, converter.longitude.radians, x, y)\n }\n\n /**\n * Create a Gauss-Kruger rectangular coordinate from a standard XY coordinate text string.\n *\n * @param xyString the XY coordinate text string.\n * @return the corresponding [GKCoord].\n * @throws IllegalArgumentException if the [xyString] is empty or the conversion to geodetic coordinates fails.\n */\n @JvmStatic\n fun fromString(xyString: String): GKCoord {\n val tokens = xyString.replace(\"[-.,;]\".toRegex(), \"\").trim { it <= ' ' }.split(\"\\\\s+\".toRegex())\n require(tokens.size >= 2 && tokens[1].length > 6) { \"Gauss-Kruger Conversion Error\" }\n val x = tokens[0].toDouble()\n val y = tokens[1].toDouble()\n val north = xyString.count { it == '-' }.mod(2) == 0\n return fromXY(if (north) x else -x, y)\n }\n }\n\n fun toLocation() = Location(latitude, longitude)\n\n override fun toString(): String {\n val x = x.roundToInt()\n val y = y.roundToInt()\n val suffix = 100000\n return \"%02d-%05d, %02d-%05d\".format(x / suffix, abs(x % suffix), y / suffix, abs(y % suffix))\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.math.*\n\n/**\n * Converter used to translate Gauss-Kruger rectangular coordinates to and from geodetic latitude and longitude.\n */\ninternal class GKCoordConverter {\n companion object {\n const val NO_ERROR = 0x0000\n }\n\n private val ellipsoid = Ellipsoid.Krasovsky\n\n /** Easting (Y) in meters */\n var easting = 0.0\n private set\n /** Northing (X) in meters */\n var northing = 0.0\n private set\n /** Latitude in radians. */\n var latitude = 0.0\n private set\n /** Longitude in radians.*/\n var longitude = 0.0\n private set\n\n /**\n * The function Convert_Geodetic_To_GK converts geodetic (latitude and longitude) coordinates to Gauss-Kruger\n * projection (easting and northing) coordinates according to the Krasovsky ellipsoid.\n *\n * @param lat Latitude in radians\n * @param lon Longitude in radians\n * @param zone optional zone to force coordinates conversion in it\n *\n * @return error code\n */\n @Suppress(\"NAME_SHADOWING\")\n fun convertGeodeticToGK(lat: Double, lon: Double, zone: Int = 0): Int {\n val lon = if (lon < 0.0) lon + 2.0 * PI else lon\n val zone = if (zone != 0) zone else (lon * 180.0 / PI).toInt() / 6 + 1\n val a = ellipsoid.semiMajorAxis\n val b = ellipsoid.semiMinorAxis\n val e2 = (a * a - b * b) / (a * a)\n val n = (a - b) / (a + b)\n val nPow2 = n * n\n val nPow3 = n * n * n\n\n val f = 1.0\n val lat0 = 0.0\n val lon0 = (zone * 6 - 3) * PI / 180.0\n val n0 = 0.0\n val e0 = zone * 1e6 + 500000.0\n\n val dLon = lon - lon0\n val dLat = lat - lat0\n val pLat = lat + lat0\n\n val sinLat = sin(lat)\n val sinLatPow2 = sinLat * sinLat\n val cosLat = cos(lat)\n val cosLatPow3 = cosLat * cosLat * cosLat\n val cosLatPow5 = cosLat * cosLat * cosLat * cosLat * cosLat\n val tanLat = tan(lat)\n val tanLatPow2 = tanLat * tanLat\n val tanLatPow4 = tanLatPow2 * tanLatPow2\n\n val v = a * f * (1.0 - e2 * sinLatPow2).pow(-0.5)\n val p = a * f * (1.0 - e2) * (1 - e2 * sinLatPow2).pow(-1.5)\n val n2 = v / p - 1.0\n val m1 = (1.0 + n + 5.0 / 4.0 * nPow2 + 5.0 / 4.0 * nPow3) * dLat\n val m2 = (3.0 * n + 3.0 * nPow2 + 21.0 / 8.0 * nPow3) * sin(dLat) * cos(pLat)\n val m3 = (15.0 / 8.0 * nPow2 + 15.0 / 8.0 * nPow3) * sin(2.0 * dLat) * cos(2 * pLat)\n val m4 = 35.0 / 24.0 * nPow3 * sin(3 * dLat) * cos(3.0 * pLat)\n val m = b * f * (m1 - m2 + m3 - m4)\n val i = m + n0\n val ii = v / 2.0 * sinLat * cosLat\n val iii = v / 24.0 * sinLat * cosLatPow3 * (5.0 - tanLatPow2 + 9.0 * n2)\n val iiia = v / 720.0 * sinLat * cosLatPow5 * (61.0 - 58.0 * tanLatPow2 + tanLatPow4)\n val iv = v * cosLat\n val V = v / 6.0 * cosLatPow3 * (v / p - tanLatPow2)\n val VI = v / 120.0 * cosLatPow5 * (5.0 - 18.0 * tanLatPow2 + tanLatPow4 + 14 * n2 - 58 * tanLatPow2 * n2)\n\n easting = e0 + iv * dLon + V * dLon * dLon * dLon + VI * dLon * dLon * dLon * dLon * dLon\n northing = i + ii * dLon * dLon + iii * dLon * dLon * dLon * dLon + iiia * dLon * dLon * dLon * dLon * dLon * dLon\n\n return NO_ERROR\n }\n\n fun convertGKToGeodetic(easting: Double, northing: Double): Int {\n val zone = (easting / 1e6).toInt()\n val l0 = (6 * (if (zone <= 30) zone else zone - 60) - 3) * PI / 180.0\n val x = northing\n val y = easting - (zone * 1e6 + 500000.0)\n val beta = x / 6367558.497\n val cosBeta = cos(beta)\n val cos2beta = cosBeta * cosBeta\n val bx = ((2382 * cos2beta + 293609) * cos2beta + 50221747) * sin(beta) * cos(beta) * 1e-10 + beta\n val cosBx = cos(bx)\n val cos2Bx = cosBx * cosBx\n val sinBx = sin(bx)\n val sin2Bx = sinBx * sinBx\n val a22 = (0.003369263 * cos2Bx + 0.5) * sinBx * cosBx\n val a24 = ((0.0056154 - 0.0000151 * cos2Bx) * cos2Bx + 0.1616128) * cos2Bx + 0.25\n val a26 = ((0.00389 * cos2Bx + 0.04310) * cos2Bx - 0.00168) * cos2Bx + 0.125\n val a28 = ((0.013 * cos2Bx + 0.008) * cos2Bx - 0.031) * cos2Bx + 0.078\n val b13 = (1 / 6.0 - 0.00112309 * cos2Bx) * cos2Bx - 1 / 3.0\n val b15 = ((0.008783 - 0.000112 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 0.2\n val b17 = (1 / 6.0 - 0.0361 * cos2Bx) * cos2Bx - 0.1429\n val b19 = ((0.064 - 0.004 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 1 / 9.0\n val nx = ((0.605 * sin2Bx + 107.155) * sin2Bx + 21346.142) * sin2Bx + ellipsoid.semiMajorAxis\n val z = y / (nx * cosBx)\n\n latitude = bx + (((a28 * z * z - a26) * z * z + a24) * z * z - 1) * z * z * a22\n longitude = l0 + ((((b19 * z * z + b17) * z * z + b15) * z * z + b13) * z * z + 1) * z\n\n return NO_ERROR\n }\n\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.jvm.JvmStatic\n\ndata class HelmertParameters(\n // Linear transformation elements, in metres\n val dX: Double,\n val dY: Double,\n val dZ: Double,\n\n // Angular transformation elements, in arc-seconds\n val omegaX: Double,\n val omegaY: Double,\n val omegaZ: Double,\n\n // Scale differential\n val m: Double,\n\n // Ellipsoid\n val fromEllipsoid: Ellipsoid,\n val toEllipsoid: Ellipsoid\n) {\n companion object {\n @JvmStatic val UCS2000_WGS84 = HelmertParameters(\n 24.3234, -121.3708, -75.8275,\n 0.0, 0.0, 0.0,\n -1.74e-9, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_UCS2000 = HelmertParameters(\n -24.3234, 121.3708, 75.8275,\n 0.0, 0.0, 0.0,\n 1.74e-9, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n @JvmStatic val SK42_WGS84 = HelmertParameters(\n 23.92, -141.27, -80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_SK42 = HelmertParameters(\n -23.92, 141.27, 80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.projection.Wgs84Projection\n\nobject HelmertTransformation {\n\n fun transform(position: Position, parameters: HelmertParameters, result: Position = Position()) =\n transform(position.latitude, position.longitude, position.altitude, parameters, result)\n\n fun transform(latitude: Angle, longitude: Angle, altitude: Double, parameters: HelmertParameters, result: Position = Position()): Position {\n val projection = Wgs84Projection()\n val fromGlobe = Globe(parameters.fromEllipsoid, projection)\n val toGlobe = Globe(parameters.toEllipsoid, projection)\n val fromCartesian = fromGlobe.geographicToCartesian(latitude, longitude, altitude, Vec3())\n val toCartesian = transform(fromCartesian, parameters)\n return toGlobe.cartesianToGeographic(toCartesian.x, toCartesian.y, toCartesian.z, result)\n }\n\n fun transform(point: Vec3, parameters: HelmertParameters, result: Vec3 = Vec3()) =\n transform(point.x, point.y, point.z, parameters, result)\n\n fun transform(x: Double, y: Double, z: Double, parameters: HelmertParameters, result: Vec3 = Vec3()) = result.set(\n x + -parameters.omegaZ * z + parameters.m * x + parameters.omegaX * y + parameters.dY,\n y + parameters.omegaY * z + -parameters.omegaX * x + parameters.m * y + parameters.dZ,\n z + parameters.m * z + parameters.omegaZ * x + -parameters.omegaY * y + parameters.dX\n )\n\n}","package earth.worldwind.geom.coords\n\nenum class Hemisphere { N, S; }","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds an immutable MGRS coordinate string along with\r\n * the corresponding latitude and longitude.\r\n */\r\nclass MGRSCoord private constructor(val latitude: Angle, val longitude: Angle, private val MGRSString: String) {\r\n companion object {\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the maximum precision of five digits (one meter).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 5)\r\n\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the given precision or number of digits (1 to 5).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @param precision the number of digits used for easting and northing (1 to 5).\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle, precision: Int): MGRSCoord {\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertGeodeticToMGRS(latitude.inRadians, longitude.inRadians, precision)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(latitude, longitude, converter.mgrsString)\r\n }\r\n\r\n /**\r\n * Create a MGRS coordinate from a standard MGRS coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * Valid examples:
\r\n * 32TLP5626635418
\r\n * 32 T LP 56266 35418
\r\n * 11S KU 528 111
\r\n *\r\n * @param MGRSString the MGRS coordinate text string.\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the [MGRSString] is empty,\r\n * the [Globe] is null, or the conversion to geodetic coordinates fails (invalid coordinate string).\r\n */\r\n @JvmStatic\r\n fun fromString(MGRSString: String): MGRSCoord {\r\n var str = MGRSString\r\n str = str.uppercase().replace(\" \", \"\")\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertMGRSToGeodetic(str)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(converter.latitude.radians, converter.longitude.radians, str)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = MGRSString\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.util.format.format\r\nimport kotlin.math.PI\r\nimport kotlin.math.floor\r\nimport kotlin.math.pow\r\n\r\n/*\r\n * Converter used to translate MGRS coordinate strings to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans mgrs.c and mgrs.h code. Contains routines to convert from Geodetic to MGRS and\r\n * the other direction.\r\n */\r\ninternal class MGRSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val STRING_ERROR = 0x0004\r\n const val PRECISION_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0040\r\n const val NORTHING_ERROR = 0x0080\r\n const val HEMISPHERE_ERROR = 0x0200\r\n const val LAT_WARNING = 0x0400\r\n const val UTM_ERROR = 0x1000\r\n const val UPS_ERROR = 0x2000\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val MAX_PRECISION = 5\r\n private const val MIN_UTM_LAT = -80 * PI / 180.0 // -80 degrees in radians\r\n private const val MAX_UTM_LAT = 84 * PI / 180.0 // 84 degrees in radians\r\n private const val DEG_TO_RAD = 0.017453292519943295 // PI/180\r\n private const val RAD_TO_DEG = 57.29577951308232 // 180/PI\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n private const val TWO_MIL = 2000000.0\r\n private const val ONE_HT = 100000.0\r\n private const val CLARKE_1866 = \"CC\"\r\n private const val CLARKE_1880 = \"CD\"\r\n private const val BESSEL_1841 = \"BR\"\r\n private const val BESSEL_1841_NAMIBIA = \"BN\"\r\n private const val LETTER_A = 0 /* ARRAY INDEX FOR LETTER A */\r\n private const val LETTER_B = 1 /* ARRAY INDEX FOR LETTER B */\r\n private const val LETTER_C = 2 /* ARRAY INDEX FOR LETTER C */\r\n private const val LETTER_D = 3 /* ARRAY INDEX FOR LETTER D */\r\n private const val LETTER_E = 4 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_F = 5 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_G = 6 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_H = 7 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_I = 8 /* ARRAY INDEX FOR LETTER I */\r\n private const val LETTER_J = 9 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_K = 10 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_L = 11 /* ARRAY INDEX FOR LETTER L */\r\n private const val LETTER_M = 12 /* ARRAY INDEX FOR LETTER M */\r\n private const val LETTER_N = 13 /* ARRAY INDEX FOR LETTER N */\r\n private const val LETTER_O = 14 /* ARRAY INDEX FOR LETTER O */\r\n private const val LETTER_P = 15 /* ARRAY INDEX FOR LETTER P */\r\n private const val LETTER_Q = 16 /* ARRAY INDEX FOR LETTER Q */\r\n private const val LETTER_R = 17 /* ARRAY INDEX FOR LETTER R */\r\n private const val LETTER_S = 18 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_T = 19 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_U = 20 /* ARRAY INDEX FOR LETTER U */\r\n private const val LETTER_V = 21 /* ARRAY INDEX FOR LETTER V */\r\n private const val LETTER_W = 22 /* ARRAY INDEX FOR LETTER W */\r\n private const val LETTER_X = 23 /* ARRAY INDEX FOR LETTER X */\r\n private const val LETTER_Y = 24 /* ARRAY INDEX FOR LETTER Y */\r\n private const val LETTER_Z = 25 /* ARRAY INDEX FOR LETTER Z */\r\n private const val MGRS_LETTERS = 3 /* NUMBER OF LETTERS IN MGRS */\r\n private const val alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\r\n\r\n // UPS Constants are in the following order:\r\n // letter representing latitude band\r\n // 2nd letter range - high number\r\n // 2nd letter range - low number\r\n // 3rd letter range - high number (UPS)\r\n // False easting based on 2nd letter\r\n // False northing based on 3rd letter\r\n private val upsConstants = arrayOf(\r\n intArrayOf(LETTER_A, LETTER_J, LETTER_Z, LETTER_Z, 800000, 800000),\r\n intArrayOf(LETTER_B, LETTER_A, LETTER_R, LETTER_Z, 2000000, 800000),\r\n intArrayOf(LETTER_Y, LETTER_J, LETTER_Z, LETTER_P, 800000, 1300000),\r\n intArrayOf(LETTER_Z, LETTER_A, LETTER_J, LETTER_P, 2000000, 1300000)\r\n )\r\n\r\n // Latitude Band Constants are in the following order:\r\n // letter representing latitude band\r\n // minimum northing for latitude band\r\n // upper latitude for latitude band\r\n // lower latitude for latitude band\r\n private val latitudeBandConstants = arrayOf(\r\n doubleArrayOf(LETTER_C.toDouble(), 1100000.0, -72.0, -80.5, 0.0),\r\n doubleArrayOf(LETTER_D.toDouble(), 2000000.0, -64.0, -72.0, 2000000.0),\r\n doubleArrayOf(LETTER_E.toDouble(), 2800000.0, -56.0, -64.0, 2000000.0),\r\n doubleArrayOf(LETTER_F.toDouble(), 3700000.0, -48.0, -56.0, 2000000.0),\r\n doubleArrayOf(LETTER_G.toDouble(), 4600000.0, -40.0, -48.0, 4000000.0),\r\n doubleArrayOf(LETTER_H.toDouble(), 5500000.0, -32.0, -40.0, 4000000.0),\r\n doubleArrayOf(LETTER_J.toDouble(), 6400000.0, -24.0, -32.0, 6000000.0),\r\n doubleArrayOf(LETTER_K.toDouble(), 7300000.0, -16.0, -24.0, 6000000.0),\r\n doubleArrayOf(LETTER_L.toDouble(), 8200000.0, -8.0, -16.0, 8000000.0),\r\n doubleArrayOf(LETTER_M.toDouble(), 9100000.0, 0.0, -8.0, 8000000.0),\r\n doubleArrayOf(LETTER_N.toDouble(), 0.0, 8.0, 0.0, 0.0),\r\n doubleArrayOf(LETTER_P.toDouble(), 800000.0, 16.0, 8.0, 0.0),\r\n doubleArrayOf(LETTER_Q.toDouble(), 1700000.0, 24.0, 16.0, 0.0),\r\n doubleArrayOf(LETTER_R.toDouble(), 2600000.0, 32.0, 24.0, 2000000.0),\r\n doubleArrayOf(LETTER_S.toDouble(), 3500000.0, 40.0, 32.0, 2000000.0),\r\n doubleArrayOf(LETTER_T.toDouble(), 4400000.0, 48.0, 40.0, 4000000.0),\r\n doubleArrayOf(LETTER_U.toDouble(), 5300000.0, 56.0, 48.0, 4000000.0),\r\n doubleArrayOf(LETTER_V.toDouble(), 6200000.0, 64.0, 56.0, 6000000.0),\r\n doubleArrayOf(LETTER_W.toDouble(), 7000000.0, 72.0, 64.0, 6000000.0),\r\n doubleArrayOf(LETTER_X.toDouble(), 7900000.0, 84.5, 72.0, 6000000.0)\r\n )\r\n }\r\n\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n var mgrsString = \"\"\r\n private set\r\n private var ltr2LowValue = 0\r\n private var ltr2HighValue = 0 // this is only used for doing MGRS to xxx conversions.\r\n private var falseNorthing = 0.0\r\n private var lastLetter = 0\r\n private var lastError = NO_ERROR\r\n private var north = 0.0\r\n private var south = 0.0\r\n private var minNorthing = 0.0\r\n private var northingOffset = 0.0\r\n private val mgrsEllipsoidCode = \"WE\"\r\n\r\n private class MGRSComponents(\r\n val zone: Int, val latitudeBand: Int, val squareLetter1: Int, val squareLetter2: Int,\r\n val easting: Double, val northing: Double, val precision: Int\r\n ) {\r\n override fun toString() = \"MGRS: \" + zone + \" \" + alphabet[latitudeBand] + \" \" +\r\n alphabet[squareLetter1] + alphabet[squareLetter2] + \" \" +\r\n easting + \" \" + northing + \" \" + \"(\" + precision + \")\"\r\n }\r\n\r\n /**\r\n * The function ConvertMGRSToGeodetic converts an MGRS coordinate string to Geodetic (latitude and longitude)\r\n * coordinates according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param MGRSString MGRS coordinate string.\r\n *\r\n * @return the error code.\r\n */\r\n fun convertMGRSToGeodetic(MGRSString: String): Int {\r\n latitude = 0.0\r\n longitude = 0.0\r\n val mgrs = breakMGRSString(MGRSString) ?: return lastError\r\n var errorCode = NO_ERROR\r\n if (mgrs.zone != 0) {\r\n val utm = convertMGRSToUTM(MGRSString)\r\n if (utm != null) {\r\n latitude = utm.latitude.inRadians\r\n longitude = utm.longitude.inRadians\r\n } else errorCode = UTM_ERROR\r\n } else {\r\n val ups = convertMGRSToUPS(MGRSString)\r\n if (ups != null) {\r\n latitude = ups.latitude.inRadians\r\n longitude = ups.longitude.inRadians\r\n } else errorCode = UPS_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Break_MGRS_String breaks down an MGRS coordinate string into its component parts. Updates\r\n * last_error.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [MGRSComponents] or null.\r\n */\r\n private fun breakMGRSString(MGRSString: String): MGRSComponents? {\r\n var str = MGRSString\r\n var i = 0\r\n var errorCode = NO_ERROR\r\n var zone = 0\r\n val letters = IntArray(3)\r\n var easting = 0L\r\n var northing = 0L\r\n var precision = 0\r\n str = str.uppercase().replace(\"\\\\s\", \"\")\r\n var j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n var numDigits = i - j\r\n if (numDigits <= 2) {\r\n if (numDigits > 0) {\r\n /* get zone */\r\n zone = str.substring(j, i).toInt()\r\n if (zone < 1 || zone > 60) errorCode = errorCode or STRING_ERROR\r\n }\r\n }\r\n j = i\r\n while (i < str.length && str[i].isLetter()) i++\r\n val numLetters = i - j\r\n if (numLetters == 3) {\r\n /* get letters */\r\n letters[0] = alphabet.indexOf(str[j].uppercaseChar())\r\n if (letters[0] == LETTER_I || letters[0] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[1] = alphabet.indexOf(str[j + 1].uppercaseChar())\r\n if (letters[1] == LETTER_I || letters[1] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[2] = alphabet.indexOf(str[j + 2].uppercaseChar())\r\n if (letters[2] == LETTER_I || letters[2] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n } else errorCode = errorCode or STRING_ERROR\r\n j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n numDigits = i - j\r\n if (numDigits <= 10 && numDigits % 2 == 0) {\r\n /* get easting, northing and precision */\r\n /* get easting & northing */\r\n val n = numDigits / 2\r\n precision = n\r\n if (n > 0) {\r\n easting = str.substring(j, j + n).toLong()\r\n northing = str.substring(j + n, j + n + n).toLong()\r\n val multiplier = 10.0.pow(5 - n).toLong()\r\n easting *= multiplier\r\n northing *= multiplier\r\n } else {\r\n easting = 0\r\n northing = 0\r\n }\r\n } else errorCode = errorCode or STRING_ERROR\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR) MGRSComponents(\r\n zone, letters[0], letters[1], letters[2],\r\n easting.toDouble(), northing.toDouble(), precision\r\n ) else null\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Band_Min_Northing receives a latitude band letter and uses the Latitude_Band_Table to\r\n * determine the minimum northing for that latitude band letter. Updates min_northing.\r\n *\r\n * @param letter Latitude band letter.\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeBandMinNorthing(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n minNorthing = latitudeBandConstants[letter - 2][1]\r\n northingOffset = latitudeBandConstants[letter - 2][4]\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n minNorthing = latitudeBandConstants[letter - 3][1]\r\n northingOffset = latitudeBandConstants[letter - 3][4]\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n minNorthing = latitudeBandConstants[letter - 4][1]\r\n northingOffset = latitudeBandConstants[letter - 4][4]\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Range receives a latitude band letter and uses the Latitude_Band_Table to determine the\r\n * latitude band boundaries for that latitude band letter. Updates north and south.\r\n *\r\n * @param letter the Latitude band letter\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeRange(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n north = latitudeBandConstants[letter - 2][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 2][3] * DEG_TO_RAD\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n north = latitudeBandConstants[letter - 3][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 3][3] * DEG_TO_RAD\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n north = latitudeBandConstants[letter - 4][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 4][3] * DEG_TO_RAD\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function convertMGRSToUTM converts an MGRS coordinate string to UTM projection (zone, hemisphere, easting and\r\n * northing) coordinates according to the current ellipsoid parameters. Updates last_error if any errors occurred.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [UTMCoord] or null.\r\n */\r\n private fun convertMGRSToUTM(MGRSString: String): UTMCoord? {\r\n var errorCode = NO_ERROR\r\n var utm: UTMCoord? = null\r\n val mgrs = breakMGRSString(MGRSString)\r\n if (mgrs == null) errorCode = errorCode or STRING_ERROR else {\r\n if (mgrs.latitudeBand == LETTER_X && (mgrs.zone == 32 || mgrs.zone == 34 || mgrs.zone == 36))\r\n errorCode = errorCode or STRING_ERROR\r\n else {\r\n val hemisphere = if (mgrs.latitudeBand < LETTER_N) Hemisphere.S else Hemisphere.N\r\n getGridValues(mgrs.zone)\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter2 > LETTER_V) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n var gridNorthing = mgrs.squareLetter2 * ONE_HT\r\n var gridEasting = (mgrs.squareLetter1 - ltr2LowValue + 1) * ONE_HT\r\n if (ltr2LowValue == LETTER_J && mgrs.squareLetter1 > LETTER_O) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n errorCode = getLatitudeBandMinNorthing(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing -= falseNorthing\r\n if (gridNorthing < 0.0) gridNorthing += TWO_MIL\r\n gridNorthing += northingOffset\r\n if (gridNorthing < minNorthing) gridNorthing += TWO_MIL\r\n val easting = gridEasting + mgrs.easting\r\n val northing = gridNorthing + mgrs.northing\r\n try {\r\n utm = UTMCoord.fromUTM(mgrs.zone, hemisphere, easting, northing)\r\n latitude = utm.latitude.inRadians\r\n val divisor = 10.0.pow(mgrs.precision)\r\n errorCode = getLatitudeRange(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n if (!(south - DEG_TO_RAD / divisor <= latitude\r\n && latitude <= north + DEG_TO_RAD / divisor)\r\n ) errorCode = errorCode or LAT_WARNING\r\n }\r\n } catch (e: Exception) {\r\n errorCode = UTM_ERROR\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR || errorCode == LAT_WARNING) utm else null\r\n }\r\n\r\n /**\r\n * The function convertGeodeticToMGRS converts Geodetic (latitude and longitude) coordinates to an MGRS coordinate\r\n * string, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned by\r\n * the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radian\r\n * @param precision Precision level of MGRS string\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToMGRS(latitude: Double, longitude: Double, precision: Int): Int {\r\n mgrsString = \"\"\r\n var errorCode = NO_ERROR\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = LAT_ERROR\r\n if (longitude < -PI || longitude > 2 * PI) errorCode = LON_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n errorCode = if (latitude < MIN_UTM_LAT || latitude > MAX_UTM_LAT) {\r\n try {\r\n val ups = UPSCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUPSToMGRS(ups.hemisphere, ups.easting, ups.northing, precision)\r\n } catch (e: Exception) {\r\n UPS_ERROR\r\n }\r\n } else {\r\n try {\r\n val utm = UTMCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUTMToMGRS(utm.zone, latitude, utm.easting, utm.northing, precision)\r\n } catch (e: Exception) {\r\n UTM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, and northing) coordinates to an MGRS\r\n * coordinate string according to the current ellipsoid parameters. If any errors occur, the error code(s) are\r\n * returned by the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n * @param precision precision level of MGRS string\r\n *\r\n * @return error value\r\n */\r\n private fun convertUPSToMGRS(hemisphere: Hemisphere, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* northing used to derive 3rd letter of MGRS */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (east < MIN_EAST_NORTH || east > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (north < MIN_EAST_NORTH || north > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = errorCode or PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n if (Hemisphere.N == hemisphere) {\r\n if (east >= TWO_MIL) letters[0] = LETTER_Z else letters[0] = LETTER_Y\r\n val index = letters[0] - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n if (east >= TWO_MIL) letters[0] = LETTER_B else letters[0] = LETTER_A\r\n ltr2LowValue = upsConstants[letters[0]][1]\r\n falseEasting = upsConstants[letters[0]][4].toDouble()\r\n falseNorthing = upsConstants[letters[0]][5].toDouble()\r\n }\r\n gridNorthing = north\r\n gridNorthing -= falseNorthing\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n gridEasting -= falseEasting\r\n letters[1] = ltr2LowValue + (gridEasting / ONE_HT).toInt()\r\n if (east < TWO_MIL) {\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n if (letters[1] > LETTER_U) letters[1] = letters[1] + 2\r\n } else {\r\n if (letters[1] > LETTER_C) letters[1] = letters[1] + 2\r\n if (letters[1] > LETTER_H) letters[1] = letters[1] + 1\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n }\r\n makeMGRSString(0, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function UTM_To_MGRS calculates an MGRS coordinate string based on the zone, latitude, easting and northing.\r\n *\r\n * @param zone Zone number\r\n * @param latitude Latitude in radians\r\n * @param easting Easting\r\n * @param northing Northing\r\n * @param precision Precision\r\n *\r\n * @return error code\r\n */\r\n private fun convertUTMToMGRS(zone: Int, latitude: Double, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n var gridEasting: Double /* Easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* Northing used to derive 3rd letter of MGRS */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n\r\n /* Round easting and northing values */\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n getGridValues(zone)\r\n val errorCode = getLatitudeLetter(latitude)\r\n letters[0] = lastLetter\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = north\r\n if (gridNorthing == 1e7) gridNorthing -= 1.0\r\n while (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n gridNorthing += falseNorthing\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n if (letters[0] == LETTER_V && zone == 31 && gridEasting == 500000.0) gridEasting -= 1.0 /* SUBTRACT 1 METER */\r\n letters[1] = ltr2LowValue + ((gridEasting / ONE_HT).toInt() - 1)\r\n if (ltr2LowValue == LETTER_J && letters[1] > LETTER_N) letters[1] = letters[1] + 1\r\n makeMGRSString(zone, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Grid_Values sets the letter range used for the 2nd letter in the MGRS coordinate string, based\r\n * on the set number of the utm zone. It also sets the false northing using a value of A for the second letter of\r\n * the grid square, based on the grid pattern and set number of the utm zone.\r\n *
\r\n * Key values that are set in this function include: ltr2_low_value, ltr2_high_value, and false_northing.\r\n *\r\n * @param zone Zone number\r\n */\r\n private fun getGridValues(zone: Int) {\r\n var setNumber = zone % 6 /* Set number (1-6) based on UTM zone number */\r\n if (setNumber == 0) setNumber = 6\r\n val aaPattern = if (mgrsEllipsoidCode.compareTo(CLARKE_1866) == 0\r\n || mgrsEllipsoidCode.compareTo(CLARKE_1880) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841_NAMIBIA) == 0\r\n ) 0 else 1 /* Pattern based on ellipsoid code */\r\n if (setNumber == 1 || setNumber == 4) {\r\n ltr2LowValue = LETTER_A\r\n ltr2HighValue = LETTER_H\r\n } else if (setNumber == 2 || setNumber == 5) {\r\n ltr2LowValue = LETTER_J\r\n ltr2HighValue = LETTER_R\r\n } else if (setNumber == 3 || setNumber == 6) {\r\n ltr2LowValue = LETTER_S\r\n ltr2HighValue = LETTER_Z\r\n }\r\n\r\n /* False northing at A for second letter of grid square */\r\n falseNorthing = if (aaPattern == 1) {\r\n if (setNumber % 2 == 0) 500000.0\r\n else 0.0\r\n } else {\r\n if (setNumber % 2 == 0) 1500000.0\r\n else 1000000.00\r\n }\r\n }\r\n\r\n /**\r\n * The function receives a latitude value and uses the Latitude_Band_Table to determine the\r\n * latitude band letter for that latitude.\r\n *\r\n * @param latitude latitude to turn into code\r\n *\r\n * @return error code\r\n */\r\n private fun getLatitudeLetter(latitude: Double): Int {\r\n var errorCode = NO_ERROR\r\n val latDeg = latitude * RAD_TO_DEG\r\n if (latDeg >= 72 && latDeg < 84.5) lastLetter = LETTER_X\r\n else if (latDeg > -80.5 && latDeg < 72) {\r\n val temp = (latitude + 80.0 * DEG_TO_RAD) / (8.0 * DEG_TO_RAD) + 1.0e-12\r\n lastLetter = latitudeBandConstants[temp.toInt()][0].toInt()\r\n } else errorCode = errorCode or LAT_ERROR\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Round_MGRS rounds the input value to the nearest integer, using the standard engineering rule. The\r\n * rounded integer value is then returned.\r\n *\r\n * @param value Value to be rounded\r\n *\r\n * @return rounded double value\r\n */\r\n private fun roundMGRS(value: Double): Double {\r\n val floorValue = floor(value)\r\n val fraction = value - floorValue\r\n var intValue = floorValue.toLong()\r\n if (fraction > 0.5 || fraction == 0.5 && intValue % 2 == 1L) intValue++\r\n return intValue.toDouble()\r\n }\r\n\r\n /**\r\n * The function Make_MGRS_String constructs an MGRS string from its component parts.\r\n *\r\n * @param zone UTM Zone\r\n * @param letters MGRS coordinate string letters\r\n * @param easting Easting value\r\n * @param northing Northing value\r\n * @param precision Precision level of MGRS string\r\n */\r\n private fun makeMGRSString(zone: Int, letters: IntArray, easting: Double, northing: Double, precision: Int) {\r\n var east = easting\r\n var north = northing\r\n mgrsString = if (zone != 0) \"%02d\".format(zone) else \" \"\r\n for (j in 0..2) {\r\n if (letters[j] < 0 || letters[j] > 26) return\r\n mgrsString += alphabet[letters[j]]\r\n }\r\n val divisor = 10.0.pow(5 - precision)\r\n east %= 100000.0\r\n if (east >= 99999.5) east = 99999.0\r\n\r\n // Here we need to only use the number requesting in the precision\r\n val iEast = (east / divisor).toInt()\r\n var sEast = StringBuilder(iEast.toString())\r\n if (sEast.length > precision) sEast = StringBuilder(sEast.substring(0, precision - 1))\r\n else for (i in 0 until precision - sEast.length) sEast.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sEast\"\r\n north %= 100000.0\r\n if (north >= 99999.5) north = 99999.0\r\n val iNorth = (north / divisor).toInt()\r\n var sNorth = StringBuilder(iNorth.toString())\r\n if (sNorth.length > precision) sNorth = StringBuilder(sNorth.substring(0, precision - 1))\r\n else for (i in 0 until precision - sNorth.length) sNorth.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sNorth\"\r\n }\r\n\r\n /**\r\n * The function Convert_MGRS_To_UPS converts an MGRS coordinate string to UPS (hemisphere, easting, and northing)\r\n * coordinates, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param MGRS the MGRS coordinate string.\r\n *\r\n * @return a corresponding [UPSCoord] instance.\r\n */\r\n private fun convertMGRSToUPS(MGRS: String): UPSCoord? {\r\n val ltr2HighValue: Int /* 2nd letter range - high number */\r\n val ltr3HighValue: Int /* 3rd letter range - high number (UPS) */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting for 100,000 meter grid square */\r\n var gridNorthing: Double /* northing for 100,000 meter grid square */\r\n var errorCode = NO_ERROR\r\n val hemisphere: Hemisphere\r\n var easting: Double\r\n var northing: Double\r\n val mgrs = breakMGRSString(MGRS)\r\n if (mgrs != null) {\r\n if (mgrs.zone > 0) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n easting = mgrs.easting\r\n northing = mgrs.northing\r\n if (mgrs.latitudeBand >= LETTER_Y) {\r\n hemisphere = Hemisphere.N\r\n val index = mgrs.latitudeBand - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n ltr2HighValue = upsConstants[index][2]\r\n ltr3HighValue = upsConstants[index][3]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n hemisphere = Hemisphere.S\r\n ltr2LowValue = upsConstants[mgrs.latitudeBand][1]\r\n ltr2HighValue = upsConstants[mgrs.latitudeBand][2]\r\n ltr3HighValue = upsConstants[mgrs.latitudeBand][3]\r\n falseEasting = upsConstants[mgrs.latitudeBand][4].toDouble()\r\n falseNorthing = upsConstants[mgrs.latitudeBand][5].toDouble()\r\n }\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter1 == LETTER_D || mgrs.squareLetter1 == LETTER_E ||\r\n mgrs.squareLetter1 == LETTER_M || mgrs.squareLetter1 == LETTER_N ||\r\n mgrs.squareLetter1 == LETTER_V || mgrs.squareLetter1 == LETTER_W ||\r\n mgrs.squareLetter2 > ltr3HighValue) errorCode = STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = mgrs.squareLetter2 * ONE_HT + falseNorthing\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n gridEasting = (mgrs.squareLetter1 - ltr2LowValue) * ONE_HT + falseEasting\r\n if (ltr2LowValue != LETTER_A) {\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n if (mgrs.squareLetter1 > LETTER_U) gridEasting -= 200000.0\r\n } else {\r\n if (mgrs.squareLetter1 > LETTER_C) gridEasting -= 200000.0\r\n if (mgrs.squareLetter1 > LETTER_I) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n }\r\n easting += gridEasting\r\n northing += gridNorthing\r\n return UPSCoord.fromUPS(hemisphere, easting, northing)\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans polarst.c and polarst.h code.\r\n */\r\ninternal class PolarCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val ORIGIN_LAT_ERROR = 0x0004\r\n const val ORIGIN_LON_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0010\r\n const val NORTHING_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val RADIUS_ERROR = 0x0100\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val PI_Over_4 = PI / 4.0\r\n private const val TWO_PI = 2.0 * PI\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private var es = 0.08181919084262188000 /* Eccentricity of ellipsoid */\r\n private var esOver2 = .040909595421311 /* es / 2.0 */\r\n private var southernHemisphere = 0.0 /* Flag variable */\r\n private var mc = 1.0\r\n private var tc = 1.0\r\n private var e4 = 1.0033565552493\r\n private var amc = 6378137.0 /* Polar_a * mc */\r\n private var twoA = 12756274.0 /* 2.0 * Polar_a */\r\n\r\n /* Polar Stereographic projection Parameters */\r\n private var originLat = PI * 90.0 / 180.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 12713601.0\r\n private var deltaNorthing = 12713601.0\r\n\r\n var easting = 0.0\r\n private set\r\n var northing = 0.0\r\n private set\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function setPolarStereographicParameters receives the ellipsoid parameters and Polar Stereographic projection\r\n * parameters as inputs, and sets the corresponding state variables. If any errors occur, error code(s) are\r\n * returned by the function, otherwise POLAR_NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude of true scale, in radians\r\n * @param longitude Longitude down from pole, in radians\r\n * @param easting Easting (X) at center of projection, in meters\r\n * @param northing Northing (Y) at center of projection, in meters\r\n * @return error code\r\n */\r\n fun setPolarStereographicParameters(\r\n a: Double, f: Double, latitude: Double, longitude: Double, easting: Double, northing: Double\r\n ): Int {\r\n var lon = longitude\r\n val invF = 1 / f\r\n val epsilon = 1.0e-2\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* Origin Latitude out of range */\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* Origin Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or ORIGIN_LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n twoA = 2.0 * this.a\r\n this.f = f\r\n if (lon > PI) lon -= TWO_PI\r\n if (latitude < 0) {\r\n southernHemisphere = 1.0\r\n originLat = -latitude\r\n originLong = -lon\r\n } else {\r\n southernHemisphere = 0.0\r\n originLat = latitude\r\n originLong = lon\r\n }\r\n falseEasting = easting\r\n falseNorthing = northing\r\n val es2 = 2 * this.f - this.f * this.f\r\n es = sqrt(es2)\r\n esOver2 = es / 2.0\r\n if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) {\r\n val sLat = sin(originLat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val cLat = cos(originLat)\r\n mc = cLat / sqrt(1.0 - esSin * esSin)\r\n amc = this.a * mc\r\n tc = tan(PI_Over_4 - originLat / 2.0) / powEs\r\n } else {\r\n val onePlusEs = 1.0 + es\r\n val oneMinusEs = 1.0 - es\r\n e4 = sqrt(onePlusEs.pow(onePlusEs) * oneMinusEs.pow(oneMinusEs))\r\n }\r\n }\r\n\r\n /* Calculate Radius */\r\n convertGeodeticToPolarStereographic(0.0, originLong)\r\n deltaNorthing = this.northing * 2 // Increased range for accepted easting and northing values\r\n deltaNorthing = abs(deltaNorthing) + epsilon\r\n deltaEasting = deltaNorthing\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic coordinates (latitude and longitude) to\r\n * Polar Stereographic coordinates (easting and northing), according to the current ellipsoid and Polar\r\n * Stereographic projection parameters. If any errors occur, error code(s) are returned by the function, otherwise\r\n * POLAR_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude, in radians\r\n * @param longitude Longitude, in radians\r\n * @return error code\r\n */\r\n fun convertGeodeticToPolarStereographic(latitude: Double, longitude: Double): Int {\r\n var lat = latitude\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (lat < -PI_OVER_2 || lat > PI_OVER_2) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat < 0 && southernHemisphere == 0.0) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat > 0 && southernHemisphere == 1.0) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (abs(abs(lat) - PI_OVER_2) < 1.0e-10) {\r\n easting = 0.0\r\n northing = 0.0\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n lon *= -1.0\r\n lat *= -1.0\r\n }\r\n var dLam = lon - originLong\r\n if (dLam > PI) dLam -= TWO_PI\r\n if (dLam < -PI) dLam += TWO_PI\r\n val sLat = sin(lat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val t = tan(PI_Over_4 - lat / 2.0) / powEs\r\n val rho = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) amc * t / tc else twoA * t / e4\r\n if (southernHemisphere != 0.0) {\r\n easting = -(rho * sin(dLam) - falseEasting)\r\n northing = rho * cos(dLam) + falseNorthing\r\n } else easting = rho * sin(dLam) + falseEasting\r\n northing = -rho * cos(dLam) + falseNorthing\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Polar_Stereographic_To_Geodetic converts Polar\r\n * Stereographic coordinates (easting and northing) to geodetic\r\n * coordinates (latitude and longitude) according to the current ellipsoid\r\n * and Polar Stereographic projection Parameters. If any errors occur, the\r\n * code(s) are returned by the function, otherwise POLAR_NO_ERROR\r\n * is returned.\r\n *\r\n * @param Easting Easting (X), in meters\r\n * @param Northing Northing (Y), in meters\r\n * @return error code\r\n */\r\n fun convertPolarStereographicToGeodetic(Easting: Double, Northing: Double): Int {\r\n var dy = 0.0\r\n var dx = 0.0\r\n var rho = 0.0\r\n var tempPhi = 0.0\r\n var errorCode = NO_ERROR\r\n val minEasting = falseEasting - deltaEasting\r\n val maxEasting = falseEasting + deltaEasting\r\n val minNorthing = falseNorthing - deltaNorthing\r\n val maxNorthing = falseNorthing + deltaNorthing\r\n /* Easting out of range */\r\n if (Easting > maxEasting || Easting < minEasting) errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (Northing > maxNorthing || Northing < minNorthing) errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n dy = Northing - falseNorthing\r\n dx = Easting - falseEasting\r\n /* Radius of point with origin of false easting, false northing */\r\n rho = sqrt(dx * dx + dy * dy)\r\n val deltaRadius = sqrt(deltaEasting * deltaEasting + deltaNorthing * deltaNorthing)\r\n /* Point is outside of projection area */\r\n if (rho > deltaRadius) errorCode = errorCode or RADIUS_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (dy == 0.0 && dx == 0.0) {\r\n latitude = PI_OVER_2\r\n longitude = originLong\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n dy *= -1.0\r\n dx *= -1.0\r\n }\r\n val t = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) rho * tc / amc else rho * e4 / twoA\r\n var phi = PI_OVER_2 - 2.0 * atan(t)\r\n while (abs(phi - tempPhi) > 1.0e-10) {\r\n tempPhi = phi\r\n val sinPhi = sin(phi)\r\n val esSin = es * sinPhi\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n phi = PI_OVER_2 - 2.0 * atan(t * powEs)\r\n }\r\n latitude = phi\r\n longitude = originLong + atan2(dx, -dy)\r\n if (longitude > PI) longitude -= TWO_PI\r\n else if (longitude < -PI) longitude += TWO_PI\r\n /* force distorted values to 90, -90 degrees */\r\n if (latitude > PI_OVER_2) latitude = PI_OVER_2\r\n else if (latitude < -PI_OVER_2) latitude = -PI_OVER_2\r\n /* force distorted values to 180, -180 degrees */\r\n if (longitude > PI) longitude = PI else if (longitude < -PI) longitude = -PI\r\n }\r\n if (southernHemisphere != 0.0) {\r\n latitude *= -1.0\r\n longitude *= -1.0\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds a set of Transverse Mercator coordinates along with the\r\n * corresponding latitude and longitude.\r\n */\r\nclass TMCoord private constructor(val latitude: Angle, val longitude: Angle, val easting: Double, val northing: Double) {\r\n companion object {\r\n /**\r\n * Create a set of Transverse Mercator coordinates from a pair of latitude and longitude,\r\n * for the given [Globe] and projection parameters.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n * @param aOrNull semi-major ellipsoid radius. If this and argument f are non-null and globe is null, will use the specified a and f.\r\n * @param fOrNull ellipsoid flattening. If this and argument a are non-null and globe is null, will use the specified a and f.\r\n * @param originLatitude the origin latitude.\r\n * @param centralMeridian the central meridian longitude.\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * or the conversion to TM coordinates fails. If the globe is null conversion will default\r\n * to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(\r\n latitude: Angle, longitude: Angle, aOrNull: Double?, fOrNull: Double?,\r\n originLatitude: Angle, centralMeridian: Angle, falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n var a = aOrNull\r\n var f = fOrNull\r\n val converter = TMCoordConverter()\r\n if (a == null || f == null) {\r\n a = converter.a\r\n f = converter.f\r\n }\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertGeodeticToTransverseMercator(latitude.inRadians, longitude.inRadians)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(latitude, longitude, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of Transverse Mercator coordinates for the given [Globe],\r\n * easting, northing and projection parameters.\r\n *\r\n * @param easting the easting distance value in meters.\r\n * @param northing the northing distance value in meters.\r\n * @param originLatitude the origin latitude [Angle].\r\n * @param centralMeridian the central meridian longitude [Angle].\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * @throws IllegalArgumentException if the conversion to geodetic coordinates fails.\r\n * If the globe is null conversion will default to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromTM(\r\n easting: Double, northing: Double, originLatitude: Angle, centralMeridian: Angle,\r\n falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n val converter = TMCoordConverter()\r\n val a = converter.a\r\n val f = converter.f\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertTransverseMercatorToGeodetic(easting, northing)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(converter.latitude.radians, converter.longitude.radians, easting, northing)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/*\r\n * Converter used to translate Transverse Mercator coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans code tranmerc.c and tranmerc.h\r\n */\r\ninternal class TMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ORIGIN_LAT_ERROR = 0x0010\r\n const val CENT_MER_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val SCALE_FACTOR_ERROR = 0x0100\r\n const val LON_WARNING = 0x0200\r\n private const val MAX_LAT = PI * 89.99 / 180.0 /* 90 degrees in radians */\r\n private const val MAX_DELTA_LONG = PI * 90 / 180.0 /* 90 degrees in radians */\r\n private const val MIN_SCALE_FACTOR = 0.3\r\n private const val MAX_SCALE_FACTOR = 3.0\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid i meters */\r\n private set\r\n var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private set\r\n private var es = 0.0066943799901413800 /* Eccentricity (0.08181919084262188000) squared */\r\n private var ebs = 0.0067394967565869 /* Second Eccentricity squared */\r\n\r\n /* Transverse_Mercator projection Parameters */\r\n private var originLat = 0.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var scaleFactor = 1.0 /* Scale factor */\r\n\r\n /* Isometric to geodetic latitude parameters, default to WGS 84 */\r\n private var ap = 6367449.1458008\r\n private var bp = 16038.508696861\r\n private var cp = 16.832613334334\r\n private var dp = 0.021984404273757\r\n private var ep = 3.1148371319283e-005\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 40000000.0\r\n private var deltaNorthing = 40000000.0\r\n\r\n /** Easting/X at the center of the projection */\r\n var easting = 0.0\r\n private set\r\n /** Northing/Y at the center of the projection */\r\n var northing = 0.0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians. */\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function receives the ellipsoid parameters and Transverse Mercator\r\n * projection parameters as inputs, and sets the corresponding state variables. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude in radians at the origin of the projection\r\n * @param centralMeridian Longitude in radians at the center of the projection\r\n * @param easting Easting/X at the center of the projection\r\n * @param northing Northing/Y at the center of the projection\r\n * @param scaleFactor Projection scale factor\r\n *\r\n * @return error code\r\n */\r\n fun setTransverseMercatorParameters(\r\n a: Double, f: Double, latitude: Double, centralMeridian: Double, easting: Double, northing: Double, scaleFactor: Double\r\n ): Int {\r\n var cm = centralMeridian\r\n val invF = 1 / f\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* origin latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* origin longitude out of range */\r\n if (cm < -PI || cm > 2 * PI) errorCode = errorCode or CENT_MER_ERROR\r\n if (scaleFactor < MIN_SCALE_FACTOR || scaleFactor > MAX_SCALE_FACTOR) {\r\n errorCode = errorCode or SCALE_FACTOR_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n this.f = f\r\n originLat = 0.0\r\n originLong = 0.0\r\n falseNorthing = 0.0\r\n falseEasting = 0.0\r\n this.scaleFactor = 1.0\r\n\r\n /* Eccentricity Squared */\r\n es = 2 * this.f - this.f * this.f\r\n /* Second Eccentricity Squared */\r\n ebs = 1 / (1 - es) - 1\r\n val b = this.a * (1 - this.f)\r\n /*True meridional constants */\r\n val tn = (this.a - b) / (this.a + b)\r\n val tn2 = tn * tn\r\n val tn3 = tn2 * tn\r\n val tn4 = tn3 * tn\r\n val tn5 = tn4 * tn\r\n ap = this.a * (1e0 - tn + 5e0 * (tn2 - tn3) / 4e0 + 81e0 * (tn4 - tn5) / 64e0)\r\n bp = 3e0 * this.a * (tn - tn2 + (7e0 * (tn3 - tn4) / 8e0) + 55e0 * tn5 / 64e0) / 2e0\r\n cp = 15e0 * this.a * (tn2 - tn3 + 3e0 * (tn4 - tn5) / 4e0) / 16.0\r\n dp = 35e0 * this.a * (tn3 - tn4 + 11e0 * tn5 / 16e0) / 48e0\r\n ep = 315e0 * this.a * (tn4 - tn5) / 512e0\r\n convertGeodeticToTransverseMercator(MAX_LAT, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n deltaNorthing = this.northing\r\n convertGeodeticToTransverseMercator(0.0, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n originLat = latitude\r\n if (cm > PI) cm -= 2 * PI\r\n originLong = cm\r\n falseNorthing = northing\r\n falseEasting = easting\r\n this.scaleFactor = scaleFactor\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Transverse_Mercator converts geodetic (latitude and longitude) coordinates to\r\n * Transverse Mercator projection (easting and northing) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection coordinates. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToTransverseMercator(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n if (lon > PI) lon -= 2 * PI\r\n if (lon < originLong - MAX_DELTA_LONG || lon > originLong + MAX_DELTA_LONG) {\r\n val tempLong = if (lon < 0) lon + 2 * PI else lon\r\n val tempOrigin = if (originLong < 0) originLong + 2 * PI else originLong\r\n if (tempLong < tempOrigin - MAX_DELTA_LONG || tempLong > tempOrigin + MAX_DELTA_LONG)\r\n errorCode = errorCode or LON_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n /*\r\n * Delta Longitude\r\n */\r\n var dLam = lon - originLong\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian */\r\n if (abs(dLam) > 9.0 * PI / 180) errorCode = errorCode or LON_WARNING\r\n if (dLam > PI) dLam -= 2 * PI\r\n if (dLam < -PI) dLam += 2 * PI\r\n if (abs(dLam) < 2e-10) dLam = 0.0\r\n val s = sin(latitude)\r\n val c = cos(latitude)\r\n val c2 = c * c\r\n val c3 = c2 * c\r\n val c5 = c3 * c2\r\n val c7 = c5 * c2\r\n val t = tan(latitude)\r\n val tan2 = t * t\r\n val tan3 = tan2 * t\r\n val tan4 = tan3 * t\r\n val tan5 = tan4 * t\r\n val tan6 = tan5 * t\r\n val eta = ebs * c2\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n\r\n /* radius of curvature in prime vertical */\r\n val sn = a / sqrt(1 - es * sin(latitude).pow(2))\r\n\r\n /* True Meridional Distances */\r\n val tmd = (ap * latitude\r\n - bp * sin(2.0 * latitude)\r\n + cp * sin(4.0 * latitude)\r\n - dp * sin(6.0 * latitude)\r\n + ep * sin(8.0 * latitude))\r\n\r\n /* Origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* northing */\r\n val t1 = (tmd - tmdO) * scaleFactor\r\n val t2 = sn * s * c * scaleFactor / 2e0\r\n val t3 = sn * s * c3 * scaleFactor * (5e0 - tan2 + 9e0 * eta + 4e0 * eta2) / 24e0\r\n val t4 = sn * s * c5 * scaleFactor * (61e0 - 58e0 * tan2 + tan4 + 270e0 * eta - 330e0 * tan2 * eta + 445e0 * eta2 + 324e0 * eta3 - 680e0 * tan2 * eta2 + 88e0 * eta4 - 600e0 * tan2 * eta3 - 192e0 * tan2 * eta4) / 720e0\r\n val t5 = sn * s * c7 * scaleFactor * (1385e0 - 3111e0 * tan2 + 543e0 * tan4 - tan6) / 40320e0\r\n northing = falseNorthing + t1 + dLam.pow(2e0) * t2 + dLam.pow(4e0) * t3 + dLam.pow(6e0) * t4 + dLam.pow(8e0) * t5\r\n\r\n /* Easting */\r\n val t6 = sn * c * scaleFactor\r\n val t7 = sn * c3 * scaleFactor * (1e0 - tan2 + eta) / 6e0\r\n val t8 = sn * c5 * scaleFactor * ((5e0 - 18e0 * tan2 + tan4 + 14e0 * eta) - 58e0 * tan2 * eta + 13e0 * eta2 + 4e0 * eta3 - 64e0 * tan2 * eta2 - 24e0 * tan2 * eta3) / 120e0\r\n val t9 = sn * c7 * scaleFactor * (61e0 - 479e0 * tan2 + 179e0 * tan4 - tan6) / 5040e0\r\n easting = falseEasting + dLam * t6 + dLam.pow(3e0) * t7 + dLam.pow(5e0) * t8 + dLam.pow(7e0) * t9\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Transverse_Mercator_To_Geodetic converts Transverse Mercator projection (easting and\r\n * northing) coordinates to geodetic (latitude and longitude) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection parameters. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param easting Easting/X in meters\r\n * @param northing Northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertTransverseMercatorToGeodetic(easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n /* Easting out of range */\r\n if (easting < falseEasting - deltaEasting || easting > falseEasting + deltaEasting)\r\n errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (northing < falseNorthing - deltaNorthing || northing > falseNorthing + deltaNorthing)\r\n errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n /* True Meridional Distances for latitude of origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* Origin */\r\n val tmd = tmdO + (northing - falseNorthing) / scaleFactor\r\n\r\n /* First Estimate */\r\n var sr = a * (1e0 - es) / sqrt(1e0 - es * sin(0e0).pow(2)).pow(3)\r\n var ftphi = tmd / sr\r\n for (i in 0..4) {\r\n val t10 = (ap * ftphi\r\n - bp * sin(2.0 * ftphi)\r\n + cp * sin(4.0 * ftphi)\r\n - dp * sin(6.0 * ftphi)\r\n + ep * sin(8.0 * ftphi))\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n ftphi += (tmd - t10) / sr\r\n }\r\n\r\n /* Radius of Curvature in the meridian */\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n\r\n /* Radius of Curvature in the meridian */\r\n val sn = a / sqrt(1e0 - es * sin(ftphi).pow(2))\r\n\r\n /* Sine Cosine terms */\r\n val c = cos(ftphi)\r\n\r\n /* Tangent Value */\r\n val t = tan(ftphi)\r\n val tan2 = t * t\r\n val tan4 = tan2 * tan2\r\n val eta = ebs * c.pow(2)\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n var de = easting - falseEasting\r\n if (abs(de) < 0.0001) de = 0.0\r\n\r\n /* Latitude */\r\n val t10 = t / (2e0 * sr * sn * scaleFactor.pow(2))\r\n val t11 = t * (5e0 + 3e0 * tan2 + eta - 4e0 * eta.pow(2) - 9e0 * tan2 * eta) / (24e0 * sr * sn.pow(3) * scaleFactor.pow(4))\r\n val t12 = (t * ((61e0 + 90e0 * tan2 + 46e0 * eta + 45e0 * tan4 - 252e0 * tan2 * eta - 3e0 * eta2 + 100e0\r\n * eta3) - 66e0 * tan2 * eta2 - (90e0 * tan4\r\n * eta) + 88e0 * eta4 + 225e0 * tan4 * eta2 + 84e0 * tan2 * eta3 - 192e0 * tan2 * eta4)\r\n / (720e0 * sr * sn.pow(5) * scaleFactor.pow(6)))\r\n val t13 = t * (1385e0 + 3633e0 * tan2 + 4095e0 * tan4 + (1575e0 * t.pow(6))) / (40320e0 * sr * sn.pow(7) * scaleFactor.pow(8))\r\n latitude = (ftphi - de.pow(2) * t10 + de.pow(4) * t11 - de.pow(6) * t12 + de.pow(8) * t13)\r\n val t14 = 1e0 / (sn * c * scaleFactor)\r\n val t15 = (1e0 + 2e0 * tan2 + eta) / (6e0 * sn.pow(3) * c * scaleFactor.pow(3))\r\n val t16 = ((5e0 + 6e0 * eta + 28e0 * tan2 - 3e0 * eta2 + 8e0 * tan2 * eta + 24e0 * tan4 - 4e0\r\n * eta3) + 4e0 * tan2 * eta2 + (24e0 * tan2 * eta3)) / (120e0 * sn.pow(5) * c * scaleFactor.pow(5))\r\n val t17 = (61e0 + 662e0 * tan2 + 1320e0 * tan4 + (720e0 * t.pow(6))) / (5040e0 * sn.pow(7) * c * scaleFactor.pow(7))\r\n\r\n /* Difference in Longitude */\r\n val dLam = de * t14 - de.pow(3) * t15 + de.pow(5) * t16 - de.pow(7) * t17\r\n\r\n /* Longitude */\r\n longitude = originLong + dLam\r\n if (abs(latitude) > 90.0 * PI / 180.0) errorCode = errorCode or NORTHING_ERROR\r\n if (longitude > PI) {\r\n longitude -= 2 * PI\r\n if (abs(longitude) > PI) errorCode = errorCode or EASTING_ERROR\r\n }\r\n if (abs(dLam) > 9.0 * PI / 180 * cos(latitude)) {\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian at the equator */\r\n /* and decreases to 0 degrees at the poles */\r\n /* As you move towards the poles, distortion will become more significant */\r\n errorCode = errorCode or LON_WARNING\r\n }\r\n if (latitude > 1.0e10) errorCode = errorCode or LON_WARNING\r\n }\r\n return errorCode\r\n }\r\n}\r\n","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This immutable class holds a set of UPS coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UPSCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UPS coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertGeodeticToUPS(latitude.inRadians, longitude.inRadians)\r\n require(err == UPSCoordConverter.NO_ERROR) { \"UPS Conversion Error\" }\r\n return UPSCoord(latitude, longitude, converter.hemisphere, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of UPS coordinates for the given [Globe].\r\n *\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertUPSToGeodetic(hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UPSCoord(\r\n converter.latitude.radians, converter.longitude.radians, hemisphere, easting, northing\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = hemisphere.toString() + \" \" + easting + \"E\" + \" \" + northing + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans ups.c and ups.h code\r\n */\r\ninternal class UPSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val HEMISPHERE_ERROR = 0x0004\r\n const val EASTING_ERROR = 0x0008\r\n const val NORTHING_ERROR = 0x0010\r\n private const val MAX_LAT = PI * 90 / 180.0 // 90 degrees in radians\r\n\r\n // Min and max latitude values accepted\r\n private const val MIN_NORTH_LAT = 72 * PI / 180.0 // 83.5\r\n private const val MIN_SOUTH_LAT = -72 * PI / 180.0 // -79.5\r\n private const val MAX_ORIGIN_LAT = 81.114528 * PI / 180.0\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n }\r\n\r\n private var originLatitude = MAX_ORIGIN_LAT /*set default = North hemisphere */\r\n private val originLongitude = 0.0\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val falseEasting = 2000000.0\r\n private val falseNorthing = 2000000.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** easting/X in meters */\r\n var easting = 0.0\r\n private set\r\n /** northing/Y in meters */\r\n var northing = 0.0\r\n private set\r\n /** latitude in radians.*/\r\n var latitude = 0.0\r\n private set\r\n /** longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n private val polarConverter = PolarCoordConverter()\r\n\r\n /**\r\n * The function convertGeodeticToUPS converts geodetic (latitude and longitude) coordinates to UPS (hemisphere,\r\n * easting, and northing) coordinates, according to the current ellipsoid parameters. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude in radians\r\n * @param longitude longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUPS(latitude: Double, longitude: Double): Int {\r\n /* latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) return LAT_ERROR\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) return LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) return LAT_ERROR\r\n /* slam out of range */\r\n if (longitude < -PI || longitude > 2 * PI) return LON_ERROR\r\n if (latitude < 0) {\r\n originLatitude = -MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.S\r\n } else {\r\n originLatitude = MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.N\r\n }\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, 0.0, 0.0)\r\n polarConverter.convertGeodeticToPolarStereographic(latitude, longitude)\r\n easting = falseEasting + polarConverter.easting\r\n northing = falseNorthing + if (Hemisphere.S == hemisphere) - polarConverter.northing else polarConverter.northing\r\n return NO_ERROR\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_Geodetic converts UPS (hemisphere, easting, and northing) coordinates to geodetic\r\n * (latitude and longitude) coordinates according to the current ellipsoid parameters. If any errors occur, the\r\n * error code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertUPSToGeodetic(hemisphere: Hemisphere?, easting: Double, northing: Double): Int{\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (easting < MIN_EAST_NORTH || easting > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (northing < MIN_EAST_NORTH || northing > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (Hemisphere.N == hemisphere) originLatitude = MAX_ORIGIN_LAT\r\n if (Hemisphere.S == hemisphere) originLatitude = -MAX_ORIGIN_LAT\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, falseEasting, falseNorthing)\r\n polarConverter.convertPolarStereographicToGeodetic(easting, northing)\r\n latitude = polarConverter.latitude\r\n longitude = polarConverter.longitude\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) errorCode = errorCode or LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) errorCode = errorCode or LAT_ERROR\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\nimport kotlin.math.roundToInt\r\n\r\n/**\r\n * This immutable class holds a set of UTM coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UTMCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val zone: Int, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UTM coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertGeodeticToUTM(latitude.inRadians, longitude.inRadians)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n latitude, longitude, converter.zone, converter.hemisphere, converter.easting, converter.northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a set of UTM coordinates for the given [Globe].\r\n *\r\n * @param zone the UTM zone - 1 to 60.\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUTM(\r\n zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double\r\n ): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertUTMToGeodetic(zone, hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n converter.latitude.radians, converter.longitude.radians, zone, hemisphere, easting, northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a UTM coordinate from a standard UTM coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * @param UTMString the UTM coordinate text string.\r\n * @return the corresponding [UTMCoord].\r\n * @throws IllegalArgumentException if the [UTMString] is empty, or the conversion to geodetic coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromString(UTMString: String): UTMCoord {\r\n val separated = UTMString.trim { it <= ' ' }.replace(\" +\".toRegex(), \" \").split(\" \")\r\n return fromUTM(\r\n separated[0].toInt(),\r\n if (separated[1] == \"S\") Hemisphere.S else Hemisphere.N, //Hemisphere.valueOf(separated[1]),\r\n separated[2].substring(0, separated[2].length - 1).toDouble(),\r\n separated[3].substring(0, separated[3].length - 1).toDouble()\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = zone.toString() + \" \" + hemisphere + \" \" + easting.roundToInt() + \"E\" + \" \" + northing.roundToInt() + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/*\r\n * Converter used to translate UTM coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans utm.c and utm.h\r\n */\r\ninternal class UTMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ZONE_ERROR = 0x0010\r\n const val HEMISPHERE_ERROR = 0x0020\r\n const val ZONE_OVERRIDE_ERROR = 0x0040\r\n const val TM_ERROR = 0x0200\r\n private const val MIN_LAT = -82 * PI / 180.0 /* -82 degrees in radians */\r\n private const val MAX_LAT = 86 * PI / 180.0 /* 86 degrees in radians */\r\n private const val MIN_EASTING = 100000\r\n private const val MAX_EASTING = 900000\r\n private const val MIN_NORTHING = 0\r\n private const val MAX_NORTHING = 10000000\r\n }\r\n\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val override = 0 /* Zone override flag */\r\n private var centralMeridian = 0.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** Easting (X) in meters */\r\n var easting = 0.0\r\n private set\r\n /** Northing (Y) in meters */\r\n var northing = 0.0\r\n private set\r\n /** UTM zone */\r\n var zone = 0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function Convert_Geodetic_To_UTM converts geodetic (latitude and longitude) coordinates to UTM projection\r\n * (zone, hemisphere, easting and northing) coordinates according to the current ellipsoid and UTM zone override\r\n * parameters. If any errors occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is\r\n * returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUTM(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > 2 * PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (lon < 0) lon += 2 * PI + 1.0e-10\r\n val latDegrees = (latitude * 180.0 / PI).toInt()\r\n val lonDegrees = (lon * 180.0 / PI).toInt()\r\n var tempZone = (if (lon < PI) 31 + lon * 180.0 / PI / 6.0 else lon * 180.0 / PI / 6.0 - 29).toInt()\r\n if (tempZone > 60) tempZone = 1\r\n /* UTM special cases */\r\n if (latDegrees in 56..63 && lonDegrees > -1 && lonDegrees < 3) tempZone = 31\r\n if (latDegrees in 56..63 && lonDegrees > 2 && lonDegrees < 12) tempZone = 32\r\n if (latDegrees > 71 && lonDegrees > -1 && lonDegrees < 9) tempZone = 31\r\n if (latDegrees > 71 && lonDegrees > 8 && lonDegrees < 21) tempZone = 33\r\n if (latDegrees > 71 && lonDegrees > 20 && lonDegrees < 33) tempZone = 35\r\n if (latDegrees > 71 && lonDegrees > 32 && lonDegrees < 42) tempZone = 37\r\n if (override != 0) {\r\n if (tempZone == 1 && override == 60) tempZone = override\r\n else if (tempZone == 60 && override == 1) tempZone = override\r\n else if (tempZone - 1 <= override && override <= tempZone + 1) tempZone = override\r\n else errorCode = ZONE_OVERRIDE_ERROR\r\n }\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (tempZone >= 31) (6 * tempZone - 183) * PI / 180.0 else (6 * tempZone + 177) * PI / 180.0\r\n zone = tempZone\r\n if (latitude < 0) {\r\n falseNorthing = 10000000.0\r\n hemisphere = Hemisphere.S\r\n } else hemisphere = Hemisphere.N\r\n try {\r\n val tm = TMCoord.fromLatLon(\r\n latitude.radians, lon.radians, a, f, originLatitude.radians,\r\n centralMeridian.radians, falseEasting, falseNorthing, scale\r\n )\r\n easting = tm.easting\r\n northing = tm.northing\r\n if (easting < MIN_EASTING || easting > MAX_EASTING) errorCode = EASTING_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UTM_To_Geodetic converts UTM projection (zone, hemisphere, easting and northing) coordinates\r\n * to geodetic(latitude and longitude) coordinates, according to the current ellipsoid parameters. If any errors\r\n * occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param zone UTM zone.\r\n * @param hemisphere The coordinate hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting (X) in meters.\r\n * @param northing Northing (Y) in meters.\r\n *\r\n * @return error code.\r\n */\r\n fun convertUTMToGeodetic(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n if (zone < 1 || zone > 60) errorCode = errorCode or ZONE_ERROR\r\n if (hemisphere != Hemisphere.S && hemisphere != Hemisphere.N) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (zone >= 31) (6 * zone - 183) * PI / 180.0 else (6 * zone + 177) * PI / 180.0\r\n if (hemisphere == Hemisphere.S) falseNorthing = 10000000.0\r\n try {\r\n val tm = TMCoord.fromTM(\r\n easting, northing,\r\n originLatitude.radians, centralMeridian.radians,\r\n falseEasting, falseNorthing, scale\r\n )\r\n latitude = tm.latitude.inRadians\r\n longitude = tm.longitude.inRadians\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.gesture\n\n/**\n * Gesture state indicates a GestureRecognizer's current state.\n * Accepted values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN], [CHANGED], [CANCELLED], and [ENDED].\n */\nenum class GestureState {\n /**\n * POSSIBLE gesture recognizer state. Gesture recognizers in this state are\n * idle when there is no input event to evaluate, or are evaluating input events to determine whether or not to\n * transition into another state.\n */\n POSSIBLE,\n /**\n * FAILED gesture recognizer state. Gesture recognizers transition to this\n * state from the POSSIBLE state when the gesture cannot be recognized given the current input.\n */\n FAILED,\n /**\n * RECOGNIZED gesture recognizer state. Discrete gesture recognizers\n * transition to this state from the POSSIBLE state when the gesture is recognized.\n */\n RECOGNIZED,\n /**\n * BEGAN gesture recognizer state. Continuous gesture recognizers transition\n * to this state from the POSSIBLE state when the gesture is first recognized.\n */\n BEGAN,\n /**\n * CHANGED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from the BEGAN state or the CHANGED state, whenever an input event indicates a change in\n * the gesture.\n */\n CHANGED,\n /**\n * CANCELLED gesture recognizer state. Continuous gesture recognizers may\n * transition to this state from the BEGAN state or the CHANGED state when the touch events are cancelled.\n */\n CANCELLED,\n /**\n * ENDED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from either the BEGAN state or the CHANGED state when the current input no longer\n * represents the gesture.\n */\n ENDED;\n}","package earth.worldwind.globe\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.elevation.ElevationModel\nimport earth.worldwind.globe.projection.GeographicProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport kotlin.math.PI\nimport kotlin.math.sin\nimport kotlin.math.sqrt\n\n/**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models. Globe expresses its\n * ellipsoidal parameters and elevation values in meters.\n */\nopen class Globe(\n /**\n * The globe's reference ellipsoid defining the globe's equatorial radius and polar radius.\n */\n var ellipsoid: Ellipsoid = Ellipsoid.WGS84,\n /**\n * Indicates the geographic projection used by this globe. The projection specifies this globe's Cartesian\n * coordinate system.\n */\n var projection: GeographicProjection = Wgs84Projection()\n) {\n /**\n * Represents the elevations for an area, often but not necessarily the whole globe.\n */\n var elevationModel = ElevationModel()\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the equator.\n */\n val equatorialRadius get() = ellipsoid.semiMajorAxis\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the poles.\n */\n val polarRadius get() = ellipsoid.semiMinorAxis\n /**\n * Indicates the eccentricity squared parameter of the globe's ellipsoid. This is equivalent to `2*f -\n * f*f`, where `f` is the ellipsoid's flattening parameter.\n */\n val eccentricitySquared get() = ellipsoid.eccentricitySquared\n /**\n * Indicates whether this is a 2D globe.\n */\n val is2D get() = projection.is2D\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous get() = projection.isContinuous\n /**\n * Indicates the geographic limits of this projection.\n */\n val projectionLimits get() = projection.projectionLimits\n /**\n * Current globe state.\n */\n val state get() = State(ellipsoid, projection.displayName)\n /**\n * The globe offset in 2D continuous projection. Center is the default for 3D.\n */\n var offset = Offset.Center\n set (value) {\n field = value\n // Calculate horizontal projection offset in meters\n offsetValue = when (value) {\n Offset.Center -> 0.0\n Offset.Right -> 2.0 * PI * equatorialRadius\n Offset.Left -> -2.0 * PI * equatorialRadius\n }\n }\n protected var offsetValue = 0.0\n\n /**\n * An offset to apply to this globe when translating between Geographic positions and Cartesian points.\n * Used during scrolling to position points appropriately.\n */\n enum class Offset { Center, Right, Left }\n\n /**\n * Used to compare states during rendering to determine whether globe-state dependent cached values must be updated.\n */\n data class State(private val ellipsoid: Ellipsoid, private val projectionName: String)\n\n /**\n * Indicates the radius in meters of the globe's ellipsoid at a specified location.\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return the radius in meters of the globe's ellipsoid at the specified location\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun getRadiusAt(latitude: Angle, longitude: Angle): Double {\n // The radius for an ellipsoidal globe is a function of its latitude. The following solution was derived by\n // observing that the length of the ellipsoidal point at the specified latitude and longitude indicates the\n // radius at that location. The formula for the length of the ellipsoidal point was then converted into the\n // simplified form below.\n val sinLat = sin(latitude.inRadians)\n val ec2 = ellipsoid.eccentricitySquared\n val rpm = ellipsoid.semiMajorAxis / sqrt(1 - ec2 * sinLat * sinLat)\n return rpm * sqrt(1 + (ec2 * ec2 - 2 * ec2) * sinLat * sinLat)\n }\n\n /**\n * Converts a geographic position to Cartesian coordinates. This globe's projection specifies the Cartesian\n * coordinate system.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(latitude: Angle, longitude: Angle, altitude: Double, result: Vec3) =\n projection.geographicToCartesian(this, latitude, longitude, altitude, offsetValue, result)\n\n fun geographicToCartesianNormal(latitude: Angle, longitude: Angle, result: Vec3) =\n projection.geographicToCartesianNormal(this, latitude, longitude, result)\n\n fun geographicToCartesianTransform(latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4) =\n projection.geographicToCartesianTransform(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianGrid(\n sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, rowOffset: Int = 0, rowStride: Int = 0\n ) = projection.geographicToCartesianGrid(\n this, sector, numLat, numLon, height, verticalExaggeration,\n origin, offsetValue, result, rowOffset, rowStride\n )\n\n fun geographicToCartesianBorder(\n sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3, result: FloatArray\n ) = projection.geographicToCartesianBorder(this, sector, numLat, numLon, height, origin, offsetValue, result)\n\n /**\n * Converts a Cartesian point to a geographic position. This globe's projection specifies the Cartesian coordinate\n * system.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(x: Double, y: Double, z: Double, result: Position) =\n projection.cartesianToGeographic(this, x, y, z, offsetValue, result).also {\n if (is2D) result.longitude = result.longitude.normalize180()\n }\n\n fun cartesianToLocalTransform(x: Double, y: Double, z: Double, result: Matrix4) =\n projection.cartesianToLocalTransform(this, x, y, z, result)\n\n /**\n * Indicates the distance to the globe's horizon from a specified height above the globe's ellipsoid. The result of\n * this method is undefined if the height is negative.\n *\n * @param height the viewer's height above the globe's ellipsoid in meters\n *\n * @return the horizon distance in meters\n */\n fun horizonDistance(height: Double) = if (height > 0.0) sqrt(height * (2 * ellipsoid.semiMajorAxis + height)) else 0.0\n\n /**\n * Computes the first intersection of this globe with a specified line. The line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *\n * @param line the line to intersect with this globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(line: Line, result: Vec3) = projection.intersect(this, line, result)\n\n /**\n * Determine terrain altitude in specified geographic point from elevation model\n *\n * @param latitude location latitude\n * @param longitude location longitude\n * @param retrieve retrieve the most detailed elevation data instead of using first available cached value\n *\n * @return Elevation in meters in specified location\n */\n fun getElevation(latitude: Angle, longitude: Angle, retrieve: Boolean = false) =\n elevationModel.getHeight(latitude, longitude, retrieve).toDouble()\n\n /**\n * Get absolute position with terrain elevation at specified coordinates\n *\n * @param latitude Specified latitude\n * @param longitude Specified longitude\n *\n * @return Absolute position with terrain elevation\n */\n fun getAbsolutePosition(latitude: Angle, longitude: Angle) =\n Position(latitude, longitude, getElevation(latitude, longitude, retrieve = true))\n\n /**\n * Get absolute position for specified position and specified altitude mode\n *\n * @param position Specified position\n * @param altitudeMode Specified altitude mode\n *\n * @return Absolute position for specified altitude mode\n */\n fun getAbsolutePosition(position: Position, altitudeMode: AltitudeMode) = when (altitudeMode) {\n AltitudeMode.CLAMP_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude)\n AltitudeMode.RELATIVE_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude).apply {\n altitude += position.altitude\n }\n else -> Position(position)\n }\n\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.elevation.coverage.ElevationCoverage\n\nopen class ElevationModel(): Iterable {\n protected val coverages = mutableListOf()\n val timestamp: Long get() {\n var maxTimestamp = 0L\n for (i in coverages.indices) {\n val timestamp = coverages[i].timestamp\n if (maxTimestamp < timestamp) maxTimestamp = timestamp\n }\n return maxTimestamp\n }\n val count get() = coverages.size\n\n constructor(model: ElevationModel): this() { addAllCoverages(model) }\n\n constructor(iterable: Iterable): this() { for (coverage in iterable) addCoverage(coverage) }\n\n fun invalidate() = coverages.forEach { coverage -> coverage.clear() }\n\n fun getCoverageNamed(name: String) = coverages.firstOrNull { coverage -> coverage.displayName == name }\n\n fun getCoverageWithProperty(key: Any, value: Any) = coverages.firstOrNull { coverage ->\n coverage.hasUserProperty(key) && coverage.getUserProperty(key) == value\n }\n\n fun addCoverage(coverage: ElevationCoverage) = !coverages.contains(coverage) && coverages.add(coverage)\n\n fun addAllCoverages(model: ElevationModel): Boolean {\n val thatList = model.coverages\n //coverages.ensureCapacity(thatList.size)\n var changed = false\n for (thatCoverage in thatList) changed = changed or addCoverage(thatCoverage)\n return changed\n }\n\n fun removeCoverage(coverage: ElevationCoverage) = coverages.remove(coverage)\n\n fun removeAllCoverages(model: ElevationModel) = coverages.removeAll(model.coverages)\n\n fun clearCoverages() = coverages.clear()\n\n override fun iterator() = coverages.iterator()\n\n fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float {\n // coverages composite from fine to coarse\n for (i in coverages.indices.reversed()) {\n val height = coverages[i].getHeight(latitude, longitude, retrieve)\n if (height != null) return height\n }\n return 0f\n }\n\n fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n // coverages composite from coarse to fine\n for (i in coverages.indices) coverages[i].getHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n fun getHeightLimits(sector: Sector, result: FloatArray) {\n // coverage order is irrelevant\n for (i in coverages.indices) coverages[i].getHeightLimits(sector, result)\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.LruMemoryCache\nimport kotlinx.datetime.Clock\n\nabstract class AbstractElevationCoverage: ElevationCoverage {\n final override val sector = Sector().setFullSphere() // Real data availability sector can be smaller than TMS sector\n override var displayName: String? = null\n override var isEnabled = true\n set(value) {\n field = value\n updateTimestamp()\n }\n override var timestamp = Clock.System.now().toEpochMilliseconds()\n protected set\n private var userProperties: MutableMap? = null\n private val heightCache = LruMemoryCache(50000)\n\n protected fun updateTimestamp() {\n timestamp = Clock.System.now().toEpochMilliseconds()\n heightCache.clear() // Invalidate cache if elevation coverage changed\n }\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n return if (isEnabled) {\n val key = 31 * latitude.inDegrees.hashCode() + longitude.inDegrees.hashCode()\n heightCache[key] ?: doGetHeight(latitude, longitude, retrieve)?.also {\n heightCache.put(key, it, 1)\n }\n } else null\n }\n\n override fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (isEnabled) doGetHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n override fun getHeightLimits(sector: Sector, result: FloatArray) {\n if (isEnabled) doGetHeightLimits(sector, result)\n }\n\n protected abstract fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float?\n\n protected abstract fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray)\n\n protected abstract fun doGetHeightLimits(sector: Sector, result: FloatArray)\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.*\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.format.format\nimport earth.worldwind.util.math.fract\nimport earth.worldwind.util.math.mod\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.time.Duration.Companion.seconds\n\nabstract class AbstractTiledElevationCoverage(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): AbstractElevationCoverage() {\n companion object {\n protected const val GET_HEIGHT_LIMIT_SAMPLES = 32\n }\n\n var tileMatrixSet = tileMatrixSet\n set(value) {\n field = value\n sector.copy(value.sector) // Use TMS sector as bounding sector by default\n clear()\n }\n var elevationSourceFactory = elevationSourceFactory\n set(value) {\n field = value\n clear()\n }\n /**\n * Unique identifier of the coverage type, defined by elevation source factory content type\n */\n val type get() = elevationSourceFactory.contentType\n /**\n * Controls how many concurrent tile requests are allowed for this coverage.\n */\n var retrievalQueueSize = 4\n /**\n * The list of elevation retrievals in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n protected var coverageCache = LruMemoryCache(1024 * 1024 * 64)\n protected var isRetrievalEnabled = false\n protected val absentResourceList = AbsentResourceList(3, 5.seconds)\n protected val mainScope = MainScope()\n\n init {\n sector.copy(tileMatrixSet.sector) // Use TMS sector as bounding sector by default\n log(INFO, \"Coverage cache initialized %.0f KB\".format(coverageCache.capacity / 1024.0))\n }\n\n /**\n * Setup custom coverage cache size according to device capabilities and user needs.\n */\n fun setupCoverageCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n coverageCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun clear() {\n mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n currentRetrievals.clear()\n coverageCache.clear()\n absentResourceList.clear()\n updateTimestamp()\n }\n\n override fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n if (!tileMatrixSet.sector.contains(latitude, longitude)) return null // no coverage in the specified location\n val targetIdx = tileMatrixSet.entries.size - 1 // retrieve height from last available matrix\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the last and the first matrix\n isRetrievalEnabled = retrieve && (idx == targetIdx || idx == 0)\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val row = floor((tileMatrix.sector.maxLatitude.inDegrees - latitude.inDegrees) / deltaLat).toInt()\n val col = floor((longitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n fetchTileArray(tileMatrix, row, col)?.let {\n val maxLat = tileMatrix.sector.maxLatitude.inDegrees - deltaLat * row\n val minLon = tileMatrix.sector.minLongitude.inDegrees + deltaLon * col\n val maxX = tileMatrix.tileWidth - 1\n val maxY = tileMatrix.tileHeight - 1\n val x = (maxX * (longitude.inDegrees - minLon) / deltaLon).toFloat()\n val y = (maxY * (maxLat - latitude.inDegrees) / deltaLat).toFloat()\n val x0 = floor(x).toInt().coerceIn(0, maxX)\n val x1 = (x0 + 1).coerceIn(0, maxX)\n val y0 = floor(y).toInt().coerceIn(0, maxY)\n val y1 = (y0 + 1).coerceIn(0, maxY)\n val x0y0 = it[x0 + y0 * tileMatrix.tileWidth]\n val x1y0 = it[x1 + y0 * tileMatrix.tileWidth]\n val x0y1 = it[x0 + y1 * tileMatrix.tileWidth]\n val x1y1 = it[x1 + y1 * tileMatrix.tileWidth]\n val xf = x - x0\n val yf = y - y0\n return (1 - xf) * (1 - yf) * x0y0 + xf * (1 - yf) * x1y0 + (1 - xf) * yf * x0y1 + xf * yf * x1y1\n }\n }\n return null // did not find a tile\n }\n\n override fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(gridSector)) return // no coverage in the specified sector\n val targetPixelSpan = gridSector.deltaLatitude.div(gridHeight)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(gridSector, gridWidth, gridHeight, tileMatrix, tileBlock)) {\n readHeightGrid(gridSector, gridWidth, gridHeight, tileBlock, result)\n return\n }\n }\n }\n\n override fun doGetHeightLimits(sector: Sector, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(sector)) return // no coverage in the specified sector\n val targetPixelSpan = sector.deltaLatitude.div(GET_HEIGHT_LIMIT_SAMPLES)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(sector, tileMatrix, tileBlock)) {\n scanHeightLimits(sector, tileBlock, result)\n return\n }\n }\n }\n\n protected open fun fetchTileBlock(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileMatrix: TileMatrix, result: TileBlock\n ): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n result.tileMatrix = tileMatrix\n result.clear()\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var uIdx = 0\n while (uIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (uIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n if (lon in matrixMinLon..matrixMaxLon) {\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n result.cols[col0] = 0\n result.cols[col1] = 0\n }\n uIdx++\n lon += deltaLon\n }\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var vIdx = 0\n while (vIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (vIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n if (lat in matrixMinLat..matrixMaxLat) {\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n result.rows[row0] = 0\n result.rows[row1] = 0\n }\n vIdx++\n lat += deltaLat\n }\n for (row in result.rows.keys) {\n for (col in result.cols.keys) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) result.putTileArray(row, col, tileArray) else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileBlock(sector: Sector, tileMatrix: TileMatrix, result: TileBlock): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val colMin = iMin / tileWidth\n val colMax = iMax / tileWidth\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n val rowMin = jMin / tileHeight\n val rowMax = jMax / tileHeight\n result.tileMatrix = tileMatrix\n result.clear()\n for (row in rowMin..rowMax) {\n for (col in colMin..colMax) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) {\n result.rows[row] = 0\n result.cols[col] = 0\n result.putTileArray(row, col, tileArray)\n } else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileArray(tileMatrix: TileMatrix, row: Int, column: Int): ShortArray? {\n val key = tileMatrix.tileKey(row, column)\n return coverageCache[key] ?: run {\n // Ignore retrieval of already requested or marked as absent tiles\n if (isRetrievalEnabled && currentRetrievals.size < retrievalQueueSize && !currentRetrievals.contains(key)\n && !absentResourceList.isResourceAbsent(key)) {\n currentRetrievals += key\n mainScope.launch { retrieveTileArray(key, tileMatrix, row, column) }\n }\n null\n }\n }\n\n protected abstract suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int)\n\n protected fun retrievalSucceeded(key: Long, value: ShortArray) {\n coverageCache.put(key, value, value.size * 2)\n absentResourceList.unmarkResourceAbsent(key)\n currentRetrievals -= key\n updateTimestamp()\n WorldWind.requestRedraw()\n }\n\n protected fun retrievalFailed(key: Long) {\n absentResourceList.markResourceAbsent(key)\n currentRetrievals -= key\n }\n\n protected open fun readHeightGrid(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileBlock: TileBlock, result: FloatArray\n ) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileBlock.tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileBlock.tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n var rIdx = 0\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var hIdx = 0\n while (hIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (hIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val b = fract(v - 0.5).toFloat()\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var wIdx = 0\n while (wIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (wIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileBlock.tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val a = fract(u - 0.5).toFloat()\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n if (lat in matrixMinLat..matrixMaxLat && lon in matrixMinLon..matrixMaxLon) {\n val i0j0 = tileBlock.readTexel(row0, col0, i0 % tileWidth, j0 % tileHeight)\n val i1j0 = tileBlock.readTexel(row0, col1, i1 % tileWidth, j0 % tileHeight)\n val i0j1 = tileBlock.readTexel(row1, col0, i0 % tileWidth, j1 % tileHeight)\n val i1j1 = tileBlock.readTexel(row1, col1, i1 % tileWidth, j1 % tileHeight)\n result[rIdx] = (1 - a) * (1 - b) * i0j0 + a * (1 - b) * i1j0 + (1 - a) * b * i0j1 + a * b * i1j1\n }\n rIdx++\n wIdx++\n lon += deltaLon\n }\n hIdx++\n lat += deltaLat\n }\n }\n\n protected open fun scanHeightLimits(sector: Sector, tileBlock: TileBlock, result: FloatArray) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileBlock.tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n for (row in tileBlock.rows.keys) {\n val rowJMin = row * tileHeight\n val rowJMax = rowJMin + tileHeight - 1\n val j0 = jMin.coerceIn(rowJMin, rowJMax) % tileHeight\n val j1 = jMax.coerceIn(rowJMin, rowJMax) % tileHeight\n for (col in tileBlock.cols.keys) {\n val colIMin = col * tileWidth\n val colIMax = colIMin + tileWidth - 1\n val i0 = iMin.coerceIn(colIMin, colIMax) % tileWidth\n val i1 = iMax.coerceIn(colIMin, colIMax) % tileWidth\n tileBlock.getTileArray(row, col)?.let { tileArray ->\n // TODO how often do we read all of tileArray?\n for (j in j0..j1) for (i in i0..i1) {\n val pos = i + j * tileWidth\n val texel = tileArray[pos]\n if (result[0] > texel) result[0] = texel.toFloat()\n if (result[1] < texel) result[1] = texel.toFloat()\n }\n }\n }\n }\n }\n\n protected open suspend fun processTiles(sector: Sector, minIdx: Int, maxIdx: Int, process: suspend (Tile) -> Unit) {\n for (idx in minIdx..maxIdx) {\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val minRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.maxLatitude.inDegrees) / deltaLat).toInt()\n val maxRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.minLatitude.inDegrees) / deltaLat).toInt()\n val minCol = floor((sector.minLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n val maxCol = floor((sector.maxLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n for (row in minRow..maxRow) for (col in minCol..maxCol) process(Tile(tileMatrix, row, col))\n }\n }\n\n protected data class Tile(val tileMatrix: TileMatrix, val row: Int, val col: Int)\n\n protected open class TileBlock {\n lateinit var tileMatrix: TileMatrix\n val rows = mutableMapOf()\n val cols = mutableMapOf()\n private val arrays = mutableMapOf()\n private var texelRow = -1\n private var texelCol = -1\n private var texelArray: ShortArray? = null\n\n open fun clear() {\n rows.clear()\n cols.clear()\n arrays.clear()\n texelRow = -1\n texelCol = -1\n texelArray = null\n }\n\n fun putTileArray(row: Int, column: Int, array: ShortArray) {\n val key = tileMatrix.tileKey(row, column)\n arrays[key] = array\n }\n\n fun getTileArray(row: Int, column: Int): ShortArray? {\n if (texelRow != row || texelCol != column) {\n texelRow = row\n texelCol = column\n texelArray = arrays[tileMatrix.tileKey(row, column)]\n }\n return texelArray\n }\n\n fun readTexel(row: Int, column: Int, i: Int, j: Int) =\n getTileArray(row, column)?.get(i + j * tileMatrix.tileWidth) ?: 0\n }\n}",null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Map Service (WMS) version 1.3.0.\n */\nopen class WmsElevationCoverage private constructor(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): TiledElevationCoverage(tileMatrixSet, elevationSourceFactory), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n /**\n * @param serviceAddress OGC Web Map Service (WMS) server address\n * @param coverageName comma-separated coverage names\n * @param outputFormat required image format\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n constructor(\n serviceAddress: String, coverageName: String, outputFormat: String, sector: Sector, resolution: Angle\n ) : this(\n serviceAddress, coverageName, outputFormat,\n buildTileMatrixSet(sector, resolution), buildElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n )\n\n override fun clone() = WmsElevationCoverage(\n serviceAddress, coverageName, outputFormat, tileMatrixSet, elevationSourceFactory\n ).also {\n it.displayName = displayName\n it.sector.copy(sector)\n }\n\n companion object {\n const val SERVICE_TYPE = \"WMS\"\n\n /**\n * 4x2 top level matrix equivalent to 90 degree top level tiles\n *\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n private fun buildTileMatrixSet(sector: Sector, resolution: Angle) = TileMatrixSet.fromTilePyramid(\n sector, 4, 2, 256, 256, resolution\n )\n\n private fun buildElevationSourceFactory(serviceAddress: String, coverage: String, imageFormat: String): ElevationSourceFactory {\n val layerConfig = WmsLayerConfig(serviceAddress, coverage).apply { this.imageFormat = imageFormat }\n val wmsTileFactory = WmsTileFactory(layerConfig)\n return object : ElevationSourceFactory {\n override val contentType = \"WMS 1.3.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val tileSector = tileMatrix.tileSector(row, column)\n val urlString = wmsTileFactory.urlForTile(tileSector, tileMatrix.tileWidth, tileMatrix.tileHeight)\n return ElevationSource.fromUrlString(urlString)\n }\n }\n }\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.WmsElevationCoverage\n\n/**\n * Displays NASA's global elevation coverage at 30m (1 arc-second) resolution.\n * By default, BasicElevationCoverage is configured to retrieve elevation coverage from the WMS at\n * [&https://wms.worldwind.earth/elev](https://wms.worldwind.earth/elev?SERVICE=WMS&REQUEST=GetCapabilities).\n */\nclass BasicElevationCoverage : WmsElevationCoverage(\n \"https://wms.worldwind.earth/elev\", \"NASADEM\", \"application/bil16\",\n Sector().setFullSphere(), Angle.fromSeconds(1.0)\n)","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger\nimport kotlin.math.*\n\nopen class MercatorProjection : GeographicProjection {\n override val displayName = \"Mercator\"\n override val is2D = true\n override val isContinuous = true\n override val projectionLimits = fromDegrees(-78.0, -180.0, 156.0, 360.0)\n private val scratchVec = Vec3()\n\n override fun geographicToCartesian(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3\n ): Vec3 {\n val lat = latitude.coerceIn(projectionLimits.minLatitude, projectionLimits.maxLatitude)\n val lon = longitude.coerceIn(projectionLimits.minLongitude, projectionLimits.maxLongitude)\n\n // See \"Map Projections: A Working Manual\", page 44 for the source of the below formulas.\n val ecc = sqrt(globe.eccentricitySquared)\n val sinPhi = sin(lat.inRadians)\n val s = (1 + sinPhi) / (1 - sinPhi) * ((1 - ecc * sinPhi) / (1 + ecc * sinPhi)).pow(ecc)\n result.x = globe.equatorialRadius * lon.inRadians + offset\n result.y = 0.5 * globe.equatorialRadius * ln(s)\n result.z = altitude\n return result\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n return result.set(0.0, 0.0, 1.0)\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val vec = geographicToCartesian(globe, latitude, longitude, altitude, 0.0, scratchVec)\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return cartesianToLocalTransform(globe, vec.x, vec.y, vec.z, result)\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n Logger.logMessage(\n Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n Logger.logMessage(Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = (1 + sinLat) / (1 - sinLat) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lon = minLon\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n result[colIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[colIndex++] = y.toFloat()\n result[colIndex++] = if (height != null) (height[elevIndex++] * verticalExaggeration - zOffset).toFloat() else 0f\n lon += deltaLon\n }\n rowIndex += stride\n lat += deltaLat\n }\n\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float,\n origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / (if (numLat > 1) numLat - 3 else 1)\n val deltaLon = (maxLon - minLon) / (if (numLon > 1) numLon - 3 else 1)\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var resultIndex = 0\n var lat = minLat\n var lon = minLon\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = ((1 + sinLat) / (1 - sinLat)) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon\n }\n result[resultIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[resultIndex++] = y.toFloat()\n result[resultIndex++] = height - zOffset.toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n\n return result\n }\n\n override fun cartesianToGeographic(\n globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position\n ): Position {\n // See \"Map Projections: A Working Manual\", pages 44-45 for the source of the below formulas.\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val t = exp(-y / globe.equatorialRadius) // eq (7-10)\n\n // Inverse projection requires converging series\n var phi = PI / 2 - 2 * atan(t) // eq (7-11) [first trial]\n var phiLast = 0.0\n while (abs(phi - phiLast) > CONVERGENCE_FACTOR) {\n phiLast = phi\n phi = PI / 2.0 - 2.0 * atan(t * ((1 - ecc * sin(phi)) / (1 + ecc * sin(phi))).pow(ecc / 2.0)) // eq (7-9)\n }\n\n val lambda = (x - offset) / eqr // eq (7-12)\n\n return result.setRadians(phi, lambda, z)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4) = result.set(\n 1.0, 0.0, 0.0, x,\n 0.0, 1.0, 0.0, y,\n 0.0, 0.0, 1.0, z,\n 0.0, 0.0, 0.0, 1.0\n )\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n\n if (vz == 0.0 && sz != 0.0) return false // ray is parallel to and not coincident with the XY plane\n\n val t = -sz / vz // intersection distance, simplified for the XY plane\n if (t < 0) return false // intersection is behind the ray's origin\n\n result.x = sx + vx * t\n result.y = sy + vy * t\n result.z = sz + vz * t\n\n return true\n }\n\n companion object {\n private const val CONVERGENCE_FACTOR = 0.000001\n }\n}","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/*\n * GeographicProjection implementing coordinate transformations based on the WGS-84 reference system (aka WGS 1984,\n * EPSG:4326).\n *\n * The WGS 84 projection defines a Cartesian coordinate system whose origin is at the globe's center. It's Y axis points\n * to the North Pole, the Z axis points to the intersection of the prime meridian and the equator, and the X axis\n * completes a right-handed coordinate system, is in the equatorial plane and 90 degrees East of the Z axis.\n */\nopen class Wgs84Projection: GeographicProjection {\n override val displayName = \"WGS84\"\n private val scratchPos = Position()\n\n override fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n return result.set(\n (altitude + rpm) * cosLat * sinLon,\n (altitude + rpm * (1.0 - ec2)) * sinLat,\n (altitude + rpm) * cosLat * cosLon\n )\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n return result.set(\n cosLat * sinLon / eqr2,\n (1 - globe.eccentricitySquared) * sinLat / pol2,\n cosLat * cosLon / eqr2\n ).normalize()\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Convert the geographic position to Cartesian coordinates. This is equivalent to calling geographicToCartesian\n // but is much more efficient as an inline computation, as the results of cosLat/sinLat/etc. can be computed\n // once and reused.\n val px = (rpm + altitude) * cosLat * sinLon\n val py = (rpm * (1.0 - ec2) + altitude) * sinLat\n val pz = (rpm + altitude) * cosLat * cosLon\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, px,\n ey, ny, uy, py,\n ez, nz, uz, pz,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n logMessage(ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val cosLon = DoubleArray(numLon)\n val sinLon = DoubleArray(numLon)\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Compute and save values that are a function of each unique longitude value in the specified sector. This\n // eliminates the need to re-compute these values for each column of constant longitude.\n var lon = minLon\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n cosLon[lonIndex] = cos(lon)\n sinLon[lonIndex] = sin(lon)\n lon += deltaLon\n }\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian\n // point corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n val hgt = if (height != null) (height[elevIndex++] * verticalExaggeration).toDouble() else 0.0\n result[colIndex++] = ((hgt + rpm) * cosLat * sinLon[lonIndex] - xOffset).toFloat()\n result[colIndex++] = ((hgt + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[colIndex++] = ((hgt + rpm) * cosLat * cosLon[lonIndex] - zOffset).toFloat()\n }\n rowIndex += stride\n lat += deltaLat\n }\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianBorder\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 3 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 3 else 1\n var lat = minLat\n var lon = minLon\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n var resultIndex = 0\n\n // Iterate over the edges of the specified sector, computing the Cartesian point at designated latitude and\n // longitude around the border.\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon // explicitly set the first lon to the min longitude to ensure alignment\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n }\n val cosLon = cos(lon)\n val sinLon = sin(lon)\n result[resultIndex++] = ((height + rpm) * cosLat * sinLon - xOffset).toFloat()\n result[resultIndex++] = ((height + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[resultIndex++] = ((height + rpm) * cosLat * cosLon - zOffset).toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n return result\n }\n\n override fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position {\n // According to H. Vermeille,\n // \"An analytical method to transform geocentric into geodetic coordinates\"\n // http://www.springerlink.com/content/3t6837t27t351227/fulltext.pdf\n // Journal of Geodesy, accepted 10/2010, not yet published\n val zpx = z * z + x * x\n val zpxSqrt = sqrt(zpx)\n val a = globe.equatorialRadius\n val ra2 = 1 / (a * a)\n val e2 = globe.eccentricitySquared\n val e4 = e2 * e2\n\n // Step 1\n val p = zpx * ra2\n val q = y * y * (1 - e2) * ra2\n val r = (p + q - e4) / 6\n val h: Double\n val phi: Double\n val evoluteBorderTest = 8 * r * r * r + e4 * p * q\n if (evoluteBorderTest > 0 || q != 0.0) {\n val u: Double\n if (evoluteBorderTest > 0) {\n // Step 2: general case\n val rad1 = sqrt(evoluteBorderTest)\n val rad2 = sqrt(e4 * p * q)\n\n // 10*e2 is my arbitrary decision of what Vermeille means by \"near... the cusps of the evolute\".\n val rad = ((rad1 + rad2) * (rad1 + rad2)).pow(1/3.0)\n u = if (evoluteBorderTest > 10 * e2) r + 0.5 * rad + 2 * r * r / rad\n else r + 0.5 * rad + 0.5 * ((rad1 - rad2) * (rad1 - rad2)).pow(1/3.0)\n } else {\n // Step 3: near evolute\n val rad1 = sqrt(-evoluteBorderTest)\n val rad2 = sqrt(-8 * r * r * r)\n val rad3 = sqrt(e4 * p * q)\n val aTan = 2 * atan2(rad3, rad1 + rad2) / 3\n u = -4 * r * sin(aTan) * cos(PI / 6 + aTan)\n }\n val v = sqrt(u * u + e4 * q)\n val w = e2 * (u + v - q) / (2 * v)\n val k = (u + v) / (sqrt(w * w + u + v) + w)\n val d = k * zpxSqrt / (k + e2)\n val dpySqrt = sqrt(d * d + y * y)\n h = (k + e2 - 1) * dpySqrt / k\n phi = 2 * atan2(y, dpySqrt + d)\n } else {\n // Step 4: singular disk\n val rad1 = sqrt(1 - e2)\n val rad2 = sqrt(e2 - p)\n val e = sqrt(e2)\n h = -a * rad1 * rad2 / e\n phi = rad2 / (e * rad2 + rad1 * sqrt(p))\n }\n\n // Compute lambda\n val s2 = sqrt(2.0)\n val lambda = when {\n (s2 - 1) * x < zpxSqrt + z -> 2 * atan2(x, zpxSqrt + z) // case 1 - -135deg < lambda < 135deg\n zpxSqrt + x < (s2 + 1) * z -> -PI * 0.5 + 2 * atan2(z, zpxSqrt - x) // case 2 - -225deg < lambda < 45deg\n else -> PI * 0.5 - 2 * atan2(z, zpxSqrt + x) // case 3: - -45deg < lambda < 225deg\n }\n return result.setRadians(phi, lambda, h)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4 {\n val pos = cartesianToGeographic(globe, x, y, z, 0.0, scratchPos)\n val cosLat = cos(pos.latitude.inRadians)\n val sinLat = sin(pos.latitude.inRadians)\n val cosLon = cos(pos.longitude.inRadians)\n val sinLon = sin(pos.longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, x,\n ey, ny, uy, y,\n ez, nz, uz, z,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n val eqr = globe.equatorialRadius\n val eqr2 = eqr * eqr // nominal radius squared\n val m = eqr / globe.polarRadius // ratio of the x semi-axis length to the y semi-axis length\n val m2 = m * m\n val a = vx * vx + m2 * vy * vy + vz * vz\n val b = 2 * (sx * vx + m2 * sy * vy + sz * vz)\n val c = sx * sx + m2 * sy * sy + sz * sz - eqr2\n val d = b * b - 4 * a * c // discriminant\n if (d < 0) return false\n var t = (-b - sqrt(d)) / (2 * a)\n // check if the nearest intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n t = (-b + sqrt(d)) / (2 * a)\n // check if the second intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n\n // the intersection points were behind the origin of the provided line\n return false\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.util.math.fract\nimport kotlin.math.max\nimport kotlin.math.min\n\nopen class BasicTerrain(\n tiles: List, sector: Sector, protected val triStripElements: ShortArray?\n): Terrain {\n protected val tiles = tiles.toList()\n override val sector = Sector(sector)\n private val intersectPoint = Vec3()\n\n override fun intersect(line: Line, result: Vec3): Boolean {\n var found = false\n val triStripElements = triStripElements ?: return found\n\n // Tiles considered as sorted by L1 distance on cylinder from camera\n for (i in tiles.indices) {\n val tile = tiles[i]\n // Translate the line to the terrain tile's local coordinate system.\n line.origin.subtract(tile.origin)\n\n // Compute the first intersection of the terrain tile with the line. The line is interpreted as a ray;\n // intersection points behind the line's origin are ignored. Store the nearest intersection found so far\n // in the result argument.\n if (line.triStripIntersection(tile.points, 3, triStripElements, triStripElements.size, intersectPoint)) {\n result.copy(intersectPoint).add(tile.origin)\n found = true\n }\n\n // Restore the line's origin to its previous coordinate system.\n line.origin.add(tile.origin)\n\n // Do not analyze other tiles as they are sorted by distance from camera\n if (found) break\n }\n return found\n }\n\n override fun surfacePoint(latitude: Angle, longitude: Angle, result: Vec3): Boolean {\n for (i in tiles.indices) {\n val tile = tiles[i]\n val sector = tile.sector\n\n // Find the first tile that contains the specified location.\n if (sector.contains(latitude, longitude)) {\n // Compute the location's parameterized coordinates (s, t) within the tile grid, along with the\n // fractional component (sf, tf) and integral component (si, ti).\n val tileWidth = tile.level.tileWidth\n val tileHeight = tile.level.tileHeight\n val s = (longitude.inDegrees - sector.minLongitude.inDegrees) / sector.deltaLongitude.inDegrees * (tileWidth - 1)\n val t = (latitude.inDegrees - sector.minLatitude.inDegrees) / sector.deltaLatitude.inDegrees * (tileHeight - 1)\n val sf = if (s < tileWidth - 1) fract(s) else 1.0\n val tf = if (t < tileHeight - 1) fract(t) else 1.0\n val si = if (s < tileWidth - 1) (s + 1).toInt() else tileWidth - 1\n val ti = if (t < tileHeight - 1) (t + 1).toInt() else tileHeight - 1\n\n // Compute the location in the tile's local coordinate system. Perform a bilinear interpolation of\n // the cell's four points based on the fractional portion of the location's parameterized coordinates.\n // Tile coordinates are organized in the points array in row major order, starting at the tile's\n // Southwest corner. Account for the tile's border vertices, which are embedded in the points array but\n // must be ignored for this computation.\n val tileRowStride = tileWidth + 2\n val i00 = (si + ti * tileRowStride) * 3 // lower left coordinate\n val i10 = i00 + 3 // lower right coordinate\n val i01 = (si + (ti + 1) * tileRowStride) * 3 // upper left coordinate\n val i11 = i01 + 3 // upper right coordinate\n val f00 = (1 - sf) * (1 - tf)\n val f10 = sf * (1 - tf)\n val f01 = (1 - sf) * tf\n val f11 = sf * tf\n val points = tile.points\n result.x = points[i00] * f00 + points[i10] * f10 + points[i01] * f01 + points[i11] * f11\n result.y = points[i00 + 1] * f00 + points[i10 + 1] * f10 + points[i01 + 1] * f01 + points[i11 + 1] * f11\n result.z = points[i00 + 2] * f00 + points[i10 + 2] * f10 + points[i01 + 2] * f01 + points[i11 + 2] * f11\n\n // Translate the surface point from the tile's local coordinate system to Cartesian coordinates.\n result.x += tile.origin.x\n result.y += tile.origin.y\n result.z += tile.origin.z\n return true\n }\n }\n\n // No tile was found that contains the location.\n return false\n }\n\n override fun heightLimits(levelNumberDepth: Int, result: FloatArray) {\n result[0] = Float.MAX_VALUE\n result[1] = -Float.MAX_VALUE\n val maxLevelNumber = tiles.maxOf { it.level.levelNumber }\n val minLevelNumber = maxLevelNumber - levelNumberDepth\n for (tile in tiles) if (tile.level.levelNumber >= minLevelNumber) {\n result[0] = min(result[0], tile.heightLimits[0])\n result[1] = max(result[1], tile.heightLimits[1])\n }\n if (result[0] > result[1]) result.fill(0f)\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.draw.BasicDrawableTerrain\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.*\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\n\nopen class BasicTessellator: Tessellator, TileFactory {\n override val contentType = \"Tessellator\"\n /**\n * Default level set is configured to ~0.6 meter resolution\n */\n var levelSet = LevelSet(Sector().setFullSphere(), Sector().setFullSphere(), Location(POS90, POS90), 20, 32, 32)\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Detail control determines how much times terrain texel is greater than screen pixel.\n */\n var detailControl = 20.0\n /**\n * Memory cache for this tessellator's subdivision tiles. Each entry contains an array of four terrain tiles\n * corresponding to the subdivision of the group's common parent tile. The cache is configured to hold 300 groups, a\n * number tuned to store the tiles needed to navigate a small region, given the tessellator's first level tile delta\n * of 90 degrees, tile dimensions of 32x32 and detail control of 20.\n */\n protected var tileCache = LruMemoryCache>(300)\n protected val topLevelTiles = mutableListOf()\n protected val currentTiles = mutableListOf()\n protected val currentSector = Sector()\n protected var levelSetVertexTexCoords: FloatArray? = null\n protected var levelSetLineElements: ShortArray? = null\n protected var levelSetTriStripElements: ShortArray? = null\n protected val levelSetLineElementRange = Range()\n protected val levelSetTriStripElementRange = Range()\n protected var levelSetVertexTexCoordBuffer: FloatBufferObject? = null\n protected var levelSetElementBuffer: ShortBufferObject? = null\n protected var lastGlobeState: Globe.State? = null\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun tessellate(rc: RenderContext): Terrain {\n checkGlobeState(rc)\n return assembleTerrain(rc)\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = TerrainTile(sector, level, row, column)\n\n protected open fun assembleTerrain(rc: RenderContext): Terrain {\n // Clear previous terrain tiles\n currentTiles.clear()\n currentSector.setEmpty()\n\n // Assemble the terrain buffers and OpenGL buffer objects associated with the level set.\n assembleLevelSetBuffers(rc)\n\n // Assemble the tessellator's top level terrain tiles, which we keep permanent references to.\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n\n // Subdivide the top level tiles until the desired resolution is achieved in each part of the scene.\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as TerrainTile)\n\n // Sort terrain tiles by L1 distance on cylinder from camera\n currentTiles.sortBy { it.sortOrder }\n\n // Release references to render resources acquired while assembling tiles.\n levelSetVertexTexCoordBuffer = null\n levelSetElementBuffer = null\n\n return BasicTerrain(currentTiles, currentSector, levelSetTriStripElements)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, this, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: TerrainTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsFrustum(rc)) return\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val childs = tile.subdivideToCache(this, tileCache, 4) // each tile has a cached size of 1\n for (i in childs.indices) addTileOrDescendants(rc, childs[i] as TerrainTile) // recursively process the tile's children\n }\n\n protected open fun addTile(rc: RenderContext, tile: TerrainTile) {\n // Prepare the terrain tile and add it.\n tile.prepare(rc)\n currentTiles.add(tile)\n currentSector.union(tile.sector)\n\n // Prepare a drawable for the terrain tile for processing on the OpenGL thread.\n val pool = rc.getDrawablePool()\n val drawable = BasicDrawableTerrain.obtain(pool)\n prepareDrawableTerrain(rc, tile, drawable)\n rc.offerDrawableTerrain(drawable, tile.sortOrder)\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n currentTiles.clear()\n currentSector.setEmpty()\n tileCache.clear()\n levelSetVertexTexCoords = null\n levelSetLineElements = null\n levelSetTriStripElements = null\n }\n\n protected open fun prepareDrawableTerrain(rc: RenderContext, tile: TerrainTile, drawable: BasicDrawableTerrain) {\n // Remember globe offset to be able to identify own surface drawables.\n drawable.offset = rc.globe.offset\n\n // Assemble the drawable's geographic sector and Cartesian vertex origin.\n drawable.sector.copy(tile.sector)\n drawable.vertexOrigin.copy(tile.origin)\n\n // Assemble the drawable's element buffer ranges.\n drawable.lineElementRange.copy(levelSetLineElementRange)\n drawable.triStripElementRange.copy(levelSetTriStripElementRange)\n\n // Assemble the drawable's OpenGL buffer objects.\n drawable.vertexPoints = tile.getPointBuffer(rc)\n drawable.vertexHeights = tile.getHeightBuffer(rc)\n drawable.vertexTexCoords = levelSetVertexTexCoordBuffer\n drawable.elements = levelSetElementBuffer\n }\n\n protected open fun assembleLevelSetBuffers(rc: RenderContext) {\n val numLat = levelSet.tileHeight + 2\n val numLon = levelSet.tileWidth + 2\n\n // Assemble the level set's vertex tex coords.\n val vertexTexCoords = levelSetVertexTexCoords ?: FloatArray(numLat * numLon * 2).also {\n levelSetVertexTexCoords = it\n assembleVertexTexCoords(numLat, numLon, it)\n }\n\n // Assemble the level set's line elements.\n val lineElements = levelSetLineElements ?: assembleLineElements(numLat, numLon).also { levelSetLineElements = it }\n\n // Assemble the level set's triangle strip elements.\n val triStripElements = levelSetTriStripElements ?: assembleTriStripElements(numLat, numLon).also { levelSetTriStripElements = it }\n\n // Retrieve or create the level set's OpenGL vertex tex coord buffer object.\n levelSetVertexTexCoordBuffer = rc.getBufferObject(LEVEL_SET_VERTEX_TEX_COORD_KEY) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexTexCoords)\n }\n\n // Retrieve or create the level set's OpenGL element buffer object.\n levelSetElementBuffer = rc.getBufferObject(LEVEL_SET_ELEMENT_KEY) {\n ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, lineElements + triStripElements).also {\n levelSetLineElementRange.upper = lineElements.size\n levelSetTriStripElementRange.lower = lineElements.size\n levelSetTriStripElementRange.upper = lineElements.size + triStripElements.size\n }\n }\n }\n\n protected open fun assembleVertexTexCoords(numLat: Int, numLon: Int, result: FloatArray): FloatArray {\n val ds = 1f / if (numLon > 1) numLon - 3 else 1\n val dt = 1f / if (numLat > 1) numLat - 3 else 1\n var s = 0f\n var t = 0f\n var rIdx = 0\n\n // Iterate over the number of latitude and longitude vertices, computing the parameterized S and T coordinates\n // corresponding to each vertex.\n for (tIdx in 0 until numLat) {\n when {\n tIdx < 2 -> t = 0f // explicitly set the first T coordinate to 0 to ensure alignment\n tIdx < numLat - 2 -> t += dt\n else -> t = 1f // explicitly set the last T coordinate to 1 to ensure alignment\n }\n for (sIdx in 0 until numLon) {\n when {\n sIdx < 2 -> s = 0f // explicitly set the first S coordinate to 0 to ensure alignment\n sIdx < numLon - 2 -> s += ds\n else -> s = 1f // explicitly set the last S coordinate to 1 to ensure alignment\n }\n result[rIdx++] = s\n result[rIdx++] = t\n }\n }\n return result\n }\n\n protected open fun assembleLineElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = (numLat * (numLon - 1) + numLon * (numLat - 1)) * 2\n val result = ShortArray(count)\n var pos = 0\n\n // Add a line between each row to define the horizontal cell outlines.\n for (latIndex in 1 until numLat-1) {\n for (lonIndex in 1 until numLon - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + 1).toShort()\n }\n }\n\n // Add a line between each column to define the vertical cell outlines.\n for (lonIndex in 1 until numLon - 1) {\n for (latIndex in 1 until numLat - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + numLon).toShort()\n }\n }\n return result\n }\n\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val result = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n result[pos++] = (vertex + numLon).toShort()\n result[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n result[pos++] = vertex.toShort()\n result[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return result\n }\n\n companion object {\n private val LEVEL_SET_VERTEX_TEX_COORD_KEY = BasicTessellator::class.simpleName + \".vertexTexCoordKey\"\n private val LEVEL_SET_ELEMENT_KEY = BasicTessellator::class.simpleName + \".elementKey\"\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\n\n/**\n * Represents a portion of a globe's terrain. Applications typically do not interact directly with this class.\n */\nopen class TerrainTile(sector: Sector, level: Level, row: Int, column: Int): Tile(sector, level, row, column) {\n val origin = Vec3()\n val points by lazy { FloatArray((level.tileWidth + 2) * (level.tileHeight + 2) * 3) }\n protected val heights by lazy { FloatArray( (level.tileWidth + 2) * (level.tileHeight + 2)) }\n protected val heightGrid by lazy { FloatArray( level.tileWidth * level.tileHeight) }\n /**\n * Minimum elevation value used by the BasicTessellator to determine the terrain mesh edge extension depth (skirt).\n * This value is scaled by the vertical exaggeration when the terrain is generated.\n */\n protected val minTerrainElevation = -Short.MAX_VALUE.toFloat()\n protected var heightTimestamp = 0L\n protected var verticalExaggeration = 0.0f\n protected var globeState: Globe.State? = null\n protected var globeOffset: Globe.Offset? = null\n var sortOrder = 0.0\n protected set\n private var pointBufferKey = \"TerrainTile.points.default\" // This key will be replaced on prepare of each tile\n private var heightBufferKey = \"TerrainTile.heights.default\" // Use the same height buffer for all tiles by default\n\n public override val heightLimits get() = super.heightLimits\n\n open fun prepare(rc: RenderContext) {\n val globe = rc.globe\n val tileWidth = level.tileWidth\n val tileHeight = level.tileHeight\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightTimestamp) {\n heightGrid.fill(0f)\n globe.elevationModel.getHeightGrid(sector, tileWidth, tileHeight, heightGrid)\n // Calculate height vertex buffer from height grid\n for (r in 0 until level.tileHeight) for (c in 0 until level.tileWidth) {\n heights[(r + 1) * (level.tileWidth + 2) + c + 1] = heightGrid[r * level.tileWidth + c]\n }\n if (rc.globe.is2D) {\n heightGrid.fill(0f) // Do not show terrain in 2D, but keep height values in vertex for heatmap\n calcHeightLimits(globe) // Force calculate height limits for heatmap\n }\n updateHeightBufferKey()\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightTimestamp || ve != verticalExaggeration || state != globeState || offset != globeOffset) {\n val borderHeight = minTerrainElevation * ve\n val rowStride = (tileWidth + 2) * 3\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude, 0.0, origin)\n globe.geographicToCartesianGrid(\n sector, tileWidth, tileHeight, heightGrid, ve, origin, points, rowStride + 3, rowStride\n )\n globe.geographicToCartesianBorder(\n sector, tileWidth + 2, tileHeight + 2, borderHeight, origin, points\n )\n updatePointBufferKey()\n }\n heightTimestamp = timestamp\n verticalExaggeration = ve\n globeState = state\n globeOffset = offset\n sortOrder = drawSortOrder(rc)\n }\n\n fun getHeightBuffer(rc: RenderContext) = rc.getBufferObject(heightBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, heights)\n }\n\n fun getPointBuffer(rc: RenderContext) = rc.getBufferObject(pointBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n protected fun updateHeightBufferKey() {\n heightBufferKey = \"TerrainTile.heights.$tileKey.${bufferSequence++}\"\n }\n\n protected fun updatePointBufferKey() {\n pointBufferKey = \"TerrainTile.points.$tileKey.${bufferSequence++}\"\n }\n\n companion object {\n private var bufferSequence = 0L // Must be static to avoid cache collisions when a tile instance is re-created\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractLayer @JvmOverloads constructor(override var displayName: String? = null): Layer {\n override var isEnabled = true\n override var isPickEnabled = true\n override var opacity = 1f\n override var minActiveAltitude = Double.NEGATIVE_INFINITY\n override var maxActiveAltitude = Double.POSITIVE_INFINITY\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) {\n if (isEnabled && (isPickEnabled || !rc.isPickMode) && isWithinActiveAltitudes(rc)) doRender(rc)\n }\n\n override fun isWithinActiveAltitudes(rc: RenderContext) = rc.camera.position.altitude in minActiveAltitude..maxActiveAltitude\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nabstract class AbstractTiledImageLayer(name: String?, tiledSurfaceImage: TiledSurfaceImage?): RenderableLayer(name) {\n override var isPickEnabled = false // Image layer is not pick able\n\n var tiledSurfaceImage = tiledSurfaceImage?.also { addRenderable(it) }\n protected set(value) {\n field?.let { removeRenderable(it) }\n value?.let { addRenderable(it) }\n field = value\n }\n\n /**\n * Unique identifier of the layer type, defined by tiled surface image tile factory content type\n */\n val type get() = tiledSurfaceImage?.tileFactory?.contentType\n}","package earth.worldwind.layer\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays a single image spanning the globe. By default, BackgroundLayer is configured to display NASA's Blue Marble\n * next generation image at 40km resolution from the built-in WorldWind library resource\n * res/drawable/worldwind_worldtopobathy2004053.\n */\nclass BackgroundLayer @JvmOverloads constructor(\n imageSource: ImageSource = ImageSource.fromResource(MR.images.worldwind_worldtopobathy2004053),\n imageOptions: ImageOptions = ImageOptions(ImageConfig.RGB_565)\n) : RenderableLayer(\"Background\") {\n // Disable picking for the layer because it covers the full sphere and will override a terrain pick.\n override var isPickEnabled = false\n\n init {\n // Delegate display to the SurfaceImage shape.\n val surfaceImage = SurfaceImage(Sector().setFullSphere(), imageSource)\n surfaceImage.imageOptions = imageOptions\n addRenderable(surfaceImage)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class LayerList() : Iterable {\n protected val layers = mutableListOf()\n\n constructor(layerList: LayerList): this() { addAllLayers(layerList) }\n\n constructor(layers: Iterable): this() { addAllLayers(layers) }\n\n fun getLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"getLayer\", \"invalidIndex\")\n }\n return layers[index]\n }\n\n fun setLayer(index: Int, layer: Layer): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"setLayer\", \"invalidIndex\")\n }\n return layers.set(index, layer)\n }\n\n fun indexOfLayer(layer: Layer) = layers.indexOf(layer)\n\n fun indexOfLayerNamed(name: String): Int {\n for (idx in layers.indices) if ( name == layers[idx].displayName) return idx\n return -1\n }\n\n fun indexOfLayerWithProperty(key: Any, value: Any): Int {\n for (idx in layers.indices) {\n val layer = layers[idx]\n if (layer.hasUserProperty(key) && value == layer.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addLayer(layer: Layer) { layers.add(layer) }\n\n fun addLayer(index: Int, layer: Layer) {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"addLayer\", \"invalidIndex\")\n }\n layers.add(index, layer)\n }\n\n fun addAllLayers(list: LayerList) {\n //layers.ensureCapacity(list.layers.size)\n for (layer in list.layers) layers.add(layer) // we know the contents of layerList.layers is valid\n }\n\n fun addAllLayers(iterable: Iterable) { for (layer in iterable) layers.add(layer) }\n\n fun removeLayer(layer: Layer): Boolean { return layers.remove(layer) }\n\n fun removeLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"removeLayer\", \"invalidIndex\")\n }\n return layers.removeAt(index)\n }\n\n fun removeAllLayers(layers: Iterable): Boolean {\n var removed = false\n for (layer in layers) removed = removed or this.layers.remove(layer)\n return removed\n }\n\n fun clearLayers() { layers.clear() }\n\n override fun iterator() = layers.iterator()\n\n fun render(rc: RenderContext) {\n for (i in layers.indices) {\n val layer = layers[i]\n rc.currentLayer = layer\n try {\n layer.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"LayerList\", \"render\",\n \"Exception while rendering layer '${layer.displayName}'\", e\n )\n // Keep going. Draw the remaining layers.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class RenderableLayer @JvmOverloads constructor(displayName: String? = null): AbstractLayer(displayName), Iterable {\n protected val renderables = mutableListOf()\n val count get() = renderables.size\n\n constructor(layer: RenderableLayer): this(layer.displayName) { addAllRenderables(layer) }\n\n constructor(renderables: Iterable): this() { addAllRenderables(renderables) }\n\n fun isEmpty() = renderables.isEmpty()\n\n fun getRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"getRenderable\", \"invalidIndex\")\n }\n return renderables[index]\n }\n\n fun setRenderable(index: Int, renderable: Renderable): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"setRenderable\", \"invalidIndex\")\n }\n return renderables.set(index, renderable)\n }\n\n fun indexOfRenderable(renderable: Renderable) = renderables.indexOf(renderable)\n\n fun indexOfRenderableNamed(name: String): Int {\n for (idx in renderables.indices) if (name == renderables[idx].displayName) return idx\n return -1\n }\n\n fun indexOfRenderableWithProperty(key: Any, value: Any): Int {\n for (idx in renderables.indices) {\n val renderable = renderables[idx]\n if (renderable.hasUserProperty(key) && value == renderable.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addRenderable(renderable: Renderable) { renderables.add(renderable) }\n\n fun addRenderable(index: Int, renderable: Renderable) {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"addRenderable\", \"invalidIndex\")\n }\n renderables.add(index, renderable)\n }\n\n fun addAllRenderables(layer: RenderableLayer) {\n //renderables.ensureCapacity(layer.renderables.size)\n for (renderable in layer.renderables) renderables.add(renderable) // we know the contents of layer.renderables is valid\n }\n\n fun addAllRenderables(iterable: Iterable) { for (renderable in iterable) renderables.add(renderable) }\n\n fun removeRenderable(renderable: Renderable) = renderables.remove(renderable)\n\n fun removeRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"removeRenderable\", \"invalidIndex\")\n }\n return renderables.removeAt(index)\n }\n\n fun removeAllRenderables(renderables: Iterable): Boolean {\n var removed = false\n for (renderable in renderables) removed = removed or this.renderables.remove(renderable)\n return removed\n }\n\n fun clearRenderables() { renderables.clear() }\n\n override fun iterator() = renderables.iterator()\n\n override fun doRender(rc: RenderContext) {\n for (i in renderables.indices) {\n val renderable = renderables[i]\n try {\n renderable.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"RenderableLayer\", \"doRender\",\n \"Exception while rendering shape '${renderable.displayName}'\", e\n )\n // Keep going. Draw the remaining renderables.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.draw.DrawableTessellation\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\n\nclass ShowTessellationLayer: AbstractLayer(\"Terrain Tessellation\") {\n override var isPickEnabled = false\n var color = Color()\n set(value) {\n field.copy(value)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to render\n\n // Use WorldWind's basic GLSL program.\n val program = rc.getShaderProgram { BasicShaderProgram() }\n val pool = rc.getDrawablePool()\n val drawable = DrawableTessellation.obtain(pool).set(program, color, opacity)\n rc.offerSurfaceDrawable(drawable, 1.0 /*z-order after surface textures*/)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\nimport kotlin.math.PI\nimport kotlin.math.pow\n\n// TODO Correctly compute the atmosphere color for eye positions beneath the atmosphere\n// TODO Test the effect of working in local coordinates (reference point) on the GLSL atmosphere programs\nabstract class AbstractAtmosphereProgram: AbstractShaderProgram() {\n protected var fragModeId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var vertexOriginId = KglUniformLocation.NONE\n protected var eyePointId = KglUniformLocation.NONE\n protected var eyeMagnitudeId = KglUniformLocation.NONE\n protected var eyeMagnitude2Id = KglUniformLocation.NONE\n protected var lightDirectionId = KglUniformLocation.NONE\n protected var invWavelengthId = KglUniformLocation.NONE\n protected var atmosphereRadiusId = KglUniformLocation.NONE\n protected var atmosphereRadius2Id = KglUniformLocation.NONE\n protected var globeRadiusId = KglUniformLocation.NONE\n protected var krESunId = KglUniformLocation.NONE\n protected var kmESunId = KglUniformLocation.NONE\n protected var kr4PIId = KglUniformLocation.NONE\n protected var km4PIId = KglUniformLocation.NONE\n protected var scaleId = KglUniformLocation.NONE\n protected var scaleDepthId = KglUniformLocation.NONE\n protected var scaleOverScaleDepthId = KglUniformLocation.NONE\n protected var gId = KglUniformLocation.NONE\n protected var g2Id = KglUniformLocation.NONE\n protected var exposureId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n /**\n * Frag color indicates the atmospheric scattering color components written to the fragment color. Accepted values\n * are [FRAGMODE_PRIMARY], [FRAGMODE_SECONDARY] and [FRAGMODE_PRIMARY_TEX_BLEND].\n */\n enum class FragMode(val asInt : Int) {\n PRIMARY(1),\n SECONDARY(2),\n PRIMARY_TEX_BLEND(3)\n }\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n val invWavelength = Vec3(\n 1 / 0.650.pow(4.0), // 650 nm for red\n 1 / 0.570.pow(4.0), // 570 nm for green\n 1 / 0.475.pow(4.0) // 475 nm for blue\n )\n val kr = 0.0025 // Rayleigh scattering constant\n val km = 0.0010 // Mie scattering constant\n val eSun = 20.0 // Sun brightness constant\n val g = -0.990 // The Mie phase asymmetry factor\n val exposure = 2.0\n fragModeId = gl.getUniformLocation(program, \"fragMode\")\n gl.uniform1i(fragModeId, FragMode.PRIMARY.asInt)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n vertexOriginId = gl.getUniformLocation(program, \"vertexOrigin\")\n array.fill(0f)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n eyePointId = gl.getUniformLocation(program, \"eyePoint\")\n array.fill(0f)\n gl.uniform3fv(eyePointId, 1, array, 0)\n eyeMagnitudeId = gl.getUniformLocation(program, \"eyeMagnitude\")\n gl.uniform1f(eyeMagnitudeId, 0f)\n eyeMagnitude2Id = gl.getUniformLocation(program, \"eyeMagnitude2\")\n gl.uniform1f(eyeMagnitude2Id, 0f)\n lightDirectionId = gl.getUniformLocation(program, \"lightDirection\")\n array.fill(0f)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n invWavelengthId = gl.getUniformLocation(program, \"invWavelength\")\n invWavelength.toArray(array, 0)\n gl.uniform3fv(invWavelengthId, 1, array, 0)\n atmosphereRadiusId = gl.getUniformLocation(program, \"atmosphereRadius\")\n atmosphereRadius2Id = gl.getUniformLocation(program, \"atmosphereRadius2\")\n globeRadiusId = gl.getUniformLocation(program, \"globeRadius\")\n krESunId = gl.getUniformLocation(program, \"KrESun\")\n gl.uniform1f(krESunId, (kr * eSun).toFloat())\n kmESunId = gl.getUniformLocation(program, \"KmESun\")\n gl.uniform1f(kmESunId, (km * eSun).toFloat())\n kr4PIId = gl.getUniformLocation(program, \"Kr4PI\")\n gl.uniform1f(kr4PIId, (kr * 4 * PI).toFloat())\n km4PIId = gl.getUniformLocation(program, \"Km4PI\")\n gl.uniform1f(km4PIId, (km * 4 * PI).toFloat())\n scaleId = gl.getUniformLocation(program, \"scale\")\n scaleDepthId = gl.getUniformLocation(program, \"scaleDepth\")\n scaleOverScaleDepthId = gl.getUniformLocation(program, \"scaleOverScaleDepth\")\n gId = gl.getUniformLocation(program, \"g\")\n gl.uniform1f(gId, g.toFloat())\n g2Id = gl.getUniformLocation(program, \"g2\")\n gl.uniform1f(g2Id, (g * g).toFloat())\n exposureId = gl.getUniformLocation(program, \"exposure\")\n gl.uniform1f(exposureId, exposure.toFloat())\n }\n\n fun loadFragMode(fragMode: FragMode) { gl.uniform1i(fragModeId, fragMode.asInt) }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n\n fun loadVertexOrigin(origin: Vec3) {\n origin.toArray(array, 0)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n }\n\n fun loadVertexOrigin(x: Double, y: Double, z: Double) {\n gl.uniform3f(vertexOriginId, x.toFloat(), y.toFloat(), z.toFloat())\n }\n\n fun loadLightDirection(direction: Vec3) {\n direction.toArray(array, 0)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n }\n\n fun loadEyePoint(eyePoint: Vec3) {\n eyePoint.toArray(array, 0)\n gl.uniform3fv(eyePointId, 1, array, 0)\n gl.uniform1f(eyeMagnitudeId, eyePoint.magnitude.toFloat())\n gl.uniform1f(eyeMagnitude2Id, eyePoint.magnitudeSquared.toFloat())\n }\n\n fun loadAtmosphereParams(equatorialRadius: Double, atmosphereAltitude: Double) {\n val rayleighScaleDepth = 0.25\n val ar = equatorialRadius + atmosphereAltitude\n gl.uniform1f(globeRadiusId, equatorialRadius.toFloat())\n gl.uniform1f(atmosphereRadiusId, ar.toFloat())\n gl.uniform1f(atmosphereRadius2Id, (ar * ar).toFloat())\n gl.uniform1f(scaleId, (1 / atmosphereAltitude).toFloat())\n gl.uniform1f(scaleDepthId, rayleighScaleDepth.toFloat())\n gl.uniform1f(scaleOverScaleDepthId, (1 / atmosphereAltitude / rayleighScaleDepth).toFloat())\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource.Companion.fromResource\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\nimport kotlinx.datetime.Instant\n\nopen class AtmosphereLayer: AbstractLayer(\"Atmosphere\") {\n override var isPickEnabled = false\n var nightImageSource = fromResource(MR.images.dnb_land_ocean_ice_2012)\n var nightImageOptions = ImageOptions(ImageConfig.RGB_565)\n /**\n * Display light location on a specified time point. If null, then light is located at camera position.\n */\n var time : Instant? = null\n protected val activeLightDirection = Vec3()\n private val fullSphereSector = Sector().setFullSphere()\n\n companion object {\n private val VERTEX_POINTS_KEY = AtmosphereLayer::class.simpleName + \".points\"\n private val TRI_STRIP_ELEMENTS_KEY = AtmosphereLayer::class.simpleName + \".triStripElements\"\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Atmosphere layer is not applicable for 2D globe\n\n // Compute the currently active light direction.\n determineLightDirection(rc)\n\n // Render the sky portion of the atmosphere.\n renderSky(rc)\n\n // Render the ground portion of the atmosphere.\n renderGround(rc)\n }\n\n protected open fun determineLightDirection(rc: RenderContext) {\n // TODO Make light/sun direction an optional property of the WorldWindow and attach it to the RenderContext each frame\n // TODO RenderContext property defaults to the eye lat/lon like we have below\n time?.let {\n val lightLocation = SunPosition.getAsGeographicLocation(it)\n rc.globe.geographicToCartesianNormal(\n lightLocation.latitude, lightLocation.longitude, activeLightDirection\n )\n } ?: rc.globe.geographicToCartesianNormal(\n rc.camera.position.latitude, rc.camera.position.longitude, activeLightDirection\n )\n }\n\n protected open fun renderSky(rc: RenderContext) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableSkyAtmosphere.obtain(pool)\n val size = 128\n drawable.program = rc.getShaderProgram { SkyProgram() }\n drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY) {\n assembleVertexPoints(rc, size, size, rc.atmosphereAltitude.toFloat())\n }\n drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY) { assembleTriStripElements(size, size) }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun renderGround(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n val pool = rc.getDrawablePool()\n val drawable = DrawableGroundAtmosphere.obtain(pool)\n drawable.program = rc.getShaderProgram { GroundProgram() }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n\n // Use this layer's night image when the light location is different from the eye location.\n drawable.nightTexture = time?.run { rc.getTexture(nightImageSource, nightImageOptions) }\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun assembleVertexPoints(rc: RenderContext, numLat: Int, numLon: Int, altitude: Float): FloatBufferObject {\n val count = numLat * numLon\n val altitudes = FloatArray(count)\n altitudes.fill(altitude)\n val points = FloatArray(count * 3)\n rc.globe.geographicToCartesianGrid(\n fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points\n )\n return FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n // TODO move this into a basic tessellator implementation in WorldWind\n // TODO tessellator and atmosphere needs the TriStripIndices - could we add these to BasicGlobe (needs to be on a static context)\n // TODO may need to switch the tessellation method anyway - geographic grid may produce artifacts at the poles\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortBufferObject {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val elements = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n elements[pos++] = (vertex + numLon).toShort()\n elements[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n elements[pos++] = vertex.toShort()\n elements[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.atmosphere.AbstractAtmosphereProgram.FragMode.*\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableGroundAtmosphere : Drawable {\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: GroundProgram? = null\n var nightTexture: Texture? = null\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val fullSphereSector = Sector().setFullSphere()\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableGroundAtmosphere {\n val instance = pool.acquire() ?: DrawableGroundAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n nightTexture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Set up to use the shared tile tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Attempt to bind the night side texture to multi-texture unit 0.\n dc.activeTextureUnit(GL_TEXTURE0)\n val nightTexture = nightTexture\n val textureBound = nightTexture?.bindTexture(dc) == true\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) ||\n !terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) continue // vertex buffer failed to bind\n\n // Use the vertex origin for the terrain.\n val terrainOrigin = terrain.vertexOrigin\n program.loadVertexOrigin(terrainOrigin)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Use a tex coord matrix that registers the night texture correctly on each terrain.\n if (textureBound && nightTexture != null) {\n texCoordMatrix.copy(nightTexture.coordTransform)\n texCoordMatrix.multiplyByTileTransform(terrain.sector, fullSphereSector)\n program.loadTexCoordMatrix(texCoordMatrix)\n }\n\n // Draw the terrain as triangles, multiplying the current fragment color by the program's secondary color.\n program.loadFragMode(SECONDARY)\n dc.gl.blendFunc(GL_DST_COLOR, GL_ZERO)\n terrain.drawTriangles(dc)\n\n // Draw the terrain as triangles, adding the current fragment color to the program's primary color.\n program.loadFragMode(if (textureBound) PRIMARY_TEX_BLEND else PRIMARY)\n dc.gl.blendFunc(GL_ONE, GL_ONE)\n terrain.drawTriangles(dc)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.disableVertexAttribArray(1)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nclass DrawableSkyAtmosphere : Drawable {\n var vertexPoints: FloatBufferObject? = null\n var triStripElements: ShortBufferObject? = null\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: SkyProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSkyAtmosphere {\n val instance = pool.acquire() ?: DrawableSkyAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n triStripElements = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n val triStripElements = triStripElements ?: return // element buffer unspecified\n if (!triStripElements.bindBuffer(dc)) return // element buffer failed to bind\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Use the vertex origin for the sky ellipsoid.\n program.loadVertexOrigin(0.0, 0.0, 0.0)\n\n // Use the draw context's modelview projection matrix.\n program.loadModelviewProjection(dc.modelviewProjection)\n\n // Use the sky's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the inside of the sky without writing to the depth buffer.\n dc.gl.depthMask(false)\n dc.gl.frontFace(GL_CW)\n dc.gl.drawElements(GL_TRIANGLE_STRIP, triStripElements.byteCount / 2, GL_UNSIGNED_SHORT, 0)\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.frontFace(GL_CCW)\n }\n}","package earth.worldwind.layer.atmosphere\n\nopen class GroundProgram: AbstractAtmosphereProgram() {\n override var programSources = arrayOf(\n \"\"\"\n precision mediump int; /* fragMode is used in both shaders, so we must use a common precision */\n\n const int FRAGMODE_PRIMARY = 1;\n const int FRAGMODE_SECONDARY = 2;\n const int FRAGMODE_PRIMARY_TEX_BLEND = 3;\n\n const int SAMPLE_COUNT = 2;\n const float SAMPLES = 2.0;\n\n uniform int fragMode;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n uniform vec3 vertexOrigin;\n uniform vec3 eyePoint;\n uniform float eyeMagnitude;\t /* The eye point's magnitude */\n uniform float eyeMagnitude2;\t /* eyeMagnitude^2 */\n uniform vec3 lightDirection;\t /* The direction vector to the light source */\n uniform vec3 invWavelength;\t /* 1 / pow(wavelength, 4) for the red, green, and blue channels */\n uniform float atmosphereRadius; /* The outer (atmosphere) radius */\n uniform float atmosphereRadius2; /* atmosphereRadius^2 */\n uniform float globeRadius;\t\t /* The inner (planetary) radius */\n uniform float KrESun;\t\t\t /* Kr * ESun */\n uniform float KmESun;\t\t\t /* Km * ESun */\n uniform float Kr4PI;\t\t\t /* Kr * 4 * PI */\n uniform float Km4PI;\t\t\t /* Km * 4 * PI */\n uniform float scale;\t\t\t /* 1 / (atmosphereRadius - globeRadius) */\n uniform float scaleDepth;\t\t /* The scale depth (i.e. the altitude at which the atmosphere's average density is found) */\n uniform float scaleOverScaleDepth;\t/* fScale / fScaleDepth */\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec3 primaryColor;\n varying vec3 secondaryColor;\n varying vec3 direction;\n varying vec2 texCoord;\n\n float scaleFunc(float cos) {\n float x = 1.0 - cos;\n return scaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n }\n\n void main() {\n /* Get the ray from the camera to the vertex and its length (which is the far point of the ray passing through the\n atmosphere) */\n vec3 point = vertexPoint.xyz + vertexOrigin;\n vec3 ray = point - eyePoint;\n float far = length(ray);\n ray /= far;\n\n vec3 start;\n if (eyeMagnitude < atmosphereRadius) {\n start = eyePoint;\n } else {\n /* Calculate the closest intersection of the ray with the outer atmosphere (which is the near point of the ray\n passing through the atmosphere) */\n float B = 2.0 * dot(eyePoint, ray);\n float C = eyeMagnitude2 - atmosphereRadius2;\n float det = max(0.0, B*B - 4.0 * C);\n float near = 0.5 * (-B - sqrt(det));\n\n /* Calculate the ray's starting point, then calculate its scattering offset */\n start = eyePoint + ray * near;\n far -= near;\n }\n\n float depth = exp((globeRadius - atmosphereRadius) / scaleDepth);\n float eyeAngle = dot(-ray, point) / length(point);\n float lightAngle = dot(lightDirection, point) / length(point);\n float eyeScale = scaleFunc(eyeAngle);\n float lightScale = scaleFunc(lightAngle);\n float eyeOffset = depth*eyeScale;\n float temp = (lightScale + eyeScale);\n\n /* Initialize the scattering loop variables */\n float sampleLength = far / SAMPLES;\n float scaledLength = sampleLength * scale;\n vec3 sampleRay = ray * sampleLength;\n vec3 samplePoint = start + sampleRay * 0.5;\n\n /* Now loop through the sample rays */\n vec3 frontColor = vec3(0.0, 0.0, 0.0);\n vec3 attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i\n abstract fun getTypeFor(resolution: Double): String\n\n /**\n * Determines whether the grid should be updated. It returns true if: * the eye has moved more than 1% of its\n * altitude above ground * the view FOV, heading or pitch have changed more than 1 degree * vertical\n * exaggeration has changed `RenderContext`.\n *\n * @return true if the graticule should be updated.\n */\n private fun needsToUpdate(rc: RenderContext): Boolean {\n if (lastVerticalExaggeration != rc.verticalExaggeration) return true\n if (abs(lastCameraHeading - rc.camera.heading.inDegrees) > 1) return true\n if (abs(lastCameraTilt - rc.camera.tilt.inDegrees) > 1) return true\n if (abs(lastFOV - rc.camera.fieldOfView.inDegrees) > 1) return true\n if (rc.cameraPoint.distanceTo(lastCameraPoint) > computeAltitudeAboveGround(rc) / 100) return true\n if (rc.globeState != lastGlobeState) return true\n return false\n }\n\n protected open fun clear(rc: RenderContext) {\n removeAllRenderables()\n lastCameraPoint.copy(rc.cameraPoint)\n lastFOV = rc.camera.fieldOfView.inDegrees\n lastCameraHeading = rc.camera.heading.inDegrees\n lastCameraTilt = rc.camera.tilt.inDegrees\n lastVerticalExaggeration = rc.verticalExaggeration\n lastGlobeState = rc.globeState\n }\n\n fun computeLabelOffset(rc: RenderContext): Location {\n return rc.lookAtPosition?.let {\n val labelOffset = toDegrees(rc.pixelSize / rc.globe.equatorialRadius * rc.viewport.width / 4)\n Location(\n it.latitude.minusDegrees(labelOffset).normalizeLatitude().coerceIn(MIN_LAT, MAX_LAT),\n it.longitude.minusDegrees(labelOffset).normalizeLongitude()\n )\n } ?: rc.camera.position\n }\n\n fun createLineRenderable(positions: List, pathType: PathType) = Path(positions).apply {\n this.pathType = pathType\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun createTextRenderable(position: Position, label: String, resolution: Double) = Label(position, label).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n // priority = resolution * 1e6 // TODO Implement priority\n }\n\n fun getSurfacePoint(rc: RenderContext, latitude: Angle, longitude: Angle): Vec3 {\n if (!rc.terrain.surfacePoint(latitude, longitude, surfacePoint))\n rc.globe.geographicToCartesian(\n latitude, longitude, rc.globe.getElevation(latitude, longitude)\n * rc.verticalExaggeration, surfacePoint\n )\n return surfacePoint\n }\n\n fun computeAltitudeAboveGround(rc: RenderContext): Double {\n val surfacePoint = getSurfacePoint(rc, rc.camera.position.latitude, rc.camera.position.longitude)\n return rc.cameraPoint.distanceTo(surfacePoint)\n }\n\n fun computeTruncatedSegment(p1: Position, p2: Position, sector: Sector, positions: MutableList) {\n val p1In = sector.contains(p1.latitude, p1.longitude)\n val p2In = sector.contains(p2.latitude, p2.longitude)\n if (!p1In && !p2In) return // the whole segment is (likely) outside\n if (p1In && p2In) {\n // the whole segment is (likely) inside\n positions.add(p1)\n positions.add(p2)\n } else {\n // segment does cross the boundary\n var outPoint = if (!p1In) p1 else p2\n val inPoint = if (p1In) p1 else p2\n for (i in 1..2) {\n // there may be two intersections\n var intersection: Location? = null\n if (outPoint.longitude.inDegrees > sector.maxLongitude.inDegrees\n || sector.maxLongitude.inDegrees == 180.0 && outPoint.longitude.inDegrees < 0.0) {\n // intersect with east meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.maxLongitude\n )\n } else if (outPoint.longitude.inDegrees < sector.minLongitude.inDegrees\n || sector.minLongitude.inDegrees == -180.0 && outPoint.longitude.inDegrees > 0.0) {\n // intersect with west meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.minLongitude\n )\n } else if (outPoint.latitude.inDegrees > sector.maxLatitude.inDegrees) {\n // intersect with top parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.maxLatitude\n )\n } else if (outPoint.latitude.inDegrees < sector.minLatitude.inDegrees) {\n // intersect with bottom parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.minLatitude\n )\n }\n outPoint = if (intersection != null) Position(\n intersection.latitude,\n intersection.longitude,\n outPoint.altitude\n ) else break\n }\n positions.add(inPoint)\n positions.add(outPoint)\n }\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a meridian.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param longitude the meridian longitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLongitude(p1: Location, p2: Location, longitude: Angle): Location? {\n if (p1.longitude == longitude) return p1\n if (p2.longitude == longitude) return p2\n var pos: Location? = null\n val deltaLon = getDeltaLongitude(p1, p2.longitude)\n if (getDeltaLongitude(p1, longitude) < deltaLon && getDeltaLongitude(p2, longitude) < deltaLon) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (toRadians(getDeltaLongitude(midPoint, longitude)) > precision && count <= 20) {\n count++\n if (getDeltaLongitude(a, longitude) < getDeltaLongitude(b, longitude)) b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final longitude for an exact match\n if (pos != null) pos = Location(pos.latitude, longitude)\n return pos\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a parallel.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param latitude the parallel latitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLatitude(p1: Location, p2: Location, latitude: Angle): Location? {\n var pos: Location? = null\n if (sign(p1.latitude.inDegrees - latitude.inDegrees) != sign(p2.latitude.inDegrees - latitude.inDegrees)) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (abs(midPoint.latitude.inRadians - latitude.inRadians) > precision && count <= 20) {\n count++\n if (sign(a.latitude.inDegrees - latitude.inDegrees) != sign(midPoint.latitude.inDegrees - latitude.inDegrees))\n b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final latitude for an exact match\n if (pos != null) pos = Location(latitude, pos.longitude)\n return pos\n }\n\n private fun greatCircleMidPoint(p1: Location, p2: Location): Location {\n val azimuth = p1.greatCircleAzimuth(p2)\n val distance = p1.greatCircleDistance(p2)\n return p1.greatCircleLocation(azimuth, distance / 2, Location())\n }\n\n private fun getDeltaLongitude(p1: Location, longitude: Angle): Double {\n val deltaLon = abs(p1.longitude.inDegrees - longitude.inDegrees)\n return if (deltaLon < 180) deltaLon else 360 - deltaLon\n }\n\n companion object {\n private val MIN_LAT = (-70.0).degrees\n private val MAX_LAT = 70.0.degrees\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.AbstractTile\n\nabstract class AbstractGraticuleTile(open val layer: AbstractGraticuleLayer, sector: Sector) : AbstractTile(sector) {\n val gridElements = mutableListOf()\n /**\n * Flag to avoid recursive renderables creation if tile should not have elements by design\n */\n private var shouldCreateRenderables = true\n private val scratchVector = Vec3()\n\n open fun isInView(rc: RenderContext) = rc.globe.projectionLimits?.let { intersectsSector(it) } != false &&\n intersectsSector(rc.terrain.sector) && intersectsFrustum(rc) && isFacingCamera(rc)\n\n open fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, sector.centroidLatitude, sector.centroidLongitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n val tileSizeMeter = sector.deltaLatitude.inRadians * rc.globe.equatorialRadius\n return tileSizeMeter / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n open fun selectRenderables(rc: RenderContext) {\n if (shouldCreateRenderables && gridElements.isEmpty()) createRenderables()\n }\n\n open fun clearRenderables() {\n gridElements.clear()\n shouldCreateRenderables = true\n }\n\n open fun createRenderables() {\n shouldCreateRenderables = false\n }\n\n fun subdivide(div: Int, sector: Sector = this.sector): List {\n val dLat = sector.deltaLatitude.inDegrees / div\n val dLon = sector.deltaLongitude.inDegrees / div\n val sectors = mutableListOf()\n for (row in 0 until div) {\n for (col in 0 until div) {\n sectors += fromDegrees(\n sector.minLatitude.inDegrees + dLat * row,\n sector.minLongitude.inDegrees + dLon * col, dLat, dLon\n )\n }\n }\n return sectors\n }\n\n protected open fun isFacingCamera(rc: RenderContext) = if (rc.globe.is2D) true else {\n val viewingVector = nearestPoint(rc).subtract(rc.cameraPoint)\n val normalVector = rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n dot / (viewingVector.magnitude * normalVector.magnitude) < 0.0\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\nclass GraticuleRenderingParams: MutableMap by HashMap() {\n var isDrawLines: Boolean\n get() = get(KEY_DRAW_LINES) as? Boolean ?: false\n set(drawLines) { put(KEY_DRAW_LINES, drawLines) }\n var lineColor: Color?\n get() = get(KEY_LINE_COLOR) as? Color\n set(color) { put(KEY_LINE_COLOR, color) }\n var lineWidth: Float\n get() = get(KEY_LINE_WIDTH) as? Float ?: 0.0f\n set(lineWidth) { put(KEY_LINE_WIDTH, lineWidth) }\n var lineStyle: LineStyle\n get() = get(KEY_LINE_STYLE) as? LineStyle ?: LineStyle.SOLID\n set(lineStyle) { put(KEY_LINE_STYLE, lineStyle) }\n var isDrawLabels: Boolean\n get() = get(KEY_DRAW_LABELS) as? Boolean ?: false\n set(drawLabels) { put(KEY_DRAW_LABELS, drawLabels) }\n var labelColor: Color?\n get() = get(KEY_LABEL_COLOR) as? Color\n set(color) { put(KEY_LABEL_COLOR, color) }\n var labelFont: Font?\n get() = get(KEY_LABEL_FONT) as? Font\n set(font) { put(KEY_LABEL_FONT, font) }\n\n companion object {\n const val KEY_DRAW_LINES = \"DrawGraticule\"\n const val KEY_LINE_COLOR = \"GraticuleLineColor\"\n const val KEY_LINE_WIDTH = \"GraticuleLineWidth\"\n const val KEY_LINE_STYLE = \"GraticuleLineStyle\";\n const val KEY_DRAW_LABELS = \"DrawLabels\"\n const val KEY_LABEL_COLOR = \"LabelColor\"\n const val KEY_LABEL_FONT = \"LabelFont\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LINES\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_STYLE\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_WIDTH\nimport earth.worldwind.render.*\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.ShapeAttributes\nimport kotlin.jvm.JvmOverloads\n\ninternal class GraticuleSupport {\n private val renderables = mutableMapOf()\n private val namedParams = mutableMapOf()\n private val namedShapeAttributes = mutableMapOf()\n var defaultParams: GraticuleRenderingParams? = null\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { renderables[renderable] = paramsKey }\n\n fun removeAllRenderables() { renderables.clear() }\n\n @JvmOverloads\n fun render(rc: RenderContext, opacity: Float = 1f) {\n namedShapeAttributes.clear()\n\n // Render lines and collect text labels\n for ((renderable, paramsKey) in renderables) {\n val renderingParams = namedParams[paramsKey]\n if (renderable is Path) {\n if (renderingParams?.isDrawLines != false) {\n applyRenderingParams(paramsKey, renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n } else if (renderable is Label) {\n if (renderingParams?.isDrawLabels != false) {\n applyRenderingParams(renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n }\n }\n }\n\n fun getRenderingParams(key: String): GraticuleRenderingParams {\n return namedParams[key] ?: GraticuleRenderingParams().also { params ->\n initRenderingParams(params)\n defaultParams?.let { params.putAll(it) }\n namedParams[key] = params\n }\n }\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n initRenderingParams(renderingParams)\n namedParams[key] = renderingParams\n }\n\n private fun initRenderingParams(params: GraticuleRenderingParams) {\n if (params[KEY_DRAW_LINES] == null) params[KEY_DRAW_LINES] = true\n if (params[KEY_LINE_COLOR] == null) params[KEY_LINE_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LINE_WIDTH] == null) params[KEY_LINE_WIDTH] = .5f\n if (params[KEY_LINE_STYLE] == null) params[KEY_LINE_STYLE] = LineStyle.SOLID\n if (params[KEY_DRAW_LABELS] == null) params[KEY_DRAW_LABELS] = true\n if (params[KEY_LABEL_COLOR] == null) params[KEY_LABEL_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LABEL_FONT] == null) params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 12)\n }\n\n private fun applyRenderingParams(params: GraticuleRenderingParams?, text: Label, opacity: Float) {\n if (params != null) {\n // Apply \"label\" properties to the Label.\n var o = params[KEY_LABEL_COLOR]\n if (o is Color) {\n val color = applyOpacity(o, opacity)\n val compArray = FloatArray(3)\n color.toHSV(compArray)\n val colorValue = if (compArray[2] < .5f) 1f else 0f\n text.attributes.textColor = color\n text.attributes.outlineColor = Color(colorValue, colorValue, colorValue, color.alpha)\n }\n o = params[KEY_LABEL_FONT]\n if (o is Font) text.attributes.font = o\n }\n }\n\n private fun applyRenderingParams(key: String, params: GraticuleRenderingParams?, path: Path, opacity: Float) {\n if (params != null) {\n path.attributes = getLineShapeAttributes(key, params, opacity)\n }\n }\n\n private fun getLineShapeAttributes(key: String, params: GraticuleRenderingParams, opacity: Float) =\n namedShapeAttributes[key] ?: createLineShapeAttributes(params, opacity).also { namedShapeAttributes[key] = it }\n\n private fun createLineShapeAttributes(params: GraticuleRenderingParams, opacity: Float): ShapeAttributes {\n val attrs = ShapeAttributes()\n attrs.isDrawInterior = false\n attrs.isDrawOutline = true\n\n // Apply \"line\" properties.\n val color = params[KEY_LINE_COLOR]\n if (color is Color) attrs.outlineColor = applyOpacity(color, opacity)\n val lineWidth = params[KEY_LINE_WIDTH]\n if (lineWidth is Float) attrs.outlineWidth = lineWidth\n val style = params[KEY_LINE_STYLE]\n if (style is LineStyle && style.factor > 0) {\n attrs.outlineImageSource = ImageSource.fromLineStipple(style.factor, style.pattern)\n }\n return attrs\n }\n\n private fun applyOpacity(color: Color, opacity: Float) =\n if (opacity >= 1) color else Color(color.red, color.green, color.blue, color.alpha * opacity)\n}","package earth.worldwind.layer.graticule\n\n/**\n * A line stipple pattern.\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either zero or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n */\nenum class LineStyle(val factor: Int, val pattern: Short) {\n SOLID(0, 0x0000),\n DASHED(1, 0xFFE0.toShort()),\n DOTTED(2, 0xCCCC.toShort()),\n DASH_DOTTED(2, 0xFFCC.toShort())\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\n\nclass GridElement(val sector: Sector, val renderable: Renderable, val type: String, val value: Angle) {\n constructor(sector: Sector, renderable: Renderable, type: String): this(sector, renderable, type, ZERO)\n\n fun isInView(rc: RenderContext) = sector.intersectsOrNextTo(rc.terrain.sector)\n\n companion object {\n const val TYPE_LINE = \"GridElement_Line\"\n const val TYPE_LINE_NORTH = \"GridElement_LineNorth\"\n const val TYPE_LINE_SOUTH = \"GridElement_LineSouth\"\n const val TYPE_LINE_WEST = \"GridElement_LineWest\"\n const val TYPE_LINE_EAST = \"GridElement_LineEast\"\n const val TYPE_LINE_NORTHING = \"GridElement_LineNorthing\"\n const val TYPE_LINE_EASTING = \"GridElement_LineEasting\"\n const val TYPE_GRIDZONE_LABEL = \"GridElement_GridZoneLabel\"\n const val TYPE_LONGITUDE_LABEL = \"GridElement_LongitudeLabel\"\n const val TYPE_LATITUDE_LABEL = \"GridElement_LatitudeLabel\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.RenderContext\n\ninternal class GridTilesSupport(private val callback: Callback, private val rows: Int, private val cols: Int) {\n internal interface Callback {\n fun createGridTile(sector: Sector): AbstractGraticuleTile\n fun getGridSector(row: Int, col: Int): Sector\n fun getGridColumn(longitude: Angle): Int\n fun getGridRow(latitude: Angle): Int\n fun getProjectedSector(sector: Sector) = sector\n }\n\n private val gridTiles = Array(rows) { arrayOfNulls(cols) }\n\n fun clearTiles() {\n for (row in 0 until rows) for (col in 0 until cols) {\n gridTiles[row][col]?.clearRenderables()\n gridTiles[row][col] = null\n }\n }\n\n /**\n * Select the visible grid elements\n *\n * @param rc the current `RenderContext`.\n */\n fun selectRenderables(rc: RenderContext) {\n val tileList = getVisibleTiles(rc)\n // Select tile visible elements\n for (gt in tileList) gt.selectRenderables(rc)\n }\n\n private fun getVisibleTiles(rc: RenderContext): List {\n val tileList = mutableListOf()\n val vs = callback.getProjectedSector(rc.terrain.sector)\n val gridRectangle = getGridRectangleForSector(vs)\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n val tile = gridTiles[row][col] ?: callback.createGridTile(callback.getGridSector(row, col)).also {\n gridTiles[row][col] = it\n }\n if (tile.isInView(rc)) tileList.add(tile) else tile.clearRenderables()\n }\n }\n return tileList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport {\n val x1 = callback.getGridColumn(sector.minLongitude)\n val x2 = callback.getGridColumn(sector.maxLongitude)\n val y1 = callback.getGridRow(sector.minLatitude)\n val y2 = callback.getGridRow(sector.maxLatitude)\n return Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.HelmertParameters\nimport earth.worldwind.geom.coords.HelmertTransformation\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GridTilesSupport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport kotlin.math.floor\n\nclass GKGraticuleLayer(\n private val toWgsParameters: HelmertParameters = HelmertParameters.SK42_WGS84,\n private val fromWgsParameters: HelmertParameters = HelmertParameters.WGS84_SK42\n) : AbstractGraticuleLayer(\"Gauss-Kruger Graticule\"), GridTilesSupport.Callback {\n /**\n * Show 25k and 10k sheets when metric graticule becomes visible\n */\n var showDetailedSheets = false\n /**\n * Maximal visibility distance for 1km grid labels\n */\n var thresholdFor1kLabels = GK_MAX_RESOLUTION_25_000 * 2.0\n /**\n * Maximal visibility distance for 2km grid labels\n */\n var thresholdFor2kLabels = GK_MAX_RESOLUTION_50_000 * 2.0\n\n private val gridTilesSupport = GridTilesSupport(this, 46, 60)\n private val overview = GKOverview(this)\n private val metricLabels = GKMetricLabels(this )\n private var metricLabelScale = 0\n\n override val orderedTypes = listOf(\n GRATICULE_GK_OVERVIEW,\n GRATICULE_GK_1_000_000,\n GRATICULE_GK_500_000,\n GRATICULE_GK_200_000,\n GRATICULE_GK_100_000,\n GRATICULE_GK_50_000,\n GRATICULE_GK_25_000,\n GRATICULE_GK_10_000\n )\n\n override fun initRenderingParams() {\n var params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 11)\n setRenderingParams(GK_METRIC_GRID_2000, params)\n setRenderingParams(GK_METRIC_GRID_1000, params)\n\n params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 13)\n setRenderingParams(GRATICULE_GK_OVERVIEW, params)\n setRenderingParams(GRATICULE_GK_1_000_000, params)\n setRenderingParams(GRATICULE_GK_500_000, params)\n setRenderingParams(GRATICULE_GK_200_000, params)\n setRenderingParams(GRATICULE_GK_100_000, params)\n setRenderingParams(GRATICULE_GK_50_000, params)\n setRenderingParams(GRATICULE_GK_25_000, params)\n setRenderingParams(GRATICULE_GK_10_000, params)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n metricLabelScale = 0\n if (rc.camera.position.altitude < GK_MAX_RESOLUTION_OVERVIEW) {\n gridTilesSupport.selectRenderables(rc)\n metricLabels.selectRenderables(rc, metricLabelScale)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n override fun getGridSector(row: Int, col: Int): Sector {\n var minLat = -92.0 + row * 4\n var maxLat = minLat + 4\n if (row == 0) {\n minLat = -90.0\n maxLat = -88.0\n } else if (row == 45) {\n maxLat = 90.0\n minLat = 88.0\n }\n val minLon = -180.0 + col * 6\n val maxLon = minLon + 6\n return Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n }\n\n override fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n override fun getProjectedSector(sector: Sector) = Sector().apply {\n union(transformFromWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun getUnprojectedSector(sector: Sector) = Sector().apply {\n union(transformToWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun transformFromWGS(position: Position, result: Position = Position()) : Position {\n //TODO Fix the the problem with coordinates conversion around the end of WGS84 coordinate system\n position.latitude.inDegrees.coerceIn(-88.0, 88.0).also { position.latitude = it.degrees }\n position.longitude.inDegrees.coerceAtLeast(-179.8).also { position.longitude = it.degrees }\n return HelmertTransformation.transform(position, fromWgsParameters, result)\n }\n\n fun transformToWGS(position: Position, result: Position = Position()) =\n HelmertTransformation.transform(position, toWgsParameters, result)\n\n override fun getGridRow(latitude: Angle) = when {\n latitude.inDegrees < - 88.0 -> 0\n latitude.inDegrees > 88.0 -> 45\n else -> floor(((latitude.inDegrees + 88.0) / 4.0) + 1.0).toInt().coerceAtMost(45)\n }\n\n override fun getTypeFor(resolution: Double) = when {\n resolution >= GK_MAX_RESOLUTION_1_000_000 -> GRATICULE_GK_1_000_000\n resolution >= GK_MAX_RESOLUTION_500_000 -> GRATICULE_GK_500_000\n resolution >= GK_MAX_RESOLUTION_200_000 -> GRATICULE_GK_200_000\n resolution >= GK_MAX_RESOLUTION_100_000 -> GRATICULE_GK_100_000\n resolution >= GK_MAX_RESOLUTION_50_000 -> GRATICULE_GK_50_000\n resolution >= GK_MAX_RESOLUTION_25_000 -> GRATICULE_GK_25_000\n else -> GRATICULE_GK_10_000\n }\n\n fun getDistanceFor(type: String) = when(type) {\n GRATICULE_GK_1_000_000 -> GK_MAX_RESOLUTION_1_000_000\n GRATICULE_GK_500_000 -> GK_MAX_RESOLUTION_500_000\n GRATICULE_GK_200_000 -> GK_MAX_RESOLUTION_200_000\n GRATICULE_GK_100_000 -> GK_MAX_RESOLUTION_100_000\n GRATICULE_GK_50_000 -> GK_MAX_RESOLUTION_50_000\n GRATICULE_GK_25_000 -> GK_MAX_RESOLUTION_25_000\n else -> GK_MAX_RESOLUTION_10_000\n }\n\n override fun createGridTile(sector: Sector) = GKGraticuleTile(this, sector, GRATICULE_GK_1_000_000)\n\n fun addMetricLabel(label: Label) = metricLabels.addLabel(label)\n\n fun setMetricLabelScale(value: Int) {\n if (isZeroOrMinimalValue(value)) metricLabelScale = value\n }\n\n private fun isZeroOrMinimalValue(value: Int) =\n value == 0 || (value > 0 && metricLabelScale == 0) || (metricLabelScale != 0 && value < metricLabelScale)\n\n companion object {\n const val GRATICULE_GK_OVERVIEW = \"Graticule.GK.Overview\"\n const val GK_MAX_RESOLUTION_OVERVIEW = 15e5\n const val GRATICULE_GK_1_000_000 = \"Graticule.GK.1_000_000\"\n const val GK_MAX_RESOLUTION_1_000_000 = 1e6\n const val GRATICULE_GK_500_000 = \"Graticule.GK.500_000\"\n const val GK_MAX_RESOLUTION_500_000 = 5e5\n const val GRATICULE_GK_200_000 = \"Graticule.GK.200_000\"\n const val GK_MAX_RESOLUTION_200_000 = 2e5\n const val GRATICULE_GK_100_000 = \"Graticule.GK.100_000\"\n const val GK_MAX_RESOLUTION_100_000 = 1e5\n const val GRATICULE_GK_50_000 = \"Graticule.GK.50_000\"\n const val GK_MAX_RESOLUTION_50_000 = 35e3\n const val GRATICULE_GK_25_000 = \"Graticule.GK.25_000\"\n const val GK_MAX_RESOLUTION_25_000 = 15e3\n const val GRATICULE_GK_10_000 = \"Graticule.GK.10_000\"\n const val GK_MAX_RESOLUTION_10_000 = 8e3\n const val GK_METRIC_GRID_1000 = \"GK.Metric.Grid.1000x1000\"\n const val GK_METRIC_GRID_2000 = \"GK.Metric.Grid.2000x2000\"\n\n val MILLION_COOL_NAME = arrayOf(\"SZ\", \"SV\", \"SU\", \"ST\", \"SS\", \"SR\", \"SQ\", \"SP\", \"SO\", \"SN\",\n \"SM\", \"SL\", \"SK\", \"SJ\", \"SI\", \"SH\", \"SG\", \"SF\", \"SE\", \"SD\", \"SC\", \"SB\", \"SA\",\"A\", \"B\", \"C\", \"D\",\n \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"Z\")\n\n val ENDING_200_000_MAP = arrayOf(\"І\", \"ІІ\", \"ІІІ\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\", \"X\",\n \"XI\", \"XII\", \"XIII\", \"XIV\", \"XV\", \"XVI\", \"XVII\", \"XVIII\", \"XIX\", \"XX\",\n \"XXI\", \"XXII\", \"XXIII\", \"XXIV\", \"XXV\", \"XXVI\", \"XXVII\", \"XXVIII\", \"XXIX\", \"XXX\",\n \"XXXI\", \"XXXII\", \"XXXIII\", \"XXXIV\", \"XXXV\", \"XXXVI\")\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_10_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport earth.worldwind.layer.graticule.gk.GKLayerHelper.getNameByCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\nprivate const val POINTS_IN_LINE = 3\n\nclass GKGraticuleTile(\n layer: GKGraticuleLayer, private val gkSector: Sector, private val tileType: String, previousName: String = \"\",\n private val countInParent: Int = 0, private val childNumber: Int = 0\n) : AbstractGraticuleTile(layer, layer.getUnprojectedSector(gkSector)) {\n private val name = getNameByCoord(gkSector.centroidLatitude, gkSector.centroidLongitude, tileType, previousName)\n private var subTiles: List? = null\n private var metricSquares: GKMetricGrid? = null\n private var renderWithNeighbors = true\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n override fun selectRenderables(rc: RenderContext) {\n // TODO Remove workaround and add logic for 30th zone after fix of Path drawing at -179 to +179 longitude\n if (GKLayerHelper.getZone(gkSector.centroidLongitude) == 30) return\n\n super.selectRenderables(rc)\n val distanceToTile = if (rc.globe.is2D) rc.viewingDistance else nearestPoint(rc).distanceTo(rc.cameraPoint)\n val appropriateType = layer.getTypeFor(distanceToTile)\n enableRenderingForChildTile(appropriateType, distanceToTile)\n for (ge in gridElements) {\n if (ge.type == GridElement.TYPE_GRIDZONE_LABEL) renderLabel(appropriateType, rc, ge)\n else if (ge.isInView(rc)) layer.addRenderable(ge.renderable, tileType)\n }\n renderMetricGraticule()\n if (shouldCreateSubTile(distanceToTile)) {\n val subTiles = subTiles ?: createSubTiles().also { subTiles = it }\n for (subTile in subTiles) {\n if (subTile.isInView(rc)) subTile.selectRenderables(rc) //else subTile.clearRenderables()\n }\n }\n }\n\n private fun renderLabel(appropriateType: String, rc: RenderContext, label: GridElement) {\n if (shouldRenderLabel(appropriateType, rc)) layer.addRenderable(label.renderable, tileType)\n }\n\n private fun shouldRenderLabel(type: String, rc: RenderContext) =\n (((type == tileType || renderWithNeighbors) && shouldRenderSmallScale()) || shouldRenderMinimalScale()) && isInView(rc)\n\n private fun shouldRenderMinimalScale() = !layer.showDetailedSheets && tileType == GRATICULE_GK_50_000\n\n private fun shouldRenderSmallScale() =\n !(!layer.showDetailedSheets && (tileType == GRATICULE_GK_25_000 || tileType == GRATICULE_GK_10_000))\n\n private fun renderMetricGraticule() {\n if (tileType == GRATICULE_GK_25_000) {\n layer.setMetricLabelScale(2000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_2000)\n } else if (tileType == GRATICULE_GK_10_000) {\n layer.setMetricLabelScale(1000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_1000)\n }\n }\n\n private fun enableRenderingForChildTile(type: String, distanceToTile: Double) {\n val typeWithBiggerScale = getTypeWithBiggerScale()\n if (type == typeWithBiggerScale) {\n renderWithNeighbors = false\n subTiles?.forEach { it.renderWithNeighbors = true }\n } else if ( distanceToTile < layer.getDistanceFor(typeWithBiggerScale)) {\n renderWithNeighbors = false\n }\n }\n\n private fun shouldCreateSubTile(distanceToTile: Double) =\n distanceToTile <= layer.getDistanceFor(tileType) && tileType != GRATICULE_GK_10_000\n\n override fun clearRenderables() {\n super.clearRenderables()\n metricSquares?.clearRenderables()\n subTiles?.forEach { it.clearRenderables() }.also { subTiles = null }\n }\n\n private fun createSubTiles(): List {\n val newType = getTypeWithBiggerScale()\n val div = if (tileType == GRATICULE_GK_500_000) 3 else 2\n var count = 1\n return subdivide(div, gkSector).map { GKGraticuleTile(layer, it, newType, name, div*div, count++) }\n }\n\n private fun getTypeWithBiggerScale() = layer.getTypeFor(layer.getDistanceFor(tileType) * 0.8)\n\n override fun createRenderables() {\n super.createRenderables()\n\n if (!name.startsWith(\"Z\") && !name.startsWith(\"SZ\")) {\n // TODO Fix problem with Z zone and add logic for maps under 60 parallels\n // TODO Fix problem related with transformation near the end of graticule zones\n if (shouldRenderSmallScale()) {\n generateMeridiansAndParallels()\n createLabels()\n }\n createMetricGraticule()\n }\n }\n\n private fun generateMeridiansAndParallels() {\n if (shouldGenerateMeridian()) generateWestMeridian()\n if (shouldGenerateParallel()) generateNorthParallel()\n }\n\n private fun shouldGenerateMeridian() = countInParent == 0 ||\n countInParent == 4 && (childNumber == 2 || childNumber == 4) ||\n countInParent == 9 && (childNumber == 2 || childNumber == 3 ||\n childNumber == 5 || childNumber == 6 || childNumber == 8 || childNumber == 9)\n\n private fun shouldGenerateParallel() =\n countInParent == 0 || countInParent == 4 && childNumber >= 3 || countInParent == 9 && childNumber >= 4\n\n private fun generateWestMeridian() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val latStep = gkSector.deltaLatitude.inDegrees / POINTS_IN_LINE\n val positions = mutableListOf()\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat.plusDegrees(i * latStep), minLon, 0.0)))\n val westLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, westLine, GridElement.TYPE_LINE_WEST, minLon))\n }\n\n private fun generateNorthParallel() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val positions = mutableListOf()\n val lonStep = gkSector.deltaLongitude.inDegrees / POINTS_IN_LINE\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat, minLon.plusDegrees(i * lonStep), 0.0)))\n val northLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, northLine, GridElement.TYPE_LINE_NORTH, minLat))\n }\n\n private fun createLabels() {\n val labelPos = Position(sector.centroidLatitude, sector.centroidLongitude, 0.0)\n val text = layer.createTextRenderable(labelPos, name, layer.getDistanceFor(tileType))\n text.attributes.isOutlineEnabled = false\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createMetricGraticule() {\n when (tileType) {\n GRATICULE_GK_25_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 2000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n GRATICULE_GK_10_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 1000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n }\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_100_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_1_000_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_200_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport kotlin.jvm.JvmStatic\n\nobject GKLayerHelper {\n private const val Z_ZONE_LATITUDE = 88\n private const val MAX_LONGITUDE = 180\n private const val LATITUDE_1M_MAP = 4\n private const val LONGITUDE_1M_MAP = 6\n private const val LATITUDE_200K_MAP = 0.4 / 60.0 * 100.0 // 40 minutes\n private const val LATITUDE_100K_MAP = 0.2 / 60.0 * 100.0 // 20 minutes\n private const val LATITUDE_50K_MAP = 0.1 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_25K_MAP = 0.05 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_10K_MAP = 0.025 / 60.0 * 100.0 // 10 minutes\n\n /**\n * Get zone number by Gauss-Kruger longitude\n *\n * @param longitude Gauss-Kruger longitude\n * @return Corresponding zone number\n */\n @JvmStatic\n fun getZone(longitude: Angle) = if (longitude.inDegrees >= 0) longitude.inDegrees.toInt() / 6 + 1\n else (longitude.inDegrees + 180.0).toInt() / 6 + 31\n\n /**\n * The method returns coordinates of intersection lines.\n * The method doesn't check that the lines have an intersection\n * and will work incorrectly if the intersection is absent.\n *\n * The method returns GKCoordinate of intersection the lines or if\n * lines are parallel the method returns null\n */\n @JvmStatic\n fun intersect(\n x1: Double, y1: Double, x2: Double, y2: Double, x3: Double, y3: Double, x4: Double, y4: Double\n ): GKCoord? {\n val a1 = y2 - y1\n val b1 = x1 - x2\n val c1 = a1 * x1 + b1 * y1\n\n val a2 = y4 - y3\n val b2 = x3 - x4\n val c2 = a2 * x3 + b2 * y3\n\n val determinant = a1 * b2 - a2 * b1\n\n return if (determinant != 0.0) {\n val x = (b2 * c1 - b1 * c2) / determinant\n val y = (a1 * c2 - a2 * c1) / determinant\n GKCoord.fromXY(x, y)\n } else null // The lines are parallel.\n }\n\n @JvmStatic\n fun getNameByCoord(\n latitude: Angle, longitude: Angle, type: String = GRATICULE_GK_1_000_000, previousScaleName: String = \"\"\n ): String = when(type) {\n GRATICULE_GK_1_000_000 -> getMillionNameByCoord(latitude, longitude)\n GRATICULE_GK_500_000 -> previousScaleName.ifEmpty { getMillionNameByCoord (latitude, longitude) } +\n get500kPrefix(latitude, longitude)\n GRATICULE_GK_200_000 -> getMillionNameByCoord(latitude, longitude) + get200kPrefix(latitude, longitude)\n GRATICULE_GK_100_000 -> getMillionNameByCoord(latitude, longitude) + get100kPrefix(latitude, longitude)\n GRATICULE_GK_50_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_100_000) } +\n get50kPrefix(latitude, longitude)\n GRATICULE_GK_25_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_50_000) } +\n get25kPrefix(latitude, longitude)\n else -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_25_000) } +\n get10kPrefix(latitude, longitude)\n }\n\n @JvmStatic\n private fun get500kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / 2).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP / 3 ).toInt()\n val num = rowFromTop * 2 + col\n return when (num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get200kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 5 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_200K_MAP).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP).toInt()\n val num = rowFromTop * LONGITUDE_1M_MAP + col\n val romaNumber = GKGraticuleLayer.ENDING_200_000_MAP[num]\n return \"-$romaNumber\"\n }\n\n @JvmStatic\n private fun get100kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 11 - ((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_100K_MAP).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP) / 0.5).toInt() + 1\n val num = rowFromTop * 12 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun get50kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf100Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_100K_MAP).toInt()\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE - countOf100Maps * LATITUDE_100K_MAP)/ LATITUDE_50K_MAP).toInt()\n countOf100Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.5).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf100Maps * 0.5) / 0.25).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get25kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_50K_MAP).toInt()\n val rowFromTop = 1 -(((latitude.inDegrees + Z_ZONE_LATITUDE) - countOf50Maps * LATITUDE_50K_MAP)/ LATITUDE_25K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.25).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf50Maps * 0.25) / 0.125).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-a\"\n 1 -> \"-б\"\n 2 -> \"-в\"\n else -> \"-г\"\n }\n }\n\n @JvmStatic\n private fun get10kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_25K_MAP).toInt()\n val rowFromTop = 1 - ((latitude.inDegrees + Z_ZONE_LATITUDE - countOf50Maps * LATITUDE_25K_MAP) / LATITUDE_10K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.125).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE - countOf50Maps * 0.125) / 0.0625).toInt() + 1\n val num = rowFromTop * 2 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun getMillionNameByCoord(latitude: Angle, longitude: Angle): String {\n if (latitude.inDegrees >= Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[45]\n if (latitude.inDegrees < -Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[0]\n //TODO Add for 12 and 24 grade zone.\n val col = getMillionColumnIndex(longitude.inDegrees)\n return GKGraticuleLayer.MILLION_COOL_NAME[getMillionRowIndex(latitude.inDegrees)] + \"-\" +\n if (col< 9) \"0\" + (col + 1) else (col + 1)\n }\n\n @JvmStatic\n fun getMillionRowIndex(latitude: Double) = ((latitude + Z_ZONE_LATITUDE + LATITUDE_1M_MAP) / LATITUDE_1M_MAP).toInt()\n\n @JvmStatic\n fun getMillionColumnIndex(longitude: Double) =\n ((longitude + MAX_LONGITUDE) / LONGITUDE_1M_MAP).toInt().coerceAtMost(59)\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_SCALE_TYPE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_X_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_Y_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_X_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_Y_KEY\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\nimport kotlin.math.abs\n\nprivate const val SMALL_VALUE_TO_BEE_IN_ZONE = 0.000000000001\n\nclass GKMetricGrid(\n layer: GKGraticuleLayer, sector: Sector, gkSector: Sector, private val scale: Double\n): AbstractGraticuleTile(layer, sector) {\n private val zone = GKLayerHelper.getZone(gkSector.centroidLongitude)\n private var zoneExtremes = ZoneExtremes(\n GKCoord.fromLatLon(gkSector.minLatitude, gkSector.minLongitude, zone),\n GKCoord.fromLatLon(gkSector.minLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, gkSector.minLongitude, zone)\n )\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n fun selectRenderables(lineType :String) = gridElements.forEach {\n if (it.type == lineType) {\n layer.addRenderable(it.renderable, lineType)\n } else if (it.type == METRIC_LABEL && it.renderable is Label) {\n layer.addMetricLabel(it.renderable)\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val xMinZone = minOf(zoneExtremes.minXMinY.x, zoneExtremes.minXMaxY.x)\n val xMaxZone = maxOf(zoneExtremes.maxXMinY.x, zoneExtremes.maxXMaxY.x)\n val yMinZone = maxOf(zoneExtremes.minXMinY.y, zoneExtremes.maxXMinY.y)\n val yMaxZone = minOf(zoneExtremes.maxXMaxY.y, zoneExtremes.minXMaxY.y)\n\n val firstRow = (xMinZone / scale).toInt()\n val lastRow = (xMaxZone / scale).toInt()\n val firstCol = (yMinZone / scale).toInt()\n val lastCol = (yMaxZone / scale).toInt()\n\n createLinesAndLabels(firstRow, lastRow, firstCol, lastCol)\n createYLineThatIntersectCorners(firstCol, firstRow, lastRow, lastCol)\n }\n\n private fun createLinesAndLabels(firstRow: Int, lastRow: Int, firstCol: Int, lastCol: Int) {\n for (row in firstRow..lastRow) {\n val startX = row.toDouble() * scale\n val nextX = row.toDouble() * scale + scale\n\n for (col in firstCol..lastCol) {\n val startY = col * scale\n val startPoint = getWGSPositionFromXY(startX, startY)\n\n if (row != firstRow) {\n // Creat x line\n val nextY = col * scale + scale\n val movedByYPoint = getWGSPositionFromXY(startX, nextY)\n when (col) {\n firstCol -> {\n // Create correct intersection with west map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, movedByYPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_X_VALUE)\n }\n lastCol -> {\n // Create correct intersection with east map\n val intersectPoint = intersect(\n zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByYPoint) // Main x lines (x lines in center of square)\n }\n }\n if (col != firstCol) {\n // Create y line\n val movedByXPoint = getWGSPositionFromXY(nextX, startY)\n when (row) {\n firstRow -> {\n // Create correct intersection with south map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, movedByXPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_Y_VALUE)\n }\n lastRow -> {\n // Create correct intersection with north map\n val intersectPoint = intersect(\n zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByXPoint) // Main y lines (lines in center of square)\n }\n }\n }\n }\n }\n\n private fun createYLineThatIntersectCorners(firstCol: Int, firstRow: Int, lastRow: Int, lastCol: Int) {\n val firstY = firstCol * scale\n if (zoneExtremes.minXMinY.y < zoneExtremes.maxXMinY.y && zoneExtremes.minXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectSouth, intersectWest)\n } else if (zoneExtremes.maxXMinY.y < zoneExtremes.minXMinY.y && zoneExtremes.maxXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectNorth = intersect( zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectWest, intersectNorth)\n }\n val lastY = lastCol * scale + scale\n if (zoneExtremes.maxXMaxY.y < zoneExtremes.minXMaxY.y && zoneExtremes.minXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectSouth,intersectEast)\n } else if (zoneExtremes.minXMaxY.y < zoneExtremes.maxXMaxY.y && zoneExtremes.maxXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectNorth = intersect(zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectNorth, intersectEast)\n }\n }\n\n private fun addLabel(point: Position, col: Int, row:Int, labelType: String) {\n val label = if (labelType == LABEL_TYPE_Y_VALUE) labelBy(col) else labelBy(row)\n val text = layer.createTextRenderable(point, label, scale)\n text.attributes.textOffset = Offset.center()\n text.putUserProperty(LABEL_TYPE_KEY, labelType)\n text.putUserProperty(LABEL_SCALE_TYPE, scale.toInt())\n text.putUserProperty(LABEL_X_KEY, row * scale)\n text.putUserProperty(LABEL_Y_KEY, col * scale)\n gridElements.add(GridElement(sector, text, METRIC_LABEL))\n }\n\n private fun createLine(firstPosition: GKCoord?, nextPosition: GKCoord?) {\n if (firstPosition != null && nextPosition != null) {\n createLine(getWGSPositionFromXY(firstPosition), getWGSPositionFromXY(nextPosition))\n }\n }\n private fun lineWithIntersection(intersectPoint: GKCoord?, anotherPoint: Position) {\n if (intersectPoint != null) createLine(anotherPoint, getWGSPositionFromXY(intersectPoint))\n }\n\n private fun createLine(startPoint: Position, movedByXPoint: Position) {\n val lineX = layer.createLineRenderable(mutableListOf(startPoint, movedByXPoint), PathType.LINEAR)\n gridElements.add(GridElement(sector, lineX, getTypeLine(), sector.maxLongitude))\n }\n\n\n private fun intersect(point1: GKCoord, point2: GKCoord, x3: Double, y3: Double, x4: Double, y4: Double)=\n GKLayerHelper.intersect(point1.x, point1.y, point2.x, point2.y, x3, y3, x4, y4)\n\n private fun labelBy(rowOrCol: Int) = (\"0\" + abs(rowOrCol * scale / 1000).toInt()).takeLast(2)\n\n private fun getTypeLine() = if (scale == SCALE_1000) GK_METRIC_GRID_1000 else GK_METRIC_GRID_2000\n\n private fun getWGSPositionFromXY(x: Double, y:Double): Position{\n val point = GKCoord.fromXY(x,y)\n return layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n }\n\n private fun getWGSPositionFromXY(point: GKCoord) = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n\n private class ZoneExtremes(val minXMinY: GKCoord, val minXMaxY: GKCoord, val maxXMaxY:GKCoord, val maxXMinY:GKCoord)\n\n companion object {\n const val SCALE_1000 = 1000.0\n const val METRIC_LABEL = \"metric.label\"\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\n\nclass GKMetricLabels(private val layer: GKGraticuleLayer) {\n private val xLabels = mutableMapOf()\n private val yLabels = mutableMapOf()\n private val removeLabel = mutableListOf()\n\n fun selectRenderables(rc: RenderContext, scale: Int) {\n if (scale == 0 || xLabels.isEmpty() && yLabels.isEmpty()) return\n\n val (x, y) = labelLineIntersectionPoint(rc)\n\n for (label in xLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_X_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_X_VALUE)\n\n for (label in yLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_Y_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_Y_VALUE)\n }\n\n fun addLabel(label: Label) {\n val labelType = getLabelType(label) ?: return\n val id = getLabelId(label, labelType) ?: return\n\n if (labelType == LABEL_TYPE_X_VALUE) {\n if (!xLabels.contains(id)) xLabels[id] = label\n } else if (labelType == LABEL_TYPE_Y_VALUE) {\n if (!yLabels.contains(id)) yLabels[id] = label\n }\n }\n\n private fun getLabelType(label: Label) = label.getUserProperty(LABEL_TYPE_KEY)\n\n private fun removeLabels(labelType: String) {\n if (labelType == LABEL_TYPE_X_VALUE) removeLabel.forEach { labelId -> xLabels.remove(labelId) }\n if (labelType == LABEL_TYPE_Y_VALUE) removeLabel.forEach { labelId -> yLabels.remove(labelId) }\n removeLabel.clear()\n }\n\n private fun getLabelId(label: Label, labelType:String): String? {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return null\n val coord = when (labelType) {\n LABEL_TYPE_X_VALUE -> label.getUserProperty(LABEL_X_KEY)\n LABEL_TYPE_Y_VALUE -> label.getUserProperty(LABEL_Y_KEY)\n else -> null\n } ?: return null\n val ew = if (label.position.longitude.inDegrees >= 0.0) \"E\" else \"W\"\n val ns = if (label.position.latitude.inDegrees >= 0.0) \"N\" else \"S\"\n return \"$coord$ns$ew$scale\"\n }\n\n private fun renderLabel(labelType: String, label: Label, x: Double, y: Double) {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return\n if (labelType == LABEL_TYPE_Y_VALUE) {\n val yLabel = label.getUserProperty(LABEL_Y_KEY) ?: return\n val point = GKCoord.fromXY(x,yLabel)\n if (checkIfOutOfZone(point, yLabel)) return\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n } else if (labelType == LABEL_TYPE_X_VALUE) {\n val xLabel = label.getUserProperty(LABEL_X_KEY) ?: return\n val point = GKCoord.fromXY(xLabel,y)\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n }\n layer.addRenderable(label, getTypeBy(scale))\n }\n\n private fun checkIfOutOfZone(point: GKCoord, yLabel: Double) =\n (yLabel / 1E6).toInt() != GKLayerHelper.getZone(point.longitude)\n\n private fun labelLineIntersectionPoint(rc: RenderContext): Pair {\n val eastingOffset = rc.viewport.width * rc.pixelSize / 4\n val northOffset = rc.viewport.height * rc.pixelSize / 4\n val lookAtPosition = rc.lookAtPosition ?: rc.camera.position\n val centerGK = layer.transformFromWGS(\n Position(lookAtPosition.latitude, lookAtPosition.longitude, 0.0)\n )\n val centerXY = GKCoord.fromLatLon(centerGK.latitude, centerGK.longitude)\n return Pair(centerXY.x - northOffset, centerXY.y - eastingOffset)\n }\n\n private fun shouldClean(rc: RenderContext, label: Label, scale: Int) =\n isNotInScale(label, scale) || tooFar(rc, label.position, scale)\n\n private fun isNotInScale(label: Label, scale: Int) =\n scale == 0 || scale > (label.getUserProperty(LABEL_SCALE_TYPE) ?: 0)\n\n private fun tooFar(rc: RenderContext, position: Position, scale: Int) = rc.cameraPoint.distanceTo(\n rc.globe.geographicToCartesian(position.latitude, position.longitude, 0.0, Vec3())\n ) > getDistanceBy(scale)\n\n private fun getTypeBy(scale: Int) = if (scale == 1000) TYPE_LABEL_1000 else TYPE_LABEL_2000\n\n private fun getDistanceBy(scale: Int) = if (scale == 1000) layer.thresholdFor1kLabels else layer.thresholdFor2kLabels\n\n companion object {\n const val LABEL_TYPE_KEY = \"label.name\"\n const val LABEL_TYPE_X_VALUE = \"X\"\n const val LABEL_TYPE_Y_VALUE = \"Y\"\n const val LABEL_X_KEY = \"label.x\"\n const val LABEL_Y_KEY = \"label.y\"\n const val LABEL_SCALE_TYPE = \"label.scale.type\"\n const val TYPE_LABEL_1000 = \"label.1000\"\n const val TYPE_LABEL_2000 = \"label.2000\"\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.MILLION_COOL_NAME\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class GKOverview(layer: GKGraticuleLayer): AbstractGraticuleTile(layer, Sector().setFullSphere()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n val pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) gt.position = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) gt.position = Position(labelPos.latitude, pos.longitude, pos.altitude)\n }\n }\n layer.addRenderable(ge.renderable, GKGraticuleLayer.GRATICULE_GK_OVERVIEW)\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-88.0, longitude, 0.0))\n positions.add(fromDegrees(-60.0, longitude, 0.0))\n positions.add(fromDegrees(-30.0, longitude, 0.0))\n positions.add(fromDegrees(0.0, longitude, 0.0))\n positions.add(fromDegrees(30.0, longitude, 0.0))\n positions.add(fromDegrees(60.0, longitude, 0.0))\n positions.add(fromDegrees(88.0, longitude, 0.0))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-88.0, longitude, 176.0, 30.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0), zoneNumber.toString(), 10e6\n )\n text.attributes.isOutlineEnabled = false\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate parallels\n for (i in 0..45) {\n val latitude = -92.0 + i * 4.0\n // don't need parallel for firs and last\n if (i != 0 || i != 46 ) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 0.0))\n positions.add(fromDegrees(latitude, longitude + 30.0, 0.0))\n positions.add(fromDegrees(latitude, longitude + 60.0, 0.0))\n if (j == 3 ) positions.add(fromDegrees(latitude, 180.0, 0.0))\n else positions.add(fromDegrees(latitude, longitude + 90.0, 0.0))\n\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 3.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n }\n // Latitude band label\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 2, 0.0, 0.0), MILLION_COOL_NAME[i],10e6\n )\n text.attributes.isOutlineEnabled = false\n val sector = fromDegrees(latitude + 2, -180.0, 3.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord.Companion.fromUPS\nimport earth.worldwind.geom.coords.UTMCoord.Companion.fromUTM\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Displays the UTM graticule metric scale.\n */\nabstract class AbstractUTMGraticuleLayer(name: String, scaleModulo: Int, maxResolution: Double): AbstractGraticuleLayer(name) {\n private val metricScaleSupport = UTMMetricScaleSupport(this).apply {\n this.scaleModulo = scaleModulo\n this.maxResolution = maxResolution\n }\n\n override val orderedTypes = listOf(\n GRATICULE_UTM_100000M,\n GRATICULE_UTM_10000M,\n GRATICULE_UTM_1000M,\n GRATICULE_UTM_100M,\n GRATICULE_UTM_10M,\n GRATICULE_UTM_1M\n )\n\n override fun initRenderingParams() {\n // 100,000 meter graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n setRenderingParams(GRATICULE_UTM_100000M, params)\n // 10,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 102, 255)\n params[KEY_LABEL_COLOR] = Color(0, 102, 255)\n setRenderingParams(GRATICULE_UTM_10000M, params)\n // 1,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 255) // Cyan\n params[KEY_LABEL_COLOR] = Color(0, 255, 255) // Cyan\n setRenderingParams(GRATICULE_UTM_1000M, params)\n // 100 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 153, 153)\n params[KEY_LABEL_COLOR] = Color(0, 153, 153)\n setRenderingParams(GRATICULE_UTM_100M, params)\n // 10 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(102, 255, 204)\n params[KEY_LABEL_COLOR] = Color(102, 255, 204)\n setRenderingParams(GRATICULE_UTM_10M, params)\n // 1 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(153, 153, 255)\n params[KEY_LABEL_COLOR] = Color(153, 153, 255)\n setRenderingParams(GRATICULE_UTM_1M, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when {\n resolution >= 100000 -> GRATICULE_UTM_100000M\n resolution >= 10000 -> GRATICULE_UTM_10000M\n resolution >= 1000 -> GRATICULE_UTM_1000M\n resolution >= 100 -> GRATICULE_UTM_100M\n resolution >= 10 -> GRATICULE_UTM_10M\n resolution >= 1 -> GRATICULE_UTM_1M\n else -> GRATICULE_UTM_1M\n }\n\n override fun clear(rc: RenderContext) {\n super.clear(rc)\n metricScaleSupport.clear()\n metricScaleSupport.computeZone(rc)\n }\n\n override fun selectRenderables(rc: RenderContext) { metricScaleSupport.selectRenderables(rc) }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n metricScaleSupport.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n }\n\n fun computePosition(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n return if (zone > 0) computePositionFromUTM(zone, hemisphere, easting, northing)\n else computePositionFromUPS(hemisphere, easting, northing)\n }\n\n private fun computePositionFromUTM(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val utm = fromUTM(zone, hemisphere, easting, northing)\n return Position(utm.latitude.clampLatitude(), utm.longitude.clampLongitude(), 10e3)\n }\n\n private fun computePositionFromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val ups = fromUPS(hemisphere, easting, northing)\n return Position(ups.latitude.clampLatitude(), ups.longitude.clampLongitude(), 10e3)\n }\n\n fun createSquaresGrid(\n utmZone: Int, hemisphere: Hemisphere, utmZoneSector: Sector,\n minEasting: Double, maxEasting: Double, minNorthing: Double, maxNorthing: Double\n ): List {\n val squares = mutableListOf()\n val startEasting = floor(minEasting / ONEHT) * ONEHT\n val startNorthing = floor(minNorthing / ONEHT) * ONEHT\n val cols = ceil((maxEasting - startEasting) / ONEHT).toInt()\n val rows = ceil((maxNorthing - startNorthing) / ONEHT).toInt()\n val squaresArray = Array(rows) { arrayOfNulls(cols) }\n var col = 0\n var easting = startEasting\n while (easting < maxEasting) {\n var row = 0\n var northing = startNorthing\n while (northing < maxNorthing) {\n val sz = UTMSquareZone(this, utmZone, hemisphere, utmZoneSector, easting, northing, ONEHT)\n if (!sz.isOutsideGridZone) {\n squares.add(sz)\n squaresArray[row][col] = sz\n }\n row++\n northing += ONEHT\n }\n col++\n easting += ONEHT\n }\n\n // Keep track of neighbors\n for (c in 0 until cols) {\n for (r in 0 until rows) {\n val sz = squaresArray[r][c]\n if (sz != null) {\n sz.northNeighbor = if (r + 1 < rows) squaresArray[r + 1][c] else null\n sz.eastNeighbor = if (c + 1 < cols) squaresArray[r][c + 1] else null\n }\n }\n }\n return squares\n }\n\n companion object {\n const val UTM_MIN_LATITUDE = -80.0\n const val UTM_MAX_LATITUDE = 84.0\n\n /** Graticule for the 100,000 meter grid. */\n private const val GRATICULE_UTM_100000M = \"Graticule.UTM.100000m\"\n\n /** Graticule for the 10,000 meter grid. */\n private const val GRATICULE_UTM_10000M = \"Graticule.UTM.10000m\"\n\n /** Graticule for the 1,000 meter grid. */\n private const val GRATICULE_UTM_1000M = \"Graticule.UTM.1000m\"\n\n /** Graticule for the 100 meter grid. */\n private const val GRATICULE_UTM_100M = \"Graticule.UTM.100m\"\n\n /** Graticule for the 10 meter grid. */\n private const val GRATICULE_UTM_10M = \"Graticule.UTM.10m\"\n\n /** Graticule for the 1 meter grid. */\n private const val GRATICULE_UTM_1M = \"Graticule.UTM.1m\"\n private const val ONEHT = 100e3\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.floor\n\nopen class MGRSGraticuleLayer: AbstractUTMGraticuleLayer(\"MGRS Graticule\", 100000, 1e5) {\n private val gridZones = Array(20) { arrayOfNulls(60) } // row/col\n private val poleZones = arrayOfNulls(4) // North x2 + South x2\n private val overview = MGRSOverview(this)\n\n /**\n * The maximum resolution graticule that will be rendered, or null if no graticules will be rendered. By\n * default, all graticules are rendered, and this will return GRATICULE_1M.\n */\n var maximumGraticuleResolution: String?\n get() {\n var maxTypeDrawn: String? = null\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n val params = getRenderingParams(type)\n if (params.isDrawLines) maxTypeDrawn = type\n }\n return maxTypeDrawn\n }\n set(graticuleType) {\n var pastTarget = false\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n // Enable all graticulte BEFORE and INCLUDING the target.\n // Disable all graticules AFTER the target.\n val params = getRenderingParams(type)\n params.isDrawLines = !pastTarget\n params.isDrawLabels = !pastTarget\n if (!pastTarget && type == graticuleType) pastTarget = true\n }\n }\n\n override val orderedTypes = mutableListOf(GRATICULE_MGRS_OVERVIEW, GRATICULE_MGRS_GRID_ZONE).apply { addAll(super.orderedTypes) }\n\n override fun initRenderingParams() {\n super.initRenderingParams()\n // MGRS Overview graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(.8f, .8f, .8f, .5f)\n params[KEY_LABEL_COLOR] = Color(1f, 1f, 1f, .8f)\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n params[KEY_DRAW_LABELS] = true\n setRenderingParams(GRATICULE_MGRS_OVERVIEW, params)\n // MGRS GridZone graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 16)\n setRenderingParams(GRATICULE_MGRS_GRID_ZONE, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when (resolution) {\n MGRS_OVERVIEW_RESOLUTION -> GRATICULE_MGRS_OVERVIEW\n MGRS_GRID_ZONE_RESOLUTION -> GRATICULE_MGRS_GRID_ZONE\n else -> super.getTypeFor(resolution)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n if (rc.camera.position.altitude <= GRID_ZONE_MAX_ALTITUDE) {\n selectMGRSRenderables(rc)\n super.selectRenderables(rc)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n private fun selectMGRSRenderables(rc: RenderContext) {\n val zoneList = getVisibleZones(rc)\n for (gz in zoneList) gz.selectRenderables(rc)\n }\n\n private fun getVisibleZones(rc: RenderContext): List {\n val zoneList = mutableListOf()\n val vs = rc.terrain.sector\n // UTM Grid\n val gridRectangle = getGridRectangleForSector(vs)\n if (gridRectangle != null) {\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n if (row != 19 || col != 31 && col != 33 && col != 35) {\n // ignore X32, 34 and 36\n val zone = gridZones[row][col] ?: MGRSGridZone(this, getGridSector(row, col)).also { gridZones[row][col] = it }\n if (zone.isInView(rc)) zoneList.add(zone) else zone.clearRenderables()\n }\n }\n }\n }\n // Poles\n if (vs.maxLatitude.inDegrees > 84) {\n // North Pole\n if (poleZones[2] == null) poleZones[2] = MGRSGridZone(this, fromDegrees(84.0, -180.0, 6.0, 180.0)) // Y\n if (poleZones[3] == null) poleZones[3] = MGRSGridZone(this, fromDegrees(84.0, 0.0, 6.0, 180.0)) // Z\n zoneList.add(poleZones[2]!!)\n zoneList.add(poleZones[3]!!)\n }\n if (vs.minLatitude.inDegrees < -80) {\n // South Pole\n if (poleZones[0] == null) poleZones[0] = MGRSGridZone(this, fromDegrees(-90.0, -180.0, 10.0, 180.0)) // B\n if (poleZones[1] == null) poleZones[1] = MGRSGridZone(this, fromDegrees(-90.0, 0.0, 10.0, 180.0)) // A\n zoneList.add(poleZones[0]!!)\n zoneList.add(poleZones[1]!!)\n }\n return zoneList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport? {\n var rectangle: Viewport? = null\n if (sector.minLatitude.inDegrees < 84 && sector.maxLatitude.inDegrees > -80) {\n val minLat = sector.minLatitude.inDegrees.coerceAtLeast(-80.0)\n val maxLat = sector.maxLatitude.inDegrees.coerceAtMost(84.0)\n val gridSector = fromDegrees(\n minLat, sector.minLongitude.inDegrees, maxLat - minLat, sector.deltaLongitude.inDegrees\n )\n var x1 = getGridColumn(gridSector.minLongitude)\n var x2 = getGridColumn(gridSector.maxLongitude)\n val y1 = getGridRow(gridSector.minLatitude)\n val y2 = getGridRow(gridSector.maxLatitude)\n // Adjust rectangle to include special zones\n if (y1 <= 17 && y2 >= 17 && x2 == 30) x2 = 31 // 32V Norway\n if (y1 <= 19 && y2 >= 19) { // X band\n if (x1 == 31) x1 = 30 // 31X\n if (x2 == 31) x2 = 32 // 33X\n if (x1 == 33) x1 = 32 // 33X\n if (x2 == 33) x2 = 34 // 35X\n if (x1 == 35) x1 = 34 // 35X\n if (x2 == 35) x2 = 36 // 37X\n }\n rectangle = Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n return rectangle\n }\n\n private fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n private fun getGridRow(latitude: Angle) = floor((latitude.inDegrees + 80) / 8.0).toInt().coerceAtMost(19)\n\n private fun getGridSector(row: Int, col: Int): Sector {\n val minLat = -80 + row * 8\n val maxLat = minLat + if (minLat != 72) 8 else 12\n var minLon = -180 + col * 6\n var maxLon = minLon + 6\n // Special sectors\n if (row == 17 && col == 30) // 31V\n maxLon -= 3 else if (row == 17 && col == 31) // 32V\n minLon -= 3 else if (row == 19 && col == 30) // 31X\n maxLon += 3 else if (row == 19 && col == 31) { // 32X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 32) { // 33X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 33) { // 34X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 34) { // 35X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 35) { // 36X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 36) // 37X\n minLon -= 3\n return fromDegrees(minLat.toDouble(), minLon.toDouble(), (maxLat - minLat).toDouble(), (maxLon - minLon).toDouble())\n }\n\n companion object {\n const val MGRS_OVERVIEW_RESOLUTION = 1e6\n const val MGRS_GRID_ZONE_RESOLUTION = 5e5\n\n /** Graticule for the MGRS overview. */\n private const val GRATICULE_MGRS_OVERVIEW = \"Graticule.MGRS.Overview\"\n\n /** Graticule for the MGRS grid zone. */\n private const val GRATICULE_MGRS_GRID_ZONE = \"Graticule.MGRS.GridZone\"\n private const val GRID_ZONE_MAX_ALTITUDE = 5e6\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.MGRSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_GRID_ZONE_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a UTM zone / latitude band intersection\n */\nclass MGRSGridZone(layer: MGRSGraticuleLayer, sector: Sector) : AbstractGraticuleTile(layer, sector) {\n val isUPS = sector.maxLatitude.inDegrees > AbstractUTMGraticuleLayer.UTM_MAX_LATITUDE\n || sector.minLatitude.inDegrees < AbstractUTMGraticuleLayer.UTM_MIN_LATITUDE\n private var name: String\n private var hemisphere: Hemisphere\n private var zone: Int\n private var squares: List? = null\n override val layer get() = super.layer as MGRSGraticuleLayer\n\n init {\n val mgrs = MGRSCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n if (isUPS) {\n name = mgrs.toString().substring(2, 3)\n hemisphere = if (sector.minLatitude.inDegrees > 0) Hemisphere.N else Hemisphere.S\n zone = 0\n } else {\n name = mgrs.toString().substring(0, 3)\n val utm = UTMCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n hemisphere = utm.hemisphere\n zone = utm.zone\n }\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(MGRS_GRID_ZONE_RESOLUTION)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (rc.camera.position.altitude > SQUARE_MAX_ALTITUDE) return\n\n // Select 100km squares elements\n val squares = squares ?: (if (isUPS) createSquaresUPS() else createSquaresUTM()).also { squares = it }\n for (sz in squares) if (sz.isInView(rc)) sz.selectRenderables(rc) else sz.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n squares?.forEach { it.clearRenderables() }.also { squares = null }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf(\n Position(sector.minLatitude, sector.minLongitude, 10e3),\n Position(sector.maxLatitude, sector.minLongitude, 10e3)\n )\n var polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n var lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.minLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, GridElement.TYPE_LINE_WEST))\n if (!isUPS) {\n // right meridian segment\n if (name.startsWith(\"60\")) {\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.maxLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST))\n }\n\n // bottom parallel segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.minLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH))\n\n // top parallel segment\n if (name.endsWith(\"X\")) {\n positions.clear()\n positions.add(Position(sector.maxLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.maxLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH))\n }\n }\n\n // Label\n val text = layer.createTextRenderable(\n Position(sector.centroidLatitude, sector.centroidLongitude, 0.0), name, 10e6\n )\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createSquaresUTM(): List {\n // Find grid zone easting and northing boundaries\n var utm = UTMCoord.fromLatLon(sector.minLatitude, sector.centroidLongitude)\n val minNorthing = utm.northing\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.centroidLongitude)\n var maxNorthing = utm.northing\n maxNorthing = if (maxNorthing == 0.0) 10e6 else maxNorthing\n utm = UTMCoord.fromLatLon(sector.minLatitude, sector.minLongitude)\n var minEasting = utm.easting\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.minLongitude)\n minEasting = utm.easting.coerceAtMost(minEasting)\n var maxEasting = 1e6 - minEasting\n\n // Compensate for some distorted zones\n if (name == \"32V\") maxNorthing += 20e3 // catch KS and LS in 32V\n if (name == \"31X\") maxEasting += ONEHT // catch GA and GV in 31X\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun createSquaresUPS(): List {\n val minEasting: Double\n val maxEasting: Double\n val minNorthing: Double\n val maxNorthing: Double\n if (Hemisphere.N == hemisphere) {\n minNorthing = TWOMIL - ONEHT * 7\n maxNorthing = TWOMIL + ONEHT * 7\n minEasting = if (name == \"Y\") TWOMIL - ONEHT * 7 else TWOMIL\n maxEasting = if (name == \"Y\") TWOMIL else TWOMIL + ONEHT * 7\n } else {\n minNorthing = TWOMIL - ONEHT * 12\n maxNorthing = TWOMIL + ONEHT * 12\n minEasting = if (name == \"A\") TWOMIL - ONEHT * 12 else TWOMIL\n maxEasting = if (name == \"A\") TWOMIL else TWOMIL + ONEHT * 12\n }\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun setSquareName(sz: UTMSquareZone) {\n // Find out MGRS 100Km square name\n val tenMeterDegree = toDegrees(10.0 / 6378137.0)\n var mgrs: MGRSCoord? = null\n when {\n sz.isPositionInside(Position(sz.centroid.latitude, sz.centroid.longitude, 0.0)) ->\n mgrs = MGRSCoord.fromLatLon(sz.centroid.latitude, sz.centroid.longitude)\n sz.isPositionInside(sz.sw) -> mgrs = MGRSCoord.fromLatLon(\n sz.sw.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.sw.longitude.plusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.se) -> mgrs = MGRSCoord.fromLatLon(\n sz.se.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.se.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.nw) -> mgrs = MGRSCoord.fromLatLon(\n sz.nw.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.nw.longitude.plusDegrees(tenMeterDegree).clampLongitude())\n sz.isPositionInside(sz.ne) -> mgrs = MGRSCoord.fromLatLon(\n sz.ne.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.ne.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n }\n // Set square zone name\n if (mgrs != null) sz.name = mgrs.toString().substring(3, 5)\n }\n\n companion object {\n private const val ONEHT = 100e3\n private const val TWOMIL = 2e6\n private const val SQUARE_MAX_ALTITUDE = 1e6\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_OVERVIEW_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class MGRSOverview(layer: MGRSGraticuleLayer): AbstractGraticuleTile(layer, Sector()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n var pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) pos = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) pos = Position(labelPos.latitude, pos.longitude, pos.altitude)\n gt.position = pos\n }\n }\n layer.addRenderable(ge.renderable, layer.getTypeFor(MGRS_OVERVIEW_RESOLUTION))\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-80.0, longitude, 10e3))\n positions.add(fromDegrees(-60.0, longitude, 10e3))\n positions.add(fromDegrees(-30.0, longitude, 10e3))\n positions.add(fromDegrees(0.0, longitude, 10e3))\n positions.add(fromDegrees(30.0, longitude, 10e3))\n val maxLat = if (longitude < 6.0 || longitude > 36.0) {\n // 'regular' UTM meridians\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 84.0\n } else {\n // Exceptions: shorter meridians around and north-east of Norway\n if (longitude == 6.0) {\n 56.0\n } else {\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 72.0\n }\n }\n positions.add(fromDegrees(maxLat, longitude, 10e3))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-80.0, longitude, maxLat + 80.0, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0),\n zoneNumber.toString(), 10e6\n )\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate special meridian segments for exceptions around and north-east of Norway\n for (i in 0..4) {\n positions.clear()\n val longitude = SPECIAL_MERIDIANS[i][0].toDouble()\n val latitude1 = SPECIAL_MERIDIANS[i][1].toDouble()\n val latitude2 = SPECIAL_MERIDIANS[i][2].toDouble()\n positions.add(fromDegrees(latitude1, longitude, 10e3))\n positions.add(fromDegrees(latitude2, longitude, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val sector = fromDegrees(latitude1, longitude, latitude2 - latitude1, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n\n // Generate parallels - no exceptions\n var latitude = -80.0\n for (i in 0..20) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 10e3))\n positions.add(fromDegrees(latitude, longitude + 30.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 60.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 90.0, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 0.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n // Latitude band label\n if (i < 20) {\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 4.0, 0.0, 0.0),\n LAT_BANDS[i].toString(), 10e6\n )\n val sector = fromDegrees(latitude + 4.0, -180.0, 0.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n\n // Increase latitude\n latitude += if (latitude < 72.0) 8.0 else 12.0\n }\n }\n\n companion object {\n // Exceptions for some meridians. Values: longitude, min latitude, max latitude\n private val SPECIAL_MERIDIANS = arrayOf(\n intArrayOf(3, 56, 64), intArrayOf(6, 64, 72), intArrayOf(9, 72, 84), intArrayOf(21, 72, 84), intArrayOf(33, 72, 84)\n )\n\n // Latitude bands letters - from south to north\n private const val LAT_BANDS = \"CDEFGHJKLMNPQRSTUVWX\"\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MAX_LATITUDE\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MIN_LATITUDE\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.log10\nimport kotlin.math.pow\n\ninternal class UTMMetricScaleSupport(private val layer: AbstractUTMGraticuleLayer) {\n private class UTMExtremes {\n var minX = 1e6\n var maxX = 0.0\n var minY = 10e6\n var maxY = 0.0\n var minYHemisphere = Hemisphere.N\n var maxYHemisphere = Hemisphere.S\n }\n\n var scaleModulo = 10000000\n var maxResolution = 1e5\n set(value) {\n field = value\n clear()\n }\n var zone = 0\n private set\n\n // 5 levels 100km to 10m\n private lateinit var extremes: Array\n\n fun computeZone(rc: RenderContext) {\n try {\n rc.lookAtPosition?.let {\n zone = if (it.latitude.inDegrees in UTM_MIN_LATITUDE..UTM_MAX_LATITUDE) {\n val utm = UTMCoord.fromLatLon(it.latitude, it.longitude)\n utm.zone\n } else 0\n }\n } catch (ex: Exception) {\n zone = 0\n }\n }\n\n fun clear() {\n val numLevels = log10(maxResolution).toInt()\n extremes = Array(numLevels) { UTMExtremes() }\n }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n if (UTMZone != zone) return\n if (size < 1 || size > maxResolution) return\n val levelExtremes = extremes[log10(size).toInt() - 1]\n if (ge.type == TYPE_LINE_EASTING || ge.type == TYPE_LINE_EAST || ge.type == TYPE_LINE_WEST) {\n levelExtremes.minX = ge.value.inDegrees.coerceAtMost(levelExtremes.minX)\n levelExtremes.maxX = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxX)\n } else if (ge.type == TYPE_LINE_NORTHING || ge.type == TYPE_LINE_SOUTH || ge.type == TYPE_LINE_NORTH) {\n if (hemisphere == levelExtremes.minYHemisphere) {\n levelExtremes.minY = ge.value.inDegrees.coerceAtMost(levelExtremes.minY)\n } else if (hemisphere == Hemisphere.S) {\n levelExtremes.minY = ge.value.inDegrees\n levelExtremes.minYHemisphere = hemisphere\n }\n if (hemisphere == levelExtremes.maxYHemisphere) {\n levelExtremes.maxY = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxY)\n } else if (hemisphere == Hemisphere.N) {\n levelExtremes.maxY = ge.value.inDegrees\n levelExtremes.maxYHemisphere = hemisphere\n }\n }\n }\n\n fun selectRenderables(rc: RenderContext) {\n val lookAtPosition = rc.lookAtPosition ?: return\n\n // Compute easting and northing label offsets\n val eastingOffset = rc.viewport.width * rc.pixelSize * OFFSET_FACTOR_X / 2\n val northingOffset = rc.viewport.height * rc.pixelSize * OFFSET_FACTOR_Y / 2\n // Derive labels center pos from the view center\n val labelEasting: Double\n var labelNorthing: Double\n var labelHemisphere: Hemisphere\n if (zone > 0) {\n val utm = UTMCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = utm.easting + eastingOffset\n labelNorthing = utm.northing + northingOffset\n labelHemisphere = utm.hemisphere\n if (labelNorthing < 0) {\n labelNorthing += 10e6\n labelHemisphere = Hemisphere.S\n }\n } else {\n val ups = UPSCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = ups.easting + eastingOffset\n labelNorthing = ups.northing + northingOffset\n labelHemisphere = ups.hemisphere\n }\n val viewFrustum = rc.frustum\n var labelPos: Position?\n for (i in extremes.indices) {\n val levelExtremes = extremes[i]\n val gridStep = 10.0.pow(i.toDouble())\n val gridStepTimesTen = gridStep * 10\n val graticuleType = layer.getTypeFor(gridStep)\n if (levelExtremes.minX <= levelExtremes.maxX) {\n // Process easting scale labels for this level\n var easting = levelExtremes.minX\n while (easting <= levelExtremes.maxX) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || easting % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, labelHemisphere, easting, labelNorthing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (easting % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n }\n easting += gridStep\n }\n }\n if (!(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)) {\n // Process northing scale labels for this level\n var currentHemisphere = levelExtremes.minYHemisphere\n var northing = levelExtremes.minY\n while (northing <= levelExtremes.maxY || currentHemisphere != levelExtremes.maxYHemisphere) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || northing % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, currentHemisphere, labelEasting, northing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (northing % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n if (currentHemisphere != levelExtremes.maxYHemisphere && northing >= 10e6 - gridStep) {\n // Switch hemisphere\n currentHemisphere = levelExtremes.maxYHemisphere\n northing = -gridStep\n }\n }\n northing += gridStep\n }\n }\n }\n }\n\n private fun isPointInRange(rc: RenderContext, point: Vec3): Boolean {\n val altitudeAboveGround = layer.computeAltitudeAboveGround(rc)\n return rc.cameraPoint.distanceTo(point) < altitudeAboveGround * VISIBLE_DISTANCE_FACTOR\n }\n\n override fun toString(): String {\n val sb = StringBuilder()\n for (i in 0..4) {\n sb.append(\"level \")\n sb.append(i)\n sb.append(\" : \")\n val levelExtremes = extremes[i]\n if (levelExtremes.minX < levelExtremes.maxX ||\n !(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)\n ) {\n sb.append(levelExtremes.minX)\n sb.append(\", \")\n sb.append(levelExtremes.maxX)\n sb.append(\" - \")\n sb.append(levelExtremes.minY)\n sb.append(levelExtremes.minYHemisphere)\n sb.append(\", \")\n sb.append(levelExtremes.maxY)\n sb.append(levelExtremes.maxYHemisphere)\n } else {\n sb.append(\"empty\")\n }\n sb.append(\"\\n\")\n }\n return sb.toString()\n }\n\n companion object {\n private const val OFFSET_FACTOR_X = -.5\n private const val OFFSET_FACTOR_Y = -.5\n private const val VISIBLE_DISTANCE_FACTOR = 5.0\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a square 10x10 grid and recursive tree in easting/northing coordinates\n */\ninternal class UTMSquareGrid(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n private var subGrids: List? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size / 10)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return\n\n // Select sub grids renderables\n val subGrids = subGrids ?: createSubGrids().also { subGrids = it }\n for (sg in subGrids) if (sg.isInView(rc)) sg.selectRenderables(rc) else sg.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n subGrids?.forEach { it.clearRenderables() }.also { subGrids = null }\n }\n\n private fun createSubGrids(): List {\n val subGrids = mutableListOf()\n val gridStep = size / 10\n for (i in 0..9) {\n val easting = SWEasting + gridStep * i\n for (j in 0..9) {\n val northing = SWNorthing + gridStep * j\n val sg = UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, easting, northing, gridStep)\n if (!sg.isOutsideGridZone) subGrids.add(sg)\n }\n }\n return subGrids\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val gridStep = size / 10\n val positions = mutableListOf()\n\n // South-North lines\n for (i in 1..9) {\n val easting = SWEasting + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing)\n var p2 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing + size)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(\n GridElement(lineSector, polyline, TYPE_LINE_EASTING, easting.degrees)\n )\n }\n }\n // West-East lines\n for (i in 1..9) {\n val northing = SWNorthing + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, SWEasting, northing)\n var p2 = layer.computePosition(UTMZone, hemisphere, SWEasting + size, northing)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTHING, northing.degrees))\n }\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.sign\n\n/**\n * Represent a generic UTM/UPS square area\n */\nabstract class UTMSquareSector(\n layer: AbstractUTMGraticuleLayer, val UTMZone: Int, val hemisphere: Hemisphere,\n val UTMZoneSector: Sector, val SWEasting: Double, val SWNorthing: Double, val size: Double\n): AbstractGraticuleTile(layer, Sector()) {\n val squareCenter = layer.computePosition(UTMZone, hemisphere, SWEasting + size / 2, SWNorthing + size / 2)\n // Four corners position\n var sw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing)\n var se = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing)\n var nw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing + size)\n var ne = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing + size)\n var boundingSector = boundingSector(adjustDateLineCrossingPoints()).apply { if (!isInsideGridZone) intersect(UTMZoneSector) }.also { sector.copy(it) }\n var centroid = boundingSector.centroid(Location())\n val isTruncated = !isInsideGridZone\n override val layer get() = super.layer as AbstractUTMGraticuleLayer\n /**\n * Determines whether this square is fully inside its parent grid zone.\n */\n private val isInsideGridZone get() = isPositionInside(nw) && isPositionInside(ne) && isPositionInside(sw) && isPositionInside(se)\n /**\n * Determines whether this square is fully outside its parent grid zone.\n */\n val isOutsideGridZone = !isPositionInside(nw) && !isPositionInside(ne) && !isPositionInside(sw) && !isPositionInside(se)\n\n private fun adjustDateLineCrossingPoints(): Iterable {\n val corners = listOf(sw, se, nw, ne)\n if (!locationsCrossDateLine(corners)) return corners\n\n var lonSign = 0.0\n for (corner in corners) if (abs(corner.longitude.inDegrees) != 180.0) lonSign = sign(corner.longitude.inDegrees)\n if (lonSign == 0.0) return corners\n\n if (abs(sw.longitude.inDegrees) == 180.0 && sign(sw.longitude.inDegrees) != lonSign)\n sw = Position(sw.latitude, -sw.longitude, sw.altitude)\n if (abs(se.longitude.inDegrees) == 180.0 && sign(se.longitude.inDegrees) != lonSign)\n se = Position(se.latitude, -se.longitude, se.altitude)\n if (abs(nw.longitude.inDegrees) == 180.0 && sign(nw.longitude.inDegrees) != lonSign)\n nw = Position(nw.latitude, -nw.longitude, nw.altitude)\n if (abs(ne.longitude.inDegrees) == 180.0 && sign(ne.longitude.inDegrees) != lonSign)\n ne = Position(ne.latitude, -ne.longitude, ne.altitude)\n\n return listOf(sw, se, nw, ne)\n }\n\n private fun locationsCrossDateLine(locations: Iterable): Boolean {\n var pos: Location? = null\n for (posNext in locations) {\n if (pos != null) {\n // A segment cross the line if end pos have different longitude signs\n // and are more than 180 degrees longitude apart\n if (sign(pos.longitude.inDegrees) != sign(posNext.longitude.inDegrees)) {\n val delta = abs(pos.longitude.inDegrees - posNext.longitude.inDegrees)\n if (delta > 180 && delta < 360) return true\n }\n }\n pos = posNext\n }\n return false\n }\n\n private fun boundingSector(locations: Iterable): Sector {\n var minLat = POS90\n var minLon = POS180\n var maxLat = NEG90\n var maxLon = NEG180\n for (p in locations) {\n val lat = p.latitude\n if (lat.inDegrees < minLat.inDegrees) minLat = lat\n if (lat.inDegrees > maxLat.inDegrees) maxLat = lat\n val lon = p.longitude\n if (lon.inDegrees < minLon.inDegrees) minLon = lon\n if (lon.inDegrees > maxLon.inDegrees) maxLon = lon\n }\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun boundingSector(pA: Location, pB: Location): Sector {\n var minLat = pA.latitude\n var minLon = pA.longitude\n var maxLat = pA.latitude\n var maxLon = pA.longitude\n if (pB.latitude.inDegrees < minLat.inDegrees) minLat = pB.latitude\n else if (pB.latitude.inDegrees > maxLat.inDegrees) maxLat = pB.latitude\n if (pB.longitude.inDegrees < minLon.inDegrees) minLon = pB.longitude\n else if (pB.longitude.inDegrees > maxLon.inDegrees) maxLon = pB.longitude\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun isPositionInside(position: Location) = UTMZoneSector.contains(position)\n\n override fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, centroid.latitude, centroid.longitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n return size / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n companion object {\n const val MIN_CELL_SIZE_PIXELS = 100\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_GRIDZONE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\nimport kotlin.math.cos\n\n/**\n * Represent a 100km square zone inside an UTM zone.\n */\nclass UTMSquareZone(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n var name: String? = null\n var northNeighbor: UTMSquareZone? = null\n var eastNeighbor: UTMSquareZone? = null\n private var squareGrid: UTMSquareGrid? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size)\n for (ge in gridElements) if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && isNorthNeighborInView(rc)) continue\n if (ge.type == TYPE_LINE_EAST && isEastNeighborInView(rc)) continue\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 2) return\n\n // Select grid renderables\n val squareGrid = squareGrid ?: UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size).also { squareGrid = it }\n if (squareGrid.isInView(rc)) squareGrid.selectRenderables(rc) else squareGrid.clearRenderables()\n }\n\n private fun isNorthNeighborInView(rc: RenderContext) = northNeighbor?.isInView(rc) == true\n\n private fun isEastNeighborInView(rc: RenderContext) = eastNeighbor?.isInView(rc) == true\n\n override fun clearRenderables() {\n super.clearRenderables()\n squareGrid?.clearRenderables()\n squareGrid = null\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // left segment\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, nw, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(nw)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_WEST, SWEasting.degrees))\n }\n\n // right segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(se, ne, UTMZoneSector, positions)\n } else {\n positions.add(se)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST, (SWEasting + size).degrees))\n }\n\n // bottom segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, se, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(se)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH, SWNorthing.degrees))\n }\n\n // top segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(nw, ne, UTMZoneSector, positions)\n } else {\n positions.add(nw)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH, (SWNorthing + size).degrees))\n }\n\n // Label\n name?.let { name ->\n // Only add a label to squares above some dimension\n if (boundingSector.deltaLongitude.inDegrees * cos(centroid.latitude.inRadians) > .2\n && boundingSector.deltaLatitude.inDegrees > .2\n ) {\n val labelPos = if (UTMZone != 0) centroid // Not at poles\n else if (isPositionInside(Position(squareCenter.latitude, squareCenter.longitude, 0.0))) squareCenter\n else if (squareCenter.latitude.inDegrees <= UTMZoneSector.maxLatitude.inDegrees\n && squareCenter.latitude.inDegrees >= UTMZoneSector.minLatitude.inDegrees) centroid\n else null\n if (labelPos != null) {\n val text = layer.createTextRenderable(\n Position(labelPos.latitude, labelPos.longitude, 0.0), name, size * 10\n )\n gridElements.add(GridElement(boundingSector, text, TYPE_GRIDZONE_LABEL))\n }\n }\n }\n }\n}","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawableHeatmap\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\n\nopen class ElevationHeatmapLayer: AbstractLayer(\"Elevation Heatmap\") {\n override var isPickEnabled = false // Elevation Heatmap is not pickable\n override var opacity = 0.5f // Elevation Heatmap is semi-transparent by default\n /**\n * RGB colors for five thresholds of heatmap\n */\n val colors = arrayOf(\n Color(0.0f, 0.0f, 1.0f), // 0% - Blue\n Color(0.0f, 1.0f, 1.0f), // 25% - Cyan\n Color(0.0f, 1.0f, 0.0f), // 50% - Green\n Color(1.0f, 1.0f, 0.0f), // 75% - Yellow\n Color(1.0f, 0.0f, 0.0f) // 100% - Red\n )\n /**\n * Auto determines height limits from available terrain tiles. If false, then limits should be specified manually.\n */\n var autoHeightLimits = true\n /**\n * Configurable offset from maximal available terrain tile level to take into account when calculating height limits\n */\n var levelNumberDepth = 3\n /**\n * Last automatically calculated or manually specified min and max height limits\n */\n val heightLimits = FloatArray(2)\n\n override fun doRender(rc: RenderContext) {\n if (autoHeightLimits) rc.terrain.heightLimits(levelNumberDepth, heightLimits)\n\n val pool = rc.getDrawablePool()\n val drawable = DrawableHeatmap.obtain(pool)\n heightLimits.copyInto(drawable.heightLimits)\n drawable.colors.forEachIndexed { i, color -> color.copy(colors[i]) }\n drawable.opacity = opacity\n drawable.offset = rc.globe.offset\n drawable.program = rc.getShaderProgram { ElevationHeatmapProgram() }\n rc.offerSurfaceDrawable(drawable, 0.0)\n }\n}\n","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform index\n// TODO to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class ElevationHeatmapProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform float scale;\n uniform float offset;\n\n attribute vec4 vertexPoint;\n attribute float vertexHeight;\n\n varying float height;\n\n void main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform vec3 color0;\n uniform vec3 color1;\n uniform vec3 color2;\n uniform vec3 color3;\n uniform vec3 color4;\n uniform float opacity;\n\n varying float height;\n\n void main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n protected var scaleId = KglUniformLocation.NONE\n protected var offsetId = KglUniformLocation.NONE\n protected var color0Id = KglUniformLocation.NONE\n protected var color1Id = KglUniformLocation.NONE\n protected var color2Id = KglUniformLocation.NONE\n protected var color3Id = KglUniformLocation.NONE\n protected var color4Id = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n scaleId = gl.getUniformLocation(program, \"scale\")\n gl.uniform1f(scaleId, 0f)\n offsetId = gl.getUniformLocation(program, \"offset\")\n gl.uniform1f(offsetId, 0f)\n color0Id = gl.getUniformLocation(program, \"color0\")\n gl.uniform3f(color0Id, 0f, 0f, 0f)\n color1Id = gl.getUniformLocation(program, \"color1\")\n gl.uniform3f(color1Id, 0f, 0f, 0f)\n color2Id = gl.getUniformLocation(program, \"color2\")\n gl.uniform3f(color2Id, 0f, 0f, 0f)\n color3Id = gl.getUniformLocation(program, \"color3\")\n gl.uniform3f(color3Id, 0f, 0f, 0f)\n color4Id = gl.getUniformLocation(program, \"color4\")\n gl.uniform3f(color4Id, 0f, 0f, 0f)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, 0f)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun setLimits(limits: FloatArray) {\n val delta = limits[1] - limits[0]\n gl.uniform1f(scaleId, if (delta != 0.0f) 1.0f / delta else 0.0f)\n gl.uniform1f(offsetId, if (delta != 0.0f) -limits[0] / delta else 0.0f)\n }\n\n fun setColors(colors: Array) {\n gl.uniform3f(color0Id, colors[0].red, colors[0].green, colors[0].blue)\n gl.uniform3f(color1Id, colors[1].red, colors[1].green, colors[1].blue)\n gl.uniform3f(color2Id, colors[2].red, colors[2].green, colors[2].blue)\n gl.uniform3f(color3Id, colors[3].red, colors[3].green, colors[3].blue)\n gl.uniform3f(color4Id, colors[4].red, colors[4].green, colors[4].blue)\n }\n\n fun setOpacity(opacity: Float) {\n gl.uniform1f(opacityId, opacity)\n }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\nimport kotlin.jvm.JvmStatic\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nabstract class AbstractMercatorImageTile(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): ImageTile(sector, level, row, column) {\n companion object {\n /**\n * Creates all Mercator tiles for a specified level within a LevelSet.\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result a pre-allocated Collection in which to store the results\n */\n @JvmStatic\n fun assembleMercatorTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = level.parent.sector\n val tileOrigin = fromSector(level.parent.tileOrigin)\n val dLat = level.tileDelta.latitude\n val dLon = level.tileDelta.longitude\n val firstRow = tileOrigin.computeRow(dLat, sector.minLatitude)\n val lastRow = tileOrigin.computeLastRow(dLat, sector.maxLatitude)\n val firstCol = tileOrigin.computeColumn(dLon, sector.minLongitude)\n val lastCol = tileOrigin.computeLastColumn(dLon, sector.maxLongitude)\n val dPercent = tileOrigin.maxLatPercent - tileOrigin.minLatPercent\n val dLatPercent = dLat.inDegrees / tileOrigin.deltaLatitude.inDegrees * dPercent\n val firstRowPercent = gudermannianInverse(tileOrigin.minLatitude) + firstRow * dLatPercent\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * dLon.inDegrees)\n var d1 = firstRowPercent\n for (row in firstRow..lastRow) {\n val d2 = d1 + dLatPercent\n var t1 = firstColLon\n for (col in firstCol..lastCol) {\n val t2 = t1 + dLon\n result.add(tileFactory.createTile(MercatorSector(d1, d2, t1, t2), level, row, col))\n t1 = t2\n }\n d1 = d2\n }\n return result\n }\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its LevelSet.\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n override fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n val sector = sector as MercatorSector\n val d0 = sector.minLatPercent\n val d2 = sector.maxLatPercent\n val d1 = d0 + (d2 - d0) / 2.0\n val t0 = sector.minLongitude\n val t2 = sector.maxLongitude\n val t1 = average(t0, t2)\n val northRow = 2 * row\n val southRow = northRow + 1\n val westCol = 2 * column\n val eastCol = westCol + 1\n val child0 = tileFactory.createTile(MercatorSector(d0, d1, t0, t1), childLevel, northRow, westCol)\n val child1 = tileFactory.createTile(MercatorSector(d0, d1, t1, t2), childLevel, northRow, eastCol)\n val child2 = tileFactory.createTile(MercatorSector(d1, d2, t0, t1), childLevel, southRow, westCol)\n val child3 = tileFactory.createTile(MercatorSector(d1, d2, t1, t2), childLevel, southRow, eastCol)\n return arrayOf(child0, child1, child2, child3)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Sector\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\nopen class MercatorSector(\n val minLatPercent: Double = -1.0, val maxLatPercent: Double = 1.0,\n minLongitude: Angle = Angle.NEG180, maxLongitude: Angle = Angle.POS180\n): Sector(gudermannian(minLatPercent), gudermannian(maxLatPercent), minLongitude, maxLongitude) {\n\n override fun computeColumn(tileDelta: Angle, longitude: Angle) = floor(getX(longitude) * getTilesX(tileDelta)).toInt()\n\n override fun computeRow(tileDelta: Angle, latitude: Angle) = floor(getY(latitude) * getTilesY(tileDelta)).toInt()\n\n override fun computeLastColumn(tileDelta: Angle, longitude: Angle) = ceil(getX(longitude) * getTilesX(tileDelta) - 1).toInt()\n\n override fun computeLastRow(tileDelta: Angle, latitude: Angle) = ceil(getY(latitude) * getTilesY(tileDelta) - 1).toInt()\n\n private fun getX(longitude: Angle) = (longitude.inDegrees + 180.0) / 360.0\n\n private fun getY(latitude: Angle) = (1.0 + ln(tan(latitude.inRadians) + 1.0 / cos(latitude.inRadians)) / PI) / 2.0\n\n private fun getTilesX(tileDelta: Angle) = deltaLongitude.inDegrees / tileDelta.inDegrees\n\n private fun getTilesY(tileDelta: Angle) = deltaLatitude.inDegrees / tileDelta.inDegrees\n\n companion object {\n @JvmStatic\n fun fromDegrees(\n minLatPercent: Double, maxLatPercent: Double, minLonDegrees: Double, maxLonDegrees: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n\n @JvmStatic\n fun fromRadians(\n minLatPercent: Double, maxLatPercent: Double, minLonRadians: Double, maxLonRadians: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n\n @JvmStatic\n fun fromSector(sector: Sector) = MercatorSector(\n gudermannianInverse(sector.minLatitude), gudermannianInverse(sector.maxLatitude),\n sector.minLongitude, sector.maxLongitude\n )\n\n @JvmStatic\n fun gudermannianInverse(latitude: Angle) = ln(tan(PI / 4.0 + latitude.inRadians / 2.0)) / PI\n\n @JvmStatic\n fun gudermannian(percent: Double) = fromRadians(atan(sinh(percent * PI)))\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.util.LevelSet\n\nopen class MercatorTiledImageLayer(\n name: String? = null, tiledSurfaceImage: MercatorTiledSurfaceImage? = null\n): TiledImageLayer(name, tiledSurfaceImage) {\n override fun clone() = MercatorTiledImageLayer(displayName, tiledSurfaceImage?.clone() as? MercatorTiledSurfaceImage)\n\n companion object {\n fun buildTiledSurfaceImage(\n tileFactory: MercatorTileFactory, numLevels: Int = 22, tileSize: Int = 256, transparent: Boolean = false, levelOffset: Int = 1\n ): MercatorTiledSurfaceImage {\n val sector = MercatorSector()\n val tileOrigin = MercatorSector()\n val firstLevelDelta = Location(tileOrigin.deltaLatitude, tileOrigin.deltaLongitude)\n // Skip 1 topmost level with bad resolution from processing\n val levelSet = LevelSet(sector, tileOrigin, firstLevelDelta, numLevels, tileSize, tileSize, levelOffset)\n return MercatorTiledSurfaceImage(tileFactory, levelSet).apply {\n // Reduce memory usage by using a 16-bit configuration with no alpha\n if (!transparent) imageOptions = ImageOptions(ImageConfig.RGB_565)\n }\n }\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.TileFactory\n\nopen class MercatorTiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet) : TiledSurfaceImage(tileFactory, levelSet) {\n override fun clone() = MercatorTiledSurfaceImage(tileFactory, with(levelSet) {\n // It is crucial to keep the Mercator sector in the level set clone to keep correct tiling\n LevelSet(fromSector(sector), fromSector(tileOrigin), firstLevelDelta, numLevels, tileWidth, tileHeight, levelOffset)\n }).also {\n it.imageOptions = imageOptions\n }\n\n override fun createTopLevelTiles() =\n AbstractMercatorImageTile.assembleMercatorTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.WebImageLayer\n\nclass WebMercatorImageLayer(\n override val serviceAddress: String,\n override val imageFormat: String = \"image/png\",\n override val isTransparent: Boolean = false,\n name: String? = null,\n tiledSurfaceImage: MercatorTiledSurfaceImage? = null\n) : MercatorTiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n\n override fun clone() = WebMercatorImageLayer(\n serviceAddress, imageFormat, isTransparent, displayName, tiledSurfaceImage?.clone() as? MercatorTiledSurfaceImage\n )\n\n companion object {\n const val SERVICE_TYPE = \"XYZ\"\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.mercator.MercatorTiledImageLayer.Companion.buildTiledSurfaceImage\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.locale.language\nimport kotlin.random.Random\n\nobject WebMercatorLayerFactory {\n private const val OPEN_BRACKET = '{'\n private const val CLOSED_BRACKET = '}'\n private const val I_EXPRESSION = \"{i}\"\n private const val X_COORDINATE = \"{x}\"\n private const val Y_COORDINATE = \"{y}\"\n private const val Z_COORDINATE = \"{z}\"\n private const val LANGUAGE = \"{lang}\"\n private const val RAND_PREFIX = \"{rand=\"\n\n fun createLayer(\n urlTemplate: String, imageFormat: String = \"image/png\", transparent: Boolean = false,\n name: String? = null, numLevels: Int = 22, tileSize: Int = 256, levelOffset: Int = 1\n ): WebMercatorImageLayer {\n val urlParts = parseUrl(urlTemplate)\n val randomValue = urlParts.find { it.startsWith(RAND_PREFIX) }\n val randomValues = randomValue?.removeSurrounding(RAND_PREFIX, \"}\")?.split(\",\")\n val tileFactory = object : MercatorTileFactory {\n override val contentType = \"Web Mercator\"\n\n override fun getImageSource(x: Int, y: Int, z: Int): ImageSource {\n val resultServerUrl = StringBuilder()\n urlParts.forEach {\n resultServerUrl.append(\n when (it) {\n X_COORDINATE -> x\n Y_COORDINATE -> y\n Z_COORDINATE -> z\n LANGUAGE -> language\n randomValue -> randomValues?.get(Random.nextInt(randomValues.size))\n I_EXPRESSION -> x % 4 + y % 4 * 4\n else -> it\n }\n )\n }\n return ImageSource.fromUrlString(resultServerUrl.toString())\n }\n }\n val tiledSurfaceImage = buildTiledSurfaceImage(tileFactory, numLevels, tileSize, transparent, levelOffset)\n return WebMercatorImageLayer(urlTemplate, imageFormat, transparent, name, tiledSurfaceImage)\n }\n\n private fun parseUrl(serverUrl: String): List {\n val result = mutableListOf()\n val builder = StringBuilder()\n serverUrl.toCharArray().forEachIndexed { index, char ->\n if (char == OPEN_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n builder.append(char)\n if (char == CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n if (index == serverUrl.length - 1 && char != CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n }\n return result\n }\n}","package earth.worldwind.layer.starfield\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.MR\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawableStarField\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n/**\n * Constructs a layer showing stars and the Sun around the Earth.\n * If used together with the AtmosphereLayer, the StarFieldLayer must be inserted before the AtmosphereLayer.\n *\n * If you want to use your own star data, the file provided must be .json\n * and the fields \"ra\", \"dec\" and \"vmag\" must be present in the metadata.\n * ra and dec must be expressed in degrees.\n *\n * This layer uses J2000.0 as the ref epoch.\n *\n * If the star data .json file is too big, consider enabling gzip compression on your web server.\n * For more info about enabling gzip compression consult the configuration for your web server.\n */\nopen class StarFieldLayer(starDataSource: FileResource = MR.files.stars_json): AbstractLayer(\"StarField\") {\n override var isPickEnabled = false // The StarField Layer is not pickable.\n /**\n * Resource for the stars data\n */\n var starDataSource = starDataSource\n set(value) {\n field = value\n invalidateStarData()\n }\n /**\n * Resource for the sun texture image.\n */\n var sunImageSource = ImageSource.fromResource(MR.images.sun_texture)\n /**\n * The size of the Sun in pixels.\n * This can not exceed the maximum allowed pointSize of the GPU.\n * A warning will be given if the size is too big and the allowed max size will be used.\n */\n var sunSize = 128f\n /**\n * Indicates weather to show or hide the Sun\n */\n var isShowSun = true\n /**\n * Display star field on a specified time point. If null, then current time will be used each frame.\n */\n var time : Instant? = null\n protected var starsPositionsVboCacheKey = nextCacheKey() //gpu cache key for the stars vbo.\n protected var numStars = 0\n protected var starData: StarData? = null\n protected var minMagnitude = Float.MAX_VALUE\n protected var maxMagnitude = Float.MIN_VALUE\n protected var sunBufferViewHashCode = 0\n /**\n * A flag to indicate the star data is currently being retrieved.\n */\n protected var loadStarted = false\n protected val minScale = 10e6\n protected var sunPositionsCacheKey = nextCacheKey()\n protected val sunBufferView = FloatArray(4)\n\n protected fun nextCacheKey() = Any()\n\n protected open fun invalidateStarData() {\n starData = null\n starsPositionsVboCacheKey = nextCacheKey()\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Star Field layer is not applicable for 2D globe\n\n loadStarData(rc)\n\n val starData = starData ?: return // Star data is not loaded yet\n val time = time ?: Clock.System.now()\n val pool = rc.getDrawablePool()\n val drawable = DrawableStarField.obtain(pool)\n\n // Render Star Field\n drawable.starsPositionsBuffer = rc.getBufferObject(starsPositionsVboCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, createStarsGeometry(starData, rc))\n }\n // Number of days since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n drawable.julianDate = SunPosition.computeJulianDate(time)\n drawable.minMagnitude = minMagnitude\n drawable.maxMagnitude = maxMagnitude\n drawable.numStars = numStars\n drawable.matrix.copy(rc.modelviewProjection)\n val scale = (rc.camera.position.altitude * 1.5).coerceAtLeast(minScale)\n drawable.matrix.multiplyByScale(scale, scale, scale)\n\n // Render The Sun\n drawable.isShowSun = isShowSun\n if (drawable.isShowSun) {\n drawable.sunTexture = rc.getTexture(sunImageSource, null)\n if (drawable.sunTexture != null) {\n drawable.sunSize = sunSize\n\n val sunCelestialLocation = SunPosition.getAsCelestialLocation(time)\n\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n sunBufferView[0] = sunCelestialLocation.declination.inDegrees.toFloat()\n sunBufferView[1] = sunCelestialLocation.rightAscension.inDegrees.toFloat()\n sunBufferView[2] = sunSize.coerceAtMost(DrawableStarField.maxGlPointSize)\n sunBufferView[3] = 1f\n\n val hashCode = sunBufferView.contentHashCode()\n if (sunBufferViewHashCode != hashCode) {\n sunBufferViewHashCode = hashCode\n sunPositionsCacheKey = nextCacheKey()\n }\n drawable.sunPositionsBuffer = rc.getBufferObject(sunPositionsCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, sunBufferView)\n }\n }\n }\n\n drawable.program = rc.getShaderProgram { StarFieldProgram() }\n rc.offerBackgroundDrawable(drawable)\n }\n\n protected open fun loadStarData(rc: RenderContext) {\n if (starData == null && !loadStarted) {\n loadStarted = true\n rc.renderResourceCache.retrieveTextFile(starDataSource) {\n starData = Json.decodeFromString(it)\n loadStarted = false\n WorldWind.requestRedraw()\n }\n }\n }\n\n protected open fun createStarsGeometry(starData: StarData, rc: RenderContext): FloatArray {\n val indexes = parseStarsMetadata(starData.metadata)\n require(indexes[0] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing ra field in star data.\")\n }\n require(indexes[1] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing dec field in star data.\")\n }\n require(indexes[2] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing vmag field in star data.\")\n }\n\n numStars = starData.data.size\n minMagnitude = Float.MAX_VALUE\n maxMagnitude = Float.MIN_VALUE\n\n val positions = FloatArray(numStars * 4)\n var positionIndex = 0\n for (i in starData.data.indices) {\n val starInfo = starData.data[i]\n val rightAscension = starInfo[indexes[0]] //for longitude\n val declination = starInfo[indexes[1]] //for latitude\n val magnitude = starInfo[indexes[2]]\n val pointSize = if (magnitude < 2) 2f else 1f\n\n positions[positionIndex++] = declination\n positions[positionIndex++] = rightAscension\n positions[positionIndex++] = pointSize * rc.densityFactor\n positions[positionIndex++] = magnitude\n\n minMagnitude = minMagnitude.coerceAtMost(magnitude)\n maxMagnitude = maxMagnitude.coerceAtLeast(magnitude)\n }\n\n return positions\n }\n\n protected open fun parseStarsMetadata(metadata: List): Array {\n var raIndex = -1\n var decIndex = -1\n var magIndex = -1\n for (i in metadata.indices) {\n val starMetaInfo = metadata[i]\n if (starMetaInfo.name == \"ra\") raIndex = i\n if (starMetaInfo.name == \"dec\") decIndex = i\n if (starMetaInfo.name == \"vmag\") magIndex = i\n }\n return arrayOf(raIndex, decIndex, magIndex)\n }\n\n @Serializable\n data class StarMetadata(\n val name: String, val description: String, val datatype: String,\n val arraysize: Int, val unit: String, val ucd: String\n )\n\n @Serializable\n data class StarData(val metadata: List, val data: List>)\n}\n","package earth.worldwind.layer.starfield\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n/**\n * StarFieldProgram is a GLSL program that draws points representing stars.\n */\nopen class StarFieldProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n attribute vec4 vertexPoint;\n\n uniform mat4 mvpMatrix;\n /* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\n uniform float numDays;\n uniform vec2 magnitudeRange;\n\n varying float magnitudeWeight;\n\n /* normalizes an angle between 0.0 and 359.0 */\n float normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n }\n\n /* transforms declination and right ascension in cartesian coordinates */\n vec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n }\n\n /* normalizes a value between 0.0 and 1.0 */\n float normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n }\n\n void main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform sampler2D textureSampler;\n uniform int textureEnabled;\n\n varying float magnitudeWeight;\n\n const vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n const vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\n void main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n /* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var numDaysId = KglUniformLocation.NONE\n protected var magnitudeRangeId = KglUniformLocation.NONE\n protected var textureUnitId = KglUniformLocation.NONE\n protected var textureEnabledId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\");\n numDaysId = gl.getUniformLocation(program, \"numDays\");\n magnitudeRangeId = gl.getUniformLocation(program, \"magnitudeRange\");\n textureUnitId = gl.getUniformLocation(program, \"textureSampler\");\n textureEnabledId = gl.getUniformLocation(program, \"textureEnabled\");\n }\n\n /**\n * Loads the specified matrix as the value of this program's 'mvpMatrix' uniform variable.\n *\n * @param matrix The matrix to load.\n */\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n /**\n * Loads the specified number as the value of this program's 'numDays' uniform variable.\n *\n * @param numDays The number of days (positive or negative) since Greenwich noon, Terrestrial Time,\n * on 1 January 2000 (J2000.0)\n */\n fun loadNumDays(numDays: Float) = gl.uniform1f(numDaysId, numDays)\n\n /**\n * Loads the specified numbers as the value of this program's 'magnitudeRange' uniform variable.\n *\n * @param minMag Minimal magnitude\n * @param maxMag Maximal magnitude\n */\n fun loadMagnitudeRange(minMag: Float, maxMag: Float) = gl.uniform2f(magnitudeRangeId, minMag, maxMag)\n\n /**\n * Loads the specified number as the value of this program's 'textureSampler' uniform variable.\n *\n * @param unit The texture unit.\n */\n fun loadTextureUnit(unit: Int) = gl.uniform1i(textureUnitId, unit - GL_TEXTURE0);\n\n /**\n * Loads the specified boolean as the value of this program's 'textureEnabledLocation' uniform variable.\n *\n * @param value Texture enabled\n */\n fun loadTextureEnabled(value: Boolean) = gl.uniform1i(textureEnabledId, if (value) 1 else 0)\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.geom.TileMatrixSet.Companion.fromTilePyramid\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Coverage Service (WCS) version 1.0.0.\n * Wcs100ElevationCoverage requires the WCS service address, coverage name, and coverage bounding sector. Get Coverage\n * requests generated for retrieving data use the WCS version 1.0.0 protocol and are limited to the EPSG:4326 coordinate\n * system. Wcs100ElevationCoverage does not perform version negotiation and assumes the service supports the format and\n * coordinate system parameters detailed here.\n */\nclass Wcs100ElevationCoverage private constructor(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): TiledElevationCoverage(tileMatrixSet, elevationSourceFactory), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n constructor(\n serviceAddress: String, coverageName: String, outputFormat: String, sector: Sector, resolution: Angle\n ): this(\n serviceAddress, coverageName, outputFormat,\n fromTilePyramid(sector, if (sector.isFullSphere) 2 else 1, 1, 256, 256, resolution),\n Wcs100ElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n )\n\n override fun clone() = Wcs100ElevationCoverage(\n serviceAddress, coverageName, outputFormat, tileMatrixSet, elevationSourceFactory\n )\n\n companion object {\n const val SERVICE_TYPE = \"WCS 1.0.0\"\n }\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\n\n/**\n * Factory for constructing WCS version 1.0.0 URLs associated with WCS Get Coverage requests.\n */\nopen class Wcs100ElevationSourceFactory(\n /**\n * The WCS service address use to build Get Coverage URLs.\n */\n protected val serviceAddress: String,\n /**\n * The coverage name of the desired WCS coverage.\n */\n protected val coverageName: String,\n /**\n * Required WCS source output format\n */\n protected val outputFormat: String,\n /**\n * The coordinate reference system to use in Get Coverage URLs. Defaults to EPSG:4326.\n */\n protected val coordinateSystem: String = \"EPSG:4326\"\n): ElevationSourceFactory {\n override val contentType = \"WCS 1.0.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val urlString = urlForTile(tileMatrix, row, column)\n return ElevationSource.fromUrlString(urlString)\n }\n\n protected open fun urlForTile(tileMatrix: TileMatrix, row: Int, col: Int) = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WCS\")\n .appendQueryParameter(\"REQUEST\", \"GetCoverage\")\n .appendQueryParameter(\"COVERAGE\", coverageName)\n .appendQueryParameter(\"CRS\", coordinateSystem)\n .appendQueryParameter(\"BBOX\", tileMatrix.tileSector(row, col).run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n .appendQueryParameter(\"WIDTH\", tileMatrix.tileWidth.toString())\n .appendQueryParameter(\"HEIGHT\", tileMatrix.tileHeight.toString())\n .appendQueryParameter(\"FORMAT\", outputFormat)\n .build().toString()\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.shape.TiledSurfaceImage\n\nclass WmsImageLayer(\n override val serviceAddress: String,\n override val serviceMetadata: String,\n override val layerName: String,\n name: String? = null,\n tiledSurfaceImage: TiledSurfaceImage? = null\n) : TiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.isTransparent ?: true\n\n override fun clone() = WmsImageLayer(\n serviceAddress, serviceMetadata, layerName, displayName, tiledSurfaceImage?.clone()\n )\n\n companion object {\n const val SERVICE_TYPE = \"WMS\"\n }\n}","package earth.worldwind.ogc\n\n/**\n * Configuration values for a WMS layer.\n */\nclass WmsLayerConfig(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String\n) {\n /**\n * The WMS protocol version. Defaults to 1.3.0.\n */\n var wmsVersion = \"1.3.0\"\n /**\n * The comma-separated list of WMS style names.\n */\n var styleNames: String? = null\n /**\n * The coordinate reference system to use when requesting layers. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map requests.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map requests should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map requests.\n */\n var timeString: String? = null\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.wms.WmsCapabilities\nimport earth.worldwind.ogc.wms.WmsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LevelSetConfig\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmsLayerFactory {\n private const val DEFAULT_WMS_NUM_LEVELS = 20\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMS service address\n * @param layerNames Optional list of WMS layer names to be requested and combined into the resulting image layer\n * @param serviceMetadata Optional WMS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerNames: List, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerNames.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmsCapabilitiesText = serviceMetadata ?: retrieveWmsCapabilities(serviceAddress)\n val wmsCapabilities = decodeWmsCapabilities(wmsCapabilitiesText)\n val wmsLayers = wmsCapabilities.getNamedLayers(layerNames)\n require(wmsLayers.isNotEmpty()) {\n makeMessage(\"WmsLayerFactory\", \"createLayer\", \"Provided layer names did not match available layers\")\n }\n return createWmsImageLayer(serviceAddress, wmsCapabilitiesText, wmsLayers, displayName)\n }\n\n private suspend fun retrieveWmsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.3.0\")\n .appendQueryParameter(\"SERVICE\", \"WMS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmsLayers: List, name: String?\n ) = WmsImageLayer(\n serviceAddress, serviceMetadata, wmsLayers.mapNotNull { lc -> lc.name }.joinToString(\",\"),\n name ?: wmsLayers.joinToString(\",\") { lc -> lc.title }, createWmsSurfaceImage(wmsLayers)\n )\n\n private fun createWmsSurfaceImage(wmsLayers: List): TiledSurfaceImage {\n // Check if the server supports multiple layer request\n val layerLimit = wmsLayers[0].capability?.capabilities?.service?.layerLimit\n require (layerLimit == null || layerLimit >= wmsLayers.size) {\n makeMessage(\n \"WmsLayerFactory\", \"createFromWmsAsync\",\n \"The number of layers specified exceeds the services limit\"\n )\n }\n val wmsLayerConfig = getLayerConfigFromWmsCapabilities(wmsLayers)\n val levelSetConfig = getLevelSetConfigFromWmsCapabilities(wmsLayers)\n return TiledSurfaceImage(WmsTileFactory(wmsLayerConfig), LevelSet(levelSetConfig))\n }\n\n internal fun getLayerConfigFromWmsCapabilities(wmsLayers: List): WmsLayerConfig {\n // Construct the WmsTiledImage renderable from the WMS Capabilities properties\n val wmsCapabilities = wmsLayers[0].capability?.capabilities\n val serviceAddress = wmsCapabilities?.capability?.request?.getMap?.getUrl ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Unable to resolve GetMap URL\")\n )\n var matchingCoordinateSystems: MutableSet? = null\n for (wmsLayer in wmsLayers) {\n val wmsLayerCoordinateSystems = wmsLayer.referenceSystems\n if (matchingCoordinateSystems == null) matchingCoordinateSystems = wmsLayerCoordinateSystems.toMutableSet()\n else matchingCoordinateSystems.retainAll(wmsLayerCoordinateSystems.toSet())\n }\n val wmsLayerConfig = WmsLayerConfig(serviceAddress, wmsLayers.joinToString(\",\") { l -> l.name ?: \"\" })\n when (val wmsVersion = wmsCapabilities.version) {\n \"1.3.0\" -> wmsLayerConfig.wmsVersion = wmsVersion\n else -> error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Version not compatible\")\n )\n }\n if (matchingCoordinateSystems?.contains(\"EPSG:4326\") == true) {\n wmsLayerConfig.coordinateSystem = \"EPSG:4326\"\n } else if (matchingCoordinateSystems?.contains(\"CRS:84\") == true) {\n wmsLayerConfig.coordinateSystem = \"CRS:84\"\n } else error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Coordinate systems not compatible\")\n )\n\n // Negotiate Image Formats\n val imageFormats = wmsCapabilities.capability.request.getMap.formats\n wmsLayerConfig.imageFormat = compatibleImageFormats.firstOrNull { format -> imageFormats.contains(format) } ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Image Formats Not Compatible\")\n )\n\n // Setup transparency. If at least one layer is opaque then transparency is disabled\n wmsLayerConfig.isTransparent = !wmsLayers.any { layer -> layer.isOpaque }\n\n return wmsLayerConfig\n }\n\n internal fun getLevelSetConfigFromWmsCapabilities(layerCapabilities: List): LevelSetConfig {\n val levelSetConfig = LevelSetConfig()\n var minScaleDenominator = Double.MAX_VALUE\n val sector = Sector()\n for (layerCapability in layerCapabilities) {\n layerCapability.minScaleDenominator?.let { minScaleDenominator = minScaleDenominator.coerceAtMost(it) }\n layerCapability.geographicBoundingBox?.let { sector.union(it) }\n }\n if (!sector.isEmpty) levelSetConfig.sector.copy(sector) else error(\n makeMessage(\n \"WmsLayerFactory\", \"getLevelSetConfigFromWmsCapabilities\", \"Geographic Bounding Box Not Defined\"\n )\n )\n levelSetConfig.numLevels = when {\n minScaleDenominator != Double.MAX_VALUE -> {\n // WMS 1.3.0 scale configuration. Based on the WMS 1.3.0 spec page 28. The hard coded value 0.00028 is\n // detailed in the spec as the common pixel size of 0.28mm x 0.28mm. Configures the maximum level not to\n // exceed the specified min scale denominator.\n val minMetersPerPixel = minScaleDenominator * 0.00028\n val minRadiansPerPixel = minMetersPerPixel / Ellipsoid.WGS84.semiMajorAxis\n levelSetConfig.numLevelsForMinResolution(minRadiansPerPixel)\n }\n else -> DEFAULT_WMS_NUM_LEVELS // Default scale configuration when no minimum scale denominator or scale hint is provided.\n }\n return levelSetConfig\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ln\nimport kotlin.math.roundToInt\n\n/**\n * Multi-resolution, hierarchical collection of tiles organized into levels of increasing resolution. Applications\n * typically do not interact with this class.\n */\nopen class LevelSet {\n /**\n * The sector spanned by this level set.\n */\n val sector: Sector\n /**\n * Tile origin for this level set\n */\n val tileOrigin: Sector\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of this level set.\n */\n val firstLevelDelta: Location\n /**\n * The width in pixels of images associated with tiles in this level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with this level set.\n */\n val tileWidth: Int\n /**\n * The height in pixels of images associated with tiles in this level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with this level set.\n */\n val tileHeight: Int\n /**\n * Determines how many levels to skip from retrieving tile data during tile pyramid subdivision.\n */\n val levelOffset: Int\n /**\n * The hierarchical levels, sorted from lowest to highest resolution.\n */\n protected val levels: Array\n /**\n * Returns the number of levels in this level set.\n */\n val numLevels get() = levels.size\n /**\n * Returns the first level (the lowest resolution) of this level set.\n */\n val firstLevel get() = levels.first()\n /**\n * Returns the last level (the highest resolution) of this level set.\n */\n val lastLevel get() = levels.last()\n\n /**\n * Constructs an empty level set with no levels. The methods `level`, `levelForResolution`,\n * `firstLevel` and `lastLevel` always return null.\n */\n constructor() {\n sector = Sector()\n tileOrigin = Sector()\n firstLevelDelta = Location()\n tileWidth = 0\n tileHeight = 0\n levelOffset = 0\n levels = emptyArray()\n }\n\n /**\n * Constructs a level set with specified parameters.\n *\n * @param sector the sector spanned by this level set\n * @param tileOrigin the origin for this level set\n * @param firstLevelDelta the geographic width and height of tiles in the first level (the lowest resolution)\n * of the level set\n * @param numLevels the number of levels in the level set\n * @param tileWidth the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the longitudinal direction of elevation tiles associate with this leve set\n * @param tileHeight the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the latitudinal direction of elevation tiles associate with this level set\n * @param levelOffset determines how many levels to skip from retrieving texture during tile pyramid subdivision\n *\n * @throws IllegalArgumentException If any dimension is zero\n */\n constructor(\n sector: Sector, tileOrigin: Sector, firstLevelDelta: Location, numLevels: Int, tileWidth: Int, tileHeight: Int, levelOffset: Int = 0\n ) {\n require(firstLevelDelta.latitude.inDegrees > 0.0 && firstLevelDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidTileDelta\")\n }\n require(numLevels >= 0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidNumLevels\")\n }\n require(tileWidth >= 1 && tileHeight >= 1) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidWidthOrHeight\")\n }\n this.sector = sector\n this.tileOrigin = tileOrigin\n this.firstLevelDelta = firstLevelDelta\n this.tileWidth = tileWidth\n this.tileHeight = tileHeight\n this.levelOffset = levelOffset\n this.levels = Array(numLevels) {\n val divisor = 1 shl it\n Level(this, it, Location(firstLevelDelta.latitude / divisor, firstLevelDelta.longitude / divisor))\n }\n }\n\n /**\n * Constructs a level set with parameters from a specified level set.\n *\n * @param levelSet source level set\n */\n constructor(levelSet: LevelSet): this(\n Sector(levelSet.sector),\n Sector(levelSet.tileOrigin),\n Location(levelSet.firstLevelDelta),\n levelSet.numLevels,\n levelSet.tileWidth,\n levelSet.tileHeight,\n levelSet.levelOffset\n )\n\n /**\n * Constructs a level set with parameters from a specified configuration. The configuration's sector must be\n * non-null, its first level delta must be positive, its number of levels must be 1 or more, and its tile width and\n * tile height must be 1 or greater.\n *\n * @param config the configuration for this level set\n */\n constructor(config: LevelSetConfig): this(\n config.sector,\n config.tileOrigin,\n config.firstLevelDelta,\n config.numLevels,\n config.tileWidth,\n config.tileHeight,\n config.levelOffset\n )\n\n /**\n * Returns the [Level] for a specified level number.\n *\n * @param levelNumber the number of the desired level\n *\n * @return the requested level, or null if the level does not exist\n */\n fun level(levelNumber: Int) = if (levelNumber in levels.indices) levels[levelNumber] else null\n\n /**\n * Returns the level that most closely approximates the specified resolution.\n *\n * @param resolution the desired resolution in angular value of latitude per pixel.\n *\n * @return the level for the specified resolution, or null if this level set is empty\n *\n * @throws IllegalArgumentException If the resolution is not positive\n * @throws IllegalStateException If this level set is empty\n */\n fun levelForResolution(resolution: Angle): Level {\n require(resolution.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSetConfig\", \"levelForResolution\", \"invalidResolution\")\n }\n if (levels.isEmpty()) error(\"This level set is empty\")\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / resolution.inDegrees) / ln(2.0) // fractional level address\n val levelNumber = level.roundToInt() // nearest neighbor level\n return when {\n levelNumber < 0 -> levels[0] // unable to match the resolution; return the first level\n levelNumber < levels.size -> levels[levelNumber] // nearest neighbor level is in this level set\n else -> levels[levels.size - 1] // unable to match the resolution; return the last level\n }\n }\n\n /**\n * Determine the min relevant level for the sector of this level set\n *\n * @param maxLevel Maximum available level\n * @return Minimum relevant level number\n */\n fun minRelevantLevel(maxLevel: Level = lastLevel) = levels[sector.minLevelNumber(maxLevel.levelNumber)]\n\n /**\n * Calculates approximate count of tiles in specified sector within specified resolution range\n *\n * @param sector co calculate tiles amount\n * @param minLevel minimal required level\n * @param maxLevel maximal required level\n * @return tiles count\n */\n fun tileCount(sector: Sector, minLevel: Level, maxLevel: Level): Long {\n var tileCount = 0L\n var level = minLevel\n do {\n tileCount += level.tilesInSector(sector)\n level = level.nextLevel ?: break\n } while (level.levelNumber <= maxLevel.levelNumber)\n return tileCount\n }\n}",null,"package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\n/**\n * Factory for constructing URLs associated with WMS Get Map requests.\n */\nopen class WmsTileFactory(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n\n /**\n * The WMS protocol version.\n */\n var wmsVersion: String,\n\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String,\n /**\n * The comma-separated list of WMS style names. May be null in which case the default style is assumed.\n */\n var styleNames: String?\n): TileFactory {\n /**\n * The coordinate reference system to use in Get Map URLs. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map URLs. May be null in which case a default format is assumed.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map URLs should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map URLs. May be null in which case no time parameter is included.\n */\n var timeString: String? = null\n\n /**\n * Constructs a level set with a specified configuration. The configuration's service address, WMS protocol version,\n * layer names and coordinate reference system must be non-null. The style names may be null, in which case the\n * default style is assumed. The time string may be null, in which case no time parameter is included.\n *\n * @param config the configuration for this URL builder\n */\n constructor(config: WmsLayerConfig): this(config.serviceAddress, config.wmsVersion, config.layerNames, config.styleNames) {\n coordinateSystem = config.coordinateSystem\n imageFormat = config.imageFormat\n isTransparent = config.isTransparent\n timeString = config.timeString\n }\n\n override val contentType = \"WMS 1.3.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(sector, level.tileWidth, level.tileHeight).let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(sector: Sector, width: Int, height: Int) = Uri.parse(serviceAddress).buildUpon().apply {\n require(width >= 1 && height >= 1) {\n logMessage(ERROR, \"WmsTileFactory\", \"urlForTile\", \"invalidWidthOrHeight\")\n }\n appendQueryParameter(\"VERSION\", wmsVersion)\n appendQueryParameter(\"SERVICE\", \"WMS\")\n appendQueryParameter(\"REQUEST\", \"GetMap\")\n appendQueryParameter(\"LAYERS\", layerNames)\n appendQueryParameter(\"STYLES\", styleNames ?: \"\")\n appendQueryParameter(\"WIDTH\", width.toString())\n appendQueryParameter(\"HEIGHT\", height.toString())\n appendQueryParameter(\"FORMAT\", imageFormat ?: \"image/png\")\n appendQueryParameter(\"TRANSPARENT\", if (isTransparent) \"TRUE\" else \"FALSE\")\n if (wmsVersion == \"1.3.0\") {\n appendQueryParameter(\"CRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n if (coordinateSystem == \"CRS:84\") {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n } else {\n \"${minLatitude.inDegrees},${minLongitude.inDegrees},${maxLatitude.inDegrees},${maxLongitude.inDegrees}\"\n }\n })\n } else {\n appendQueryParameter(\"SRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n }\n timeString?.let { appendQueryParameter(\"TIME\", it) }\n }.build().toString()\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.shape.TiledSurfaceImage\n\nclass WmtsImageLayer(\n override val serviceAddress: String,\n override val serviceMetadata: String,\n override val layerName: String,\n name: String? = null,\n tiledSurfaceImage: TiledSurfaceImage? = null\n) : TiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmtsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent = true // WMTS has no transparency data available\n\n override fun clone() = WmtsImageLayer(\n serviceAddress, serviceMetadata, layerName, displayName, tiledSurfaceImage?.clone()\n )\n\n companion object {\n const val SERVICE_TYPE = \"WMTS\"\n }\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Angle.Companion.toRadians\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Location.Companion.fromDegrees\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsTileFactory.Companion.TILE_COL_TEMPLATE\nimport earth.worldwind.ogc.WmtsTileFactory.Companion.TILE_MATRIX_TEMPLATE\nimport earth.worldwind.ogc.WmtsTileFactory.Companion.TILE_ROW_TEMPLATE\nimport earth.worldwind.ogc.wmts.WmtsCapabilities\nimport earth.worldwind.ogc.wmts.WmtsLayer\nimport earth.worldwind.ogc.wmts.WmtsTileMatrixSet\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.TileFactory\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmtsLayerFactory {\n private const val PIXEL_SIZE = 0.28E-3 // Standardized rendering pixel size (0.28mm)\n private const val STYLE_TEMPLATE = \"{style}\"\n private const val TILE_MATRIX_SET_TEMPLATE = \"{TileMatrixSet}\"\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMTS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMTS service address\n * @param layerName Optional WMTS layer name to be requested into the resulting image layer\n * @param serviceMetadata Optional WMTS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerName: String, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n\t\trequire(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerName.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmtsCapabilitiesText = serviceMetadata ?: retrieveWmtsCapabilities(serviceAddress)\n val wmtsCapabilities = decodeWmtsCapabilities(wmtsCapabilitiesText)\n val wmtsLayer = wmtsCapabilities.getLayer(layerName)\n requireNotNull(wmtsLayer) {\n makeMessage(\"WmtsLayerFactory\", \"createLayer\", \"Specified layer name was not found\")\n }\n return createWmtsImageLayer(serviceAddress, wmtsCapabilitiesText, wmtsLayer, displayName)\n }\n\n private suspend fun retrieveWmtsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmtsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmtsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmtsLayer: WmtsLayer, name: String?\n ) = WmtsImageLayer(\n serviceAddress, serviceMetadata, wmtsLayer.identifier, name ?: wmtsLayer.title, createWmtsSurfaceImage(wmtsLayer)\n )\n\n private fun createWmtsSurfaceImage(wmtsLayer: WmtsLayer): TiledSurfaceImage {\n // Search the list of coordinate system compatible tile matrix sets for compatible tiling schemes\n val tileMatrixSet = determineCompatibleTileMatrixSet(wmtsLayer.layerSupportedTileMatrixSets) ?: error(\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Tile Schemes Not Compatible\")\n )\n val tileFactory = createWmtsTileFactory(wmtsLayer, tileMatrixSet)\n val levelSet = createWmtsLevelSet(wmtsLayer, tileMatrixSet)\n return TiledSurfaceImage(tileFactory, levelSet)\n }\n\n private fun createWmtsTileFactory(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet): TileFactory {\n // First choice is a ResourceURL\n for (resourceUrl in wmtsLayer.resourceUrls) if (compatibleImageFormats.contains(resourceUrl.format)) {\n val template = resourceUrl.template\n .replace(STYLE_TEMPLATE, wmtsLayer.styles[0].identifier)\n .replace(TILE_MATRIX_SET_TEMPLATE, tileMatrixSet.identifier)\n return WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, resourceUrl.format)\n }\n\n // Second choice is if the server supports KVP\n val baseUrl = determineKvpUrl(wmtsLayer)\n return if (baseUrl != null) {\n val imageFormat = compatibleImageFormats.firstOrNull { format -> wmtsLayer.formats.contains(format) } ?: error(\n makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"Image Formats Not Compatible\")\n )\n val styleIdentifier = wmtsLayer.styles[0].identifier\n val template = buildWmtsKvpTemplate(\n baseUrl, wmtsLayer.identifier, imageFormat, styleIdentifier, tileMatrixSet.identifier\n )\n WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, imageFormat)\n } else error(makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"No KVP Get Support\"))\n }\n\n private fun createWmtsLevelSet(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet) = with(tileMatrixSet) {\n val sector = wmtsLayer.wgs84BoundingBox?.sector ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"WGS84BoundingBox not defined for layer: \" + wmtsLayer.identifier\n )\n )\n val pixelSpan = scaleDenominator / toRadians(Ellipsoid.WGS84.semiMajorAxis) * PIXEL_SIZE\n val tileSpanX = tileWidth * pixelSpan\n val tileSpanY = tileHeight * pixelSpan\n val maxX = minX + tileSpanX * matrixWidth\n val minY = maxY - tileSpanY * matrixHeight\n val deltaX = maxX - minX\n val deltaY = maxY - minY\n LevelSet(\n sector, fromDegrees(minY, minX, deltaY, deltaX),\n fromDegrees(deltaY / matrixHeight, deltaX / matrixWidth),\n tileMatrices.size, tileWidth, tileHeight\n )\n }\n\n private fun buildWmtsKvpTemplate(\n kvpServiceAddress: String, layer: String, format: String, styleIdentifier: String, tileMatrixSet: String\n ) = Uri.parse(kvpServiceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetTile\")\n .appendQueryParameter(\"LAYER\", layer)\n .appendQueryParameter(\"STYLE\", styleIdentifier)\n .appendQueryParameter(\"FORMAT\", format)\n .appendQueryParameter(\"TILEMATRIXSET\", tileMatrixSet)\n .build().toString() + \"&TILEMATRIX=$TILE_MATRIX_TEMPLATE&TILEROW=$TILE_ROW_TEMPLATE&TILECOL=$TILE_COL_TEMPLATE\"\n\n private fun determineCompatibleTileMatrixSet(tileMatrixSets: List): TileMatrixSet? {\n // Iterate through each provided tile matrix set\n for (tileMatrixSet in tileMatrixSets) {\n // Determine if there is a TileMatrixSet that matches our Coordinate System compatibility and tiling scheme\n val directAxisOrder = when (tileMatrixSet.supportedCrs) {\n \"urn:ogc:def:crs:OGC:1.3:CRS84\", \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\" -> true\n \"urn:ogc:def:crs:EPSG::4326\" -> false\n else -> continue // The provided tile matrix set should adhere to either EPGS:4326 or CRS84\n }\n val tileMatrices = mutableListOf()\n var minX = 0.0\n var maxY = 0.0\n var scaleDenominator = 0.0\n var tileWidth = 0\n var tileHeight = 0\n var matrixWidth = 0\n var matrixHeight = 0\n var previousHeight = 0\n var previousWidth = 0\n var previousCorner: String? = null\n // Walk through the associated tile matrices and check for compatibility with WWA tiling scheme\n for (tileMatrix in tileMatrixSet.tileMatrices) {\n // Check and parse top left corner values\n if (previousCorner != null && tileMatrix.topLeftCorner != previousCorner) continue\n val topLeftCorner = tileMatrix.topLeftCorner.split(\"\\\\s+\".toRegex())\n if (topLeftCorner.size != 2) continue\n\n // Check tile size equals for all tile matrices\n if (tileWidth != 0 && tileWidth != tileMatrix.tileWidth) continue\n if (tileHeight != 0 && tileHeight != tileMatrix.tileHeight) continue\n\n // Ensure quad division behavior from previous tile matrix\n if (previousWidth != 0 && 2 * previousWidth != tileMatrix.matrixWidth) break\n if (previousHeight != 0 && 2 * previousHeight != tileMatrix.matrixHeight) break\n\n // Remember the first level parameters\n if (tileMatrices.isEmpty()) {\n try {\n if (directAxisOrder) {\n minX = topLeftCorner[0].toDouble()\n maxY = topLeftCorner[1].toDouble()\n } else {\n minX = topLeftCorner[1].toDouble()\n maxY = topLeftCorner[0].toDouble()\n }\n } catch (e: NumberFormatException) {\n logMessage(\n WARN, \"WmtsLayerFactory\", \"determineTileSchemeCompatibleTileMatrixSet\",\n \"Unable to parse TopLeftCorner values\"\n )\n continue\n }\n scaleDenominator = tileMatrix.scaleDenominator\n tileWidth = tileMatrix.tileWidth\n tileHeight = tileMatrix.tileWidth\n matrixWidth = tileMatrix.matrixWidth\n matrixHeight = tileMatrix.matrixHeight\n }\n\n // And add compatible tile matrix\n tileMatrices.add(tileMatrix.identifier)\n previousHeight = tileMatrix.matrixHeight\n previousWidth = tileMatrix.matrixWidth\n previousCorner = tileMatrix.topLeftCorner\n }\n\n // Return the first compatible tile matrix set\n if (tileMatrices.isNotEmpty()) return TileMatrixSet(\n tileMatrixSet.identifier, tileMatrices, scaleDenominator, minX, maxY,\n tileWidth, tileHeight, matrixWidth, matrixHeight\n )\n }\n return null\n }\n\n /**\n * Conducts a simple search through the [WmtsLayer]s distributed computing platform resources for a URL which\n * supports KVP queries to the WMTS. This method only looks at the first entry of every array of the layers 'GET'\n * retrieval methods.\n *\n * @param layer the [WmtsLayer] to search for KVP support\n *\n * @return the URL for the supported KVP or null if KVP or 'GET' method isn't provided by the layer\n */\n private fun determineKvpUrl(layer: WmtsLayer): String? {\n val capabilities = layer.capabilities\n val operationsMetadata = capabilities.operationsMetadata ?: return null\n val getTileOperation = operationsMetadata.getTile ?: return null\n val dcp = getTileOperation.dcps\n if (dcp.isEmpty()) return null\n val getMethods = dcp[0].getMethods\n if (getMethods.isEmpty()) return null\n val constraints = getMethods[0].constraints\n if (constraints.isEmpty()) return null\n val allowedValues = constraints[0].allowedValues\n return if (allowedValues.contains(\"KVP\")) getMethods[0].url else null\n }\n\n private class TileMatrixSet(\n val identifier: String,\n val tileMatrices: List,\n val scaleDenominator: Double,\n val minX: Double,\n val maxY: Double,\n val tileWidth: Int,\n val tileHeight: Int,\n val matrixWidth: Int,\n val matrixHeight: Int,\n )\n}",null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\nopen class WmtsTileFactory(\n private val template: String,\n private val tileMatrixIdentifiers: List,\n private val firstLevelHeight: Int,\n val imageFormat: String\n): TileFactory {\n override val contentType = \"WMTS 1.0.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(level.levelNumber, row, column)?.let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(level: Int, row: Int, column: Int): String? {\n if (level >= tileMatrixIdentifiers.size) {\n logMessage(\n Logger.WARN, \"WmtsTileFactory\", \"urlForTile\",\n \"invalid level for tileMatrixIdentifiers: $level\"\n )\n return null\n }\n\n // flip the row index\n val rowHeight = firstLevelHeight shl level\n val flipRow = rowHeight - row - 1\n return template.replace(TILE_MATRIX_TEMPLATE, tileMatrixIdentifiers[level])\n .replace(TILE_ROW_TEMPLATE, flipRow.toString()).replace(TILE_COL_TEMPLATE, column.toString())\n }\n\n companion object {\n const val TILE_MATRIX_TEMPLATE = \"{TileMatrix}\"\n const val TILE_ROW_TEMPLATE = \"{TileRow}\"\n const val TILE_COL_TEMPLATE = \"{TileCol}\"\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Attribution\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAttribution(\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String? = null,\n val onlineResource: WmsOnlineResource? = null,\n val logoURL: WmsLogoUrl? = null\n) {\n val url get() = onlineResource?.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"AuthorityURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAuthorityUrl(\n val name: String,\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsBoundingBox(\n val CRS: String,\n val minx: Double,\n val maxx: Double,\n val miny: Double,\n val maxy: Double,\n val resx: Double? = null,\n val resy: Double? = null,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"WMS_Capabilities\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapabilities(\n /**\n * Returns the document's version number.\n */\n val version: String = \"1.3.0\",\n /**\n * Returns the document's update sequence.\n */\n val updateSequence: String? = null,\n /**\n * Returns the document's service information.\n */\n val service: WmsService,\n val capability: WmsCapability\n) {\n /**\n * Returns all named layers in the capabilities document.\n */\n val namedLayers get() = capability.layers.flatMap { layer -> layer.namedLayers }\n\n init {\n capability.capabilities = this\n }\n\n fun getNamedLayer(name: String) = namedLayers.firstOrNull { layer -> layer.name == name }\n\n fun getNamedLayers(names: List) = namedLayers.filter { layer -> names.contains(layer.name) }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capability\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapability(\n val request: WmsRequest,\n val layers: List = emptyList(),\n /**\n * Object representation of an Exception element. Pre-allocated to prevent NPE in the event the server does not\n * include an Exception block.\n */\n val exception: WmsException = WmsException()\n) {\n @Transient\n lateinit var capabilities: WmsCapabilities\n\n init {\n layers.forEach { layer -> layer.capability = this }\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactAddress\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactAddress(\n @XmlElement(true)\n @XmlSerialName(\"AddressType\", WMS_NAMESPACE, WMS_PREFIX)\n val addressType: String,\n @XmlElement(true)\n @XmlSerialName(\"Address\", WMS_NAMESPACE, WMS_PREFIX)\n val address: String,\n @XmlElement(true)\n @XmlSerialName(\"City\", WMS_NAMESPACE, WMS_PREFIX)\n val city: String,\n @XmlElement(true)\n @XmlSerialName(\"StateOrProvince\", WMS_NAMESPACE, WMS_PREFIX)\n val stateOrProvince: String,\n @XmlElement(true)\n @XmlSerialName(\"PostCode\", WMS_NAMESPACE, WMS_PREFIX)\n val postCode: String,\n @XmlElement(true)\n @XmlSerialName(\"Country\", WMS_NAMESPACE, WMS_PREFIX)\n val country: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInformation\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactInformation(\n @XmlElement(true)\n @XmlSerialName(\"ContactPosition\", WMS_NAMESPACE, WMS_PREFIX)\n val position: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactVoiceTelephone\", WMS_NAMESPACE, WMS_PREFIX)\n val voiceTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactFacsimileNumber\", WMS_NAMESPACE, WMS_PREFIX)\n val facsimileTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactElectronicMailAddress\", WMS_NAMESPACE, WMS_PREFIX)\n val electronicMailAddress: String? = null,\n val contactAddress: WmsContactAddress? = null,\n val contactPersonPrimary: WmsContactPersonPrimary? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactPersonPrimary\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactPersonPrimary(\n @XmlElement(true)\n @XmlSerialName(\"ContactPerson\", WMS_NAMESPACE, WMS_PREFIX)\n val contactPerson: String,\n @XmlElement(true)\n @XmlSerialName(\"ContactOrganization\", WMS_NAMESPACE, WMS_PREFIX)\n val contactOrganization: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCPType\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDcpType(\n val http: WmsHttp\n) {\n val getHref get() = http.get.onlineResource.url\n val postHref get() = http.post?.onlineResource?.url\n\n @Serializable\n @XmlSerialName(\"HTTP\", WMS_NAMESPACE, WMS_PREFIX)\n data class WmsHttp(\n @XmlSerialName(\"Get\", WMS_NAMESPACE, WMS_PREFIX)\n val get: WmsHttpProtocol,\n @XmlSerialName(\"Post\", WMS_NAMESPACE, WMS_PREFIX)\n val post: WmsHttpProtocol? = null,\n )\n\n @Serializable\n data class WmsHttpProtocol(\n val onlineResource: WmsOnlineResource\n )\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDimension(\n val name: String,\n val units: String,\n val unitSymbol: String? = null,\n val default: String? = null,\n val multipleValues: Boolean? = null,\n val nearestValue: Boolean? = null,\n val current: Boolean? = null,\n @XmlValue(true)\n val value: String? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Exception\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsException(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList()\n)","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"EX_GeographicBoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsGeographicBoundingBox(\n @XmlElement(true)\n @XmlSerialName(\"northBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val north: Double,\n @XmlElement(true)\n @XmlSerialName(\"eastBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val east: Double,\n @XmlElement(true)\n @XmlSerialName(\"southBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val south: Double,\n @XmlElement(true)\n @XmlSerialName(\"westBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val west: Double\n) {\n val geographicBoundingBox get() = fromDegrees(south, west, north - south, east - west)\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Identifier\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsIdentifier(\n val authority: String,\n @XmlValue(true)\n val identifier: String,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsInfoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLayer(\n // Properties of the Layer element\n val layers: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = emptyList(),\n private val _styles: List = emptyList(),\n @XmlSerialName(\"CRS\", WMS_NAMESPACE, WMS_PREFIX)\n private val _referenceSystems: List = emptyList(),\n private val _geographicBoundingBox: WmsGeographicBoundingBox? = null,\n private val _boundingBoxes: List = emptyList(),\n private val _dimensions: List = emptyList(),\n private val _attribution: WmsAttribution? = null,\n private val _authorityUrls: List = emptyList(),\n val identifiers: List = emptyList(),\n val metadataUrls: List = emptyList(),\n @XmlSerialName(\"DataURL\", WMS_NAMESPACE, WMS_PREFIX)\n val dataUrls: List = emptyList(),\n @XmlSerialName(\"FeatureListURL\", WMS_NAMESPACE, WMS_PREFIX)\n val featureListUrls: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"MaxScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _maxScaleDenominator: Double? = null,\n @XmlElement(true)\n @XmlSerialName(\"MinScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _minScaleDenominator: Double? = null,\n // Properties of the Layer attributes\n @XmlSerialName(\"queryable\", WMS_NAMESPACE, WMS_PREFIX)\n val isQueryable: Boolean = false,\n @XmlSerialName(\"cascaded\", WMS_NAMESPACE, WMS_PREFIX)\n private val _cascaded: Int? = null,\n @XmlSerialName(\"opaque\", WMS_NAMESPACE, WMS_PREFIX)\n val isOpaque: Boolean = false,\n @XmlSerialName(\"noSubsets\", WMS_NAMESPACE, WMS_PREFIX)\n val isNoSubsets: Boolean = false,\n @XmlSerialName(\"fixedWidth\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedWidth: Int? = null,\n @XmlSerialName(\"fixedHeight\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedHeight: Int? = null,\n) {\n val namedLayers: List get() = (name?.let { listOf(this) } ?: emptyList()) + layers.flatMap { layer -> layer.namedLayers }\n val styles: List get() = _styles + (parent?.styles ?: emptyList())\n val referenceSystems: List get() = _referenceSystems + (parent?.referenceSystems ?: emptyList())\n val geographicBoundingBox: Sector? get() = _geographicBoundingBox?.geographicBoundingBox ?: parent?.geographicBoundingBox\n val boundingBoxes get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._boundingBoxes.forEach { bBox -> if (!result.containsKey(bBox.CRS)) result[bBox.CRS] = bBox }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val dimensions get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._dimensions.forEach { dimen -> if (!result.containsKey(dimen.name)) result[dimen.name] = dimen }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val attribution: WmsAttribution? get() = _attribution ?: parent?.attribution\n val authorityUrls: List get() = _authorityUrls + (parent?.authorityUrls ?: emptyList())\n val maxScaleDenominator: Double? get() = _maxScaleDenominator ?: parent?.maxScaleDenominator\n val minScaleDenominator: Double? get() = _minScaleDenominator ?: parent?.minScaleDenominator\n val cascaded: Int? get() = _cascaded ?: parent?.cascaded\n val fixedWidth: Int? get() = _fixedWidth ?: parent?.fixedWidth\n val fixedHeight: Int? get() = _fixedHeight ?: parent?.fixedHeight\n @Transient\n var capability: WmsCapability? = null\n get() = field ?: parent?.capability\n @Transient\n var parent: WmsLayer? = null\n\n init {\n layers.forEach { layer -> layer.parent = this }\n }\n\n fun getStyle(name: String) = styles.firstOrNull { style -> style.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LogoURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLogoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: Set = setOf(),\n val onlineResource: WmsOnlineResource,\n val width: Int? = null,\n val height: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"MetadataURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsMetadataUrl(\n val type: String,\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsOnlineResource(\n @XmlSerialName(\"type\", XLINK_NAMESPACE, XLINK_PREFIX)\n val type: String = \"simple\",\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Request\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsRequest(\n @XmlSerialName(\"GetCapabilities\", WMS_NAMESPACE, WMS_PREFIX)\n val getCapabilities: WmsRequestOperation,\n @XmlSerialName(\"GetMap\", WMS_NAMESPACE, WMS_PREFIX)\n val getMap: WmsRequestOperation,\n @XmlSerialName(\"GetFeatureInfo\", WMS_NAMESPACE, WMS_PREFIX)\n val getFeatureInfo: WmsRequestOperation? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsRequestOperation(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val dcpType: WmsDcpType\n) {\n val getUrl get() = dcpType.getHref\n val postUrl get() = dcpType.postHref\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Service\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsService(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Fees\", WMS_NAMESPACE, WMS_PREFIX)\n val fees: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AccessConstraints\", WMS_NAMESPACE, WMS_PREFIX)\n val accessConstraints: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = listOf(),\n val onlineResource: WmsOnlineResource,\n val contactInformation: WmsContactInformation? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxWidth\", WMS_NAMESPACE, WMS_PREFIX)\n val maxWidth: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxHeight\", WMS_NAMESPACE, WMS_PREFIX)\n val maxHeight: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"LayerLimit\", WMS_NAMESPACE, WMS_PREFIX)\n val layerLimit: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"LegendURL\", WMS_NAMESPACE, WMS_PREFIX)\n val legendUrls: List = emptyList(),\n @XmlSerialName(\"StyleSheetURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleSheetUrl: WmsInfoUrl? = null,\n @XmlSerialName(\"StyleURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleUrl: WmsInfoUrl? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Address\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsAddress(\n @XmlSerialName(\"DeliveryPoint\", OWS11_NAMESPACE, OWS11_PREFIX)\n val deliveryPoints: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"City\", OWS11_NAMESPACE, OWS11_PREFIX)\n val city: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AdministrativeArea\", OWS11_NAMESPACE, OWS11_PREFIX)\n val administrativeArea: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PostalCode\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postalCode: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Country\", OWS11_NAMESPACE, OWS11_PREFIX)\n val country: String? = null,\n @XmlSerialName(\"ElectronicMailAddress\", OWS11_NAMESPACE, OWS11_PREFIX)\n val electronicMailAddresses: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsBoundingBox(\n val crs: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"LowerCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val lowerCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"UpperCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val upperCorner: String\n) {\n val sector get() = try {\n val regex = \"\\\\s+\".toRegex()\n val lowerValues = lowerCorner.split(regex)\n val upperValues = upperCorner.split(regex)\n val minLon = lowerValues[0].toDouble()\n val minLat = lowerValues[1].toDouble()\n val maxLon = upperValues[0].toDouble()\n val maxLat = upperValues[1].toDouble()\n Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n } catch (ex: Exception) {\n Logger.logMessage(\n Logger.ERROR, \"OwsBoundingBox\", \"sector\",\n \"Error parsing bounding box corners, LowerCorner=$lowerCorner UpperCorner=$upperCorner\", ex\n )\n null\n }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlDefault\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Constraint\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsConstraint(\n val name: String,\n @XmlSerialName(\"AllowedValues\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Value\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlDefault(\"AnyValue\")\n val allowedValues: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInfo\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsContactInfo(\n val phone: OwsPhone? = null,\n val address: OwsAddress? = null,\n val onlineResource: OwsOnlineResource? = null,\n @XmlElement(true)\n @XmlSerialName(\"HoursOfService\", OWS11_NAMESPACE, OWS11_PREFIX)\n val hoursOfService: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactInstructions\", OWS11_NAMESPACE, OWS11_PREFIX)\n val contactInstructions: String? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsDcp(\n val http: OwsHttp\n) {\n val getMethods get() = http.getMethods\n val postMethods get() = http.postMethods\n}","package earth.worldwind.ogc.wmts\n\nabstract class OwsDescription {\n abstract val title: String?\n abstract val abstract: String?\n abstract val keywords: List\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"HTTP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsHttp(\n @XmlSerialName(\"Get\", OWS11_NAMESPACE, OWS11_PREFIX)\n val getMethods: List = emptyList(),\n @XmlSerialName(\"Post\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postMethods: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class OwsHttpMethod(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val constraints: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOnlineResource(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Operation\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperation(\n val name: String,\n val dcps: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OperationsMetadata\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperationsMetadata(\n val operations: List = emptyList()\n) {\n val getCapabilities get() = operations.firstOrNull { operation -> operation.name == \"GetCapabilities\" }\n val getTile get() = operations.firstOrNull { operation -> operation.name == \"GetTile\" }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Phone\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsPhone(\n @XmlElement(true)\n @XmlSerialName(\"Voice\", OWS11_NAMESPACE, OWS11_PREFIX)\n val voice: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Facsimile\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fax: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceContact\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceContact(\n @XmlElement(true)\n @XmlSerialName(\"IndividualName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val individualName: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PositionName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val positionName: String? = null,\n val contactInfo: OwsContactInfo? = null,\n @XmlElement(true)\n @XmlSerialName(\"Role\", OWS11_NAMESPACE, OWS11_PREFIX)\n val role: String? = null,\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceIdentification\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceIdentification(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"ServiceType\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceType: String,\n @XmlSerialName(\"ServiceTypeVersion\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceTypeVersions: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Fees\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fees: String? = null,\n @XmlSerialName(\"AccessConstraints\", OWS11_NAMESPACE, OWS11_PREFIX)\n val accessConstraints: List = emptyList(),\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceProvider\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceProvider(\n @XmlElement(true)\n @XmlSerialName(\"ProviderName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val providerName: String,\n @XmlSerialName(\"ProviderSite\", OWS11_NAMESPACE, OWS11_PREFIX)\n val onlineResource: OwsOnlineResource? = null,\n val serviceContact: OwsServiceContact\n) {\n val providerSiteUrl get() = onlineResource?.url\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capabilities\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsCapabilities(\n val version: String,\n val updateSequence: String? = null,\n val serviceIdentification: OwsServiceIdentification? = null,\n val serviceProvider: OwsServiceProvider? = null,\n val operationsMetadata: OwsOperationsMetadata? = null,\n val contents: WmtsContents,\n @XmlSerialName(\"Themes\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val themes: List = emptyList(),\n @XmlSerialName(\"ServiceMetadataURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val serviceMetadataUrls: List = emptyList()\n) {\n val layers get() = contents.layers\n val tileMatrixSets get() = contents.tileMatrixSets\n\n init {\n layers.forEach { layer -> layer.capabilities = this }\n }\n\n fun getLayer(identifier: String) = contents.layers.firstOrNull { layer -> layer.identifier == identifier }\n\n fun getTileMatrixSet(identifier: String) = contents.tileMatrixSets.firstOrNull { tms -> tms.identifier == identifier }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Contents\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsContents(\n val layers: List = emptyList(),\n val tileMatrixSets: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsDimension(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"UOM\", OWS11_NAMESPACE, OWS11_PREFIX)\n val unitOfMeasure: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"UnitSymbol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val unitSymbol: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Default\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val valueDefault: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Current\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val current: Boolean? = null,\n @XmlSerialName(\"Value\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val values: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLayer(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val boundingBoxes: List = emptyList(),\n @XmlSerialName(\"WGS84BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\n val wgs84BoundingBox: OwsBoundingBox? = null,\n @XmlSerialName(\"Metadata\", OWS11_NAMESPACE, OWS11_PREFIX)\n val metadata: List = emptyList(),\n val styles: List = emptyList(),\n @XmlSerialName(\"Format\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val formats: List = emptyList(),\n @XmlSerialName(\"InfoFormat\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val infoFormats: List = emptyList(),\n val tileMatrixSetLinks: List = emptyList(),\n val resourceUrls: List = emptyList(),\n val dimensions: List = emptyList(),\n): OwsDescription() {\n val layerSupportedTileMatrixSets get() = tileMatrixSetLinks.flatMap { link ->\n capabilities.tileMatrixSets.filter { set -> set.identifier == link.identifier }\n }\n @Transient\n lateinit var capabilities: WmtsCapabilities\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LegendURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLegendURL(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val format: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ResourceURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsResourceUrl(\n val format: String,\n val resourceType: String,\n val template: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val isDefault: Boolean = false,\n val legendUrls: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTheme(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val themes: List = emptyList(),\n @XmlSerialName(\"LayerRef\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val layerRefs: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrix(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"ScaleDenominator\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val scaleDenominator: Double,\n @XmlElement(true)\n @XmlSerialName(\"TopLeftCorner\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val topLeftCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"TileWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"TileHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileHeight: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixHeight: Int\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixLimits(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixIdentifier: String,\n @XmlElement(true)\n @XmlSerialName(\"MinTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MinTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileCol: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileCol: Int\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSet(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"SupportedCRS\", OWS11_NAMESPACE, OWS11_PREFIX)\n val supportedCrs: String,\n @XmlElement(true)\n @XmlSerialName(\"WellKnownScaleSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val wellKnownScaleSet: String? = null,\n val boundingBox: OwsBoundingBox? = null,\n val tileMatrices: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSetLink\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSetLink(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val identifier: String,\n @XmlSerialName(\"TileMatrixSetLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixSetLimits: List = emptyList()\n)","package earth.worldwind.render\n\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractRenderable @JvmOverloads constructor(override var displayName: String? = null): Renderable {\n override var isEnabled = true\n override var isPickEnabled = true\n override var pickDelegate: Any? = null\n private var userProperties: MutableMap? = null\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun getUserProperty(key: Any) = userProperties?.get(key) as? T\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) { if (isEnabled && (isPickEnabled || !rc.isPickMode)) doRender(rc) }\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\n\nabstract class AbstractSurfaceRenderable(sector: Sector, displayName: String? = null) : AbstractRenderable(displayName) {\n var sector = Sector(sector)\n set(value) {\n field.copy(value)\n invalidateExtent()\n }\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset ) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n\n protected open fun invalidateExtent() {\n heightLimitsTimestamp = 0L\n extentExaggeration = 0.0f\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Color with red, green, blue and alpha components. Each RGB component is a number between 0.0 and 1.0 indicating the\n * component's intensity. The alpha component is a number between 0.0 (fully transparent) and 1.0 (fully opaque)\n * indicating the color's opacity.\n */\nopen class Color @JvmOverloads constructor(\n /**\n * The color's red component.\n */\n var red: Float,\n /**\n * The color's green component.\n */\n var green: Float,\n /**\n * The color's blue component.\n */\n var blue: Float,\n /**\n * The color's alpha component.\n */\n var alpha: Float = 1f\n) {\n /**\n * Constructs a color with red, green, blue and alpha all 1.0.\n */\n constructor(): this(red = 1f, green = 1f, blue = 1f, alpha = 1f)\n\n /**\n * Constructs a color from integer components\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n @JvmOverloads\n constructor(red: Int, green: Int, blue: Int, alpha: Int = 255): this(\n red = red / 255f,\n green = green / 255f,\n blue = blue / 255f,\n alpha = alpha / 255f\n )\n\n /**\n * Constructs a color with components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the components\n */\n constructor(colorInt: Int): this(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue = blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Constructs a color with the components of a specified color.\n *\n * @param color the color specifying the components\n */\n constructor(color: Color): this(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Sets this color to the specified components.\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n fun set(red: Float, green: Float, blue: Float, alpha: Float) = apply {\n this.red = red\n this.green = green\n this.blue = blue\n this.alpha = alpha\n }\n\n /**\n * Sets this color to the components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the new components\n *\n * @return this color with its components set to those of the specified color int\n */\n fun set(colorInt: Int) = set(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue= blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Sets this color to the components of a specified color.\n *\n * @param color the color specifying the new components\n *\n * @return this color with its components set to that of the specified color\n */\n fun copy(color: Color) = set(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Copies this color's components to the specified array. The result is compatible with GLSL uniform vectors, and\n * can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's components\n */\n fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"toArray\", \"missingArray\")\n }\n result[o++] = red\n result[o++] = green\n result[o++] = blue\n result[o] = alpha\n return result\n }\n\n /**\n * Returns this color's components as a color int. Color ints are stored as packed ints as follows: `(alpha <<\n * 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and 255 with 0\n * indicating the component's intensity.\n *\n * @return this color converted to a color int\n */\n fun toColorInt(): Int {\n val r8 = (red * 0xFF).roundToInt()\n val g8 = (green * 0xFF).roundToInt()\n val b8 = (blue * 0xFF).roundToInt()\n val a8 = (alpha * 0xFF).roundToInt()\n return argb(a8, r8, g8, b8)\n }\n\n /**\n * Convert the argb color to its HSV components.\n * hsv[0] is Hue [0 .. 360)\n * hsv[1] is Saturation [0...1]\n * hsv[2] is Value [0...1]\n * @param hsv 3 element array which holds the resulting HSV components.\n */\n fun toHSV(hsv: FloatArray) {\n val v = red.coerceAtLeast(green).coerceAtLeast(blue)\n val diff = v - red.coerceAtMost(green).coerceAtMost(blue)\n var h: Float\n val s: Float\n if (diff == 0f) {\n h = 0f\n s = 0f\n } else {\n s = diff / v\n val rr = (v - red) / 6f / diff + 1f / 2f\n val gg = (v - green) / 6f / diff + 1f / 2f\n val bb = (v - blue) / 6f / diff + 1f / 2f\n\n h = if (red == v) bb - gg\n else if (green == v) (1f / 3f) + rr - bb\n else if (blue == v) (2f / 3f) + gg - rr\n else 0f\n if (h < 0f) h += 1f else if (h > 1f) h -= 1f\n }\n hsv[0] = h * 360f\n hsv[1] = s\n hsv[2] = v\n }\n\n /**\n * Premultiplies this color in place. The RGB components are multiplied by the alpha component.\n *\n * @return this color with its RGB components multiplied by its alpha component\n */\n fun premultiply() = apply {\n red *= alpha\n green *= alpha\n blue *= alpha\n }\n\n /**\n * Premultiplies the specified color and stores the result in this color. This color's RGB components are set to the\n * product of the specified color's RGB components and its alpha component. This color's alpha component is set to\n * the specified color's alpha.\n *\n * @param color the color with components to premultiply and store in this color\n *\n * @return this color set to the premultiplied components of the specified color\n */\n fun premultiplyColor(color: Color) = apply {\n red = color.red * color.alpha\n green = color.green * color.alpha\n blue = color.blue * color.alpha\n alpha = color.alpha\n }\n\n /**\n * Copies this color's premultiplied components to the specified array. The result is compatible with GLSL uniform\n * vectors, and can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's premultiplied components\n */\n fun premultiplyToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"premultiplyToArray\", \"missingArray\")\n }\n result[o++] = red * alpha\n result[o++] = green * alpha\n result[o++] = blue * alpha\n result[o] = alpha\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Color) return false\n return red == other.red && green == other.green && blue == other.blue && alpha == other.alpha\n }\n\n override fun hashCode(): Int {\n var result = red.hashCode()\n result = 31 * result + green.hashCode()\n result = 31 * result + blue.hashCode()\n result = 31 * result + alpha.hashCode()\n return result\n }\n\n override fun toString() = \"Color(red=$red, green=$green, blue=$blue, alpha=$alpha)\"\n\n /**\n * Returns a string representation of this color, indicating the byte values corresponding to this color's\n * floating-point component values.\n *\n * @returns Byte string\n */\n fun toByteString(): String {\n val rb = (red * 255).roundToInt()\n val gb = (green * 255).roundToInt()\n val bb = (blue * 255).roundToInt()\n val ab = (alpha * 255).roundToInt()\n return \"($rb,$gb,$bb,$ab)\"\n }\n\n /**\n * Create a hex color string that CSS can use. Optionally, inhibit capturing alpha,\n * because some uses reject a four-component color specification.\n *\n * @param isUsingAlpha Enable the use of an alpha component.\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @returns A color string suitable for CSS.\n */\n fun toHexString(isUsingAlpha: Boolean = false, argb: Boolean = false): String {\n // Use Math.ceil() to get 0.75 to map to 0xc0. This is important if the display is dithering.\n val redHex = ceil(red * 255).toInt().toString(16)\n val greenHex = ceil(green * 255).toInt().toString(16)\n val blueHex = ceil(blue * 255).toInt().toString(16)\n val alphaHex = ceil(alpha * 255).toInt().toString(16)\n\n var result = \"#\"\n if (isUsingAlpha && argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n result += if (redHex.length < 2) (\"0$redHex\") else redHex\n result += if (greenHex.length < 2) (\"0$greenHex\") else greenHex\n result += if (blueHex.length < 2) (\"0$blueHex\") else blueHex\n if (isUsingAlpha && !argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n return result\n }\n\n /**\n * Create a rgba color string that conforms to CSS Color Module Level 3 specification.\n * @returns A color string suitable for CSS.\n */\n fun toCssColorString(): String {\n val red = (red * 255).roundToInt()\n val green = (green * 255).roundToInt()\n val blue = (blue * 255).roundToInt()\n\n // Per the CSS Color Module Level 3 specification, alpha is expressed as floating point value between 0 - 1\n return \"rgba($red, $green, $blue, $alpha)\"\n }\n\n companion object {\n /**\n * @param hexString representing hex value\n * (formatted \"0xRRGGBB\" i.e. \"0xFFFFFF\")\n * OR\n * formatted \"0xAARRGGBB\" i.e. \"0x00FFFFFF\" for a color with an alpha value\n * I will also put up with \"RRGGBB\" and \"AARRGGBB\" without the starting \"0x\"\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @return color represented by hex string\n */\n fun fromHexString(hexString: String, argb: Boolean = false): Color {\n val hexValue = when {\n hexString[0] == '#' -> hexString.substring(1)\n hexString.substring(0, 2).equals(\"0x\", true) -> hexString.substring(2)\n else -> hexString\n }.uppercase()\n\n val length = hexValue.length\n\n return if (length == 8 || length == 6) {\n val hexAlphabet = \"0123456789ABCDEF\"\n val value = intArrayOf(0, 0, 0, 0)\n for ((k, i) in (0 until length step 2).withIndex()) {\n val int1 = hexAlphabet.indexOf(hexValue[i])\n val int2 = hexAlphabet.indexOf(hexValue[i + 1])\n value[k] = int1 * 16 + int2\n }\n\n when (length) {\n 8 -> if (argb) Color(value[1],value[2],value[3],value[0]) else Color(value[0],value[1],value[2],value[3])\n 6 -> Color(value[0],value[1],value[2])\n else -> error(\"Bad hex value: $hexString\")\n }\n } else error(\"Bad hex value: $hexString\")\n }\n\n /**\n * Return the alpha component of a color int. This is the same as saying\n * color >>> 24\n */\n private fun alpha(color: Int) = color ushr 24\n\n /**\n * Return the red component of a color int. This is the same as saying\n * (color >> 16) & 0xFF\n */\n private fun red(color: Int) = color shr 16 and 0xFF\n\n /**\n * Return the green component of a color int. This is the same as saying\n * (color >> 8) & 0xFF\n */\n private fun green(color: Int) = color shr 8 and 0xFF\n\n /**\n * Return the blue component of a color int. This is the same as saying\n * color & 0xFF\n */\n private fun blue(color: Int) = color and 0xFF\n\n /**\n * Return a color-int from alpha, red, green, blue components.\n * These component values should be \\([0..255]\\), but there is no\n * range check performed, so if they are out of range, the\n * returned color is undefined.\n * @param alpha Alpha component \\([0..255]\\) of the color\n * @param red Red component \\([0..255]\\) of the color\n * @param green Green component \\([0..255]\\) of the color\n * @param blue Blue component \\([0..255]\\) of the color\n */\n private fun argb(alpha: Int, red: Int, green: Int, blue: Int) = alpha shl 24 or (red shl 16) or (green shl 8) or blue\n }\n}","package earth.worldwind.render\n\nenum class FontWeight { NORMAL, BOLD, ITALIC }","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.*\n\nopen class Framebuffer : RenderResource {\n protected var framebufferName = KglFramebuffer.NONE\n protected val attachedTextures = mutableMapOf()\n\n override fun release(dc: DrawContext) {\n if (framebufferName.isValid()) {\n deleteFramebuffer(dc)\n attachedTextures.clear()\n }\n }\n\n fun bindFramebuffer(dc: DrawContext): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) dc.bindFramebuffer(framebufferName)\n return framebufferName.isValid()\n }\n\n fun attachTexture(dc: DrawContext, texture: Texture, attachment: Int): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) {\n framebufferTexture(dc, texture, attachment)\n attachedTextures[attachment] = texture\n }\n return framebufferName.isValid()\n }\n\n fun getAttachedTexture(attachment: Int) = attachedTextures[attachment] ?: error(\"Invalid attachment type\")\n\n fun isFramebufferComplete(dc: DrawContext) = framebufferStatus(dc) == GL_FRAMEBUFFER_COMPLETE\n\n protected open fun createFramebuffer(dc: DrawContext) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Create the OpenGL framebuffer object.\n framebufferName = dc.gl.createFramebuffer()\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, framebufferName)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer)\n }\n }\n\n protected open fun deleteFramebuffer(dc: DrawContext) {\n dc.gl.deleteFramebuffer(framebufferName)\n framebufferName = KglFramebuffer.NONE\n }\n\n protected open fun framebufferTexture(dc: DrawContext, texture: Texture?, attachment: Int) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Attach the texture to the framebuffer object, or remove the attachment if the texture is null.\n val textureName = texture?.getTextureName(dc) ?: KglTexture.NONE\n dc.gl.framebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, textureName, 0 /*level*/)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n\n protected open fun framebufferStatus(dc: DrawContext): Int {\n val currentFramebuffer = dc.currentFramebuffer\n return try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Get the OpenGL framebuffer object status code.\n dc.gl.checkFramebufferStatus(GL_FRAMEBUFFER)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.draw.DrawableTerrain\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.AltitudeMode.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.shape.TextAttributes\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.SynchronizedPool\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.math.tan\n\nopen class RenderContext {\n companion object {\n private const val MAX_PICKED_OBJECT_ID = 0xFFFFFF\n }\n\n lateinit var globe: Globe\n lateinit var terrainTessellator: Tessellator\n lateinit var terrain: Terrain\n lateinit var layers: LayerList\n lateinit var currentLayer: Layer\n lateinit var camera: Camera\n lateinit var renderResourceCache: RenderResourceCache\n var densityFactor = 1f\n var verticalExaggeration = 1.0\n var horizonDistance = 0.0\n var atmosphereAltitude = 0.0\n var viewingDistance = 0.0\n var pixelSize = 0.0\n var lookAtPosition: Position? = null\n var globeState: Globe.State? = null\n var elevationModelTimestamp = 0L\n var cameraPoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n val frustum = Frustum()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n var isRedrawRequested = false\n protected set\n private var pickedObjectId = 0\n private var pixelSizeFactor = 0.0\n private val userProperties = mutableMapOf()\n val drawablePools = mutableMapOf>()\n private val textRenderer = TextRenderer(this)\n private val scratchTextCacheKey = TextCacheKey()\n private val scratchVector = Vec3()\n\n val tessellator: GLUtessellator by lazy { GLU.gluNewTess() }\n\n open fun reset() {\n densityFactor = 1f\n verticalExaggeration = 1.0\n horizonDistance = 0.0\n atmosphereAltitude = 0.0\n viewingDistance = 0.0\n pixelSize = 0.0\n lookAtPosition = null\n globeState = null\n elevationModelTimestamp = 0L\n cameraPoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n frustum.setToUnitFrustum()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pickedObjectId = 0\n isRedrawRequested = false\n pixelSizeFactor = 0.0\n userProperties.clear()\n }\n\n fun requestRedraw() { isRedrawRequested = true }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n fun pixelSizeAtDistance(distance: Double): Double {\n if (pixelSizeFactor == 0.0) { // cache the scaling factor used to convert distances to pixel sizes\n val fov = camera.fieldOfView\n val tanFov2 = tan(fov.inRadians * 0.5)\n pixelSizeFactor = 2 * tanFov2 / viewport.height\n }\n return distance * pixelSizeFactor\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. The resultant screen point is in OpenGL screen coordinates,\n * with the origin in the bottom-left corner and axes that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param modelPoint the Cartesian point to project\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(modelPoint: Vec3, result: Vec3): Boolean {\n // TODO consider consolidating this with Matrix4.project and moving projectWithDepth to Matrix4\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This\n // inverts the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelviewProjection.m\n var x = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n var y = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n var z = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val w = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates, applying an offset to the point's projected depth value. The\n * resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes that\n * extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *
\n * The depth offset may be any real number and is typically used to move the screenPoint slightly closer to the\n * user's eye in order to give it visual priority over nearby objects or terrain. An offset of zero has no effect.\n * An offset less than zero brings the screenPoint closer to the eye, while an offset greater than zero pushes the\n * projected screen point away from the eye.\n *
\n * Applying a non-zero depth offset has no effect on whether the model point is clipped by this method or by WebGL.\n * Clipping is performed on the original model point, ignoring the depth offset. The final depth value after\n * applying the offset is clamped to the range [0,1].\n *\n * @param modelPoint the Cartesian point to project\n * @param depthOffset the amount of depth offset to apply\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun projectWithDepth(modelPoint: Vec3, depthOffset: Double, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates. The eye coordinate and the clip\n // coordinate are transformed separately in order to reuse the eye coordinate below.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelview.m\n val ex = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n val ey = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n val ez = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val ew = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n\n // Transform the point from eye coordinates to clip coordinates.\n val p = projection.m\n var x = p[0] * ex + p[1] * ey + p[2] * ez + p[3] * ew\n var y = p[4] * ex + p[5] * ey + p[6] * ez + p[7] * ew\n var z = p[8] * ex + p[9] * ey + p[10] * ez + p[11] * ew\n val w = p[12] * ex + p[13] * ey + p[14] * ez + p[15] * ew\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Transform the Z eye coordinate to clip coordinates again, this time applying a depth offset. The depth\n // offset is applied only to the matrix element affecting the projected Z coordinate, so we inline the\n // computation here instead of re-computing X, Y, Z and W in order to improve performance. See\n // Matrix4.offsetProjectionDepth for more information on the effect of this offset.\n z = p[8] * ex + p[9] * ey + p[10] * ez * (1 + depthOffset) + p[11] * ew\n z /= w\n\n // Clamp the point to the near and far clip planes. We know the point's original Z value is contained within\n // the clip planes, so we limit its offset z value to the range [-1, 1] in order to ensure it is not clipped\n // by WebGL. In clip coordinates the near and far clip planes are perpendicular to the Z axis and are\n // located at -1 and 1, respectively.\n z = z.coerceIn(-1.0, 1.0)\n\n // Convert the point from clip coordinates to the range [0, 1]. This enables the XY coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range [0, 1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Converts a geographic [Position] to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param position the specified position\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n position: Position, altitudeMode: AltitudeMode, result: Vec3\n ) = geographicToCartesian(position.latitude, position.longitude, position.altitude, altitudeMode, result)\n\n /**\n * Converts a geographic position to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode, result: Vec3\n ): Vec3 {\n when (altitudeMode) {\n ABSOLUTE -> globe.geographicToCartesian(latitude, longitude, altitude * verticalExaggeration, result)\n CLAMP_TO_GROUND -> if (!terrain.surfacePoint(latitude, longitude, result)) globe.run {\n // Use elevation model height as a fallback\n val elevation = getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n RELATIVE_TO_GROUND -> if (terrain.surfacePoint(latitude, longitude, result)) {\n // Offset along the normal vector at the terrain surface point.\n if (altitude != 0.0) globe.geographicToCartesianNormal(latitude, longitude, scratchVector).also {\n result.add(scratchVector.multiply(altitude))\n }\n } else globe.run {\n // Use elevation model height as a fallback\n val elevation = altitude + getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n }\n return result\n }\n\n // TODO redesign ShaderProgram to operate as a resource accessible from DrawContext\n // TODO created automatically on OpenGL thread, unless the caller wants to explicitly create a program\n inline fun getShaderProgram(builder: () -> T): T {\n val key = T::class\n return renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.programLength) } } as T\n }\n\n fun getTexture(imageSource: ImageSource, imageOptions: ImageOptions?, retrieve: Boolean = true) =\n renderResourceCache.run { get(imageSource) ?: if (retrieve) retrieveTexture(imageSource, imageOptions) else null } as Texture?\n\n inline fun getBufferObject(key: Any, builder: () -> T) =\n renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.byteCount) } } as T\n\n fun getText(text: String?, attributes: TextAttributes, render: Boolean = true) = renderResourceCache.run {\n scratchTextCacheKey.text = text\n scratchTextCacheKey.attributes = attributes\n // Use scratch key on get operation to avoid unnecessary object creation on each text render on each frame\n get(scratchTextCacheKey) as Texture? ?: if (render) textRenderer.renderText(text, attributes)?.also {\n // Use new text cache key and copy attributes on put operation to avoid cache issues on attributes modification\n put(TextCacheKey(text, TextAttributes(attributes)), it, it.byteCount)\n } else null\n }\n\n fun offerBackgroundDrawable(drawable: Drawable) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.BACKGROUND, 0.0)\n }\n\n fun offerSurfaceDrawable(drawable: Drawable, zOrder: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SURFACE, zOrder)\n }\n\n fun offerShapeDrawable(drawable: Drawable, cameraDistance: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SHAPE, -cameraDistance) // order by descending distance to the viewer\n }\n\n fun offerDrawableTerrain(drawable: DrawableTerrain, sortOrder: Double) {\n drawableTerrain?.offerDrawable(drawable, DrawableGroup.SURFACE, sortOrder)\n }\n\n fun sortDrawables() {\n drawableQueue?.sortDrawables()\n drawableTerrain?.sortDrawables()\n }\n\n val drawableCount get() = drawableQueue?.count ?: 0\n\n @Suppress(\"UNCHECKED_CAST\")\n inline fun getDrawablePool(): Pool {\n val key = T::class\n // use SynchronizedPool; acquire and are release may be called in separate threads\n return drawablePools[key] as Pool? ?: SynchronizedPool().also { drawablePools[key] = it }\n }\n\n fun offerPickedObject(pickedObject: PickedObject) { pickedObjects?.offerPickedObject(pickedObject) }\n\n fun nextPickedObjectId(): Int {\n if (++pickedObjectId > MAX_PICKED_OBJECT_ID) pickedObjectId = 1\n return pickedObjectId\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun getUserProperty(key: Any) = userProperties[key] as? T\n\n fun putUserProperty(key: Any, value: Any) = userProperties.put(key, value)\n\n fun removeUserProperty(key: Any) = userProperties.remove(key)\n\n fun hasUserProperty(key: Any) = userProperties.containsKey(key)\n\n protected data class TextCacheKey(\n var text: String? = null,\n var attributes: TextAttributes? = null\n )\n}","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport earth.worldwind.util.math.powerOfTwoCeiling\n\nopen class Texture(val width: Int, val height: Int, protected val format: Int, protected val type: Int, protected val isRT: Boolean = false) : RenderResource {\n companion object {\n protected fun estimateByteCount(width: Int, height: Int, format: Int, type: Int, hasMipMap: Boolean): Int {\n require(width >= 0 && height >= 0) {\n logMessage(ERROR, \"Texture\", \"estimateByteCount\", \"invalidWidthOrHeight\")\n }\n // Compute the number of bytes per row of texture image level 0. Use a default of 32 bits per pixel when either\n // of the bitmap's type or internal format are unrecognized. Adjust the width to the next highest power-of-two\n // to better estimate the memory consumed by non-power-of-two images.\n val widthPow2 = powerOfTwoCeiling(width)\n val bytesPerRow = when (type) {\n GL_UNSIGNED_BYTE -> when (format) {\n GL_ALPHA, GL_LUMINANCE -> widthPow2 // 8 bits per pixel\n GL_LUMINANCE_ALPHA -> widthPow2 * 2 // 16 bits per pixel\n GL_RGB -> widthPow2 * 3 // 24 bits per pixel\n GL_RGBA -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT_5_6_5,\n GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1 -> widthPow2 * 2 // 16 bits per pixel\n GL_UNSIGNED_INT -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n\n // Compute the number of bytes for the entire texture image level 0 (i.e. bytePerRow * numRows). Adjust the\n // height to the next highest power-of-two to better estimate the memory consumed by non power-of-two images.\n val heightPow2 = powerOfTwoCeiling(height)\n var byteCount = bytesPerRow * heightPow2\n\n // If the texture will have mipmaps, add 1/3 to account for the bytes used by texture image level 1 through\n // texture image level N.\n if (hasMipMap) byteCount += byteCount / 3\n return byteCount\n }\n }\n\n val coordTransform = Matrix3()\n val byteCount get() = estimateByteCount(width, height, format, type, hasMipMap)\n protected var name = KglTexture.NONE\n protected var parameters: MutableMap? = null\n protected open val hasMipMap = false\n private var pickMode = false\n\n fun getTexParameter(name: Int) = parameters?.get(name)?:0\n\n fun setTexParameter(name: Int, param: Int) {\n val parameters = parameters ?: mutableMapOf().also { parameters = it }\n parameters[name] = param\n }\n\n override fun release(dc: DrawContext) {\n if (name.isValid()) deleteTexture(dc)\n }\n\n fun getTextureName(dc: DrawContext): KglTexture {\n if (!name.isValid()) createTexture(dc)\n return name\n }\n\n fun bindTexture(dc: DrawContext): Boolean {\n if (!name.isValid()) createTexture(dc)\n if (name.isValid()) dc.bindTexture(name)\n if (name.isValid() && pickMode != dc.isPickMode) {\n setTexParameters(dc)\n pickMode = dc.isPickMode\n }\n return name.isValid()\n }\n\n protected open fun createTexture(dc: DrawContext) {\n val currentTexture = dc.currentTexture\n try {\n // Create the OpenGL texture 2D object.\n name = dc.gl.createTexture()\n dc.gl.bindTexture(GL_TEXTURE_2D, name)\n\n // Specify the texture object's image data\n allocTexImage(dc)\n\n // Configure the texture object's parameters.\n setTexParameters(dc)\n } finally {\n // Restore the current OpenGL texture object binding.\n dc.gl.bindTexture(GL_TEXTURE_2D, currentTexture)\n }\n }\n\n protected open fun deleteTexture(dc: DrawContext) {\n dc.gl.deleteTexture(name)\n name = KglTexture.NONE\n }\n\n protected open fun allocTexImage(dc: DrawContext) {\n // Following line of code is a dirty hack to disable AFBC compression on Mali GPU driver,\n // which cause huge memory leak during surface shapes drawing on terrain textures.\n if (isRT and dc.gl.hasMaliOOMBug) dc.gl.texImage2D(GL_TEXTURE_2D, 0, format, 1, 1, 0, format, type, null)\n\n // Allocate texture memory for the OpenGL texture 2D object. The texture memory is initialized with 0.\n dc.gl.texImage2D(\n GL_TEXTURE_2D, 0 /*level*/, format, width, height, 0 /*border*/, format, type, null /*pixels*/\n )\n }\n\n // TODO refactor setTexParameters to apply all configured tex parameters\n // TODO apply defaults only when no parameter is configured\n // TODO consider simplifying the defaults and requiring that layers/shapes specify what they want\n protected open fun setTexParameters(dc: DrawContext) {\n var param: Int\n\n // Configure the OpenGL texture minification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MIN_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param)\n else -> dc.gl.texParameteri(\n GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, if (hasMipMap) GL_LINEAR_MIPMAP_LINEAR else GL_LINEAR\n )\n }\n\n // Configure the OpenGL texture magnification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MAG_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param)\n else -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)\n }\n\n // Configure the OpenGL texture wrapping function for texture coordinate S. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_S).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)\n\n // Configure the OpenGL texture wrapping function for texture coordinate T. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_T).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Range\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.KglBuffer\n\nabstract class AbstractBufferObject(protected val target: Int, val byteCount: Int) : RenderResource {\n val ranges = mutableMapOf()\n protected var id = KglBuffer.NONE\n\n override fun release(dc: DrawContext) { deleteBufferObject(dc) }\n\n open fun bindBuffer(dc: DrawContext): Boolean {\n if (id.isValid()) dc.bindBuffer(target, id)\n return id.isValid()\n }\n\n protected open fun loadBuffer(dc: DrawContext) {\n val currentBuffer = dc.currentBuffer(target)\n try {\n // Create the OpenGL buffer object.\n if (!id.isValid()) createBufferObject(dc)\n // Make the OpenGL buffer object bound to the specified target.\n dc.bindBuffer(target, id)\n // Load the current NIO buffer as the OpenGL buffer object's data.\n loadBufferObjectData(dc)\n } catch (e: Exception) {\n // The NIO buffer could not be used as buffer data for an OpenGL buffer object. Delete the buffer object\n // to ensure that calls to bindBuffer fail.\n deleteBufferObject(dc)\n logMessage(\n ERROR, \"BufferObject\", \"loadBuffer\", \"Exception attempting to load buffer data\", e\n )\n } finally {\n // Restore the current OpenGL buffer object binding.\n dc.bindBuffer(target, currentBuffer)\n }\n }\n\n protected open fun createBufferObject(dc: DrawContext) { id = dc.gl.createBuffer() }\n\n protected open fun deleteBufferObject(dc: DrawContext) {\n if (id.isValid()) {\n dc.gl.deleteBuffer(id)\n id = KglBuffer.NONE\n }\n }\n\n protected abstract fun loadBufferObjectData(dc: DrawContext)\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.util.kgl.KglBuffer\nimport earth.worldwind.draw.DrawContext\n\nopen class BufferPool(\n protected val target: Int,\n protected val usage: Int,\n protected val blockSize: Int = DEFAULT_BLOCK_SIZE,\n protected val blockCount: Int = DEFAULT_BLOCK_COUNT\n) {\n protected val buffers = Array(blockCount) { KglBuffer.NONE }\n protected var index = 0\n protected var offset = 0\n\n fun reset() {\n index = 0\n offset = 0\n }\n\n fun contextLost() {\n reset()\n buffers.fill(KglBuffer.NONE)\n }\n\n open fun bindBuffer(dc: DrawContext, sourceData: FloatArray): Int {\n if (blockSize < sourceData.size * Float.SIZE_BYTES) return -1\n if (!buffers[index].isValid() && !appendBuffer(dc)) return -1\n\n if (!enoughSpace(sourceData)) {\n index = (index + 1) % blockCount;\n if (!appendBuffer(dc)) return -1\n }\n\n dc.gl.bindBuffer(target, buffers[index])\n\n return subAllocAndPopulate(dc, sourceData)\n }\n\n private fun enoughSpace(sourceData: FloatArray) = offset + sourceData.size * Float.SIZE_BYTES <= blockSize\n\n private fun appendBuffer(dc: DrawContext): Boolean {\n if (!buffers[index].isValid() && !allocNewBuffer(dc)) return false\n offset = 0\n return true\n }\n\n private fun allocNewBuffer(dc: DrawContext): Boolean {\n val id = dc.gl.createBuffer()\n if (!id.isValid()) return false\n dc.gl.bindBuffer(target, id)\n dc.gl.bufferData(target, blockSize, null as FloatArray?, usage) // Only reserve memory\n dc.gl.bindBuffer(target, KglBuffer.NONE)\n buffers[index] = id\n return id.isValid()\n }\n\n private fun subAllocAndPopulate(dc: DrawContext, sourceData: FloatArray): Int {\n val bufferSize = sourceData.size * Float.SIZE_BYTES\n if (offset + bufferSize > blockSize) return -1\n dc.gl.bufferSubData(target, offset, bufferSize, sourceData) // Update part of the buffer\n val result = offset\n offset += bufferSize\n return result\n }\n\n companion object {\n const val DEFAULT_BLOCK_SIZE = 64 * 1024 // 64 KB\n const val DEFAULT_BLOCK_COUNT = 64\n }\n}\n","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class FloatBufferObject(\n target: Int, array: FloatArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Float.SIZE_BYTES) {\n protected var array: FloatArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class IntBufferObject(\n target: Int, array: IntArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Int.SIZE_BYTES) {\n protected var array: IntArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class ShortBufferObject(\n target: Int, array: ShortArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Short.SIZE_BYTES) {\n protected var array: ShortArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.image\n\n/**\n * Image config indicates the in-memory representation for images displayed by WorldWind components. Images are\n * typically represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do\n * not require an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration.\n * Accepted values are [RGBA_8888] and [RGB_565].\n */\nenum class ImageConfig {\n /**\n * Indicating 32-bit RGBA_8888 image configuration.\n */\n RGBA_8888,\n /**\n * Indicating 16-bit RGBA_565 image configuration.\n */\n RGB_565;\n}","package earth.worldwind.render.image\n\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Options for images displayed by WorldWind components.\n */\nopen class ImageOptions @JvmOverloads constructor(\n /**\n * Indicates the in-memory configuration for images displayed by WorldWind components. By default, images are\n * represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do not require\n * an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration. Accepted values are\n * [ImageConfig.RGBA_8888] and [ImageConfig.RGB_565].\n */\n var imageConfig: ImageConfig = ImageConfig.RGBA_8888\n) {\n /**\n * Indicates the image sampling algorithm used by WorldWind to display images that appear larger or smaller on\n * screen than their native resolution. Accepted values are [ResamplingMode.BILINEAR] and [ResamplingMode.NEAREST_NEIGHBOR].\n */\n var resamplingMode = ResamplingMode.BILINEAR\n /**\n * Indicates how WorldWind displays the contents of an image when attempting to draw a region outside of the image\n * bounds. Accepted values are [WrapMode.CLAMP] and [WrapMode.REPEAT].\n */\n var wrapMode = WrapMode.CLAMP\n /**\n * Initial width for image that has no dimensions (e.g. SVG image)\n */\n var initialWidth = 0\n /**\n * Initial height for image that has no dimensions (e.g. SVG image)\n */\n var initialHeight = 0\n}","package earth.worldwind.render.image\n\n/**\n * Resampling mode indicates the image sampling algorithm used by WorldWind to display images that appear larger or\n * smaller on screen than their native resolution. Accepted values are [BILINEAR] and [NEAREST_NEIGHBOR].\n */\nenum class ResamplingMode {\n /**\n * Indicating bilinear image sampling.\n */\n BILINEAR,\n /**\n * Indicating nearest neighbor image sampling.\n */\n NEAREST_NEIGHBOR;\n}","package earth.worldwind.render.image\n\n/**\n * Wrap mode indicates how WorldWind displays the contents of an image when attempting to draw a region outside of\n * the image bounds. Accepted values are [CLAMP] and [REPEAT].\n */\nenum class WrapMode {\n /**\n * Indicating that the image's edge pixels should be displayed outside of the image bounds.\n */\n CLAMP,\n /**\n * Indicating that the image should display as a repeating pattern outside of the image bounds.\n */\n REPEAT;\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\n\n/**\n * Represents an OpenGL shading language (GLSL) shader program and provides methods for identifying and accessing shader\n * variables. Shader programs are configured by calling `setProgramSources` to specify the the GLSL vertex\n * shader and fragment shader source code, then made current by calling `useProgram`.\n */\nabstract class AbstractShaderProgram: RenderResource {\n companion object {\n protected const val VERTEX_SHADER = 0\n protected const val FRAGMENT_SHADER = 1\n }\n\n protected abstract var programSources: Array\n protected abstract val attribBindings: Array\n protected lateinit var gl : Kgl\n private set\n /**\n * Indicates the approximate size of the OpenGL resources referenced by this GPU program.\n */\n val programLength get() = programSources.sumOf{str -> str.length}\n\n /**\n * Indicates the OpenGL program object associated with this GPU program.\n */\n protected var program = KglProgram.NONE\n protected var mustBuildProgram = true\n\n override fun release(dc: DrawContext) = deleteProgram(dc)\n\n fun useProgram(dc: DrawContext): Boolean {\n if (mustBuildProgram) {\n // Clear the program's build dirty bit.\n mustBuildProgram = false\n\n // Remove any existing GLSL program.\n if (program.isValid()) deleteProgram(dc)\n\n // Compile and link the GLSL program sources.\n buildProgram(dc)\n\n // Free memory, occupied by program sources\n programSources = emptyArray()\n\n // Give subclasses an opportunity to initialize default GLSL uniform values.\n if (program.isValid()) {\n val currentProgram = dc.currentProgram\n try {\n dc.useProgram(program)\n initProgram(dc)\n } finally {\n dc.useProgram(currentProgram)\n }\n }\n }\n if (program.isValid()) dc.useProgram(program)\n return program.isValid()\n }\n\n protected open fun buildProgram(dc: DrawContext) {\n val vs = dc.gl.createShader(GL_VERTEX_SHADER)\n dc.gl.shaderSource(vs, programSources[VERTEX_SHADER])\n dc.gl.compileShader(vs)\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(vs)\n dc.gl.deleteShader(vs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL vertex shader \\n$msg\"\n )\n return\n }\n val fs = dc.gl.createShader(GL_FRAGMENT_SHADER)\n dc.gl.shaderSource(fs, programSources[FRAGMENT_SHADER])\n dc.gl.compileShader(fs)\n\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(fs)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL fragment shader \\n$msg\"\n )\n return\n }\n val program = dc.gl.createProgram()\n dc.gl.attachShader(program, vs)\n dc.gl.attachShader(program, fs)\n for (i in attribBindings.indices) dc.gl.bindAttribLocation(program, i, attribBindings[i])\n dc.gl.linkProgram(program)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n if (dc.gl.getProgramParameteri(program, GL_LINK_STATUS) != GL_TRUE) {\n val msg = dc.gl.getProgramInfoLog(program)\n dc.gl.deleteProgram(program)\n logMessage(ERROR, \"ShaderProgram\", \"buildProgram\", \"Error linking GL program \\n$msg\")\n return\n }\n this.program = program\n }\n\n protected open fun initProgram(dc: DrawContext) { gl = dc.gl }\n\n protected open fun deleteProgram(dc: DrawContext) {\n if (program.isValid()) {\n dc.gl.deleteProgram(program)\n program = KglProgram.NONE\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class BasicShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n\n void main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class SightlineProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform mat4 slpMatrix[2];\n\n attribute vec4 vertexPoint;\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n uniform highp sampler2D depthSampler;\n #else\n precision mediump float;\n uniform mediump sampler2D depthSampler;\n #endif\n\n uniform float range;\n uniform vec4 color[2];\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n const vec3 minusOne = vec3(-1.0, -1.0, -1.0);\n const vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\n void main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var slpMatrixId = KglUniformLocation.NONE\n protected var rangeId = KglUniformLocation.NONE\n protected var depthSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n private val array = FloatArray(32)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n slpMatrixId = gl.getUniformLocation(program, \"slpMatrix\")\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n rangeId = gl.getUniformLocation(program, \"range\")\n gl.uniform1f(rangeId, 0f)\n colorId = gl.getUniformLocation(program, \"color\")\n gl.uniform4f(colorId, 1f, 1f, 1f, 1f)\n depthSamplerId = gl.getUniformLocation(program, \"depthSampler\")\n gl.uniform1i(depthSamplerId, 0) // GL_TEXTURE0\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadSightlineProjection(projection: Matrix4, sightline: Matrix4) {\n projection.transposeToArray(array, 0)\n sightline.transposeToArray(array, 16)\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n }\n\n fun loadRange(range: Float) {\n gl.uniform1f(rangeId, range)\n }\n\n fun loadColor(visibleColor: Color, occludedColor: Color) {\n visibleColor.premultiplyToArray(array, 0)\n occludedColor.premultiplyToArray(array, 4)\n gl.uniform4fv(colorId, 2, array, 0)\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating surface tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform\n// TODO index to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class SurfaceTextureProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix[2];\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n val texCoordMatrix = arrayOf(Matrix3(), Matrix3())\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n private val texCoordMatrixArray = FloatArray(9 * 2)\n private val color = Color()\n private var opacity = 1.0f\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, 0) // disable pick mode\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, 0) // disable texture\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(texCoordMatrixArray, 0) // 3 x 3 identity matrix\n Matrix3().transposeToArray(texCoordMatrixArray, 9) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n color.set(1f, 1f, 1f, 1f) // opaque white\n gl.uniform4f(colorId, color.red, color.green, color.blue, color.alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) { gl.uniform1i(enablePickModeId, if (enable) 1 else 0) }\n\n fun enableTexture(enable: Boolean) { gl.uniform1i(enableTextureId, if (enable) 1 else 0) }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun loadTexCoordMatrix() {\n texCoordMatrix[0].transposeToArray(texCoordMatrixArray, 0)\n texCoordMatrix[1].transposeToArray(texCoordMatrixArray, 9)\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class TriangleShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform float lineWidth;\n uniform float invMiterLengthCutoff;\n uniform vec2 screen;\n uniform bool enableTexture;\n uniform bool enableOneVertexMode;\n uniform mat3 texCoordMatrix;\n \n attribute vec4 pointA;\n attribute vec4 pointB;\n attribute vec4 pointC;\n attribute vec2 vertexTexCoord;\n \n varying vec2 texCoord;\n \n void main() {\n if (enableOneVertexMode) {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vec4(pointA.xyz, 1.0);\n } else {\n /* Transform the vertex position by the modelview-projection matrix. */\n vec4 pointAScreen = mvpMatrix * vec4(pointA.xyz, 1);\n vec4 pointBScreen = mvpMatrix * vec4(pointB.xyz, 1);\n vec4 pointCScreen = mvpMatrix * vec4(pointC.xyz, 1);\n float corner = pointB.w;\n \n pointAScreen = pointAScreen / pointAScreen.w;\n pointBScreen = pointBScreen / pointBScreen.w;\n pointCScreen = pointCScreen / pointCScreen.w;\n \n vec2 eps = vec2(2.0 / screen.x, 2.0 / screen.y);\n eps *= 0.1;\n \n if (all(lessThanEqual(abs(pointBScreen.xy - pointAScreen.xy), eps))) {\n pointAScreen.xy = pointBScreen.xy + normalize(pointBScreen.xy - pointCScreen.xy);\n }\n if (all(lessThanEqual(abs(pointBScreen.xy - pointCScreen.xy), eps))) {\n pointCScreen.xy = pointBScreen.xy + normalize(pointBScreen.xy - pointAScreen.xy);\n }\n if (all(lessThanEqual(abs(pointAScreen.xy - pointCScreen.xy), eps))) {\n pointCScreen.xy = pointBScreen.xy + normalize(pointBScreen.xy - pointAScreen.xy);\n }\n \n vec2 AB = normalize(normalize(pointBScreen.xy - pointAScreen.xy) * screen);\n vec2 BC = normalize(normalize(pointCScreen.xy - pointBScreen.xy) * screen);\n vec2 tangent = normalize(AB + BC);\n \n vec2 miter = vec2(-tangent.y, tangent.x);\n vec2 normalA = vec2(-AB.y, AB.x);\n float miterLength = 1.0 / max(dot(miter, normalA), invMiterLengthCutoff);\n \n gl_Position = pointBScreen;\n gl_Position.xy = gl_Position.xy + (corner * miter * lineWidth * miterLength) / screen.xy;\n }\n \n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n \n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n \n varying vec2 texCoord;\n \n void main() {\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"pointA\", \"pointB\", \"pointC\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected var enableOneVertexMode = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var lineWidth = 1.0f\n protected var invMiterLengthCutoff = 1 / 5.0f // shouldn't be greater than 1.0 or equal 0.0\n protected var screenX = 0.0f\n protected var screenY = 0.0f\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n protected var lineWidthId = KglUniformLocation.NONE\n protected var invMiterLengthCutoffId = KglUniformLocation.NONE\n protected var screenId = KglUniformLocation.NONE\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var enableOneVertexModeId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n lineWidthId = gl.getUniformLocation(program, \"lineWidth\")\n gl.uniform1f(lineWidthId, lineWidth)\n invMiterLengthCutoffId = gl.getUniformLocation(program, \"invMiterLengthCutoff\")\n gl.uniform1f(invMiterLengthCutoffId, invMiterLengthCutoff)\n screenId = gl.getUniformLocation(program, \"screen\")\n gl.uniform2f(screenId, screenX, screenY)\n\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n enableOneVertexModeId = gl.getUniformLocation(program, \"enableOneVertexMode\")\n gl.uniform1i(enableOneVertexModeId, if (enableOneVertexMode) 1 else 0)\n\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n fun enableOneVertexMode(enable: Boolean) {\n if (enableOneVertexMode != enable) {\n enableOneVertexMode = enable\n gl.uniform1i(enableOneVertexModeId, if (enable) 1 else 0)\n }\n }\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n\n fun loadLineWidth(lineWidth : Float) {\n if (this.lineWidth != lineWidth) {\n this.lineWidth = lineWidth\n gl.uniform1f(lineWidthId, lineWidth)\n }\n }\n\n fun loadMiterLengthCutoff(miterLengthCutoff : Float) {\n if (this.invMiterLengthCutoff != 1.0f / miterLengthCutoff) {\n this.invMiterLengthCutoff = 1.0f / miterLengthCutoff\n gl.uniform1f(invMiterLengthCutoffId, invMiterLengthCutoff)\n }\n }\n\n fun loadScreen(screenX : Float, screenY : Float) {\n if ((this.screenX != screenX) and (this.screenY != screenY) ) {\n this.screenX = screenX\n this.screenY = screenY\n gl.uniform2f(screenId, this.screenX, this.screenY)\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport kotlin.math.sqrt\n\nabstract class AbstractShape(override var attributes: ShapeAttributes): AbstractRenderable(), Attributable, Highlightable {\n companion object {\n const val NEAR_ZERO_THRESHOLD = 1.0e-10\n }\n\n var altitudeMode = AltitudeMode.ABSOLUTE\n set(value) {\n field = value\n reset()\n }\n var pathType = PathType.GREAT_CIRCLE\n set(value) {\n field = value\n reset()\n }\n /**\n * Draw sides of the shape which extend from the defined position and altitude to the ground.\n */\n var isExtrude = false\n set(value) {\n field = value\n reset()\n }\n /**\n * Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.\n */\n var isFollowTerrain = false\n set(value) {\n field = value\n reset()\n }\n override var highlightAttributes: ShapeAttributes? = null\n override var isHighlighted = false\n var maximumIntermediatePoints = 10\n protected lateinit var activeAttributes: ShapeAttributes\n protected var isSurfaceShape = false\n protected var lastGlobeState: Globe.State? = null\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n protected val boundingSector = Sector()\n protected val boundingBox = BoundingBox()\n private val scratchPoint = Vec3()\n\n override fun doRender(rc: RenderContext) {\n checkGlobeState(rc)\n if (!isWithinProjectionLimits(rc)) return\n\n // Don't render anything if the shape is not visible.\n if (!intersectsFrustum(rc)) return\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this shape has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = rc.globe.is2D || altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the shape's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Indicates whether this shape is within the current globe's projection limits. Subclasses may implement\n * this method to perform the test. The default implementation returns true.\n * @param rc The current render context.\n * @returns true if this shape is within or intersects the current globe's projection limits, otherwise false.\n */\n protected open fun isWithinProjectionLimits(rc: RenderContext) = true\n\n protected open fun intersectsFrustum(rc: RenderContext) =\n (boundingBox.isUnitBox || boundingBox.intersectsFrustum(rc.frustum)) &&\n // This is a temporary solution. Surface shapes should also use bounding box.\n (boundingSector.isEmpty || boundingSector.intersects(rc.terrain.sector))\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun cameraDistanceGeographic(rc: RenderContext, boundingSector: Sector): Double {\n val lat = rc.camera.position.latitude.inDegrees.coerceIn(\n boundingSector.minLatitude.inDegrees,\n boundingSector.maxLatitude.inDegrees\n )\n val lon = rc.camera.position.longitude.inDegrees.coerceIn(\n boundingSector.minLongitude.inDegrees,\n boundingSector.maxLongitude.inDegrees\n )\n val point = rc.geographicToCartesian(lat.degrees, lon.degrees, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n return point.distanceTo(rc.cameraPoint)\n }\n\n protected open fun cameraDistanceCartesian(rc: RenderContext, array: FloatArray, count: Int, stride: Int, offset: Vec3): Double {\n val cx = rc.cameraPoint.x - offset.x\n val cy = rc.cameraPoint.y - offset.y\n val cz = rc.cameraPoint.z - offset.z\n var minDistance2 = Double.POSITIVE_INFINITY\n for (idx in 0 until count step stride) {\n val px = array[idx]\n val py = array[idx + 1]\n val pz = array[idx + 2]\n val dx = px - cx\n val dy = py - cy\n val dz = pz - cz\n val distance2 = dx * dx + dy * dy + dz * dz\n if (minDistance2 > distance2) minDistance2 = distance2\n }\n return sqrt(minDistance2)\n }\n\n protected open fun computeRepeatingTexCoordTransform(texture: Texture, metersPerPixel: Double, result: Matrix3): Matrix3 {\n val texCoordMatrix = result.setToIdentity()\n texCoordMatrix.setScale(1.0 / (texture.width * metersPerPixel), 1.0 / (texture.height * metersPerPixel))\n texCoordMatrix.multiplyByMatrix(texture.coordTransform)\n return texCoordMatrix\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n if (rc.globeState != lastGlobeState) {\n reset()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun reset() {\n boundingBox.setToUnitBox()\n boundingSector.setEmpty()\n }\n\n protected abstract fun makeDrawable(rc: RenderContext)\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.*\n\n/**\n * Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.\n *
\n *

Axes and Heading

\n *
\n * Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points\n * North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and\n * semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is\n * defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis\n * pointing Southeast and the semi-minor axis pointing Northeast.\n *
\n *

Altitude Mode and Terrain Following

\n *
\n * Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For\n * example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean\n * sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative\n * to the ellipse's center location.\n *
\n * Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's\n * terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See [isFollowTerrain] and\n * [altitudeMode].\n *
\n *

Display Granularity

\n *
\n * Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This\n * approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the\n * maximum number of angular intervals used in this representation with [maximumIntervals].\n */\nopen class Ellipse @JvmOverloads constructor(\n center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n /**\n * The ellipse's geographic center position.\n */\n var center = Position(center)\n set(value) {\n field.copy(value)\n reset()\n }\n /**\n * The ellipse's radius perpendicular to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-major axis points East.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var majorRadius = majorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMajorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's radius parallel to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-minor axis points North.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var minorRadius = minorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMinorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's heading clockwise from North. When ellipse's heading is 0.0,\n * the semi-major axis points East and the semi-minor axis points North.\n * Headings other than 0.0 rotate the axes about the ellipse's center position,\n * while retaining the axes relative relationship to one another.\n */\n var heading = ZERO\n set(value) {\n field = value\n reset()\n }\n /**\n * The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this\n * value will make ellipses appear coarser.\n */\n var maximumPixelsPerInterval = 50.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"maximumPixelsPerInterval\", \"invalidPixelsPerInterval\")\n }\n field = value\n reset()\n }\n /**\n * Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.\n *
\n * Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly\n * approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an\n * implementation-defined minimum number of intervals.\n *
\n * Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number\n * of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used\n * instead.\n *\n * @throws IllegalArgumentException If the number of intervals is negative\n */\n var maximumIntervals = 256\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMaximumIntervals\", \"invalidNumIntervals\")\n }\n field = value\n reset()\n }\n /**\n * The number of intervals used for generating geometry. Clamped between MIN_INTERVALS and maximumIntervals.\n * Will always be even.\n */\n protected var activeIntervals = 0\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var vertexBufferKey = Any()\n protected var lineVertexArray = FloatArray(0)\n protected var lineVertexIndex = 0\n protected var lineVertexBufferKey = Any()\n protected var lineElementBufferKey = Any()\n protected var verticalVertexIndex = 0\n protected val verticalElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n protected val texCoord2d = Vec3()\n protected val texCoordMatrix = Matrix3()\n protected val modelToTexCoord = Matrix4()\n protected var cameraDistance = 0.0\n protected val prevPoint = Vec3()\n\n init {\n require(majorRadius >= 0 && minorRadius >= 0) {\n logMessage(ERROR, \"Ellipse\", \"constructor\", \"invalidRadius\")\n }\n }\n\n companion object {\n protected const val VERTEX_STRIDE = 5\n protected const val LINE_VERTEX_STRIDE = 10\n /**\n * The minimum number of intervals that will be used for geometry generation.\n */\n protected const val MIN_INTERVALS = 32\n /**\n * Key for Range object in the element buffer describing the top of the Ellipse.\n */\n protected const val TOP_RANGE = 0\n /**\n * Key for Range object in the element buffer describing the extruded sides of the Ellipse.\n */\n protected const val SIDE_RANGE = 1\n\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n\n /**\n * Simple interval count based cache of the keys for element buffers. Element buffers are dependent only on the\n * number of intervals so the keys are cached here. The element buffer object itself is in the\n * RenderResourceCache and subject to the restrictions and behavior of that cache.\n */\n protected val elementBufferKeys = mutableMapOf()\n\n private val scratchPosition = Position()\n private val scratchPoint = Vec3()\n private val scratchVertPoint = Vec3()\n\n protected fun assembleElements(intervals: Int): ShortBufferObject {\n // Create temporary storage for elements\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n val elements = mutableListOf()\n\n // Generate the top element buffer with spine\n var idx = intervals.toShort()\n val offset = computeIndexOffset(intervals)\n\n // Add the anchor leg\n elements.add(0.toShort())\n elements.add(1.toShort())\n // Tessellate the interior\n for (i in 2 until intervals) {\n // Add the corresponding interior spine point if this isn't the vertex following the last vertex for the\n // negative major axis\n if (i != intervals / 2 + 1) if (i > intervals / 2) elements.add(--idx) else elements.add(idx++)\n // Add the degenerate triangle at the negative major axis in order to flip the triangle strip back towards\n // the positive axis\n if (i == intervals / 2) elements.add(i.toShort())\n // Add the exterior vertex\n elements.add(i.toShort())\n }\n // Complete the strip\n elements.add(--idx)\n elements.add(0.toShort())\n val topRange = Range(0, elements.size)\n\n // Generate the side element buffer\n for (i in 0 until intervals) {\n elements.add(i.toShort())\n elements.add(i.plus(offset).toShort())\n }\n elements.add(0.toShort())\n elements.add(offset.toShort())\n val sideRange = Range(topRange.upper, elements.size)\n\n // Generate a buffer for the element\n val elementBuffer = ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements.toShortArray())\n elementBuffer.ranges[TOP_RANGE] = topRange\n elementBuffer.ranges[SIDE_RANGE] = sideRange\n return elementBuffer\n }\n\n protected fun computeNumberSpinePoints(intervals: Int) = intervals / 2 - 1 // intervals should be even\n\n protected fun computeIndexOffset(intervals: Int) = intervals + computeNumberSpinePoints(intervals)\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (majorRadius == 0.0 && minorRadius == 0.0) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = Any()\n lineVertexBufferKey = Any()\n lineElementBufferKey = Any()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n val drawableLines: Drawable\n val drawStateLines: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n\n drawableLines = DrawableSurfaceShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n // Use the basic GLSL program for texture projection.\n drawableLines.offset = rc.globe.offset\n drawableLines.sector.copy(boundingSector)\n\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n\n drawableLines = DrawableShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n cameraDistance = boundingBox.distanceTo(rc.cameraPoint)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Get the attributes of the element buffer\n val elementBufferKey = elementBufferKeys[activeIntervals] ?: Any().also { elementBufferKeys[activeIntervals] = it }\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) { assembleElements(activeIntervals) }\n\n drawStateLines.isLine = true\n\n // Use the basic GLSL program to draw the shape.\n drawStateLines.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawStateLines.vertexBuffer = rc.getBufferObject(lineVertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, lineVertexArray) }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawStateLines.elementBuffer = rc.getBufferObject(lineElementBufferKey) {\n val array = IntArray(outlineElements.size + verticalElements.size)\n var index = 0\n for (element in outlineElements) array[index++] = element\n for (element in verticalElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n drawInterior(rc, drawState)\n drawOutline(rc, drawStateLines)\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Configure the drawable according to the shape's attributes.\n drawStateLines.vertexOrigin.copy(vertexOrigin)\n drawStateLines.enableCullFace = false\n drawStateLines.enableDepthTest = activeAttributes.isDepthTest\n drawStateLines.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) {\n rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n rc.offerSurfaceDrawable(drawableLines, 0.0 /*zOrder*/)\n } else {\n rc.offerShapeDrawable(drawableLines, cameraDistance)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n val top = drawState.elementBuffer!!.ranges[TOP_RANGE]!!\n drawState.drawElements(GL_TRIANGLE_STRIP, top.length, GL_UNSIGNED_SHORT, top.lower * 2 /*offset*/)\n if (isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLE_STRIP, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, 0 * Int.SIZE_BYTES\n )\n if (activeAttributes.isDrawVerticals && isExtrude && !isSurfaceShape) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_TRIANGLES, verticalElements.size,\n GL_UNSIGNED_INT, (outlineElements.size) * Int.SIZE_BYTES\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext): Boolean {\n val calculatedIntervals = computeIntervals(rc)\n val sanitizedIntervals = sanitizeIntervals(calculatedIntervals)\n if (vertexArray.isEmpty() || isExtrude && !isSurfaceShape && lineVertexArray.isEmpty() || sanitizedIntervals != activeIntervals) {\n activeIntervals = sanitizedIntervals\n return true\n }\n return false\n }\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n\n // Use the ellipse's center position as the local origin for vertex positions.\n if (isSurfaceShape) {\n vertexOrigin.set(center.longitude.inDegrees, center.latitude.inDegrees, center.altitude)\n } else {\n rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n vertexOrigin.set(scratchPoint.x, scratchPoint.y, scratchPoint.z)\n }\n\n // Determine the number of spine points\n val spineCount = computeNumberSpinePoints(activeIntervals) // activeIntervals must be even\n\n // Clear the shape's vertex array. The array will accumulate values as the shapes's geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals * 2 + spineCount) * VERTEX_STRIDE)\n else FloatArray((activeIntervals + spineCount) * VERTEX_STRIDE)\n\n lineVertexIndex = 0\n lineVertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals + 3 + (activeIntervals + 1) * 4) * LINE_VERTEX_STRIDE)\n else FloatArray((activeIntervals + 3) * LINE_VERTEX_STRIDE)\n verticalVertexIndex = (activeIntervals + 3) * LINE_VERTEX_STRIDE\n\n verticalElements.clear()\n outlineElements.clear()\n\n // Check if minor radius is less than major in which case we need to flip the definitions and change the phase\n val isStandardAxisOrientation = majorRadius > minorRadius\n val headingAdjustment = if (isStandardAxisOrientation) 90.0 else 0.0\n\n // Vertex generation begins on the positive major axis and works ccs around the ellipse. The spine points are\n // then appended from positive major axis to negative major axis.\n val deltaRadians = 2 * PI / activeIntervals\n val majorArcRadians: Double\n val minorArcRadians: Double\n val globeRadius = max(rc.globe.equatorialRadius, rc.globe.polarRadius)\n if (isStandardAxisOrientation) {\n majorArcRadians = majorRadius / globeRadius\n minorArcRadians = minorRadius / globeRadius\n } else {\n majorArcRadians = minorRadius / globeRadius\n minorArcRadians = majorRadius / globeRadius\n }\n\n // Determine the offset from the top and extruded vertices\n val arrayOffset = computeIndexOffset(activeIntervals) * VERTEX_STRIDE\n // Setup spine radius values\n var spineIdx = 0\n val spineRadius = DoubleArray(spineCount)\n\n var firstLoc = Position()\n // Iterate around the ellipse to add vertices\n for (i in 0 until activeIntervals) {\n val radians = deltaRadians * i\n val x = cos(radians) * majorArcRadians\n val y = sin(radians) * minorArcRadians\n val azimuthDegrees = toDegrees(-atan2(y, x))\n val arcRadius = sqrt(x * x + y * y)\n // Calculate the great circle location given this activeIntervals step (azimuthDegrees) a correction value to\n // start from an east-west aligned major axis (90.0) and the user specified user heading value\n val azimuth = heading.plusDegrees(azimuthDegrees + headingAdjustment)\n val loc = center.greatCircleLocation(azimuth, arcRadius, scratchPosition)\n addVertex(rc, loc.latitude, loc.longitude, center.altitude, arrayOffset, isExtrude)\n // Add the major arc radius for the spine points. Spine points are vertically coincident with exterior\n // points. The first and middle most point do not have corresponding spine points.\n if (i > 0 && i < activeIntervals / 2) spineRadius[spineIdx++] = x\n if (i < 1) {\n firstLoc = Position(loc.latitude, loc.longitude, center.altitude)\n addLineVertex(rc, loc.latitude, loc.longitude, center.altitude, verticalVertexIndex, true)\n }\n addLineVertex(rc, loc.latitude, loc.longitude, center.altitude, verticalVertexIndex, false)\n }\n\n addLineVertex(rc, firstLoc.latitude, firstLoc.longitude, firstLoc.altitude, verticalVertexIndex, false)\n addLineVertex(rc, firstLoc.latitude, firstLoc.longitude, firstLoc.altitude, verticalVertexIndex, true)\n\n // Add the interior spine point vertices\n for (i in 0 until spineCount) {\n center.greatCircleLocation(heading.plusDegrees(headingAdjustment), spineRadius[i], scratchPosition)\n addVertex(rc, scratchPosition.latitude, scratchPosition.longitude, center.altitude, arrayOffset, false)\n }\n\n // Compute the shape's bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty()\n }\n }\n protected open fun addLineVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset : Int, firstOrLast : Boolean\n ) {\n val vertex = (lineVertexIndex / LINE_VERTEX_STRIDE - 1) * 2\n val point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n if (lineVertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n } else {\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n if (isExtrude && !firstOrLast) {\n val vertPoint = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, scratchVertPoint)\n val index = verticalVertexIndex / LINE_VERTEX_STRIDE * 2\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n verticalElements.add(index)\n verticalElements.add(index + 1)\n verticalElements.add(index + 2)\n verticalElements.add(index + 2)\n verticalElements.add(index + 1)\n verticalElements.add(index + 3)\n }\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset: Int, isExtrudedSkirt: Boolean\n ) {\n var offsetVertexIndex = vertexIndex + offset\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n // reserved for future texture coordinate use\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n if (isExtrudedSkirt) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n vertexArray[offsetVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[offsetVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[offsetVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex] = 0f //unused\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n val point = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n rc.globe.cartesianToLocalTransform(point.x, point.y, point.z, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n /**\n * Calculate the number of times to split the edges of the shape for geometry assembly.\n *\n * @param rc current RenderContext\n *\n * @return an even number of intervals\n */\n protected open fun computeIntervals(rc: RenderContext): Int {\n var intervals = MIN_INTERVALS\n if (intervals >= maximumIntervals) return intervals // use at least the minimum number of intervals\n val centerPoint = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n val maxRadius = max(majorRadius, minorRadius)\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint) - maxRadius\n if (cameraDistance <= 0) return maximumIntervals // use the maximum number of intervals when the camera is very close\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n val circumferencePixels = computeCircumference() / metersPerPixel\n val circumferenceIntervals = circumferencePixels / maximumPixelsPerInterval\n val subdivisions = ln(circumferenceIntervals / intervals) / ln(2.0)\n val subdivisionCount = ceil(subdivisions).toInt().coerceAtLeast(0)\n intervals = intervals shl subdivisionCount // subdivide the base intervals to achieve the desired number of intervals\n return intervals.coerceAtMost(maximumIntervals) // don't exceed the maximum number of intervals\n }\n\n protected open fun sanitizeIntervals(intervals: Int) = if (intervals % 2 == 0) intervals else intervals - 1\n\n open fun computeCircumference(): Double {\n val a = majorRadius\n val b = minorRadius\n return PI * (3 * (a + b) - sqrt((3 * a + b) * (a + 3 * b)))\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n lineVertexArray = FloatArray(0)\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Represents a label at a geographic position. Labels display a single line of text according to specified [TextAttributes].\n */\nopen class Label @JvmOverloads constructor(\n /**\n * The label's geographic position.\n */\n position: Position,\n /**\n * Indicates the text displayed by this label. The returned string may be null, indicating that this label displays\n * nothing.\n */\n var text: String? = null,\n /**\n * Indicates this label's \"normal\" attributes, that is the attributes used when the label's highlighted flag is\n * false. If null and this label is not highlighted, this label displays nothing.\n */\n var attributes: TextAttributes = TextAttributes()\n) : AbstractRenderable(), Highlightable, Movable {\n /**\n * The label's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The label's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Indicates the rotation applied to this label. The rotation represents clockwise clockwise degrees relative to\n * this label's labelRotationMode.\n */\n var rotation = ZERO\n /**\n * Indicates the orientation mode used to interpret this label's rotation. Label rotation may be either relative to\n * the screen or relative to the globe, as indicated by the following allowable values:\n * `OrientationMode.RELATIVE_TO_SCREEN` - The label's orientation is fixed relative to the screen. Rotation indicates\n * clockwise degrees relative to the screen's vertical axis. This is the default mode.\n * `OrientationMode.RELATIVE_TO_GLOBE` - The label's orientation is fixed relative to the globe. Rotation indicates\n * clockwise degrees relative to North.\n */\n var rotationMode = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The attributes used when this label's highlighted flag is true. If null and the highlighted flag is true,\n * this label's normal attributes are used. If they, too, are null, this label displays nothing.\n */\n var highlightAttributes: TextAttributes? = null\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: TextAttributes\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Label, this is\n * simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * Sets the eye altitude, in meters, above which this label is not displayed.\n */\n var visibilityThreshold = 0.0\n\n companion object {\n /**\n * The default amount of screen depth offset applied to the label's text during rendering. Values less than zero\n * bias depth values toward the viewer.\n */\n protected const val DEFAULT_DEPTH_OFFSET = -0.1\n\n /**\n * The label's properties associated with the current render pass.\n */\n private val renderData = RenderData()\n }\n\n /**\n * Moves the shape over the globe's surface. For a Label, this simply change its position.\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n if (text?.isEmpty() != false) return // no text to render\n\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the label's Cartesian model point.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, renderData.placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the label drawable and\n // determining the amount of depth offset to apply.\n renderData.cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(renderData.placePoint)\n\n // Do not draw labels after the specified threshold\n if (visibilityThreshold > 0.0 && renderData.cameraDistance > visibilityThreshold) return\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n if (renderData.cameraDistance < rc.horizonDistance) depthOffset = DEFAULT_DEPTH_OFFSET\n\n // Project the label's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(renderData.placePoint, depthOffset, renderData.screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this label has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n renderData.pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(renderData.pickedObjectId, renderData.pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the label's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(renderData.pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n val texture = rc.getText(text, activeAttributes, rc.frustum.containsPoint(renderData.placePoint)) ?: return\n\n // Initialize the unit square transform to the identity matrix.\n renderData.unitSquareTransform.setToIdentity()\n\n // Apply the label's translation according to its text size and text offset. The text offset is defined with its\n // origin at the text's bottom-left corner and axes that extend up and to the right from the origin point.\n val w = texture.width.toDouble()\n val h = texture.height.toDouble()\n val s = activeAttributes.scale\n activeAttributes.textOffset.offsetForSize(w, h, renderData.offset)\n renderData.unitSquareTransform.setTranslation(\n renderData.screenPlacePoint.x - renderData.offset.x * s,\n renderData.screenPlacePoint.y - renderData.offset.y * s,\n renderData.screenPlacePoint.z\n )\n\n // Apply the label's rotation according to its rotation value and orientation mode. The rotation is applied\n // such that the text rotates around the text offset point.\n val actualRotation = if (rotationMode == OrientationMode.RELATIVE_TO_GLOBE)\n rc.camera.heading - rotation else -rotation\n if (actualRotation != ZERO) {\n renderData.unitSquareTransform.multiplyByTranslation(\n renderData.offset.x, renderData.offset.y, 0.0\n )\n renderData.unitSquareTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n renderData.unitSquareTransform.multiplyByTranslation(\n -renderData.offset.x, -renderData.offset.y, 0.0\n )\n }\n\n // Apply the label's translation and scale according to its text size.\n renderData.unitSquareTransform.multiplyByScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(renderData.unitSquareTransform, renderData.screenBounds)\n if (!rc.frustum.intersectsViewport(renderData.screenBounds)) return // the text is outside the viewport\n\n // Obtain a pooled drawable and configure it to draw the label's text.\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n\n // Use the basic GLSL program to draw the text.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the text's unit square transform matrix.\n drawable.unitSquareTransform.copy(renderData.unitSquareTransform)\n\n // Configure the drawable according to the active attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(renderData.pickColor)\n else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = texture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerShapeDrawable(drawable, renderData.cameraDistance)\n }\n\n /**\n * Properties associated with the label during a render pass.\n */\n protected open class RenderData {\n /**\n * The model coordinate point corresponding to the label's position.\n */\n val placePoint = Vec3()\n /**\n * The screen coordinate point corresponding to the label's position.\n */\n val screenPlacePoint = Vec3()\n /**\n * The screen coordinate offset corresponding to the active attributes.\n */\n val offset = Vec2()\n /**\n * The screen coordinate transform to apply to the drawable unit square.\n */\n val unitSquareTransform = Matrix4()\n /**\n * The screen viewport indicating the label's screen bounds.\n */\n val screenBounds = Viewport()\n /**\n * Unique identifier associated with the label during picking.\n */\n var pickedObjectId = 0\n /**\n * Unique color used to display the label during picking.\n */\n val pickColor = Color()\n /**\n * The distance from the camera position to the label position, in meters.\n */\n var cameraDistance = 0.0\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSightline\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.BoundingSphere\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays an omnidirectional sightline's visibility within the WorldWind scene. The sightline's placement and area of\n * potential visibility are represented by a Cartesian sphere with a center position and a range. Terrain features\n * within the sphere are considered visible if there is a direct line-of-sight between the center position and a given\n * terrain point.\n *
\n * OmnidirectionalSightline displays an overlay on the WorldWind terrain indicating which terrain features are visible,\n * and which are occluded. Visible terrain features, those having a direct line-of-sight to the center position, appear\n * in the sightline's normal attributes or its highlight attributes, depending on the highlight state. Occluded terrain\n * features appear in the sightline's occlude attributes, regardless of highlight state. Terrain features outside the\n * sightline's range are excluded from the overlay.\n *
\n *

Limitations and Planned Improvements

* OmnidirectionalSightline is currently limited to terrain-based\n * occlusion, and does not incorporate other 3D scene elements during visibility determination. Subsequent iterations\n * will support occlusion of both terrain and 3D polygons. * The visibility overlay is drawn in ShapeAttributes'\n * interior color only. Subsequent iterations will add an outline where the sightline's range intersects the scene, and\n * will display the sightline's geometry as an outline. * OmnidirectionalSightline requires OpenGL ES 2.0\n * extension [GL_OES_depth_texture](https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt).\n * Subsequent iterations may relax this requirement.\n */\nopen class OmnidirectionalSightline @JvmOverloads constructor(\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n position: Position,\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n */\n range: Double,\n /**\n * Indicates this sightline's \"normal\" attributes. These attributes are used for the sightline's overlay when the\n * highlighted flag is false, and there is a direct line-of-sight from the sightline's center position to a terrain\n * feature. If null and this sightline is not highlighted, visible terrain features are excluded from\n * the overlay.\n */\n override var attributes: ShapeAttributes = ShapeAttributes()\n) : AbstractRenderable(), Attributable, Highlightable, Movable {\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n *\n * @throws IllegalArgumentException If the range is negative\n */\n var range = range\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"setRange\", \"invalidRange\")\n }\n field = value\n }\n /**\n * The sightline's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Determines whether the normal or highlighted attributes should be used for visible features.\n */\n override var isHighlighted = false\n /**\n * The attributes to use for visible features, when the sightline is highlighted.\n */\n override var highlightAttributes: ShapeAttributes? = null\n /**\n * The attributes to use for occluded features.\n */\n var occludeAttributes = ShapeAttributes().apply { interiorColor.copy(Color(1f, 0f, 0f, 1f)) }\n /**\n * A position associated with the object that indicates its aggregate geographic position. For an\n * OmnidirectionalSightline, this is simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * The attributes to use for visible features during the current render pass.\n */\n protected lateinit var activeAttributes: ShapeAttributes\n\n private val centerPoint = Vec3()\n private var pickedObjectId = 0\n private val pickColor = Color()\n private val boundingSphere = BoundingSphere()\n\n init {\n require(range >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"constructor\", \"invalidRange\")\n }\n }\n\n /**\n * Moves the sightline over the globe's surface.\n *\n * @param globe not used.\n * @param position the new position of the sightline's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n // Compute this sightline's center point in Cartesian coordinates.\n if (!determineCenterPoint(rc)) return\n\n // Don't render anything if the sightline's coverage area is not visible.\n if (!isVisible(rc)) return\n\n // Select the currently active attributes.\n determineActiveAttributes(rc)\n\n // Configure the pick color when rendering in pick mode.\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the sightline's drawables with its picked object ID.\n if (rc.isPickMode) rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n\n protected open fun determineCenterPoint(rc: RenderContext): Boolean {\n rc.geographicToCartesian(position, altitudeMode, centerPoint)\n return centerPoint.x != 0.0 && centerPoint.y != 0.0 && centerPoint.z != 0.0\n }\n\n protected open fun isVisible(rc: RenderContext): Boolean {\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint)\n val pixelSizeMeters = rc.pixelSizeAtDistance(cameraDistance)\n return if (range < pixelSizeMeters) false // The range is zero, or is less than one screen pixel\n else boundingSphere.set(centerPoint, range).intersectsFrustum(rc.frustum)\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Obtain a pooled drawable and configure it to draw the sightline's coverage.\n val pool = rc.getDrawablePool()\n val drawable = DrawableSightline.obtain(pool)\n\n // Compute the transform from sightline local coordinates to world coordinates.\n rc.globe.cartesianToLocalTransform(\n centerPoint.x, centerPoint.y, centerPoint.z, drawable.centerTransform\n )\n\n // Clamp range to max float value as OpenGL drawable operates with float range\n drawable.range = range.coerceIn(0.0, Float.MAX_VALUE.toDouble()).toFloat()\n\n // Configure the drawable colors according to the current attributes. When picking use a unique color associated\n // with the picked object ID. Null attributes indicate that nothing is drawn.\n drawable.visibleColor.copy(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawable.occludedColor.copy(if (rc.isPickMode) pickColor else occludeAttributes.interiorColor)\n\n // Use the sightline GLSL program to draw the coverage.\n drawable.program = rc.getShaderProgram { SightlineProgram() }\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n}","package earth.worldwind.shape\n\n/**\n * Orientation mode indicates how WorldWind interprets a renderable's orientation value, e.g., tilt and rotate\n * values. Accepted values are [RELATIVE_TO_GLOBE], and [RELATIVE_TO_SCREEN].\n */\nenum class OrientationMode {\n /**\n * Indicating that the related value is specified relative to the globe.\n */\n RELATIVE_TO_GLOBE,\n /**\n * Indicating that the related value is specified relative to the plane of the screen.\n */\n RELATIVE_TO_SCREEN;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Path @JvmOverloads constructor(\n positions: List, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n var positions = positions\n set(value) {\n field = value\n reset()\n }\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var verticalIndex = 0\n protected var extrudeIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val interiorElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected lateinit var vertexBufferKey: Any\n protected lateinit var elementBufferKey: Any\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n private val point = Vec3()\n private val verticalPoint = Vec3()\n private val prevPoint = Vec3()\n private val texCoordMatrix = Matrix3()\n private val intermediateLocation = Location()\n\n companion object {\n protected const val VERTEX_STRIDE = 10\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n wrapMode = WrapMode.REPEAT\n }\n\n protected fun nextCacheKey() = Any()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (positions.size < 2) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool, and compute distance to the render camera.\n val drawable: Drawable\n val drawState: DrawShapeState\n val cameraDistance: Double\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexArray.size, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use triangles mode to draw lines\n drawState.isLine = true\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexArray.size)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n val array = IntArray(interiorElements.size + outlineElements.size + verticalElements.size)\n var index = 0\n for (element in interiorElements) array[index++] = element\n for (element in outlineElements) array[index++] = element\n for (element in verticalElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n // Configure the drawable to use the outline texture when drawing the outline.\n if (activeAttributes.isDrawOutline) {\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n }\n }\n\n // Configure the drawable to display the shape's outline. Increase surface shape line widths by 1/2 pixel. Lines\n // drawn indirectly offscreen framebuffer appear thinner when sampled as a texture.\n if (activeAttributes.isDrawOutline) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth + if (isSurfaceShape) 0.5f else 0f)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, interiorElements.size * Int.SIZE_BYTES\n )\n }\n\n // Disable texturing for the remaining drawable primitives.\n drawState.texture(null)\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawOutline && activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_TRIANGLES, verticalElements.size,\n GL_UNSIGNED_INT, (interiorElements.size + outlineElements.size) * Int.SIZE_BYTES\n )\n }\n\n // Configure the drawable to display the shape's extruded interior.\n if (activeAttributes.isDrawInterior && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, interiorElements.size,\n GL_UNSIGNED_INT, 0\n )\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.enableCullFace = false\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val vertexCount = if (maximumIntermediatePoints <= 0 || pathType == LINEAR) positions.size\n else if (positions.isNotEmpty()) positions.size + (positions.size - 1) * maximumIntermediatePoints else 0\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n verticalIndex = if (isExtrude && !isSurfaceShape) (vertexCount + 2) * VERTEX_STRIDE else 0\n extrudeIndex = if (isExtrude && !isSurfaceShape) verticalIndex + (positions.size * 4) * VERTEX_STRIDE else 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(verticalIndex + extrudeIndex + (vertexCount + 2) * VERTEX_STRIDE)\n else FloatArray((vertexCount + 2) * VERTEX_STRIDE)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Add the first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/, true)\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/, false)\n\n // Add the remaining vertices, inserting vertices along each edge as indicated by the path's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, false /*intermediate*/, false)\n begin = end\n }\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude,false /*intermediate*/, true)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*latitude*/, vertexOrigin.x /*longitude*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, true /*intermediate*/, false /*firstOrLast*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, intermediate: Boolean, firstOrLast : Boolean\n ) {\n val vertex = (vertexIndex / VERTEX_STRIDE - 1) * 2\n val point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (vertexIndex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude)\n else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = -1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = -1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n if (isExtrude) {\n val vertPoint = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, verticalPoint)\n\n val extrudeVertex = (extrudeIndex / VERTEX_STRIDE - 1) * 2\n\n vertexArray[extrudeIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[extrudeIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[extrudeIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[extrudeIndex++] = 0f\n vertexArray[extrudeIndex++] = 0f\n\n vertexArray[extrudeIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[extrudeIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[extrudeIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[extrudeIndex++] = 0f\n vertexArray[extrudeIndex++] = 0f\n\n if (!firstOrLast) {\n interiorElements.add(extrudeVertex)\n interiorElements.add(extrudeVertex.inc())\n }\n\n if (!intermediate && !firstOrLast) {\n val index = verticalIndex / VERTEX_STRIDE * 2\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n verticalElements.add(index)\n verticalElements.add(index + 1)\n verticalElements.add(index + 2)\n verticalElements.add(index + 2)\n verticalElements.add(index + 1)\n verticalElements.add(index + 3)\n }\n }\n }\n }\n}","package earth.worldwind.shape\n\n/**\n * Path type indicates how WorldWind create a geographic path between two locations.\n * Accepted values are [GREAT_CIRCLE], [LINEAR] and [RHUMB_LINE].\n */\nenum class PathType {\n /**\n * Indicating a great circle arc between two locations.\n */\n GREAT_CIRCLE,\n /**\n * Indicating simple linear interpolation between two locations.\n */\n LINEAR,\n /**\n * Indicating a line of constant bearing between two locations.\n */\n RHUMB_LINE;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableLines\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.sin\n\n/**\n * Represents a Placemark shape. A placemark displays an image, a label and a leader connecting the placemark's\n * geographic position to the ground. All three of these items are optional. By default, the leader is not pickable. See\n * [Placemark.isLeaderPickingEnabled].\n *
\n * Placemarks may be drawn with either an image or as single-color square with a specified size. When the placemark\n * attributes indicate a valid image, the placemark's image is drawn as a rectangle in the image's original dimensions,\n * scaled by the image scale attribute. Otherwise, the placemark is drawn as a square with width and height equal to the\n * value of the image scale attribute, in pixels, and color equal to the image color attribute.\n */\nopen class Placemark @JvmOverloads constructor(\n /**\n * The placemark's geographic position.\n */\n position: Position,\n /**\n * The placemark's normal attributes.\n */\n var attributes: PlacemarkAttributes = PlacemarkAttributes(),\n /**\n * The placemark's display name.\n */\n name: String? = null\n) : AbstractRenderable(if (name?.isEmpty() != false) \"Placemark\" else name), Highlightable, Movable {\n /**\n * The placemark's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The placemark's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * The attributes to use when the placemark is highlighted.\n */\n var highlightAttributes: PlacemarkAttributes? = null\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The label text to draw near the placemark.\n */\n var label: String? = /*name*/null // Do not use display name as label by default\n /**\n * Sets the optional level-of-detail selector used to inject logic for selecting PlacemarkAttributes based on\n * the camera distance and highlighted attribute. If set to null, the normal and highlight attribute bundles used\n * respectfully for the normal and highlighted states.\n */\n var levelOfDetailSelector: LevelOfDetailSelector? = null\n /**\n * Enables or disables the eye distance scaling feature for this placemark. When enabled, the placemark's size is\n * reduced at higher eye distances. If true, this placemark's size is scaled inversely proportional to the eye\n * distance if the eye distance is greater than the value of the [Placemark.eyeDistanceScalingThreshold]\n * property. When the eye distance is below the threshold, this placemark is scaled only according to the [PlacemarkAttributes.imageScale].\n */\n var isEyeDistanceScaling = false\n /**\n * Sets the eye distance above which to reduce the size of this placemark, in meters.\n * If [isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as the eye\n * distance increases beyond this threshold.\n */\n var eyeDistanceScalingThreshold = DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Sets the eye altitude, in meters, above which this placemark's label is not displayed.\n */\n var eyeDistanceScalingLabelThreshold = 1.5 * DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Indicates whether this placemark's leader, if any, is pickable.\n */\n var isLeaderPickingEnabled = false\n /**\n * Enable additional altitude offset (billboarding) to prevent clipping Placamerk by terrain on tilt.\n */\n var isBillboardingEnabled = false\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * The amount of rotation to apply to the image, measured clockwise and relative to this placemark's\n * [Placemark.imageRotationReference].\n */\n var imageRotation = ZERO\n /**eyeDistanceScaling\n * Sets the type of rotation to apply if the [Placemark.imageRotation] is not zero. This value indicates\n * whether to apply this placemark's image rotation relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is rotated in the plane of the screen and its\n * orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is rotated in a plane tangent to the globe at\n * this placemark's position and retains its orientation relative to the globe.\n */\n var imageRotationReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Sets the amount of tilt to apply to the image, measured away from the eye point and relative to this\n * placemark's [Placemark.imageTiltReference]. While any positive or negative number may be specified,\n * values outside the range [0. 90] cause some or all of the image to be clipped.\n */\n var imageTilt = ZERO\n /**\n * Sets the type tilt to apply when [Placemark.imageTilt] is non-zero. This value indicates whether to\n * apply this placemark's image tilt relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is tilted inwards (for positive tilts) relative\n * to the plane of the screen, and its orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is tilted towards the globe's surface, and retains its\n * orientation relative to the surface.\n */\n var imageTiltReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Placemark, this is\n * simply it's position property.\n *\n * @return [Placemark.position]\n */\n override val referencePosition get() = position\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: PlacemarkAttributes\n /**\n * The picked object ID associated with the placemark during the current render pass.\n */\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n /**\n * The distance from the camera to the placemark in meters.\n */\n protected var cameraDistance = 0.0\n\n /**\n * Presents an interfaced for dynamically determining the PlacemarkAttributes based on the distance between the\n * placemark and the camera.\n */\n interface LevelOfDetailSelector {\n /**\n * Gets the active attributes for the current distance to the camera and highlighted state.\n *\n * @param rc The current render context\n * @param placemark The placemark needing a level of detail selection\n * @param cameraDistance The distance from the placemark to the camera (meters)\n *\n * @return if placemark should display or skip its rendering\n */\n fun selectLevelOfDetail(rc: RenderContext, placemark: Placemark, cameraDistance: Double): Boolean\n }\n\n /**\n * Moves the shape over the globe's surface. For a Placemark, this simply set [Placemark.position].\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n /**\n * Performs the rendering; called by the public render method.\n *\n * @param rc the current render context\n */\n override fun doRender(rc: RenderContext) {\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the placemark's Cartesian model point and corresponding distance to the eye point. If the placemark's\n // position is terrain-dependent but off the terrain, then compute it ABSOLUTE so that we have a point for the\n // placemark and are thus able to draw it. Otherwise, its image and label portion that are potentially over the\n // terrain won't get drawn, and would disappear as soon as there is no terrain at the placemark's position. This\n // can occur at the window edges.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the placemark drawable\n // and determining the amount of depth offset to apply.\n cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(placePoint)\n\n // Allow the placemark to adjust the level of detail based on distance to the camera\n if (levelOfDetailSelector?.selectLevelOfDetail(rc, this, cameraDistance) == false) return // skip rendering\n\n // Determine the attributes to use for the current render pass.\n determineActiveAttributes(rc)\n\n // Perform point based culling for placemarks who's textures haven't been loaded yet.\n // If the texture hasn't been loaded yet, then perform point-based culling to avoid\n // loading textures for placemarks that are 'probably' outside the viewing frustum.\n // There are cases where a placemark's texture would be partially visible if it at the\n // edge of the screen were loaded. In these cases the placemark will \"pop\" into view when\n // the placePoint enters the view frustum.\n val activeTexture = activeAttributes.imageSource?.let {\n rc.getTexture(it, null, rc.frustum.containsPoint(placePoint))\n }\n\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n val visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Apply the icon's translation and scale according to the image size, image offset and image scale. The image\n // offset is defined with its origin at the image's bottom-left corner and axes that extend up and to the right\n // from the origin point. When the placemark has no active texture the image scale defines the image size and no\n // other scaling is applied.\n val offsetX: Double\n val offsetY: Double\n val scaleX: Double\n val scaleY: Double\n if (activeTexture != null) {\n val w = activeTexture.width.toDouble()\n val h = activeTexture.height.toDouble()\n val s = activeAttributes.imageScale * visibilityScale\n activeAttributes.imageOffset.offsetForSize(w, h, offset)\n offsetX = offset.x * s\n offsetY = offset.y * s\n scaleX = w * s\n scaleY = h * s\n } else {\n // This branch serves both non-textured attributes and also textures that haven't been loaded yet.\n // We set the size for non-loaded textures to the typical size of a contemporary \"small\" icon (24px)\n var size = if (activeAttributes.imageSource != null) 24.0 else activeAttributes.imageScale\n size *= visibilityScale\n activeAttributes.imageOffset.offsetForSize(size, size, offset)\n offsetX = offset.x\n offsetY = offset.y\n scaleY = size\n scaleX = scaleY\n }\n\n // Offset along the normal vector to avoid collision with terrain.\n if (isBillboardingEnabled && offsetY != 0.0) {\n rc.globe.geographicToCartesianNormal(position.latitude, position.longitude, scratchVector).also {\n // Use real camera distance in billboarding\n val distance = if (isAlwaysOnTop) rc.cameraPoint.distanceTo(placePoint) else cameraDistance\n val altitude = rc.pixelSizeAtDistance(distance) * sin(rc.camera.tilt.inRadians)\n placePoint.add(scratchVector.multiply(offsetY * altitude))\n }\n }\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n val absTilt = abs(rc.camera.tilt.inDegrees)\n if (cameraDistance < rc.horizonDistance && absTilt <= 90) {\n depthOffset = (1 - absTilt / 90) * DEFAULT_DEPTH_OFFSET\n }\n\n // Project the placemark's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(placePoint, depthOffset, screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Keep track of the drawable count to determine whether this placemark has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Prepare a drawable for the placemark's leader, if requested. Enqueue the leader drawable before the icon\n // drawable in order to give the icon visual priority over the leader.\n if (mustDrawLeader(rc)) {\n // Compute the placemark's Cartesian ground point.\n rc.geographicToCartesian(position, AltitudeMode.CLAMP_TO_GROUND, groundPoint)\n\n // If the leader is visible, enqueue a drawable leader for processing on the OpenGL thread.\n if (rc.frustum.intersectsSegment(groundPoint, placePoint)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableLines.obtain(pool)\n prepareDrawableLeader(rc, drawable)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n // Prepare image transformation matrix\n prepareImageTransform(rc.camera, offsetX, offsetY, scaleX, scaleY)\n\n // If the placemark's icon is visible, enqueue a drawable icon for processing on the OpenGL thread.\n boundingRectForUnitSquare(imageTransform, imageBounds)\n if (rc.frustum.intersectsViewport(imageBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableIcon(rc, drawable, activeTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n // If there's a label, perform these same operations for the label texture.\n if ((!isEyeDistanceScaling || cameraDistance <= eyeDistanceScalingLabelThreshold) && mustDrawLabel(rc)) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n rc.getText(label, activeAttributes.labelAttributes, rc.frustum.containsPoint(placePoint))?.let { labelTexture ->\n val w = labelTexture.width.toDouble()\n val h = labelTexture.height.toDouble()\n val s = activeAttributes.labelAttributes.scale * visibilityScale\n activeAttributes.labelAttributes.textOffset.offsetForSize(w, h, offset)\n labelTransform.setTranslation(\n screenPlacePoint.x - offset.x * s,\n screenPlacePoint.y - offset.y * s,\n screenPlacePoint.z\n )\n labelTransform.setScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(labelTransform, labelBounds)\n if (rc.frustum.intersectsViewport(labelBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableLabel(rc, drawable, labelTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n }\n\n // Enqueue a picked object that associates the placemark's icon and leader with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Determines the placemark attributes to use for the current render pass.\n *\n * @param rc the current render context\n */\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n /**\n * Prepare image transform matrix according to specified parameters\n *\n * @param camera current camera view\n * @param offsetX offset along X axis\n * @param offsetY offset along X axis\n * @param scaleX scaled width\n * @param scaleY scaled height\n */\n protected open fun prepareImageTransform(\n camera: Camera, offsetX: Double, offsetY: Double, scaleX: Double, scaleY: Double\n ) {\n // Initialize the unit square transform to the identity matrix.\n imageTransform.setToIdentity()\n\n // Position image on screen\n imageTransform.multiplyByTranslation(\n screenPlacePoint.x, screenPlacePoint.y, screenPlacePoint.z\n )\n\n // Divide Z by 2^24 to prevent texture clipping when tilting (where 24 is depth buffer bit size).\n // Doing so will limit depth range to (diagonal length)/2^24 and make its value within 0..1 range.\n imageTransform.multiplyByScale(1.0, 1.0, 1.0 / (1 shl 24))\n\n // Perform the tilt so that the image tilts back from its base into the view volume\n val actualTilt = if (imageTiltReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.tilt + imageTilt else imageTilt\n if (actualTilt.inDegrees != 0.0) imageTransform.multiplyByRotation(-1.0, 0.0, 0.0, actualTilt)\n\n // Perform image rotation\n val actualRotation = if (imageRotationReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.heading - imageRotation else -imageRotation\n if (actualRotation.inDegrees != 0.0) imageTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n\n // Apply pivot translation\n imageTransform.multiplyByTranslation(-offsetX, -offsetY, 0.0)\n\n // Apply scale\n imageTransform.multiplyByScale(scaleX, scaleY, 1.0)\n }\n\n /**\n * Prepares this placemark's icon or symbol for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableIcon(rc: RenderContext, drawable: DrawableScreenTexture, activeTexture: Texture?) {\n // Use the basic GLSL program to draw the placemark's icon.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the plaemark's unit square transform matrix.\n drawable.unitSquareTransform.copy(imageTransform)\n\n // Configure the drawable according to the placemark's active attributes. Use a color appropriate for the pick\n // mode. When picking use a unique color associated with the picked object ID. Use the texture associated with\n // the active attributes' image source and its associated tex coord transform. If the texture is not specified\n // or not available, draw a simple colored square.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.imageColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = activeTexture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's label for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLabel(rc: RenderContext, drawable: DrawableScreenTexture, labelTexture: Texture) {\n // Use the basic GLSL program to draw the placemark's label.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the label's unit square transform matrix.\n drawable.unitSquareTransform.copy(labelTransform)\n\n // Configure the drawable according to the active label attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(pickColor) else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = labelTexture\n drawable.enableDepthTest = activeAttributes.labelAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's leader for drawing in a subsequent drawing pass. Implementations must be careful not to\n * leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLeader(rc: RenderContext, drawable: DrawableLines) {\n // Use the basic GLSL program to draw the placemark's leader.\n drawable.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n var vertexIndex = 0\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex] = 0f\n\n // Compute the drawable's modelview-projection matrix, relative to the placemark's ground point.\n drawable.mvpMatrix.copy(rc.modelviewProjection)\n drawable.mvpMatrix.multiplyByTranslation(groundPoint.x, groundPoint.y, groundPoint.z)\n\n // Configure the drawable according to the placemark's active leader attributes. Use a color appropriate for the\n // pick mode. When picking use a unique color associated with the picked object ID.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.leaderAttributes.outlineColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.lineWidth = activeAttributes.leaderAttributes.outlineWidth\n drawable.enableDepthTest = activeAttributes.leaderAttributes.isDepthTest\n }\n\n /**\n * Determines if a label should and can be drawn.\n *\n * @return True if there is a valid label and label attributes.\n */\n protected open fun mustDrawLabel(rc: RenderContext) = activeAttributes.isDrawLabel && label?.isNotEmpty() == true\n\n /**\n * Determines if a leader-line should and can be drawn.\n *\n * @return True if leader-line directive is enabled and there are valid leader-line attributes.\n */\n protected open fun mustDrawLeader(rc: RenderContext) =\n activeAttributes.isDrawLeader && (isLeaderPickingEnabled || !rc.isPickMode) &&\n altitudeMode != AltitudeMode.CLAMP_TO_GROUND && !rc.globe.is2D\n\n companion object {\n /**\n * The default eye distance above which to reduce the size of this placemark, in meters.\n * If [Placemark.isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as\n * the eye distance increases beyond this threshold.\n */\n const val DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD = 4e5\n protected const val DEFAULT_DEPTH_OFFSET = -0.03\n private val placePoint = Vec3()\n private val scratchVector = Vec3()\n private val screenPlacePoint = Vec3()\n private val groundPoint = Vec3()\n private val offset = Vec2()\n private val imageTransform = Matrix4()\n private val labelTransform = Matrix4()\n private val imageBounds = Viewport()\n private val labelBounds = Viewport()\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws a simple square\n * centered on the supplied position with the given size and color.\n *\n * @param position The geographic position where the placemark is drawn.\n * @param color The color of the placemark.\n * @param pixelSize The width and height of the placemark.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithColorAndSize(position: Position, color: Color, pixelSize: Int) =\n Placemark(position, PlacemarkAttributes().apply {\n imageColor = color\n imageScale = pixelSize.toDouble()\n })\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws the given image\n * centered on the supplied position.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithImage(position: Position, imageSource: ImageSource) =\n Placemark(position, PlacemarkAttributes.createWithImage(imageSource))\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle (with TextAttributes) that\n * draws the given image centered on the supplied position with a nearby label.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n * @param label The text that is drawn near the image. This parameter becomes the placemark's displayName\n * property.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle containing TextAttributes.\n */\n @JvmStatic\n fun createWithImageAndLabel(\n position: Position, imageSource: ImageSource, label: String\n ) = Placemark(position, PlacemarkAttributes.createWithImage(imageSource), label)\n\n protected fun nextCacheKey() = Any()\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport kotlin.jvm.JvmStatic\n\n/**\n * Holds attributes applied to [Placemark] shapes.\n * The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\nopen class PlacemarkAttributes(\n /**\n * Returns the source of the placemark's image. If null, the placemark is drawn as a square whose width and height\n * are the value of this attribute object's [imageScale] property.\n */\n var imageSource: ImageSource?,\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n imageColor: Color,\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n imageOffset: Offset,\n /**\n * Returns the amount to scale the placemark's image. When this attribute bundle has a valid image path the scale is\n * applied to the image's dimensions. Otherwise, the scale indicates the dimensions in pixels of a square drawn at\n * the placemark's geographic position. A scale of 0 causes the placemark to disappear; however, the placemark's\n * label, if any, is still drawn.\n */\n var imageScale: Double,\n /**\n * Returns the minimum amount to scale the placemark's image. When a [Placemark.isEyeDistanceScaling] is true,\n * this value controls the minimum size of the rendered placemark. A value of 0 allows the placemark to disappear.\n */\n var minimumImageScale: Double,\n /**\n * Returns whether to draw a placemark's label text.\n */\n var isDrawLabel: Boolean,\n /**\n * Returns whether to draw a line from the placemark's geographic position to the ground.\n */\n var isDrawLeader: Boolean,\n /**\n * Returns whether the placemark should be depth-tested against other objects in the scene. If true, the placemark\n * may be occluded by terrain and other objects in certain viewing situations. If false, the placemark will not be\n * occluded by terrain and other objects. If this value is true, the placemark's label, if any, has an independent\n * depth-test control.\n */\n var isDepthTest: Boolean,\n /**\n * Returns the attributes to apply to the placemark's label\n */\n labelAttributes: TextAttributes,\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n leaderAttributes: ShapeAttributes\n) {\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n var imageColor = imageColor\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n var imageOffset = imageOffset\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the placemark's label\n */\n var labelAttributes = labelAttributes\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n var leaderAttributes = leaderAttributes\n set(value) {\n field.copy(value)\n }\n\n /**\n * Constructs a placemark attributes bundle. The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\n constructor(): this(\n imageSource = null,\n imageColor = Color(1f, 1f, 1f, 1f), // white\n imageOffset = Offset.center(),\n imageScale = 1.0,\n minimumImageScale = 0.0,\n isDrawLabel = true,\n isDrawLeader = false,\n isDepthTest = true,\n labelAttributes = TextAttributes(),\n leaderAttributes = ShapeAttributes()\n )\n\n /**\n * Constructs a placemark attribute bundle from the specified attributes. Performs a deep copy of the color, offset,\n * label attributes and leader-line attributes.\n *\n * @param attributes The attributes to be copied.\n */\n constructor(attributes: PlacemarkAttributes): this(\n attributes.imageSource,\n Color(attributes.imageColor),\n Offset(attributes.imageOffset),\n attributes.imageScale,\n attributes.minimumImageScale,\n attributes.isDrawLabel,\n attributes.isDrawLeader,\n attributes.isDepthTest,\n TextAttributes(attributes.labelAttributes),\n ShapeAttributes(attributes.leaderAttributes)\n )\n\n fun copy(attributes: PlacemarkAttributes) = apply {\n imageSource = attributes.imageSource\n imageColor.copy(attributes.imageColor)\n imageOffset.copy(attributes.imageOffset)\n imageScale = attributes.imageScale\n minimumImageScale = attributes.minimumImageScale\n isDrawLabel = attributes.isDrawLabel\n isDrawLeader = attributes.isDrawLeader\n isDepthTest = attributes.isDepthTest\n labelAttributes.copy(attributes.labelAttributes)\n leaderAttributes.copy(attributes.leaderAttributes)\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is PlacemarkAttributes) return false\n if (imageSource != other.imageSource) return false\n if (imageColor != other.imageColor) return false\n if (imageOffset != other.imageOffset) return false\n if (imageScale != other.imageScale) return false\n if (minimumImageScale != other.minimumImageScale) return false\n if (isDrawLabel != other.isDrawLabel) return false\n if (isDrawLeader != other.isDrawLeader) return false\n if (isDepthTest != other.isDepthTest) return false\n if (labelAttributes != other.labelAttributes) return false\n if (leaderAttributes != other.leaderAttributes) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = imageSource?.hashCode() ?: 0\n result = 31 * result + imageColor.hashCode()\n result = 31 * result + imageOffset.hashCode()\n result = 31 * result + imageScale.hashCode()\n result = 31 * result + minimumImageScale.hashCode()\n result = 31 * result + isDrawLabel.hashCode()\n result = 31 * result + isDrawLeader.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + labelAttributes.hashCode()\n result = 31 * result + leaderAttributes.hashCode()\n return result\n }\n\n companion object {\n @JvmStatic\n fun createWithImage(imageSource: ImageSource) = PlacemarkAttributes().apply { this.imageSource = imageSource }\n\n @JvmStatic\n fun createWithImageAndLeader(imageSource: ImageSource) = PlacemarkAttributes().apply {\n this.imageSource = imageSource\n isDrawLeader = true\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Polygon @JvmOverloads constructor(\n positions: List = emptyList(), attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n protected val boundaries = mutableListOf(positions)\n val boundaryCount get() = boundaries.size\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var lineVertexArray = FloatArray(0)\n protected var lineVertexIndex = 0\n protected var verticalVertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val topElements = mutableListOf()\n protected val sideElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected var vertexBufferKey = nextCacheKey()\n protected var elementBufferKey = nextCacheKey()\n protected var vertexLinesBufferKey = nextCacheKey()\n protected var elementLinesBufferKey = nextCacheKey()\n protected val vertexOrigin = Vec3()\n protected var cameraDistance = 0.0\n protected var texCoord1d = 0.0\n protected val tessCallback = object : GLUtessellatorCallbackAdapter() {\n override fun combineData(\n coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any\n ) = tessCombine(polygonData as RenderContext, coords, data, weight, outData)\n\n override fun vertexData(vertexData: Any, polygonData: Any) = tessVertex(polygonData as RenderContext, vertexData)\n\n override fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) = tessEdgeFlag(polygonData as RenderContext, boundaryEdge)\n\n override fun errorData(errnum: Int, polygonData: Any) = tessError(polygonData as RenderContext, errnum)\n }\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoord2d = Vec3()\n private val texCoordMatrix = Matrix3()\n private val modelToTexCoord = Matrix4()\n private val intermediateLocation = Location()\n private val tessCoords = DoubleArray(3)\n private val tessVertices = IntArray(3)\n private val tessEdgeFlags = BooleanArray(3)\n private var tessEdgeFlag = true\n private var tessVertexCount = 0\n\n companion object {\n protected const val VERTEX_STRIDE = 5\n protected const val LINE_VERTEX_STRIDE = 10\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n protected const val VERTEX_ORIGINAL = 0\n protected const val VERTEX_INTERMEDIATE = 1\n protected const val VERTEX_COMBINED = 2\n protected fun nextCacheKey() = Any()\n }\n\n fun getBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"getBoundary\", \"invalidIndex\")\n }\n return boundaries[index]\n }\n\n fun setBoundary(index: Int, positions: List): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"setBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.set(index, positions)\n }\n\n fun addBoundary(positions: List): Boolean {\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.add(positions)\n }\n\n fun addBoundary(index: Int, positions: List) {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"addBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n boundaries.add(index, positions)\n }\n\n fun removeBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"removeBoundary\", \"invalidIndex\")\n }\n reset()\n return boundaries.removeAt(index)\n }\n\n fun clearBoundaries() {\n boundaries.clear()\n reset()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n lineVertexArray = FloatArray(0)\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (boundaries.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n vertexLinesBufferKey = nextCacheKey()\n elementLinesBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n val drawableLines: Drawable\n val drawStateLines: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n\n drawableLines = DrawableSurfaceShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n drawableLines.offset = rc.globe.offset\n drawableLines.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n\n drawableLines = DrawableShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n val array = IntArray(topElements.size + sideElements.size)\n var index = 0\n for (element in topElements) array[index++] = element\n for (element in sideElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n // Use triangles mode to draw lines\n drawStateLines.isLine = true\n\n // Use the geom lines GLSL program to draw the shape.\n drawStateLines.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawStateLines.vertexBuffer = rc.getBufferObject(vertexLinesBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, lineVertexArray)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawStateLines.elementBuffer = rc.getBufferObject(elementLinesBufferKey) {\n val array = IntArray(outlineElements.size + verticalElements.size)\n var index = 0\n for (element in outlineElements) array[index++] = element\n for (element in verticalElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n drawInterior(rc, drawState)\n drawOutline(rc, drawStateLines)\n\n // Configure the drawable according to the shape's attributes. Disable triangle backface culling when we're\n // displaying a polygon without extruded sides, so we want to draw the top and the bottom.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Configure the drawable according to the shape's attributes.\n drawStateLines.vertexOrigin.copy(vertexOrigin)\n drawStateLines.enableCullFace = false\n drawStateLines.enableDepthTest = activeAttributes.isDepthTest\n drawStateLines.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape|| activeAttributes.interiorColor.alpha >= 1.0) {\n rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n rc.offerSurfaceDrawable(drawableLines, 0.0 /*zOrder*/)\n } else {\n rc.offerShapeDrawable(drawableLines, cameraDistance)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior top.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n drawState.drawElements(GL_TRIANGLES, topElements.size, GL_UNSIGNED_INT, 0 /*offset*/)\n\n // Configure the drawable to display the shape's interior sides.\n if (isExtrude) {\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLES, sideElements.size, GL_UNSIGNED_INT, topElements.size * Int.SIZE_BYTES /*offset*/)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_TRIANGLES, outlineElements.size,\n GL_UNSIGNED_INT, 0 /*offset*/\n )\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_TRIANGLES, verticalElements.size,\n GL_UNSIGNED_INT, outlineElements.size * Int.SIZE_BYTES /*offset*/\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty() || isExtrude && !isSurfaceShape && lineVertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val noIntermediatePoints = maximumIntermediatePoints <= 0 || pathType == LINEAR\n\n var vertexCount = 0\n var lineVertexCount = 0\n var verticalVertexCount = 0\n for (i in boundaries.indices) {\n val p = boundaries[i]\n\n if (p.isEmpty()) continue\n\n if (noIntermediatePoints) {\n vertexCount += p.size\n lineVertexCount += (p.size + 2)\n verticalVertexCount += p.size\n } else if (p.isNotEmpty() && p[0] == p[p.size - 1]) {\n vertexCount += p.size + (p.size - 1) * maximumIntermediatePoints\n lineVertexCount += 2 + p.size + (p.size - 1) * maximumIntermediatePoints\n verticalVertexCount += p.size\n } else {\n vertexCount += p.size + p.size * maximumIntermediatePoints\n lineVertexCount += 3 + p.size + p.size * maximumIntermediatePoints\n verticalVertexCount += p.size\n }\n }\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else if (!isSurfaceShape) FloatArray(vertexCount * VERTEX_STRIDE)\n else FloatArray((vertexCount + boundaries.size) * VERTEX_STRIDE) // Reserve boundaries.size for combined vertexes\n topElements.clear()\n sideElements.clear()\n lineVertexIndex = 0\n verticalVertexIndex = lineVertexCount * LINE_VERTEX_STRIDE\n lineVertexArray = if (isExtrude && !isSurfaceShape) FloatArray(lineVertexCount * LINE_VERTEX_STRIDE + verticalVertexCount * 4 * LINE_VERTEX_STRIDE)\n else FloatArray(lineVertexCount * LINE_VERTEX_STRIDE)\n outlineElements.clear()\n verticalElements.clear()\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n val tess = rc.tessellator\n GLU.gluTessNormal(tess, 0.0, 0.0, 1.0)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, tessCallback)\n GLU.gluTessBeginPolygon(tess, rc)\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions to assemble\n\n GLU.gluTessBeginContour(tess)\n\n // Add the boundary's first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, VERTEX_ORIGINAL /*type*/)\n\n addLineVertex(rc, begin.latitude, begin.longitude, begin.altitude, true, false)\n addLineVertex(rc, begin.latitude, begin.longitude, begin.altitude, false, false)\n\n // Add the remaining boundary vertices, tessellating each edge as indicated by the polygon's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, VERTEX_ORIGINAL /*type*/)\n addLineVertex(rc, end.latitude, end.longitude, end.altitude, false, true)\n begin = end\n }\n\n // Tessellate the implicit closing edge if the boundary is not already closed.\n if (begin != positions[0]) {\n addIntermediateVertices(rc, begin, positions[0])\n addLineVertex(rc, positions[0].latitude, positions[0].longitude, positions[0].altitude, true, true)\n addLineVertex(rc, positions[0].latitude, positions[0].longitude, positions[0].altitude, true, false)\n } else {\n addLineVertex(rc, begin.latitude, begin.longitude, begin.altitude, true, false)\n }\n GLU.gluTessEndContour(tess)\n }\n GLU.gluTessEndPolygon(tess)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, null)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, VERTEX_INTERMEDIATE /*type*/)\n addLineVertex(rc, loc.latitude, loc.longitude, alt, true, true)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, type: Int): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (type != VERTEX_COMBINED) {\n tessCoords[0] = longitude.inDegrees\n tessCoords[1] = latitude.inDegrees\n tessCoords[2] = altitude\n GLU.gluTessVertex(rc.tessellator, tessCoords, 0 /*coords_offset*/, vertex)\n }\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude) else vertexOrigin.copy(point)\n }\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n }\n }\n return vertex\n }\n\n protected open fun addLineVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, isIntermediate : Boolean, addIndices : Boolean\n ) {\n val vertex = (lineVertexIndex / LINE_VERTEX_STRIDE - 1) * 2\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (lineVertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (addIndices) {\n outlineElements.add(vertex - 2)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex)\n outlineElements.add(vertex)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex + 1)\n }\n } else {\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (addIndices) {\n outlineElements.add(vertex - 2)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex)\n outlineElements.add(vertex)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex + 1)\n }\n if (isExtrude && !isIntermediate) {\n var vertPoint = Vec3()\n vertPoint = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, vertPoint)\n val index = verticalVertexIndex / LINE_VERTEX_STRIDE * 2\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n verticalElements.add(index)\n verticalElements.add(index + 1)\n verticalElements.add(index + 2)\n verticalElements.add(index + 2)\n verticalElements.add(index + 1)\n verticalElements.add(index + 3)\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var numPoints = 0.0\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions\n for (j in positions.indices) {\n val point = rc.geographicToCartesian(positions[j], AltitudeMode.ABSOLUTE, point)\n mx += point.x\n my += point.y\n mz += point.z\n numPoints++\n }\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n rc.globe.cartesianToLocalTransform(mx, my, mz, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n protected open fun tessCombine(rc: RenderContext, coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {\n ensureVertexArrayCapacity() // Increment array size to fit combined vertexes\n outData[0] = addVertex(rc, coords[1].degrees /*lat*/, coords[0].degrees /*lon*/, coords[2] /*alt*/, VERTEX_COMBINED /*type*/)\n }\n\n protected open fun tessVertex(rc: RenderContext, vertexData: Any) {\n tessVertices[tessVertexCount] = vertexData as Int\n tessEdgeFlags[tessVertexCount] = tessEdgeFlag\n if (tessVertexCount < 2) {\n tessVertexCount++ // increment the vertex count and wait for more vertices\n return\n } else {\n tessVertexCount = 0 // reset the vertex count and process one triangle\n }\n val v0 = tessVertices[0]\n val v1 = tessVertices[1]\n val v2 = tessVertices[2]\n topElements.add(v0)\n topElements.add(v1)\n topElements.add(v2)\n if (tessEdgeFlags[0] && isExtrude && !isSurfaceShape) {\n sideElements.add(v0)\n sideElements.add(v0.inc())\n sideElements.add(v1)\n sideElements.add(v1)\n sideElements.add(v0.inc())\n sideElements.add(v1.inc())\n }\n if (tessEdgeFlags[1] && isExtrude && !isSurfaceShape) {\n sideElements.add(v1)\n sideElements.add(v1.inc())\n sideElements.add(v2)\n sideElements.add(v2)\n sideElements.add(v1.inc())\n sideElements.add(v2.inc())\n }\n if (tessEdgeFlags[2] && isExtrude && !isSurfaceShape) {\n sideElements.add(v2)\n sideElements.add(v2.inc())\n sideElements.add(v0)\n sideElements.add(v0)\n sideElements.add(v2.inc())\n sideElements.add(v0.inc())\n }\n }\n\n protected open fun tessEdgeFlag(rc: RenderContext, boundaryEdge: Boolean) { tessEdgeFlag = boundaryEdge }\n\n protected open fun tessError(rc: RenderContext, errNum: Int) {\n val errStr = GLU.gluErrorString(errNum)\n logMessage(\n WARN, \"Polygon\", \"assembleGeometry\", \"Error attempting to tessellate polygon '$errStr'\"\n )\n }\n\n protected open fun ensureVertexArrayCapacity() {\n val size = vertexArray.size\n if (size == vertexIndex) {\n val increment = (size shr 1).coerceAtLeast(12)\n val newArray = FloatArray(size + increment)\n vertexArray.copyInto(newArray)\n vertexArray = newArray\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\n\n/**\n * Holds attributes applied to geographic shapes.\n */\nopen class ShapeAttributes(\n /**\n * Indicates whether shape interiors are enabled.\n */\n var isDrawInterior: Boolean,\n /**\n * Indicates whether shape outlines are enabled.\n */\n var isDrawOutline: Boolean,\n /**\n * Indicates whether shape vertical outlines are enabled. Not all shapes display vertical outlines. Those that do\n * not ignore this property. When enabled, those that do display vertical lines extending from the shape's specified\n * positions to the ground.\n */\n var isDrawVerticals: Boolean,\n /**\n * Indicates whether shape depth-testing is enabled. When true, shapes may be occluded by terrain and other shapes\n * in certain viewing situations. When false, shapes will not be occluded by terrain and other shapes.\n */\n var isDepthTest: Boolean,\n /**\n * Indicates whether depth write enabled.\n */\n var isDepthWrite: Boolean,\n /**\n * Sets whether shape lighting is enabled. When true, the appearance of a shape's color and image source may be\n * modified by shading applied from a global light source.\n */\n var isLightingEnabled: Boolean,\n /**\n * Indicates the color and opacity of shape interiors.\n */\n interiorColor: Color,\n /**\n * Indicates the color and opacity of shape outlines.\n */\n outlineColor: Color,\n /**\n * Indicates the width of shape outlines.\n */\n var outlineWidth: Float,\n /**\n * Indicates the image source applied to shape interiors. When null, shape interiors are displayed in the interior\n * color. When non-null, image pixels appear in shape interiors, with each image pixel multiplied by the interior\n * RGBA color. Use a white interior color to display unmodified image pixels.\n *
\n * By default, interior image sources are displayed as a repeating pattern across shape interiors. The pattern\n * matches image pixels to screen pixels, such that the image appears to repeat in screen coordinates.\n */\n var interiorImageSource: ImageSource?,\n /**\n * Indicates the image source applied to shape outlines.\n */\n var outlineImageSource: ImageSource?\n) {\n /**\n * Indicates the color and opacity of shape interiors.\n */\n var interiorColor = interiorColor\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates the color and opacity of shape outlines.\n */\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n isDrawInterior = true,\n isDrawOutline = true,\n isDrawVerticals = false,\n isDepthTest = true,\n isDepthWrite = true,\n isLightingEnabled = false,\n interiorColor = Color(1f, 1f, 1f, 1f), // white\n outlineColor = Color(1f, 0f, 0f, 1f), // red\n outlineWidth = 1.0f,\n interiorImageSource = null,\n outlineImageSource = null\n )\n\n constructor(attributes: ShapeAttributes): this(\n attributes.isDrawInterior,\n attributes.isDrawOutline,\n attributes.isDrawVerticals,\n attributes.isDepthTest,\n attributes.isDepthWrite,\n attributes.isLightingEnabled,\n Color(attributes.interiorColor),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.interiorImageSource,\n attributes.outlineImageSource\n )\n\n fun copy(attributes: ShapeAttributes) = apply {\n isDrawInterior = attributes.isDrawInterior\n isDrawOutline = attributes.isDrawOutline\n isDrawVerticals = attributes.isDrawVerticals\n isDepthTest = attributes.isDepthTest\n isDepthWrite = attributes.isDepthWrite\n isLightingEnabled = attributes.isLightingEnabled\n interiorColor.copy(attributes.interiorColor)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n interiorImageSource = attributes.interiorImageSource\n outlineImageSource = attributes.outlineImageSource\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is ShapeAttributes) return false\n if (isDrawInterior != other.isDrawInterior) return false\n if (isDrawOutline != other.isDrawOutline) return false\n if (isDrawVerticals != other.isDrawVerticals) return false\n if (isDepthTest != other.isDepthTest) return false\n if (isDepthWrite != other.isDepthWrite) return false\n if (isLightingEnabled != other.isLightingEnabled) return false\n if (interiorColor != other.interiorColor) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (interiorImageSource != other.interiorImageSource) return false\n if (outlineImageSource != other.outlineImageSource) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = isDrawInterior.hashCode()\n result = 31 * result + isDrawOutline.hashCode()\n result = 31 * result + isDrawVerticals.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + isDepthWrite.hashCode()\n result = 31 * result + isLightingEnabled.hashCode()\n result = 31 * result + interiorColor.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + (interiorImageSource?.hashCode() ?: 0)\n result = 31 * result + (outlineImageSource?.hashCode() ?: 0)\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractSurfaceRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.SurfaceTextureProgram\n\nopen class SurfaceImage(sector: Sector, var imageSource: ImageSource): AbstractSurfaceRenderable(sector, \"Surface Image\") {\n var imageOptions: ImageOptions? = null\n protected val terrainSector = Sector()\n\n override fun doRender(rc: RenderContext) {\n terrainSector.copy(sector)\n if (terrainSector.isEmpty || !terrainSector.intersect(rc.terrain.sector) || !getExtent(rc).intersectsFrustum(rc.frustum)) return\n val texture = rc.getTexture(imageSource, imageOptions) ?: return // no texture to draw\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n\n // Enqueue a drawable surface texture for processing on the OpenGL thread.\n val program = getShaderProgram(rc)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n program, sector, opacity, texture, texture.coordTransform, rc.globe.offset, terrainSector\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n\n // Enqueue a picked object that associates the drawable surface texture with this surface image.\n if (rc.isPickMode) {\n val pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, drawable.color)\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun getShaderProgram(rc: RenderContext) = rc.getShaderProgram { SurfaceTextureProgram() }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\n/**\n * Holds attributes applied to text shapes and [Placemark] labels.\n */\nopen class TextAttributes protected constructor(\n font: Font,\n textColor: Color,\n textOffset: Offset,\n outlineColor: Color,\n var outlineWidth: Float,\n var isOutlineEnabled: Boolean,\n var isDepthTest: Boolean,\n var scale: Double\n) {\n var font = font\n set(value) {\n field.copy(value)\n }\n var textColor = textColor\n set(value) {\n field.copy(value)\n }\n var textOffset = textOffset\n set(value) {\n field.copy(value)\n }\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n font = Font(),\n textColor = Color(1f, 1f, 1f, 1f),\n textOffset = Offset.bottomCenter(),\n outlineColor = Color(0f, 0f, 0f, 1f),\n outlineWidth = 3f,\n isOutlineEnabled = true,\n isDepthTest = true,\n scale = 1.0\n )\n\n constructor(attributes: TextAttributes): this(\n attributes.font,\n Color(attributes.textColor),\n Offset(attributes.textOffset),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.isOutlineEnabled,\n attributes.isDepthTest,\n attributes.scale\n )\n\n fun copy(attributes: TextAttributes) = apply {\n font.copy(attributes.font)\n textColor.copy(attributes.textColor)\n textOffset.copy(attributes.textOffset)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n isOutlineEnabled = attributes.isOutlineEnabled\n isDepthTest = attributes.isDepthTest\n scale = attributes.scale\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is TextAttributes) return false\n if (font != other.font) return false\n if (textColor != other.textColor) return false\n if (textOffset != other.textOffset) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (isOutlineEnabled != other.isOutlineEnabled) return false\n if (isDepthTest != other.isDepthTest) return false\n if (scale != other.scale) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = font.hashCode()\n result = 31 * result + textColor.hashCode()\n result = 31 * result + textOffset.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + isOutlineEnabled.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + scale.hashCode()\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.*\nimport kotlinx.coroutines.*\nimport kotlin.time.Duration.Companion.seconds\n\nopen class TiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet): AbstractRenderable(\"Tiled Surface Image\") {\n /**\n * Tile factory implementation.\n */\n var tileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Tile pyramid representation.\n */\n var levelSet = levelSet\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Additional image texture options.\n */\n var imageOptions: ImageOptions? = null\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Define imagery level of details. It controls tile pixel density on the screen.\n */\n var detailControl = 1.0\n /**\n * Retrieve top level tiles to avoid black holes when navigating and zooming out camera\n */\n var retrieveTopLevelTiles = true\n /**\n * Use ancestor tile texture as a fallback for descendants\n */\n var useAncestorTileTexture = true\n /**\n * Define cache tiles factory implementation.\n */\n var cacheTileFactory: CacheTileFactory? = null\n /**\n * Configures tiled surface image to retrieve only the cache source.\n */\n var isCacheOnly = false\n\n /**\n * Memory cache for this layer's subdivision tiles. Each entry contains an array of four image tiles corresponding\n * to the subdivision of the group's common parent tile. The cache is configured to hold 1200 groups, a number\n * empirically determined to be sufficient for storing the tiles needed to navigate a small region.\n */\n protected var tileCache = LruMemoryCache>(1200)\n protected var activeProgram: SurfaceTextureProgram? = null\n protected var ancestorTile: ImageTile? = null\n protected var ancestorTexture: Texture? = null\n protected val ancestorTexCoordMatrix = Matrix3()\n protected val topLevelTiles = mutableListOf()\n protected var lastGlobeState: Globe.State? = null\n\n /**\n * Makes a copy of this tiled surface image\n */\n open fun clone() = TiledSurfaceImage(tileFactory, LevelSet(levelSet)).also {\n it.imageOptions = imageOptions\n }\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n checkGlobeState(rc)\n determineActiveProgram(rc)\n assembleTiles(rc)\n activeProgram = null // clear the active program to avoid leaking render resources\n ancestorTile = null // clear the ancestor tile and texture\n ancestorTexture = null\n }\n\n @Throws(IllegalStateException::class, IllegalArgumentException::class)\n open fun launchBulkRetrieval(\n scope: CoroutineScope, sector: Sector, resolution: ClosedRange, onProgress: ((Long, Long, Long) -> Unit)?,\n retrieveTile: suspend (imageSource: ImageSource, cacheSource: ImageSource, options: ImageOptions?) -> Boolean\n ): Job {\n val cacheTileFactory = cacheTileFactory ?: error(\"Cache not configured\")\n require(sector.intersect(levelSet.sector)) { \"Sector does not intersect tiled surface image sector\" }\n return scope.launch(Dispatchers.Default) {\n val minLevel = levelSet.levelForResolution(resolution.endInclusive)\n val maxLevel = levelSet.levelForResolution(resolution.start)\n val tileCount = levelSet.tileCount(sector, minLevel, maxLevel)\n var downloaded = 0L\n var skipped = 0L\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n topLevelTiles.forEach { topLevelTile ->\n processAndSubdivideTile(topLevelTile as ImageTile, sector, minLevel, maxLevel) { tile ->\n var attempt = 0\n // Retry download attempts till success or 404 not fond or job canceled\n while(true) {\n // Check if a job canceled\n ensureActive()\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: break\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource\n ?: (cacheTileFactory.createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile)\n .imageSource?.also { tile.cacheSource = it } ?: break\n // Attempt to download tile\n try {\n ++attempt\n if (retrieveTile(imageSource, cacheSource, imageOptions)) {\n // Tile successfully downloaded\n onProgress?.invoke(++downloaded, skipped, tileCount)\n } else {\n // Received data cannot be decoded as image\n onProgress?.invoke(downloaded, ++skipped, tileCount)\n }\n break // Continue downloading the next tile\n } catch (throwable: Throwable) {\n delay(if (attempt % makeLocalRetries == 0) makeLocalTimeoutLong else makeLocalTimeoutShort)\n }\n }\n }\n }\n }\n }\n\n protected open suspend fun processAndSubdivideTile(\n tile: ImageTile, sector: Sector, minLevel: Level, maxLevel: Level, process: suspend (ImageTile) -> Unit\n ) {\n if (!tile.intersectsSector(sector)) return // Ignore tiles and its descendants outside the specified sector\n val levelNumber = tile.level.levelNumber\n // Skip tiles with level less than specified offset from the process\n if (levelNumber >= minLevel.levelNumber && levelNumber >= levelSet.levelOffset) process(tile)\n // Do not subdivide if specified level or last available level reached\n if (levelNumber < maxLevel.levelNumber && !tile.level.isLastLevel) {\n tile.subdivide(tileFactory).forEach { processAndSubdivideTile(it as ImageTile, sector, minLevel, maxLevel, process) }\n }\n }\n\n protected open fun determineActiveProgram(rc: RenderContext) {\n activeProgram = rc.getShaderProgram { SurfaceTextureProgram() }\n }\n\n protected open fun assembleTiles(rc: RenderContext) {\n // TODO\n // The need to create Tiles with a defined image source couples the need to determine a tile's visibility with\n // he need to know its image source. Decoupling the two would mean we only need to know the image source when\n // the texture is actually requested Could the tile-based operations done here be implicit on level/row/column,\n // or use transient pooled tile objects not tied to an image source?\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as ImageTile)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: ImageTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsSector(rc.terrain.sector) || !tile.intersectsFrustum(rc)) return\n val retrieveCurrentLevel = tile.level.levelNumber >= levelSet.levelOffset\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n if (retrieveCurrentLevel) addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val currentAncestorTile = ancestorTile\n val currentAncestorTexture = ancestorTexture\n getTexture(rc, tile, retrieveTopLevelTiles && retrieveCurrentLevel)?.let { tileTexture ->\n // tile has a texture; use it as a fallback tile for descendants\n if (useAncestorTileTexture) {\n ancestorTile = tile\n ancestorTexture = tileTexture\n }\n }\n // each tile has a cached size of 1, recursively process the tile's children\n val children = tile.subdivideToCache(tileFactory, tileCache, 4)\n for (i in children.indices) addTileOrDescendants(rc, children[i] as ImageTile)\n ancestorTile = currentAncestorTile // restore the last fallback tile, even if it was null\n ancestorTexture = currentAncestorTexture\n }\n\n protected open fun addTile(rc: RenderContext, tile: ImageTile) {\n val texture = getTexture(rc, tile)\n val ancestorTile = ancestorTile\n val ancestorTexture = ancestorTexture\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n if (texture != null) { // use the tile's own texture\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, texture, texture.coordTransform, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n } else if (ancestorTile != null && ancestorTexture != null) { // use the ancestor tile's texture, transformed to fill the tile sector\n ancestorTexCoordMatrix.copy(ancestorTexture.coordTransform)\n ancestorTexCoordMatrix.multiplyByTileTransform(tile.sector, ancestorTile.sector)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, ancestorTexture, ancestorTexCoordMatrix, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n }\n\n // TODO If cache source retrieved but it is outdated, than try to retrieve original image source anyway to refresh cache\n protected open fun getTexture(rc: RenderContext, tile: ImageTile, retrieve: Boolean = true): Texture? {\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: return null\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource ?: cacheTileFactory?.run {\n (createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile).imageSource?.also { tile.cacheSource = it }\n }\n // Read cache only in case of tile factory and cache factory are the same\n val isCacheOnly = isCacheOnly || tileFactory == cacheTileFactory\n // If a cache source is not absent, then retrieve it instead of an original image source\n val isCacheAbsent = cacheSource == null || rc.renderResourceCache.absentResourceList.isResourceAbsent(cacheSource.hashCode())\n return rc.getTexture(\n if (isCacheAbsent) imageSource else cacheSource!!, imageOptions, retrieve && (!isCacheOnly || !isCacheAbsent)\n )\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n open fun invalidateTiles() {\n topLevelTiles.clear()\n tileCache.clear()\n }\n\n companion object {\n /**\n * Number of reties of bulk tile retrieval before long timeout\n */\n var makeLocalRetries = 3\n /**\n * Short timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutShort = 5.seconds\n /**\n * Long timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutLong = 15.seconds\n }\n}","package earth.worldwind.util\n\nimport kotlinx.datetime.Clock\nimport kotlin.time.Duration\nimport kotlin.time.Duration.Companion.seconds\n\n/**\n * Provides a collection to keep track of resources whose retrieval failed and when retrieval may be tried again.\n */\nopen class AbsentResourceList(\n /**\n * The number of attempts to make before the resource is marked as absent.\n */\n private val maxTrys: Int,\n /**\n * The amount of time to wait between attempts, in milliseconds.\n */\n private val minCheckInterval: Duration\n) {\n /**\n * The amount of time, in milliseconds, beyond which retrieval attempts should again be allowed.\n * When this time has elapsed from the most recent failed attempt the number of try's attempted is\n * reset to 0. This prevents the resource from being permanently blocked.\n */\n var tryAgainInterval = 60.seconds\n\n private val possiblyAbsent = mutableMapOf()\n\n fun clear() { possiblyAbsent.clear() }\n\n /**\n * Indicates whether a specified resource is marked as absent.\n * @param resourceId The resource identifier.\n * @returns true if the resource is marked as absent, otherwise false.\n */\n fun isResourceAbsent(resourceId: T): Boolean {\n val entry = possiblyAbsent[resourceId] ?: return false\n if (entry.permanent) return true\n\n val timeSinceLastMark = Clock.System.now() - entry.timeOfLastMark\n\n if (timeSinceLastMark > tryAgainInterval) {\n possiblyAbsent.remove(resourceId)\n return false\n }\n\n return timeSinceLastMark < minCheckInterval || entry.numTrys > maxTrys\n }\n\n /**\n * Marks a resource attempt as having failed. This increments the number-of-tries counter and sets the time\n * of the last attempt. When this method has been called [AbsentResourceList.maxTrys] times the resource is marked\n * as absent until this absent resource list's [AbsentResourceList.tryAgainInterval] is reached.\n *\n * @param resourceId The resource identifier.\n * @param permanent Marks a resource attempt as having failed permanently. No attempt will ever again be made to retrieve the resource.\n */\n fun markResourceAbsent(resourceId: T, permanent: Boolean = false) {\n (possiblyAbsent[resourceId] ?: AbsentResourceEntry().also { possiblyAbsent[resourceId] = it }).makeTry(permanent)\n }\n\n /**\n * Removes the specified resource from this absent resource list. Call this method when retrieval attempt succeeded.\n * @param resourceId The resource identifier.\n */\n fun unmarkResourceAbsent(resourceId: T) { possiblyAbsent.remove(resourceId) }\n\n private inner class AbsentResourceEntry {\n var timeOfLastMark = Clock.System.now()\n private set\n var numTrys = 0\n private set\n var permanent = false\n private set\n\n fun makeTry(permanent: Boolean = false) {\n numTrys++\n timeOfLastMark = Clock.System.now()\n this.permanent = permanent\n }\n }\n}","package earth.worldwind.util\n\n/**\n * AbstractSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded resources.\n */\nabstract class AbstractSource protected constructor(protected val source: Any) {\n /**\n * Resource post-processing routine.\n */\n var postprocessor: ResourcePostprocessor? = null\n\n /**\n * @return generic image source as unrecognized object.\n */\n fun asUnrecognized() = source\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is AbstractSource) return false\n if (source != other.source) return false\n return true\n }\n\n override fun hashCode() = source.hashCode()\n\n override fun toString() = source.toString()\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.min\n\nabstract class AbstractTile(\n /**\n * The sector spanned by this tile.\n */\n val sector: Sector\n) {\n /**\n * The tile's Cartesian bounding box.\n */\n protected val extent by lazy { BoundingBox() }\n protected open val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n private val nearestPoint = Vec3()\n\n /**\n * Indicates whether this tile's Cartesian extent intersects a frustum.\n *\n * @param rc the current render context\n *\n * @return true if the frustum intersects this tile's extent, otherwise false\n */\n fun intersectsFrustum(rc: RenderContext) = getExtent(rc).intersectsFrustum(rc.frustum)\n\n /**\n * Indicates whether this tile intersects a specified sector.\n *\n * @param sector the sector of interest\n *\n * @return true if the specified sector intersects this tile's sector, otherwise false\n */\n fun intersectsSector(sector: Sector) = this.sector.intersects(sector)\n\n /**\n * Calculates the distance from this tile to the camera point which ensures front to back sorting.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the L1 distance in degrees\n */\n protected open fun drawSortOrder(rc: RenderContext): Double {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val latAbsDifference = abs(cameraPosition.latitude.inDegrees - sector.centroidLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonAbsDifference = abs(cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees)\n val lonAbsDifferenceCorrected = min(lonAbsDifference, 360.0 - lonAbsDifference)\n\n return latAbsDifference + lonAbsDifferenceCorrected // L1 distance on cylinder\n }\n\n /**\n * Calculates nearest point of this tile to the camera position associated with the specified render context.\n * Altitude value is based on the minimum height for the tile.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the nearest point\n */\n protected open fun nearestPoint(rc: RenderContext): Vec3 {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val nearestLat = cameraPosition.latitude.inDegrees.coerceIn(sector.minLatitude.inDegrees, sector.maxLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonDifference = cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees\n val nearestLon = when {\n lonDifference < -180.0 -> sector.maxLongitude.inDegrees\n lonDifference > 180.0 -> sector.minLongitude.inDegrees\n else -> cameraPosition.longitude.inDegrees.coerceIn(sector.minLongitude.inDegrees, sector.maxLongitude.inDegrees)\n }\n val minHeight = heightLimits[0] * rc.verticalExaggeration\n return rc.globe.geographicToCartesian(nearestLat.degrees, nearestLon.degrees, minHeight, nearestPoint)\n }\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n}","package earth.worldwind.util\n\nimport kotlin.math.max\n\n@Suppress(\"UNCHECKED_CAST\")\nopen class BasicPool: Pool {\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n protected var size = 0\n protected var entries = arrayOfNulls(size)\n\n override fun acquire(): T? {\n if (size > 0) {\n val last = --size\n val instance = entries[last]\n entries[last] = null\n return instance as T?\n }\n return null\n }\n\n override fun release(instance: T?) {\n // TODO reduce the pool size when excess entries may not be needed\n // TODO use a keep alive time to indicate how long to keep stale instances\n if (instance != null) {\n val capacity = entries.size\n if (capacity == size) {\n // increase the pool size by the larger of 50% or the minimum increment\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries, 0, 0, capacity)\n entries = newEntries\n }\n entries[size++] = instance\n }\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport kotlin.math.roundToInt\n\n/**\n * Represents a level of a specific resolution in a [LevelSet].\n */\nopen class Level internal constructor(\n /**\n * The LevelSet that this level is a member of.\n */\n val parent: LevelSet,\n /**\n * The level's ordinal in its parent level set.\n */\n val levelNumber: Int,\n /**\n * The geographic width and height of tiles within this level.\n */\n val tileDelta: Location\n) {\n /**\n * The width in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the longitudinal direction of this level set.\n */\n val levelWidth = (parent.tileWidth * parent.tileOrigin.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).roundToInt()\n /**\n * The height in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the latitudinal direction of this level set.\n */\n val levelHeight = (parent.tileHeight * parent.tileOrigin.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).roundToInt()\n /**\n * The parent LevelSet's tileWidth.\n */\n val tileWidth = parent.tileWidth\n /**\n * The parent LevelSet's tileHeight.\n */\n val tileHeight = parent.tileHeight\n /**\n * The size of pixels or elevation cells within this level, in radians per pixel or per cell.\n */\n val texelSize = tileDelta.longitude.inRadians / parent.tileWidth\n /**\n * Indicates whether this level is the lowest resolution level (level 0) within the parent level set.\n */\n val isFirstLevel get() = levelNumber == 0\n /**\n * Indicates whether this level is the highest resolution level within the parent level set.\n */\n val isLastLevel get() = levelNumber == parent.numLevels - 1\n /**\n * Returns the level whose ordinal occurs immediately before this level's ordinal in the parent level set, or null\n * if this is the fist level.\n */\n val previousLevel get() = parent.level(levelNumber - 1)\n /**\n * Returns the level whose ordinal occurs immediately after this level's ordinal in the parent level set, or null if\n * this is the last level.\n */\n val nextLevel get() = parent.level(levelNumber + 1)\n\n /**\n * Calculates number of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector) = with(parent.tileOrigin) {\n val firstRow = computeRow(tileDelta.latitude, sector.minLatitude)\n val lastRow = computeLastRow(tileDelta.latitude, sector.maxLatitude)\n val firstCol = computeColumn(tileDelta.longitude, sector.minLongitude)\n val lastCol = computeLastColumn(tileDelta.longitude, sector.maxLongitude)\n (lastRow - firstRow + 1).toLong() * (lastCol - firstCol + 1).toLong()\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.ln\n\n/**\n * Configuration values for a multi-resolution, hierarchical collection of tiles organized into levels of increasing\n * resolution.\n */\nopen class LevelSetConfig {\n /**\n * The sector spanned by the level set.\n */\n val sector = Sector().setFullSphere()\n /**\n * Tile origin for the level set\n */\n val tileOrigin = Sector().setFullSphere()\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of the level set.\n */\n var firstLevelDelta = Location(POS90, POS90)\n /**\n * The number of levels in the level set.\n */\n var numLevels = 1\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset = 0\n /**\n * The width in pixels of images associated with tiles in the level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with the level set.\n */\n var tileWidth = 256\n /**\n * The height in pixels of images associated with tiles in the level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with the level set.\n */\n var tileHeight = 256\n\n /**\n * Returns the number of levels necessary to achieve the specified resolution. The result is correct for this\n * configuration's current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = ceil(level).toInt() // ceiling captures the resolution\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n\n /**\n * Returns the number of levels closest to the specified resolution, but does not exceed it. May be used to\n * configure level sets where a not to exceed resolution is mandated. The result is correct for this configuration's\n * current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired not to exceed resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForMinResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForMinResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = floor(level).toInt() // floor prevents exceeding the min scale\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class LruMemoryCache @JvmOverloads constructor(\n val capacity: Long, protected val lowWater: Long = (capacity * 0.75).toLong()\n) {\n var usedCapacity = 0L\n protected set\n val entryCount get() = entries.size\n // sorts entries from least recently used to most recently used\n protected open val lruComparator = Comparator> { lhs, rhs -> lhs.lastUsed.compareTo(rhs.lastUsed) }\n protected val entries = mutableMapOf>()\n protected open var age = 0L\n get() = ++field // Auto increment cache age on each access to its entries\n\n protected open class Entry(val key: K, val value: V, val size: Int) { var lastUsed = 0L }\n\n init {\n require(capacity >= 1) {\n logMessage(ERROR, \"LruMemoryCache\", \"constructor\", \"invalidCapacity\")\n }\n require(lowWater in 0 until capacity) {\n logMessage(\n ERROR, \"LruMemoryCache\", \"constructor\",\n \"The specified low-water value is greater than or equal to the capacity, or less than 1\"\n )\n }\n }\n\n open operator fun get(key: K) = entries[key]?.run {\n lastUsed = age\n value\n }\n\n open fun put(key: K, value: V, size: Int): V? {\n if (usedCapacity + size > capacity) makeSpace(size)\n val newEntry = Entry(key, value, size)\n newEntry.lastUsed = age\n usedCapacity += newEntry.size\n val oldEntry = entries.put(key, newEntry)\n if (oldEntry != null) {\n usedCapacity -= oldEntry.size\n if (newEntry.value !== oldEntry.value) {\n entryRemoved(oldEntry.key, oldEntry.value, newEntry.value, false)\n return oldEntry.value\n }\n }\n return null\n }\n\n open fun remove(key: K) = entries.remove(key)?.run {\n usedCapacity -= size\n entryRemoved(key, value, null, false)\n value\n }\n\n open fun trimToAge(maxAge: Long): Int {\n var trimmedCapacity = 0\n\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the entry's age is within the specified maximum age.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (entry.lastUsed < maxAge) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n trimmedCapacity += entry.size\n entryRemoved(entry.key, entry.value, null, false)\n } else break\n }\n return trimmedCapacity\n }\n\n open fun containsKey(key: K) = entries.containsKey(key)\n\n open fun clear() {\n // NOTE Entities cleared without entryRemoved call\n // for (entry in entries.values) entryRemoved(entry.key, entry.value, null, false)\n entries.clear()\n usedCapacity = 0\n }\n\n protected open fun makeSpace(spaceRequired: Int) {\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the cache capacity reaches the low water and the cache has\n // enough free capacity for the required space.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (usedCapacity > lowWater || capacity - usedCapacity < spaceRequired) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n entryRemoved(entry.key, entry.value, null, true)\n } else break\n }\n }\n\n /*\n * Sort the entries from least recently used to most recently used.\n */\n protected open fun assembleSortedEntries() = entries.values.sortedWith(lruComparator)\n\n protected open fun entryRemoved(key: K, oldValue: V, newValue: V?, evicted: Boolean) {}\n}","package earth.worldwind.util\n\nval messageTable = mapOf(\n \"errorReadingProgramSource\" to \"Error reading program sources\",\n \"exceptionParsingText\" to \"Exception parsing text\",\n \"invalidBitmap\" to \"The bitmap is recycled\",\n \"invalidCapacity\" to \"The capacity is less than 1\",\n \"invalidCount\" to \"The count is invalid\",\n \"invalidClipDistance\" to \"The clip distance is invalid\",\n \"invalidFieldOfView\" to \"The field of view is invalid\",\n \"invalidHeight\" to \"The height is invalid\",\n \"invalidIndex\" to \"The index is invalid\",\n \"invalidNumIntervals\" to \"The number of intervals is invalid\",\n \"invalidNumLevels\" to \"The number of levels is invalid\",\n \"invalidRadius\" to \"The radius is invalid\",\n \"invalidRange\" to \"The range is invalid\",\n \"invalidResolution\" to \"The resolution is invalid\",\n \"invalidStride\" to \"The stride is invalid\",\n \"invalidTileDelta\" to \"The tile delta is invalid\",\n \"invalidWidth\" to \"The width is invalid\",\n \"invalidWidthOrHeight\" to \"The width or the height is invalid\",\n \"missingArray\" to \"The array insufficient length\",\n \"missingLayerNames\" to \"The layer names are empty\",\n \"singularMatrix\" to \"The matrix cannot be inverted\"\n)","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport kotlinx.datetime.Instant\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.toLocalDateTime\nimport kotlin.math.*\n\n/**\n * Provides utilities for determining the Sun geographic and celestial location.\n */\nobject SunPosition {\n class CelestialLocation(val declination: Angle, val rightAscension: Angle)\n\n /**\n * Computes the geographic location of the sun for a given date\n * @param instant Input instant\n * @return the geographic location\n */\n fun getAsGeographicLocation(instant: Instant) = celestialToGeographic(getAsCelestialLocation(instant), instant)\n\n /**\n * Computes the celestial location of the sun for a given julianDate\n * @param instant Input instant\n * @return the celestial location\n */\n fun getAsCelestialLocation(instant: Instant): CelestialLocation {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n val meanLongitude = Angle.normalizeAngle360(280.460 + 0.9856474 * numDays)\n val meanAnomaly = Angle.toRadians(Angle.normalizeAngle360(357.528 + 0.9856003 * numDays))\n val eclipticLongitude = meanLongitude + 1.915 * sin(meanAnomaly) + 0.02 * sin(2 * meanAnomaly)\n val eclipticLongitudeRad = Angle.toRadians(eclipticLongitude)\n val obliquityOfTheEcliptic = Angle.toRadians(23.439 - 0.0000004 * numDays)\n val declination = asin(sin(obliquityOfTheEcliptic) * sin(eclipticLongitudeRad)).radians\n var rightAscension = atan(cos(obliquityOfTheEcliptic) * tan(eclipticLongitudeRad)).radians\n if (eclipticLongitude >= 90 && eclipticLongitude < 270) rightAscension += Angle.POS180\n return CelestialLocation(declination, rightAscension.normalize360())\n }\n\n /**\n * Converts from celestial coordinates (declination and right ascension) to geographic coordinates\n * (latitude, longitude) for a given julian date\n * @param celestialLocation Celestial location\n * @param instant Input instant\n * @return the geographic location\n */\n fun celestialToGeographic(celestialLocation: CelestialLocation, instant: Instant): Location {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n\n //Greenwich Mean Sidereal Time\n val GMST = Angle.normalizeAngle360(280.46061837 + 360.98564736629 * numDays)\n\n //Greenwich Hour Angle\n val GHA = Angle.normalizeAngle360(GMST - celestialLocation.rightAscension.inDegrees)\n\n val longitude = (-GHA).degrees.normalizeLongitude()\n\n return Location(celestialLocation.declination, longitude)\n }\n\n /**\n * Computes the julian date from a javascript date object\n * @param instant Input instant\n * @return the julian date\n */\n fun computeJulianDate(instant: Instant): Double {\n val date = instant.toLocalDateTime(TimeZone.UTC)\n var year = date.year\n var month = date.monthNumber + 1\n val day = date.dayOfMonth\n val hour = date.hour\n val minute = date.minute\n val second = date.second\n val dayFraction = (hour + minute / 60.0 + second / 3600.0) / 24.0\n if (month <= 2) {\n year -= 1\n month += 12\n }\n val a = floor(year / 100.0)\n val b = 2 - a + floor(a / 4.0)\n val JD0h = floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524.5\n return JD0h + dayFraction\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.cos\n\n/**\n * Geographically rectangular tile within a [LevelSet], typically representing terrain or imagery. Provides a base\n * class for tiles used by tiled image layers and elevation models. Applications typically do not interact with this\n * class.\n */\nopen class Tile protected constructor(\n /**\n * The sector spanned by this tile.\n */\n sector: Sector,\n /**\n * The level at which this tile lies within a [LevelSet].\n */\n val level: Level,\n /**\n * The tile's row within its level.\n */\n val row: Int,\n /**\n * The tile's column within its level.\n */\n val column: Int\n) : AbstractTile(sector) {\n /**\n * A key that uniquely identifies this tile within a level set. Tile keys are not unique to a specific level set.\n */\n val tileKey = \"${level.levelNumber}.$row.$column\"\n private val scratchVector = Vec3()\n\n /**\n * Indicates whether this tile should be subdivided based on the current navigation state and a specified detail\n * factor.\n *\n * @param rc the current render context\n * @param detailFactor the detail factor to consider\n *\n * @return true if the tile should be subdivided, otherwise false\n */\n open fun mustSubdivide(rc: RenderContext, detailFactor: Double): Boolean {\n var texelSize = level.texelSize * rc.globe.equatorialRadius // Compute texel size in meters\n\n val pixelSize = if (rc.globe.is2D) rc.pixelSize else {\n // Consider that texels are laid out continuously on the arc of constant latitude connecting the tile's\n // east and west edges and passing through its centroid.\n texelSize *= cos(sector.centroidLatitude.inRadians)\n\n // Get distance from nearest tile point to camera\n val nearestPoint = nearestPoint(rc)\n val distanceToCamera = nearestPoint.distanceTo(rc.cameraPoint)\n\n // Accelerate the degradation of tile details depending on the viewing angle to tile normal\n if (isAccelerateDegradation && level.tileDelta.latitude.inDegrees <= 5.625) {\n val viewingVector = nearestPoint.subtract(rc.cameraPoint)\n val normalVector =\n rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n texelSize *= abs(dot / (viewingVector.magnitude * normalVector.magnitude))\n }\n\n // Use individual pixel size based on tile distance to camera\n rc.pixelSizeAtDistance(distanceToCamera)\n }\n\n // Adjust the subdivision factory when the display density is low.\n return texelSize > pixelSize * detailFactor * rc.densityFactor\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its [LevelSet].\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n\n val latMin = sector.minLatitude\n val lonMin = sector.minLongitude\n val latMid = sector.centroidLatitude\n val lonMid = sector.centroidLongitude\n val latMax = sector.maxLatitude\n val lonMax = sector.maxLongitude\n\n var childRow = 2 * row\n var childCol = 2 * column\n var childSector = Sector(latMin, latMid, lonMin, lonMid)\n val child0 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southwest\n\n childRow = 2 * row\n childCol = 2 * column + 1\n childSector = Sector(latMin, latMid, lonMid, lonMax)\n val child1 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southeast\n\n childRow = 2 * row + 1\n childCol = 2 * column\n childSector = Sector(latMid, latMax, lonMin, lonMid)\n val child2 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northwest\n\n childRow = 2 * row + 1\n childCol = 2 * column + 1\n childSector = Sector(latMid, latMax, lonMid, lonMax)\n val child3 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northeast\n\n return arrayOf(child0, child1, child2, child3)\n }\n\n /**\n * Returns the four children formed by subdividing this tile, drawing those children from a specified cache. The\n * cache is checked for a child collection prior to subdividing. If one exists in the cache it is returned rather\n * than creating a new collection of children. If a new collection is created in the same manner as [subdivide] and added to the cache.\n *\n * @param tileFactory the tile factory to use to create the children\n * @param cache a memory cache that may contain pre-existing child tiles.\n * @param cacheSize the cached size of the four child tiles\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivideToCache(\n tileFactory: TileFactory, cache: LruMemoryCache>, cacheSize: Int\n ) = cache[tileKey] ?: subdivide(tileFactory).also { cache.put(tileKey, it, cacheSize) }\n\n companion object {\n /**\n * Accelerate the degradation of tile details depending on the viewing angle to tile normal.\n * This option dramatically increases performance, but degrades scene background level of details.\n */\n var isAccelerateDegradation = true\n\n /**\n * Creates all tiles for a specified level within a [LevelSet].\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result an pre-allocated Collection in which to store the results\n *\n * @return the result argument populated with the tiles for the specified level\n */\n @JvmStatic\n fun assembleTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = level.parent.sector\n val tileOrigin = level.parent.tileOrigin\n val tileDelta = level.tileDelta\n val firstRow = tileOrigin.computeRow(tileDelta.latitude, sector.minLatitude)\n val lastRow = tileOrigin.computeLastRow(tileDelta.latitude, sector.maxLatitude)\n val firstCol = tileOrigin.computeColumn(tileDelta.longitude, sector.minLongitude)\n val lastCol = tileOrigin.computeLastColumn(tileDelta.longitude, sector.maxLongitude)\n val firstRowLat = tileOrigin.minLatitude.plusDegrees(firstRow * tileDelta.latitude.inDegrees)\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * tileDelta.longitude.inDegrees)\n var minLat = firstRowLat\n for (row in firstRow..lastRow) {\n val maxLat = minLat + tileDelta.latitude\n var minLon = firstColLon\n for (col in firstCol..lastCol) {\n val maxLon = minLon + tileDelta.longitude\n val tileSector = Sector(minLat, maxLat, minLon, maxLon)\n result.add(tileFactory.createTile(tileSector, level, row, col))\n minLon = maxLon\n }\n minLat = maxLat\n }\n return result\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlin.math.*\n\nclass ExponentFormatter(val value: Double) {\n var mantissa: Double\n private set\n var exponent: Int = 0\n private set(value) {\n field = value\n strExponent = \"e$exponent\"\n }\n\n private val mstr: String\n private var strExponent: String\n\n init {\n val x = abs(value)\n exponent = log10(x).toInt()\n if (exponent < 0) exponent--\n mantissa = x / 10.0.pow(exponent)\n if (value < 0) mantissa = -mantissa\n mstr = mantissa.toString()\n strExponent = \"e$exponent\"\n }\n\n fun scientific(width: Int, fractionWidth: Int = -1): String {\n val minLength = if (mantissa < 0) 2 else 1\n\n // Get the desired part of mantissa with proper bounding and rounding\n // it works only for \"normalized\" mantissa that is always has d[.ddddd] form, e.g. integer\n // part is always 1 digit long\n //\n // ERROR: this rounding does not work with trailint (***9)8 - like variants\n //\n fun mpart(length: Int): String {\n var l = length\n if (l > mstr.length) l = mstr.length\n val result = StringBuilder(mstr.slice(0 until l))\n // exact value, no rounding:\n if (result.length == mstr.length) return result.toString()\n\n // next significant digit\n var nextDigit = mstr[result.length]\n if (nextDigit == '.') {\n if (result.length + 1 >= mstr.length) return result.toString()\n nextDigit = mstr[result.length + 1]\n }\n if (nextDigit in \"56789\") {\n val (m, ovf) = roundUp(result)\n if (!ovf) return m\n // overflow: exponent should grow\n exponent++\n // and the point position should be fixed\n val pointPos = m.indexOf('.')\n val mb = StringBuilder(m)\n if (pointPos == -1)\n return m // it was the last letter and was therefore removed by roundUp\n return mb.deleteAt(pointPos).insert(pointPos - 1, '.').toString()\n }\n return result.toString()\n }\n\n if (width == 0) return mstr + strExponent\n\n if (fractionWidth < 0 && width > 0) {\n var l = width - strExponent.length\n if (l < minLength) l = minLength\n return mpart(l) + strExponent\n }\n\n if (fractionWidth < 0 && width < 0) return mstr + strExponent\n\n // fractionWidth >= 0\n if (fractionWidth == 0) return \"${mstr[0]}$strExponent\"\n\n // fractionWidth > 0, +1 for decimal dot\n return mpart(minLength + 1 + fractionWidth) + strExponent\n }\n\n\n override fun toString() = \"${mantissa}e${exponent}\"\n}\n\ninternal fun scientificFormat(value: Double, width: Int, fractionPartLength: Int = -1) =\n ExponentFormatter(value).scientific(width, fractionPartLength)\n\ninternal fun fractionalFormat(_value: Double, width: Int, fractionPartLength: Int = -1): String {\n var value = _value\n val result = StringBuilder()\n\n if (abs(value) >= 1) {\n val i = if (fractionPartLength == 0) value.roundToLong() else value.toLong()\n result.append(i)\n value -= i\n } else result.append((if (value < 0) \"-0\" else \"0\"))\n\n var fl = if (fractionPartLength < 0) {\n if (width < 0) 6\n else width - result.length - 1\n } else fractionPartLength\n\n if (fl != 0) result.append('.')\n\n var rest = value * 10\n while (fl-- > 0) {\n val d = rest.toInt()\n result.append(abs(d))\n rest = (rest - d) * 10\n }\n // now we might need to round it up:\n return if (rest.toInt().absoluteValue < 5) result.toString() else roundUp(result, keepWidth = false).first\n}\n\n/**\n * Round up the mantissa part (call it with default arguments to start).\n * @return rounded mantissa and overflow flag (set when 9,99 -> 10,00 and like)\n */\nprivate fun roundUp(\n result: StringBuilder,\n length: Int = result.length,\n pos: Int = result.length - 1,\n keepWidth: Boolean = true\n): Pair {\n if (pos < 0) {\n // if we get there, it means the number of digits should grow, like \"9.99\" -> \"10.00\"\n // but we need to keep the length so \"10.0\":\n result.insert(0, '1')\n if (keepWidth) result.deleteAt(length)\n return result.toString() to true\n }\n // not the first digit: perform rounding:\n val d = result[pos]\n // it could be a decimal point we ignore and continue with rounding\n if (d == '.') return roundUp(result, length, pos - 1, keepWidth)\n\n // Small number add one \"0.19\" -> \"0.2\"\n // Simple case: alter only the current digit\n if (d != '9') {\n result[pos] = d + 1\n return result.toString() to false\n }\n // Complex case: 9->0 and propagate changes up.\n result[pos] = '0'\n return roundUp(result, length, pos - 1, keepWidth)\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal enum class Positioning { LEFT, RIGHT, CENTER; }\n\ninternal class Specification(val parent: StringFormat, var index: Int) {\n enum class Stage { FLAGS, LENGTH, FRACTION; }\n\n private var stage = Stage.FLAGS\n private var size: Int = -1\n private var fractionalPartSize: Int = -1\n private var positioninig = Positioning.RIGHT\n private var fillChar = ' '\n private var currentPart = StringBuilder()\n // private var pos = 0\n private var explicitPlus = false\n private var done = false\n private var indexIsOverride = false\n private val isScanningFlags: Boolean\n get() = stage == Stage.FLAGS\n\n internal fun scan() {\n while (!done) {\n when (val ch = parent.nextChar()) {\n '-', '^' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n positioninig = if (ch == '-') Positioning.LEFT else Positioning.CENTER\n }\n '+' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n explicitPlus = true\n }\n in \"*#_=\" -> {\n if (!isScanningFlags) invalidFormat(\"bad fill char $ch position\")\n fillChar = ch\n }\n '0' -> {\n if (isScanningFlags) fillChar = '0'\n else currentPart.append(ch)\n }\n in \"123456789\" -> {\n if (stage == Stage.FLAGS) stage = Stage.LENGTH\n currentPart.append(ch)\n }\n '$', '!' -> {\n if (stage != Stage.LENGTH) invalidFormat(\"unexpected $ch position\")\n if (indexIsOverride) invalidFormat(\"argument number '$ch' should occur only once\")\n indexIsOverride = true\n index = currentPart.toString().toInt() - 1\n parent.pushbackArgumentIndex()\n currentPart.clear()\n }\n 's' -> createStringField()\n 'd', 'i' -> createIntegerField()\n 'o' -> createOctalField()\n 'x' -> createHexField(false)\n 'X' -> createHexField(true)\n 'f', 'F' -> createFloat()\n 'E' -> createScientific(true)\n 'e' -> createScientific(false)\n 'g' -> createAutoFloat(true)\n 'G' -> createAutoFloat(false)\n 'c', 'C' -> createCharacter()\n 't' -> createTimeField(false)\n 'T' -> createTimeField(true)\n '.' -> {\n stage = when (stage) {\n Stage.FLAGS -> Stage.FRACTION\n Stage.LENGTH -> {\n endStage(false)\n Stage.FRACTION\n }\n else -> invalidFormat(\"can't parse specification: unexpected '.'\")\n }\n }\n else -> invalidFormat(\"unexpected character '$ch'\")\n }\n }\n }\n\n private fun invalidFormat(message: String): Nothing { parent.invalidFormat(message) }\n\n private val time get() = parent.getLocalDateTime(index)\n\n private fun createTimeField(upperCase: Boolean) {\n val ch = parent.nextChar()\n endStage()\n val result: String = when (ch) {\n 'H' -> \"%02d\".format(time.hour)\n 'k' -> \"%d\".format(time.hour)\n 'I', 'l' -> {\n var t = time.hour\n if (t > 12) t -= 12\n if (ch == 'I') \"%02d\".format(t)\n else t.toString()\n }\n 'M' -> \"%02d\".format(time.minute)\n 'S' -> \"%02d\".format(time.second)\n 'L' -> \"%03d\".format(time.nanosecond / 1_000_000)\n 'N' -> \"%09d\".format(time.nanosecond)\n 'p' -> {\n if (upperCase) if (time.hour > 12) \"PM\" else \"AM\"\n else if (time.hour > 12) \"pm\" else \"am\"\n }\n 'z' -> {\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString().replace(\":\", \"\")\n }\n 'Z' -> {\n // There us yet no abbreviations like 'CET', so we put there string representation like +01:00\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString()\n }\n 's' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).epochSeconds.toString()\n }\n 'Q' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).toEpochMilliseconds().toString()\n }\n // Date fields\n 'B' -> getMonthName(time.month.number)\n 'b', 'h' -> getAbbreviatedMonthName(time.month.number)\n 'e' -> time.dayOfMonth.toString()\n 'd' -> \"%02s\".format(time.dayOfMonth)\n 'm' -> \"%02s\".format(time.month.number)\n 'A' -> getWeekDayName(time.dayOfWeek)\n 'a' -> getAbbreviatedWeekDayName(time.dayOfWeek)\n 'y' -> time.year.toString().takeLast(2)\n 'Y' -> \"%04d\".format(time.year)\n 'j' -> \"%03d\".format(time.dayOfYear)\n // shortcuts\n 'R' -> \"%1!tH:%1!tM\".format(time)\n 'r' ->\n if (upperCase) \"%1!tI:%1!tM:%1!tS %1!Tp\".format(time)\n else \"%1!tI:%1!tM:%1!tS %1!tp\".format(time)\n 'T' -> \"%tH:%1!tM:%1!tS\".format(time)\n 'D' -> \"%tm/%1!td/%1!ty\".format(time)\n 'F' -> \"%tY-%1!tm-%1!td\".format(time)\n 'c' -> \"%ta %1!tb %1!td %1!tT %1!tZ %1!tY\".format(time)\n 'O' -> {\n val tz = TimeZone.currentSystemDefault()\n val offset = tz.offsetAt(time.toInstant(tz)).toString()\n \"%tFT%1!tT%s\".format(time, offset)\n }\n '#' -> \"%tY%1!tm%1!td%1!tH%1!tM%1!tS\".format(time.toInstant(TimeZone.UTC))\n else -> invalidFormat(\"unknown time field specificator: 't$ch'\")\n }\n insertField(result)\n }\n\n private fun createStringField() {\n endStage()\n insertField(parent.getText(index))\n }\n\n private fun createIntegerField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus && fillChar == '0' && number > 0) insertField(number.toString(), \"+\")\n else insertField(if (explicitPlus) \"+$number\" else \"$number\")\n }\n\n private fun createHexField(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with hex format\")\n val text = number.toString(16)\n insertField(if (upperCase) text.uppercase() else text.lowercase())\n }\n\n private fun createOctalField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with oct format\")\n insertField(number.toString(8))\n }\n\n private fun createCharacter() {\n endStage()\n insertField(parent.getCharacter(index).toString())\n }\n\n private fun endStage(setDone: Boolean = true) {\n if (setDone) done = true\n if (currentPart.isNotEmpty()) {\n when (stage) {\n Stage.LENGTH -> size = currentPart.toString().toInt()\n Stage.FRACTION -> fractionalPartSize = currentPart.toString().toInt()\n Stage.FLAGS -> invalidFormat(\"can't parse format specifier (error 7)\")\n }\n currentPart.clear()\n }\n }\n\n private fun insertField(text: String, prefix: String = \"\") {\n val l = text.length + prefix.length\n if (size < 0 || size < l) parent.specificationDone(prefix + text)\n else {\n var padStart = 0\n var padEnd = 0\n when (positioninig) {\n Positioning.LEFT -> padEnd = size - l\n Positioning.RIGHT -> padStart = size - l\n Positioning.CENTER -> {\n padStart = (size - l) / 2\n padEnd = size - padStart - l\n }\n }\n val result = StringBuilder(prefix)\n while (padStart-- > 0) result.append(fillChar)\n result.append(text)\n while (padEnd-- > 0) result.append(fillChar)\n parent.specificationDone(result.toString())\n }\n }\n\n private fun createFloat() {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = fractionalFormat(number, size, fractionalPartSize)\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createScientific(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = scientificFormat(number, size, fractionalPartSize).let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createAutoFloat(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index)\n val t = number.toString().let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number.toDouble() > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n companion object {\n private val englishMonthNames: List by lazy {\n \"January February March April May June July August September October November December\".split(' ')\n }\n private val englishWeekDayNames: List by lazy {\n \"Monday Tuesday Wednesday Thursday Friday Saturday Sunday\".split(' ')\n }\n\n fun getAbbreviatedMonthName(monthNumber: Int) = getMonthName(monthNumber).take(3)\n\n fun getMonthName(monthNumber: Int) = englishMonthNames[monthNumber - 1]\n\n fun getWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1]\n }\n\n fun getAbbreviatedWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1].take(3)\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal class StringFormat(val format: String, val args: Array) {\n\n private var pos = 0\n private var specStart = -1\n private val result = StringBuilder()\n private var currentIndex = 0\n\n fun process(): StringFormat {\n while (pos < format.length) {\n val ch = format[pos++]\n if (ch == '%') {\n specStart = when {\n specStart == pos - 1 -> {\n result.append(ch)\n -1\n }\n specStart < 0 -> pos\n else -> invalidFormat(\"unexpected %\")\n }\n } else {\n if (specStart >= 0) {\n pos--\n Specification(this, currentIndex++).scan()\n } else result.append(ch)\n }\n }\n return this\n }\n\n internal fun nextChar(): Char {\n if (pos >= format.length) invalidFormat(\"unexpected end of string inside format specification\")\n return format[pos++]\n }\n\n internal fun invalidFormat(reason: String): Nothing {\n throw IllegalArgumentException(\"bad format: $reason at ofset ${pos - 1} of \\\"$format\\\"\")\n }\n\n override fun toString() = result.toString()\n\n internal fun getNumber(index: Int): Number = notNullArg(index)\n\n internal fun getText(index: Int) = args[index]!!.toString()\n\n internal fun getCharacter(index: Int): Char = notNullArg(index)\n\n internal fun specificationDone(text: String) {\n result.append(text)\n specStart = -1\n }\n\n fun getLocalDateTime(index: Int): LocalDateTime {\n val t = notNullArg(index)\n return when(t) {\n is Instant -> t.toLocalDateTime(TimeZone.currentSystemDefault())\n is LocalDateTime -> t\n is LocalDate -> t.atTime(0,0,0)\n else -> convertToInstant(t).toLocalDateTime(TimeZone.currentSystemDefault())\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun notNullArg(index: Int) = args[index]!! as T\n\n fun pushbackArgumentIndex() { currentIndex-- }\n}\n\nfun String.format(vararg args: Any?): String = StringFormat(this, args).process().toString()\n\nexpect fun convertToInstant(t: Any): Instant","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\nimport earth.worldwind.util.glu.error.Error\nimport earth.worldwind.util.glu.tessellator.GLUtessellatorImpl\n\n/**\n * Provides access to the OpenGL Utility Library (GLU). This library\n * provides standard methods for setting up view volumes, building\n * mipmaps and performing other common operations. The GLU NURBS\n * routines are not currently exposed.\n *

\n * Notes from the Reference Implementation for this class:\n * Thanks to the contributions of many individuals, this class is a\n * pure Java port of SGI's original C sources. All of the projection,\n * mipmap, scaling, and tessellation routines that are exposed are\n * compatible with the GLU 1.3 specification. The GLU NURBS routines\n * are not currently exposed.\n */\nobject GLU {\n fun gluErrorString(errorCode: Int) = Error.gluErrorString(errorCode)\n /**\n * **gluNewTess** creates and returns a new tessellation object. This\n * object must be referred to when calling tesselation methods. A return\n * value of null means that there was not enough memeory to allocate the\n * object.\n *\n * @return A new tessellation object.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluDeleteTess gluDeleteTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluNewTess() = GLUtessellatorImpl.gluNewTess()\n\n /**\n * **gluDeleteTess** destroys the indicated tessellation object (which was\n * created with [gluNewTess][.gluNewTess]).\n *\n * @param tessellator\n * Specifies the tessellation object to destroy.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluDeleteTess(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluDeleteTess()\n }\n\n /**\n * **gluTessProperty** is used to control properites stored in a\n * tessellation object. These properties affect the way that the polygons are\n * interpreted and rendered. The legal value for *which* are as\n * follows:\n *
    \n *
  • **GLU_TESS_WINDING_RULE**\n *

    \n * Determines which parts of the polygon are on the \"interior\".\n * *value* may be set to one of\n *

    **GLU_TESS_WINDING_ODD**,\n *

    **GLU_TESS_WINDING_NONZERO**,\n *

    **GLU_TESS_WINDING_POSITIVE**, or\n *

    **GLU_TESS_WINDING_NEGATIVE**, or\n *

    **GLU_TESS_WINDING_ABS_GEQ_TWO**.\n *

    \n * To understand how the winding rule works, consider that the input\n * contours partition the plane into regions. The winding rule determines\n * which of these regions are inside the polygon.\n *

    \n * For a single contour C, the winding number of a point x is simply the\n * signed number of revolutions we make around x as we travel once around C\n * (where CCW is positive). When there are several contours, the individual\n * winding numbers are summed. This procedure associates a signed integer\n * value with each point x in the plane. Note that the winding number is\n * the same for all points in a single region.\n *

    \n * The winding rule classifies a region as \"inside\" if its winding number\n * belongs to the chosen category (odd, nonzero, positive, negative, or\n * absolute value of at least two). The previous GLU tessellator (prior to\n * GLU 1.2) used the \"odd\" rule. The \"nonzero\" rule is another common way\n * to define the interior. The other three rules are useful for polygon CSG\n * operations.\n
  • *\n *
  • **GLU_TESS_BOUNDARY_ONLY**\n *

    \n * Is a boolean value (\"value\" should be set to GL_TRUE or GL_FALSE). When\n * set to GL_TRUE, a set of closed contours separating the polygon interior\n * and exterior are returned instead of a tessellation. Exterior contours\n * are oriented CCW with respect to the normal; interior contours are\n * oriented CW. The **GLU_TESS_BEGIN** and **GLU_TESS_BEGIN_DATA**\n * callbacks use the type GL_LINE_LOOP for each contour.\n
  • *\n *
  • **GLU_TESS_TOLERANCE**\n *

    \n * Specifies a tolerance for merging features to reduce the size of the\n * output. For example, two vertices that are very close to each other\n * might be replaced by a single vertex. The tolerance is multiplied by the\n * largest coordinate magnitude of any input vertex; this specifies the\n * maximum distance that any feature can move as the result of a single\n * merge operation. If a single feature takes part in several merge\n * operations, the toal distance moved could be larger.\n *

    \n * Feature merging is completely optional; the tolerance is only a hint.\n * The implementation is free to merge in some cases and not in others, or\n * to never merge features at all. The initial tolerance is 0.\n *

    \n * The current implementation merges vertices only if they are exactly\n * coincident, regardless of the current tolerance. A vertex is spliced\n * into an edge only if the implementation is unable to distinguish which\n * side of the edge the vertex lies on. Two edges are merged only when both\n * endpoints are identical.\n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object created with\n * [gluNewTess][.gluNewTess]\n * @param which\n * Specifies the property to be set. Valid values are\n * **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARDY_ONLY**,\n * **GLU_TESS_TOLERANCE**.\n * @param value\n * Specifices the value of the indicated property.\n *\n * @see .gluGetTessProperty gluGetTessProperty\n *\n * @see .gluNewTess gluNewTess\n */\n fun gluTessProperty(tessellator: GLUtessellator, which: Int, value: Double) {\n (tessellator as GLUtessellatorImpl).gluTessProperty(which, value)\n }\n\n /**\n * **gluGetTessProperty** retrieves properties stored in a tessellation\n * object. These properties affect the way that tessellation objects are\n * interpreted and rendered. See the\n * [gluTessProperty][.gluTessProperty] reference\n * page for information about the properties and what they do.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the property whose value is to be fetched. Valid values\n * are **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARY_ONLY**,\n * and **GLU_TESS_TOLERANCES**.\n * @param value\n * Specifices an array into which the value of the named property is\n * written.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessProperty gluTessProperty\n */\n fun gluGetTessProperty(\n tessellator: GLUtessellator, which: Int, value: DoubleArray, value_offset: Int\n ) {\n (tessellator as GLUtessellatorImpl).gluGetTessProperty(which, value, value_offset)\n }\n\n /**\n * **gluTessNormal** describes a normal for a polygon that the program is\n * defining. All input data will be projected onto a plane perpendicular to\n * the one of the three coordinate axes before tessellation and all output\n * triangles will be oriented CCW with repsect to the normal (CW orientation\n * can be obtained by reversing the sign of the supplied normal). For\n * example, if you know that all polygons lie in the x-y plane, call\n * **gluTessNormal**(tess, 0.0, 0.0, 0.0) before rendering any polygons.\n *

\n * If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal\n * is determined as follows. The direction of the normal, up to its sign, is\n * found by fitting a plane to the vertices, without regard to how the\n * vertices are connected. It is expected that the input data lies\n * approximately in the plane; otherwise, projection perpendicular to one of\n * the three coordinate axes may substantially change the geometry. The sign\n * of the normal is chosen so that the sum of the signed areas of all input\n * contours is nonnegative (where a CCW contour has positive area).\n *

\n * The supplied normal persists until it is changed by another call to\n * **gluTessNormal**.\n *\n * @param tessellator\n * Specifies the tessellation object (created by\n * [gluNewTess][.gluNewTess]).\n * @param x\n * Specifies the first component of the normal.\n * @param y\n * Specifies the second component of the normal.\n * @param z\n * Specifies the third component of the normal.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessNormal(tessellator: GLUtessellator, x: Double, y: Double, z: Double) {\n (tessellator as GLUtessellatorImpl).gluTessNormal(x, y, z)\n }\n\n /**\n * **gluTessCallback** is used to indicate a callback to be used by a\n * tessellation object. If the specified callback is already defined, then it\n * is replaced. If *aCallback* is null, then the existing callback\n * becomes undefined.\n *

\n * These callbacks are used by the tessellation object to describe how a\n * polygon specified by the user is broken into triangles. Note that there are\n * two versions of each callback: one with user-specified polygon data and one\n * without. If both versions of a particular callback are specified, then the\n * callback with user-specified polygon data will be used. Note that the\n * polygonData parameter used by some of the methods is a copy of the\n * reference that was specified when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The legal callbacks are as follows:\n *
    \n *
  • **GLU_TESS_BEGIN**\n *

    \n * The begin callback is invoked like\n * glBegin to indicate the start of a (triangle) primitive. The method\n * takes a single argument of type int. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_FALSE**, then\n * the argument is set to either **GL_TRIANGLE_FAN**,\n * **GL_TRIANGLE_STRIP**, or **GL_TRIANGLES**. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_TRUE**, then the\n * argument will be set to **GL_LINE_LOOP**. The method prototype for\n * this callback is:\n *
    void begin(int type);
    \n
  • *\n *
  • **GLU_TESS_BEGIN_DATA**\n *

    \n * The same as the **GLU_TESS_BEGIN** callback except\n * that it takes an additional reference argument. This reference is\n * identical to the opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void beginData(int type, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG**\n *

    \n * The edge flag callback is similar to\n * glEdgeFlag. The method takes\n * a single boolean boundaryEdge that indicates which edges lie on the\n * polygon boundary. If the boundaryEdge is **GL_TRUE**, then each vertex\n * that follows begins an edge that lies on the polygon boundary, that is,\n * an edge that separates an interior region from an exterior one. If the\n * boundaryEdge is **GL_FALSE**, then each vertex that follows begins an\n * edge that lies in the polygon interior. The edge flag callback (if\n * defined) is invoked before the first vertex callback.\n *

    \n * Since triangle fans and triangle strips do not support edge flags, the\n * begin callback is not called with **GL_TRIANGLE_FAN** or\n * **GL_TRIANGLE_STRIP** if a non-null edge flag callback is provided.\n * (If the callback is initialized to null, there is no impact on\n * performance). Instead, the fans and strips are converted to independent\n * triangles. The method prototype for this callback is:\n *
    void edgeFlag(boolean boundaryEdge);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG_DATA**\n *

    \n * The same as the **GLU_TESS_EDGE_FLAG** callback except that it takes\n * an additional reference argument. This reference is identical to the\n * opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void edgeFlagData(boolean boundaryEdge, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX**\n *

    \n * The vertex callback is invoked between the begin and end callbacks. It is\n * similar to glVertex3f, and it\n * defines the vertices of the triangles created by the tessellation\n * process. The method takes a reference as its only argument. This\n * reference is identical to the opaque reference provided by the user when\n * the vertex was described (see\n * [gluTessVertex][.gluTessVertex]). The method\n * prototype for this callback is:\n *
    void vertex(Object vertexData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX_DATA**\n *

    \n * The same as the **GLU_TESS_VERTEX** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void vertexData(Object vertexData, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_END**\n *

    \n * The end callback serves the same purpose as\n * glEnd. It indicates the end of a\n * primitive and it takes no arguments. The method prototype for this\n * callback is:\n *
    void end();
    \n
  • *\n *
  • **GLU_TESS_END_DATA**\n *

    \n * The same as the **GLU_TESS_END** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void endData(Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_COMBINE**\n *

    \n * The combine callback is called to create a new vertex when the\n * tessellation detects an intersection, or wishes to merge features. The\n * method takes four arguments: an array of three elements each of type\n * double, an array of four references, an array of four elements each of\n * type float, and a reference to a reference. The prototype is:\n *
    void combine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData);
    \n * The vertex is defined as a linear combination of up to four existing\n * vertices, stored in *data*. The coefficients of the linear\n * combination are given by *weight*; these weights always add up to 1.\n * All vertex pointers are valid even when some of the weights are 0.\n * *coords* gives the location of the new vertex.\n *

    \n * The user must allocate another vertex, interpolate parameters using\n * *data* and *weight*, and return the new vertex pointer\n * in *outData*. This handle is supplied during rendering callbacks.\n * The user is responsible for freeing the memory some time after\n * [gluTessEndPolygon][.gluTessEndPolygon] is\n * called.\n *

    \n * For example, if the polygon lies in an arbitrary plane in 3-space, and a\n * color is associated with each vertex, the **GLU_TESS_COMBINE**\n * callback might look like this:\n *
    \n     * void myCombine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData)\n     * {\n     * MyVertex newVertex = new MyVertex();\n     *\n     * newVertex.x = coords[0];\n     * newVertex.y = coords[1];\n     * newVertex.z = coords[2];\n     * newVertex.r = weight[0]*data[0].r +\n     * weight[1]*data[1].r +\n     * weight[2]*data[2].r +\n     * weight[3]*data[3].r;\n     * newVertex.g = weight[0]*data[0].g +\n     * weight[1]*data[1].g +\n     * weight[2]*data[2].g +\n     * weight[3]*data[3].g;\n     * newVertex.b = weight[0]*data[0].b +\n     * weight[1]*data[1].b +\n     * weight[2]*data[2].b +\n     * weight[3]*data[3].b;\n     * newVertex.a = weight[0]*data[0].a +\n     * weight[1]*data[1].a +\n     * weight[2]*data[2].a +\n     * weight[3]*data[3].a;\n     * outData = newVertex;\n     * }
    \n * If the tessellation detects an intersection, then the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback (see\n * below) must be defined, and it must write a non-null reference into\n * *outData*. Otherwise the **GLU_TESS_NEED_COMBINE_CALLBACK** error\n * occurs, and no output is generated.\n
  • *\n *
  • **GLU_TESS_COMBINE_DATA**\n *

    \n * The same as the **GLU_TESS_COMBINE** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void combineData(double[] coords, Object[] data,\n     * float[] weight, Object[] outData,\n     * Object polygonData);
    \n *\n
  • *\n *
  • **GLU_TESS_ERROR**\n *

    \n * The error callback is called when an error is encountered. The one\n * argument is of type int; it indicates the specific error that occurred\n * and will be set to one of **GLU_TESS_MISSING_BEGIN_POLYGON**,\n * **GLU_TESS_MISSING_END_POLYGON**,\n * **GLU_TESS_MISSING_BEGIN_CONTOUR**,\n * **GLU_TESS_MISSING_END_CONTOUR**, **GLU_TESS_COORD_TOO_LARGE**,\n * **GLU_TESS_NEED_COMBINE_CALLBACK** or **GLU_OUT_OF_MEMORY**.\n * Character strings describing these errors can be retrieved with the\n * [gluErrorString][.gluErrorString] call. The\n * method prototype for this callback is:\n *
    \n     * void error(int errnum);
    \n * The GLU library will recover from the first four errors by inserting the\n * missing call(s). **GLU_TESS_COORD_TOO_LARGE** indicates that some\n * vertex coordinate exceeded the predefined constant\n * **GLU_TESS_MAX_COORD** in absolute value, and that the value has been\n * clamped. (Coordinate values must be small enough so that two can be\n * multiplied together without overflow.)\n * **GLU_TESS_NEED_COMBINE_CALLBACK** indicates that the tessellation\n * detected an intersection between two edges in the input data, and the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback was not\n * provided. No output is generated. **GLU_OUT_OF_MEMORY** indicates that\n * there is not enough memory so no output is generated.\n
  • *\n *
  • **GLU_TESS_ERROR_DATA**\n *

    \n * The same as the GLU_TESS_ERROR callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void errorData(int errnum, Object polygonData);
    \n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the callback being defined. The following values are\n * valid: **GLU_TESS_BEGIN**, **GLU_TESS_BEGIN_DATA**,\n * **GLU_TESS_EDGE_FLAG**, **GLU_TESS_EDGE_FLAG_DATA**,\n * **GLU_TESS_VERTEX**, **GLU_TESS_VERTEX_DATA**,\n * **GLU_TESS_END**, **GLU_TESS_END_DATA**,\n * **GLU_TESS_COMBINE**, **GLU_TESS_COMBINE_DATA**,\n * **GLU_TESS_ERROR**, and **GLU_TESS_ERROR_DATA**.\n * @param aCallback\n * Specifies the callback object to be called.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluErrorString gluErrorString\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n */\n fun gluTessCallback(\n tessellator: GLUtessellator, which: Int, aCallback: GLUtessellatorCallback?\n ) {\n (tessellator as GLUtessellatorImpl).gluTessCallback(which, aCallback)\n }\n\n /**\n * **gluTessVertex** describes a vertex on a polygon that the program\n * defines. Successive **gluTessVertex** calls describe a closed contour.\n * For example, to describe a quadrilateral **gluTessVertex** should be\n * called four times. **gluTessVertex** can only be called between\n * [gluTessBeginContour][.gluTessBeginContour] and\n * [gluTessEndContour][.gluTessBeginContour].\n *

\n * **data** normally references to a structure containing the vertex\n * location, as well as other per-vertex attributes such as color and normal.\n * This reference is passed back to the user through the\n * **GLU_TESS_VERTEX** or **GLU_TESS_VERTEX_DATA** callback after\n * tessellation (see the [ gluTessCallback][.gluTessCallback] reference page).\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param coords\n * Specifies the coordinates of the vertex.\n * @param data\n * Specifies an opaque reference passed back to the program with the\n * vertex callback (as specified by\n * [gluTessCallback][.gluTessCallback]).\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessVertex(\n tessellator: GLUtessellator, coords: DoubleArray, coords_offset: Int, data: Any\n ) {\n (tessellator as GLUtessellatorImpl).gluTessVertex(coords, coords_offset, data)\n }\n\n /**\n * **gluTessBeginPolygon** and\n * [gluTessEndPolygon][.gluTessEndPolygon] delimit\n * the definition of a convex, concave or self-intersecting polygon. Within\n * each **gluTessBeginPolygon**\n * [gluTessEndPolygon][.gluTessEndPolygon] pair,\n * there must be one or more calls to\n * [gluTessBeginContour][.gluTessBeginContour]/\n * [gluTessEndContour][.gluTessEndContour]. Within\n * each contour, there are zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex], [ gluTessBeginContour][.gluTessBeginContour], and [ gluTessEndContour][.gluTessEndContour] reference pages for more details.\n *

\n * **data ** is a reference to a user-defined data structure. If the\n * appropriate callback(s) are specified (see\n * [gluTessCallback][.gluTessCallback]), then this\n * reference is returned to the callback method(s). Thus, it is a convenient\n * way to store per-polygon information.\n *

\n * Once [gluTessEndPolygon][.gluTessEndPolygon] is\n * called, the polygon is tessellated, and the resulting triangles are\n * described through callbacks. See\n * [gluTessCallback][.gluTessCallback] for\n * descriptions of the callback methods.\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n * @param data\n * Specifies a reference to user polygon data .\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginContour gluTessBeginContour\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginPolygon(tessellator: GLUtessellator, data: Any) {\n (tessellator as GLUtessellatorImpl).gluTessBeginPolygon(data)\n }\n\n /**\n * **gluTessBeginContour** and\n * [gluTessEndContour][.gluTessEndContour] delimit\n * the definition of a polygon contour. Within each\n * **gluTessBeginContour**\n * [gluTessEndContour][.gluTessEndContour] pair,\n * there can be zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex] reference page for more details. **gluTessBeginContour**\n * can only be called between\n * [gluTessBeginPolygon][.gluTessBeginPolygon] and\n * [gluTessEndPolygon][.gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessBeginContour()\n }\n\n /**\n * **gluTessEndContour** and\n * [gluTessBeginContour][gluTessBeginContour]\n * delimit the definition of a polygon contour. Within each\n * [gluTessBeginContour][gluTessBeginContour]/\n * **gluTessEndContour** pair, there can be zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex] reference page for more details.\n * [gluTessBeginContour][gluTessBeginContour] can\n * only be called between [ gluTessBeginPolygon][gluTessBeginPolygon] and\n * [gluTessEndPolygon][gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessEndContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndContour()\n }\n\n /**\n * **gluTessEndPolygon** and\n * [gluTessBeginPolygon][gluTessBeginPolygon]\n * delimit the definition of a convex, concave or self-intersecting polygon.\n * Within each [ gluTessBeginPolygon][gluTessBeginPolygon]/ **gluTessEndPolygon** pair, there must be one or\n * more calls to [ gluTessBeginContour][gluTessBeginContour]/[ gluTessEndContour][gluTessEndContour]. Within each contour, there are zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex], [ gluTessBeginContour][gluTessBeginContour] and [ gluTessEndContour][gluTessEndContour] reference pages for more details.\n *

\n * Once **gluTessEndPolygon** is called, the polygon is tessellated, and\n * the resulting triangles are described through callbacks. See\n * [gluTessCallback][gluTessCallback] for\n * descriptions of the callback functions.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n */\n fun gluTessEndPolygon(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndPolygon()\n }\n\n //----------------------------------------------------------------------\n // GLU constants\n // Boolean\n const val GLU_FALSE = 0\n const val GLU_TRUE = 1\n\n // String Name\n const val GLU_VERSION = 100800\n const val GLU_EXTENSIONS = 100801\n\n // Extensions\n const val versionString = \"1.3\"\n const val extensionString = \"GLU_EXT_object_space_tess \"\n\n // ErrorCode\n const val GLU_INVALID_ENUM = 100900\n const val GLU_INVALID_VALUE = 100901\n const val GLU_OUT_OF_MEMORY = 100902\n const val GLU_INVALID_OPERATION = 100904\n\n // TessCallback\n const val GLU_TESS_BEGIN = 100100\n const val GLU_TESS_VERTEX = 100101\n const val GLU_TESS_END = 100102\n const val GLU_TESS_ERROR = 100103\n const val GLU_TESS_EDGE_FLAG = 100104\n const val GLU_TESS_COMBINE = 100105\n const val GLU_TESS_BEGIN_DATA = 100106\n const val GLU_TESS_VERTEX_DATA = 100107\n const val GLU_TESS_END_DATA = 100108\n const val GLU_TESS_ERROR_DATA = 100109\n const val GLU_TESS_EDGE_FLAG_DATA = 100110\n const val GLU_TESS_COMBINE_DATA = 100111\n\n // TessContour\n const val GLU_CW = 100120\n const val GLU_CCW = 100121\n const val GLU_INTERIOR = 100122\n const val GLU_EXTERIOR = 100123\n const val GLU_UNKNOWN = 100124\n\n // TessProperty\n const val GLU_TESS_WINDING_RULE = 100140\n const val GLU_TESS_BOUNDARY_ONLY = 100141\n const val GLU_TESS_TOLERANCE = 100142\n\n // TessError\n const val GLU_TESS_ERROR1 = 100151\n const val GLU_TESS_ERROR2 = 100152\n const val GLU_TESS_ERROR3 = 100153\n const val GLU_TESS_ERROR4 = 100154\n const val GLU_TESS_ERROR5 = 100155\n const val GLU_TESS_ERROR6 = 100156\n const val GLU_TESS_ERROR7 = 100157\n const val GLU_TESS_ERROR8 = 100158\n const val GLU_TESS_MISSING_BEGIN_POLYGON = 100151\n const val GLU_TESS_MISSING_BEGIN_CONTOUR = 100152\n const val GLU_TESS_MISSING_END_POLYGON = 100153\n const val GLU_TESS_MISSING_END_CONTOUR = 100154\n const val GLU_TESS_COORD_TOO_LARGE = 100155\n const val GLU_TESS_NEED_COMBINE_CALLBACK = 100156\n\n // TessWinding\n const val GLU_TESS_WINDING_ODD = 100130\n const val GLU_TESS_WINDING_NONZERO = 100131\n const val GLU_TESS_WINDING_POSITIVE = 100132\n const val GLU_TESS_WINDING_NEGATIVE = 100133\n const val GLU_TESS_WINDING_ABS_GEQ_TWO = 100134\n const val GLU_TESS_MAX_COORD = 1.0e150\n}\n","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\n/**\n * The **GLUtessellatorCallbackAdapter** provides a default implementation of\n * [GLUtessellatorCallback]\n * with empty callback methods. This class can be extended to provide user\n * defined callback methods.\n *\n * @author Eric Veach, July 1994\n * @author Java Port: Pepijn Van Eechhoudt, July 2003\n * @author Java Port: Nathan Parker Burg, August 2003\n * @author Kotlin Port: Eugene Maksymenko, April 2022\n */\nopen class GLUtessellatorCallbackAdapter : GLUtessellatorCallback {\n\toverride fun begin(type: Int) {}\n\toverride fun edgeFlag(boundaryEdge: Boolean) {}\n\toverride fun vertex(vertexData: Any) {}\n\toverride fun end() {}\n\toverride fun error(errnum: Int) {}\n\toverride fun combine(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {}\n\n\toverride fun beginData(type: Int, polygonData: Any) {}\n\toverride fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) {}\n\n\toverride fun vertexData(vertexData: Any, polygonData: Any) {}\n\toverride fun endData(polygonData: Any) {}\n\toverride fun errorData(errnum: Int, polygonData: Any) {}\n\toverride fun combineData(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any) {}\n}","/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n * \n * http://oss.sgi.com/projects/FreeB\n * \n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n * \n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n * \n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n */\npackage earth.worldwind.util.glu.error\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.jvm.JvmStatic\n\nobject Error {\n\tprivate val gluErrorStrings = arrayOf(\n\t\t\"invalid enumerant\",\n\t\t\"invalid value\",\n\t\t\"out of memory\",\n\t\t\"\",\n\t\t\"invalid operation\"\n\t)\n\n\t@JvmStatic\n\tfun gluErrorString(errorCode: Int): String? {\n\t\tif (errorCode == 0) return \"no error\"\n\t\tif (errorCode >= GLU.GLU_INVALID_ENUM && errorCode <= GLU.GLU_INVALID_OPERATION)\n\t\t\treturn gluErrorStrings[errorCode - GLU.GLU_INVALID_ENUM]\n\t\treturn if (errorCode >= GLU.GLU_TESS_ERROR1 && errorCode <= GLU.GLU_TESS_ERROR8)\n\t\t\tgluErrorStrings[errorCode - (GLU.GLU_TESS_ERROR1 - 1)] else null\n\t}\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal class ActiveRegion(\n /**\n * upper edge, directed right to left\n */\n var eUp: GLUhalfEdge\n) {\n /**\n * dictionary node corresponding to eUp\n */\n var nodeUp: DictNode? = null\n /**\n * used to determine which regions are inside the polygon\n */\n var windingNumber = 0\n /**\n * is this region inside the polygon?\n */\n var inside = false\n /**\n * marks fake edges at t = +/-infinity\n */\n var sentinel = false\n /**\n * marks regions where the upper or lower\n * edge has changed, but we haven't checked\n * whether they intersect yet\n */\n var dirty = false\n /**\n * marks temporary edges introduced when\n * we process a \"right vertex\" (one without\n * any edges leaving to the right)\n */\n var fixUpperEdge = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass CachedVertex {\n val coords = DoubleArray(3)\n var data: Any? = null\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass Dict private constructor(\n var head: DictNode,\n var frame: Any,\n var leq: DictLeq\n) {\n\n interface DictLeq {\n fun leq(frame: Any, key1: Any?, key2: Any?): Boolean\n }\n\n companion object {\n fun dictNewDict(frame: Any, leq: DictLeq): Dict {\n return Dict(DictNode(), frame, leq)\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun dictDeleteDict(dict: Dict) {\n// Memory will clear automatically\n// dict.head = null\n// dict.frame = null\n// dict.leq = null\n }\n\n fun dictInsert(dict: Dict, key: Any?): DictNode {\n return dictInsertBefore(dict, dict.head, key)\n }\n\n fun dictInsertBefore(dict: Dict, node: DictNode, key: Any?): DictNode {\n var n = node\n do {\n n = n.prev\n } while (n.key != null && !dict.leq.leq(dict.frame, n.key, key))\n val newNode = DictNode(key).apply {\n prev = n\n next = n.next\n }\n n.next.prev = newNode\n n.next = newNode\n return newNode\n }\n\n fun dictKey(aNode: DictNode) = aNode.key\n\n fun dictSucc(aNode: DictNode) = aNode.next\n\n fun dictPred(aNode: DictNode) = aNode.prev\n\n fun dictMin(aDict: Dict) = aDict.head.next\n\n fun dictMax(aDict: Dict) = aDict.head.prev\n\n fun dictDelete(node: DictNode) {\n node.next.prev = node.prev\n node.prev.next = node.next\n }\n\n fun dictSearch(dict: Dict, key: Any?): DictNode {\n var node = dict.head\n do {\n node = node.next\n } while (node.key != null && !dict.leq.leq(dict.frame, key, node.key))\n return node\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass DictNode(\n var key: Any? = null,\n) {\n var next = this\n var prev = this\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUface {\n /**\n * next face (never NULL)\n */\n var next: GLUface? = null\n /**\n * previous face (never NULL)\n */\n var prev: GLUface? = null\n /**\n * a half edge with this left face\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * room for client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * \"stack\" for conversion to strips\n */\n var trail: GLUface? = null\n /**\n * flag for conversion to strips\n */\n var marked = false\n /**\n * this face is in the polygon interior\n */\n var inside = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUhalfEdge(val first: Boolean) {\n /**\n * doubly-linked list (prev==Sym->next)\n */\n var next: GLUhalfEdge? = null\n /**\n * same edge, opposite direction\n */\n var sym: GLUhalfEdge? = null\n /**\n * next edge CCW around origin\n */\n var oNext: GLUhalfEdge? = null\n /**\n * next edge CCW around left face\n */\n var lNext: GLUhalfEdge? = null\n /**\n * origin vertex (Overtex too long)\n */\n var org: GLUvertex? = null\n /**\n * left face\n */\n var lFace: GLUface? = null\n\n /* Internal data (keep hidden) */\n /**\n * a region with this upper edge (sweep.c)\n */\n internal var activeRegion: ActiveRegion? = null\n /**\n * change in winding number when crossing\n */\n var winding = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUmesh {\n /**\n * dummy header for vertex list\n */\n val vHead = GLUvertex()\n /**\n * dummy header for face list\n */\n val fHead = GLUface()\n /**\n * dummy header for edge list\n */\n internal val eHead = GLUhalfEdge(true)\n /**\n * and its symmetric counterpart\n */\n internal val eHeadSym = GLUhalfEdge(false)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport earth.worldwind.util.glu.GLUtessellatorCallback\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\n\nclass GLUtessellatorImpl private constructor() : GLUtessellator {\n /**\n * what begin/end calls have we seen?\n */\n private var state = TessState.T_DORMANT\n /**\n * lastEdge->Org is the most recent vertex\n */\n private var lastEdge: GLUhalfEdge? = null\n /**\n * stores the input contours, and eventually the tessellation itself\n */\n var mesh: GLUmesh? = null\n\n /*** state needed for projecting onto the sweep plane */\n /**\n * user-specified normal (if provided)\n */\n val normal = DoubleArray(3)\n /**\n * unit vector in s-direction (debugging)\n */\n val sUnit = DoubleArray(3)\n /**\n * unit vector in t-direction (debugging)\n */\n val tUnit = DoubleArray(3)\n\n /*** state needed for the line sweep */\n /**\n * tolerance for merging features\n */\n private var relTolerance = GLU_TESS_DEFAULT_TOLERANCE\n /**\n * rule for determining polygon interior\n */\n var windingRule = GLU.GLU_TESS_WINDING_ODD\n /**\n * fatal error: needed combine callback\n */\n var fatalError = false\n /**\n * edge dictionary for sweep line\n */\n var dict: Dict? = null\n /**\n * priority queue of vertex events\n */\n var pq: PriorityQ? = null\n /**\n * current sweep event being processed\n */\n var event: GLUvertex? = null\n\n /*** state needed for rendering callbacks (see render.c) */\n /**\n * mark boundary edges (use EdgeFlag)\n */\n var flagBoundary = false\n /**\n * Extract contours, not triangles\n */\n var boundaryOnly = false\n /**\n * list of triangles which could not be rendered as strips or fans\n */\n var lonelyTriList: GLUface? = null\n /*** state needed to cache single-contour polygons for renderCache() */\n /**\n * empty cache on next vertex() call\n */\n private var flushCacheOnNextVertex = false\n /**\n * number of cached vertices\n */\n var cacheCount = 0\n /**\n * the vertex data\n */\n val cache = Array(TESS_MAX_CACHE) { CachedVertex() }\n\n /*** rendering callbacks that also pass polygon data */\n /**\n * client data for current polygon\n */\n private var polygonData: Any? = null\n private var callBegin: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlag: GLUtessellatorCallback = NULL_CB\n private var callVertex: GLUtessellatorCallback = NULL_CB\n private var callEnd: GLUtessellatorCallback = NULL_CB\n\n //private var callMesh: GLUtessellatorCallback = NULL_CB\n private var callError: GLUtessellatorCallback = NULL_CB\n private var callCombine: GLUtessellatorCallback = NULL_CB\n private var callBeginData: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlagData: GLUtessellatorCallback = NULL_CB\n private var callVertexData: GLUtessellatorCallback = NULL_CB\n private var callEndData: GLUtessellatorCallback = NULL_CB\n\n //private GLUtessellatorCallback callMeshData;\n private var callErrorData: GLUtessellatorCallback = NULL_CB\n private var callCombineData: GLUtessellatorCallback = NULL_CB\n\n private fun makeDormant() {\n /**\n * Return the tessellator to its original dormant state.\n */\n mesh?.let { Mesh.glMeshDeleteMesh(it) }\n state = TessState.T_DORMANT\n lastEdge = null\n mesh = null\n }\n\n private fun requireState(newState: Int) {\n if (state != newState) gotoState(newState)\n }\n\n private fun gotoState(newState: Int) {\n while (state != newState) {\n /**\n * We change the current state one level at a time, to get to the desired state.\n */\n if (state < newState) {\n if (state == TessState.T_DORMANT) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_POLYGON)\n gluTessBeginPolygon(null)\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_CONTOUR)\n gluTessBeginContour()\n }\n } else {\n if (state == TessState.T_IN_CONTOUR) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_CONTOUR)\n gluTessEndContour()\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_POLYGON)\n /* gluTessEndPolygon( tess ) is too much work! */\n makeDormant()\n }\n }\n }\n }\n\n fun gluDeleteTess() {\n requireState(TessState.T_DORMANT)\n }\n\n fun gluTessProperty(which: Int, value: Double) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> {\n if (value < 0.0 || value > 1.0) callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n else relTolerance = value\n }\n GLU.GLU_TESS_WINDING_RULE -> {\n val windingRule = value.toInt()\n if (windingRule.toDouble() != value) {\n /* not an integer */\n callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n } else {\n when (windingRule) {\n GLU.GLU_TESS_WINDING_ODD,\n GLU.GLU_TESS_WINDING_NONZERO,\n GLU.GLU_TESS_WINDING_POSITIVE,\n GLU.GLU_TESS_WINDING_NEGATIVE,\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> this.windingRule = windingRule\n else -> callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n }\n }\n }\n GLU.GLU_TESS_BOUNDARY_ONLY -> boundaryOnly = value != 0.0\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n /**\n * Returns tessellator property\n */\n fun gluGetTessProperty(which: Int, value: DoubleArray, value_offset: Int) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> value[value_offset] = relTolerance\n GLU.GLU_TESS_WINDING_RULE -> value[value_offset] = windingRule.toDouble()\n GLU.GLU_TESS_BOUNDARY_ONLY -> value[value_offset] = if (boundaryOnly) 1.0 else 0.0\n else -> {\n value[value_offset] = 0.0\n callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n }\n\n fun gluTessNormal(x: Double, y: Double, z: Double) {\n normal[0] = x\n normal[1] = y\n normal[2] = z\n }\n\n fun gluTessCallback(which: Int, aCallback: GLUtessellatorCallback?) {\n when (which) {\n GLU.GLU_TESS_BEGIN -> callBegin = aCallback ?: NULL_CB\n GLU.GLU_TESS_BEGIN_DATA -> callBeginData = aCallback ?: NULL_CB\n GLU.GLU_TESS_EDGE_FLAG -> {\n callEdgeFlag = aCallback ?: NULL_CB\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_EDGE_FLAG_DATA -> {\n run {\n callBegin = aCallback ?: NULL_CB\n callEdgeFlagData = callBegin\n }\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_VERTEX -> callVertex = aCallback ?: NULL_CB\n GLU.GLU_TESS_VERTEX_DATA -> callVertexData = aCallback ?: NULL_CB\n GLU.GLU_TESS_END -> callEnd = aCallback ?: NULL_CB\n GLU.GLU_TESS_END_DATA -> callEndData = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR -> callError = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR_DATA -> callErrorData = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE -> callCombine = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE_DATA -> callCombineData = aCallback ?: NULL_CB\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n private fun addVertex(coords: DoubleArray, vertexData: Any?): Boolean {\n var e = lastEdge\n if (e == null) {\n /* Make a self-loop (one vertex, one edge). */\n e = Mesh.glMeshMakeEdge(mesh!!)\n if (!Mesh.glMeshSplice(e, e.sym!!)) return false\n } else {\n /**\n * Create a new vertex and edge which immediately follow e\n * in the ordering around the left face.\n */\n Mesh.glMeshSplitEdge(e)\n e = e.lNext!!\n }\n\n /* The new vertex is now e.Org. */\n e.org?.data = vertexData\n e.org!!.coords[0] = coords[0]\n e.org!!.coords[1] = coords[1]\n e.org!!.coords[2] = coords[2]\n\n /**\n * The winding of an edge says how the winding number changes as we\n * cross from the edge''s right face to its left face. We add the\n * vertices in such an order that a CCW contour will add +1 to\n * the winding number of the region inside the contour.\n */\n e.winding = 1\n e.sym?.winding = -1\n lastEdge = e\n return true\n }\n\n private fun cacheVertex(coords: DoubleArray, vertexData: Any?) {\n val v = cache[cacheCount]\n v.data = vertexData\n v.coords[0] = coords[0]\n v.coords[1] = coords[1]\n v.coords[2] = coords[2]\n ++cacheCount\n }\n\n private fun flushCache(): Boolean {\n mesh = Mesh.glMeshNewMesh()\n for (i in 0 until cacheCount) {\n val vertex = cache[i]\n if (!addVertex(vertex.coords, vertex.data)) return false\n }\n cacheCount = 0\n flushCacheOnNextVertex = false\n return true\n }\n\n fun gluTessVertex(coords: DoubleArray, coords_offset: Int, vertexData: Any?) {\n var tooLarge = false\n val clamped = DoubleArray(3)\n requireState(TessState.T_IN_CONTOUR)\n if (flushCacheOnNextVertex) {\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n lastEdge = null\n }\n var i = 0\n while (i < 3) {\n var x = coords[i + coords_offset]\n if (x < -GLU.GLU_TESS_MAX_COORD) {\n x = -GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n if (x > GLU.GLU_TESS_MAX_COORD) {\n x = GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n clamped[i] = x\n ++i\n }\n if (tooLarge) {\n callErrorOrErrorData(GLU.GLU_TESS_COORD_TOO_LARGE)\n }\n if (mesh == null) {\n if (cacheCount < TESS_MAX_CACHE) {\n cacheVertex(clamped, vertexData)\n return\n }\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n }\n if (!addVertex(clamped, vertexData)) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun gluTessBeginPolygon(data: Any?) {\n requireState(TessState.T_DORMANT)\n state = TessState.T_IN_POLYGON\n cacheCount = 0\n flushCacheOnNextVertex = false\n mesh = null\n polygonData = data\n }\n\n fun gluTessBeginContour() {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_IN_CONTOUR\n lastEdge = null\n if (cacheCount > 0) {\n /**\n * Just set a flag so we don't get confused by empty contours\n * -- these can be generated accidentally with the obsolete\n * NextContour() interface.\n */\n flushCacheOnNextVertex = true\n }\n }\n\n fun gluTessEndContour() {\n requireState(TessState.T_IN_CONTOUR)\n state = TessState.T_IN_POLYGON\n }\n\n fun gluTessEndPolygon() {\n try {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_DORMANT\n if (this.mesh == null) {\n if (!flagBoundary /*&& callMesh == NULL_CB*/) {\n /**\n * Try some special code to make the easy cases go quickly\n * (eg. convex polygons). This code does NOT handle multiple contours,\n * intersections, edge flags, and of course it does not generate\n * an explicit mesh either.\n */\n if (Render.glRenderCache(this)) {\n polygonData = null\n return\n }\n }\n if (!flushCache()) throw RuntimeException() /* could've used a label*/\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n Normal.glProjectPolygon(this)\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by windingRule.\n * Each interior region is guaranteed be monotone.\n */\n if (!Sweep.glComputeInterior(this)) {\n throw RuntimeException() /* could've used a label */\n }\n val mesh = this.mesh!!\n if (!fatalError) {\n /**\n * If the user wants only the boundary contours, we throw away all edges\n * except those which separate the interior from the exterior.\n * Otherwise we tessellate all the regions marked \"inside\".\n */\n val rc = if (boundaryOnly) {\n TessMono.glMeshSetWindingNumber(mesh, 1, true)\n } else {\n TessMono.glMeshTessellateInterior(mesh)\n }\n if (!rc) throw RuntimeException() /* could've used a label */\n Mesh.glMeshCheckMesh(mesh)\n if (callBegin !== NULL_CB || callEnd !== NULL_CB || callVertex !== NULL_CB || callEdgeFlag !== NULL_CB || callBeginData !== NULL_CB || callEndData !== NULL_CB || callVertexData !== NULL_CB || callEdgeFlagData !== NULL_CB) {\n if (boundaryOnly) {\n Render.glRenderBoundary(this, mesh) /* output boundary contours */\n } else {\n Render.glRenderMesh(this, mesh) /* output strips and fans */\n }\n }\n // if (callMesh != NULL_CB) {\n// /**\n// * Throw away the exterior faces, so that all faces are interior.\n// * This way the user doesn't have to check the \"inside\" flag,\n// * and we don't need to even reveal its existence. It also leaves\n// * the freedom for an implementation to not generate the exterior\n// * faces in the first place.\n// */\n// TessMono.__gl_meshDiscardExterior(mesh);\n// callMesh.mesh(mesh);\t\t/* user wants the mesh itself */\n// mesh = null;\n// polygonData = null;\n// return;\n// }\n }\n Mesh.glMeshDeleteMesh(mesh)\n polygonData = null\n } catch (e: Exception) {\n e.printStackTrace()\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun callBeginOrBeginData(a: Int) {\n if (callBeginData !== NULL_CB) callBeginData.beginData(a, polygonData!!) else callBegin.begin(a)\n }\n\n fun callVertexOrVertexData(a: Any) {\n if (callVertexData !== NULL_CB) callVertexData.vertexData(a, polygonData!!) else callVertex.vertex(a)\n }\n\n fun callEdgeFlagOrEdgeFlagData(a: Boolean) {\n if (callEdgeFlagData !== NULL_CB) callEdgeFlagData.edgeFlagData(a, polygonData!!) else callEdgeFlag.edgeFlag(a)\n }\n\n fun callEndOrEndData() {\n if (callEndData !== NULL_CB) callEndData.endData(polygonData!!) else callEnd.end()\n }\n\n fun callCombineOrCombineData(\n coords: DoubleArray,\n vertexData: Array,\n weights: FloatArray,\n outData: Array\n ) {\n if (callCombineData !== NULL_CB) callCombineData.combineData(coords, vertexData, weights, outData, polygonData!!)\n else callCombine.combine(coords, vertexData, weights, outData)\n }\n\n fun callErrorOrErrorData(a: Int) {\n if (callErrorData !== NULL_CB) callErrorData.errorData(a, polygonData!!) else callError.error(a)\n }\n\n companion object {\n const val TESS_MAX_CACHE = 100\n private const val GLU_TESS_DEFAULT_TOLERANCE = 0.0\n\n //private static final int GLU_TESS_MESH = 100112;\t/* void (*)(GLUmesh *mesh)\t */\n private val NULL_CB = GLUtessellatorCallbackAdapter()\n\n fun gluNewTess(): GLUtessellator = GLUtessellatorImpl()\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUvertex {\n /**\n * next vertex (never NULL)\n */\n var next: GLUvertex? = null\n /**\n * previous vertex (never NULL)\n */\n var prev: GLUvertex? = null\n /**\n * a half-edge with this origin\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * vertex location in 3D\n */\n val coords = DoubleArray(3)\n var s = 0.0\n /**\n * projection onto the sweep plane\n */\n var t = 0.0\n /**\n * to allow deletion from priority queue\n */\n var pqHandle = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Geom {\n /* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->t = 0 and\n * let r be the negated result (this evaluates (uw)(v->s)), then\n * r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n */\n fun edgeEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.t - u.t + (u.t - w.t) * (gapL / (gapL + gapR))\n else v.t - w.t + (w.t - u.t) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n fun edgeSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) (v.t - w.t) * gapL + (v.t - u.t) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * Define versions of EdgeSign, EdgeEval with s and t transposed.\n */\n fun transEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n /* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->s = 0 and\n * let r be the negated result (this evaluates (uw)(v->t)), then\n * r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n */\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.s - u.s + (u.s - w.s) * (gapL / (gapL + gapR))\n else v.s - w.s + (w.s - u.s) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n /**\n * Returns a number whose sign matches TransEval(u,v,w) but which\n * is cheaper to evaluate. Returns > 0, == 0 , or < 0\n * as v is above, on, or below the edge uw.\n */\n fun transSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) (v.s - w.s) * gapL + (v.s - u.s) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * For almost-degenerate situations, the results are not reliable.\n * Unless the floating-point arithmetic can be performed without\n * rounding errors, *any* implementation will give incorrect results\n * on some degenerate inputs, so the client must have some way to\n * handle this situation.\n */\n fun vertCCW(u: GLUvertex, v: GLUvertex, w: GLUvertex) =\n u.s * (v.t - w.t) + v.s * (w.t - u.t) + w.s * (u.t - v.t) >= 0\n\n /**\n * Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n * or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n * this in the rare case that one argument is slightly negative.\n * The implementation is extremely stable numerically.\n * In particular it guarantees that the result r satisfies\n * MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n * even when a and b differ greatly in magnitude.\n */\n fun interpolate(a: Double, x: Double, b: Double, y: Double): Double {\n val a = if (a < 0) 0.0 else a\n val b = if (b < 0) 0.0 else b\n return if (a <= b) {\n if (b == 0.0) (x + y) / 2.0\n else x + (y - x) * (a / (a + b))\n } else y + (x - y) * (b / (a + b))\n }\n\n /**\n * Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n * The computed point is guaranteed to lie in the intersection of the\n * bounding rectangles defined by each edge.\n */\n fun edgeIntersect(\n o1: GLUvertex, d1: GLUvertex, o2: GLUvertex, d2: GLUvertex, v: GLUvertex\n ) {\n var o1 = o1\n var d1 = d1\n var o2 = o2\n var d2 = d2\n\n /**\n * This is certainly not the most efficient way to find the intersection\n * of two line segments, but it is very numerically stable.\n *\n * Strategy: find the two middle vertices in the VertLeq ordering,\n * and interpolate the intersection s-value from these. Then repeat\n * using the TransLeq ordering to find the intersection t-value.\n */\n if (!vertLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!vertLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!vertLeq(o1, o2)) {\n var temp = o1\n o1 = o2\n o2 = temp\n temp = d1\n d1 = d2\n d2 = temp\n }\n if (!vertLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.s = (o2.s + d1.s) / 2.0\n } else if (vertLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = edgeEval(o1, o2, d1)\n var z2 = edgeEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d1.s)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = edgeSign(o1, o2, d1)\n var z2 = -edgeSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d2.s)\n }\n\n /* Now repeat the process for t */\n if (!transLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!transLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!transLeq(o1, o2)) {\n var temp = o2\n o2 = o1\n o1 = temp\n temp = d2\n d2 = d1\n d1 = temp\n }\n if (!transLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.t = (o2.t + d1.t) / 2.0\n } else if (transLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = transEval(o1, o2, d1)\n var z2 = transEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d1.t)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = transSign(o1, o2, d1)\n var z2 = -transSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d2.t)\n }\n }\n\n fun vertEq(u: GLUvertex, v: GLUvertex) = u.s == v.s && u.t == v.t\n\n fun vertLeq(u: GLUvertex, v: GLUvertex) = u.s < v.s || u.s == v.s && u.t <= v.t\n\n /* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n fun transLeq(u: GLUvertex, v: GLUvertex) = u.t < v.t || u.t == v.t && u.s <= v.s\n\n fun edgeGoesLeft(e: GLUhalfEdge) = vertLeq(e.sym?.org!!, e.org!!)\n\n fun edgeGoesRight(e: GLUhalfEdge) = vertLeq(e.org!!, e.sym?.org!!)\n\n fun vertL1dist(u: GLUvertex, v: GLUvertex) = abs(u.s - v.s) + abs(u.t - v.t)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object Mesh {\n /************************ Utility Routines */\n /**\n * MakeEdge creates a new pair of half-edges which form their own loop.\n * No vertex or face structures are allocated, but these must be assigned\n * before the current edge operation is completed.\n */\n fun makeEdge(eNext: GLUhalfEdge): GLUhalfEdge {\n var next = eNext\n val e = GLUhalfEdge(true)\n val eSym = GLUhalfEdge(false)\n\n /* Make sure eNext points to the first edge of the edge pair */\n if (!next.first) {\n next = next.sym!!\n }\n\n /**\n * Insert in circular doubly-linked list before eNext.\n * Note that the prev pointer is stored in Sym->next.\n */\n val ePrev = next.sym?.next!!\n eSym.next = ePrev\n ePrev.sym?.next = e\n e.next = next\n next.sym?.next = eSym\n e.sym = eSym\n e.oNext = e\n e.lNext = eSym\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.sym = e\n eSym.oNext = eSym\n eSym.lNext = e\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return e\n }\n\n /**\n * Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n * CS348a notes (see mesh.h). Basically it modifies the mesh so that\n * a->Onext and b->Onext are exchanged. This can have various effects\n * depending on whether a and b belong to different face or vertex rings.\n * For more explanation see __gl_meshSplice() below.\n */\n fun splice(a: GLUhalfEdge, b: GLUhalfEdge) {\n val aONext = a.oNext!!\n val bONext = b.oNext!!\n aONext.sym?.lNext = b\n bONext.sym?.lNext = a\n a.oNext = bONext\n b.oNext = aONext\n }\n\n /**\n * MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n * origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n * a place to insert the new vertex in the global vertex list. We insert\n * the new vertex *before* vNext so that algorithms which walk the vertex\n * list will not see the newly created vertices.\n */\n fun makeVertex(newVertex: GLUvertex, eOrig: GLUhalfEdge, vNext: GLUvertex) {\n /* insert in circular doubly-linked list before vNext */\n val vPrev = vNext.prev!!\n newVertex.prev = vPrev\n vPrev.next = newVertex\n newVertex.next = vNext\n vNext.prev = newVertex\n newVertex.anEdge = eOrig\n newVertex.data = null\n /* leave coords, s, t undefined */\n\n /* fix other edges on this vertex loop */\n var e = eOrig\n do {\n e.org = newVertex\n e = e.oNext!!\n } while (e !== eOrig)\n }\n\n /**\n * MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n * face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n * a place to insert the new face in the global face list. We insert\n * the new face *before* fNext so that algorithms which walk the face\n * list will not see the newly created faces.\n */\n fun makeFace(newFace: GLUface, eOrig: GLUhalfEdge, fNext: GLUface) {\n /* insert in circular doubly-linked list before fNext */\n val fPrev = fNext.prev!!\n newFace.prev = fPrev\n fPrev.next = newFace\n newFace.next = fNext\n fNext.prev = newFace\n newFace.anEdge = eOrig\n newFace.data = null\n newFace.trail = null\n newFace.marked = false\n\n /**\n * The new face is marked \"inside\" if the old one was. This is a\n * convenience for the common case where a face has been split in two.\n */\n newFace.inside = fNext.inside\n\n /* fix other edges on this face loop */\n var e = eOrig\n do {\n e.lFace = newFace\n e = e.lNext!!\n } while (e !== eOrig)\n }\n\n /**\n * KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n * and removes from the global edge list.\n */\n fun killEdge(eDel: GLUhalfEdge) {\n var del = eDel\n\n /* Half-edges are allocated in pairs, see EdgePair above */\n if (!del.first) {\n del = del.sym!!\n }\n\n /* delete from circular doubly-linked list */\n val eNext = del.next!!\n val ePrev = del.sym?.next!!\n eNext.sym?.next = ePrev\n ePrev.sym?.next = eNext\n }\n\n /**\n * KillVertex( vDel ) destroys a vertex and removes it from the global\n * vertex list. It updates the vertex loop to point to a given new vertex.\n */\n fun killVertex(vDel: GLUvertex, newOrg: GLUvertex?) {\n val eStart = vDel.anEdge!!\n\n /* change the origin of all affected edges */\n var e = eStart\n do {\n e.org = newOrg\n e = e.oNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val vPrev = vDel.prev!!\n val vNext = vDel.next!!\n vNext.prev = vPrev\n vPrev.next = vNext\n }\n\n /**\n * KillFace( fDel ) destroys a face and removes it from the global face\n * list. It updates the face loop to point to a given new face.\n */\n fun killFace(fDel: GLUface, newLface: GLUface?) {\n val eStart = fDel.anEdge!!\n\n /* change the left face of all affected edges */\n var e = eStart\n do {\n e.lFace = newLface\n e = e.lNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fDel.prev!!\n val fNext = fDel.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /****************** Basic Edge Operations */\n /**\n * __gl_meshMakeEdge creates one edge, two vertices, and a loop (face).\n * The loop consists of the two new half-edges.\n */\n fun glMeshMakeEdge(mesh: GLUmesh): GLUhalfEdge {\n val newVertex1 = GLUvertex()\n val newVertex2 = GLUvertex()\n val newFace = GLUface()\n val e = makeEdge(mesh.eHead)\n makeVertex(newVertex1, e, mesh.vHead)\n makeVertex(newVertex2, e.sym!!, mesh.vHead)\n makeFace(newFace, e, mesh.fHead)\n return e\n }\n\n /**\n * __gl_meshSplice( eOrg, eDst ) is the basic operation for changing the\n * mesh connectivity and topology. It changes the mesh so that\n *\teOrg->Onext <- OLD( eDst->Onext )\n *\teDst->Onext <- OLD( eOrg->Onext )\n * where OLD(...) means the value before the meshSplice operation.\n *\n * This can have two effects on the vertex structure:\n * - if eOrg->Org != eDst->Org, the two vertices are merged together\n * - if eOrg->Org == eDst->Org, the origin is split into two vertices\n * In both cases, eDst->Org is changed and eOrg->Org is untouched.\n *\n * Similarly (and independently) for the face structure,\n * - if eOrg->Lface == eDst->Lface, one loop is split into two\n * - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n * In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n *\n * Some special cases:\n * If eDst == eOrg, the operation has no effect.\n * If eDst == eOrg->Lnext, the new face will have a single edge.\n * If eDst == eOrg->Lprev, the old face will have a single edge.\n * If eDst == eOrg->Onext, the new vertex will have a single edge.\n * If eDst == eOrg->Oprev, the old vertex will have a single edge.\n */\n fun glMeshSplice(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): Boolean {\n var joiningLoops = false\n var joiningVertices = false\n if (eOrg === eDst) return true\n if (eDst.org !== eOrg.org) {\n /* We are merging two disjoint vertices -- destroy eDst->Org */\n joiningVertices = true\n killVertex(eDst.org!!, eOrg.org)\n }\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Change the edge structure */\n splice(eDst, eOrg)\n if (!joiningVertices) {\n val newVertex = GLUvertex()\n\n /**\n * We split one vertex into two -- the new vertex is eDst.Org.\n * Make sure the old vertex points to a valid half-edge.\n */\n makeVertex(newVertex, eDst, eOrg.org!!)\n eOrg.org?.anEdge = eOrg\n }\n if (!joiningLoops) {\n val newFace = GLUface()\n\n /**\n * We split one loop into two -- the new loop is eDst.Lface.\n * Make sure the old face points to a valid half-edge.\n */\n makeFace(newFace, eDst, eOrg.lFace!!)\n eOrg.lFace?.anEdge = eOrg\n }\n return true\n }\n\n /**\n * __gl_meshDelete( eDel ) removes the edge eDel. There are several cases:\n * if (eDel.Lface != eDel.Rface), we join two loops into one; the loop\n * eDel.Lface is deleted. Otherwise, we are splitting one loop into two;\n * the newly created loop will contain eDel.Dst. If the deletion of eDel\n * would create isolated vertices, those are deleted as well.\n *\n * This function could be implemented as two calls to __gl_meshSplice\n * plus a few calls to memFree, but this would allocate and delete\n * unnecessary vertices and faces.\n */\n fun glMeshDelete(eDel: GLUhalfEdge): Boolean {\n val eDelSym = eDel.sym!!\n var joiningLoops = false\n\n /** First step: disconnect the origin vertex eDel.Org. We make all\n * changes to get a consistent mesh in this \"intermediate\" state.\n */\n if (eDel.lFace !== eDel.sym?.lFace) {\n /* We are joining two loops into one -- remove the left face */\n joiningLoops = true\n killFace(eDel.lFace!!, eDel.sym?.lFace)\n }\n if (eDel.oNext === eDel) {\n killVertex(eDel.org!!, null)\n } else {\n /* Make sure that eDel.Org and eDel.Sym.Lface point to valid half-edges */\n eDel.sym?.lFace?.anEdge = eDel.sym?.lNext\n eDel.org?.anEdge = eDel.oNext\n splice(eDel, eDel.sym?.lNext!!)\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We are splitting one loop into two -- create a new loop for eDel. */\n makeFace(newFace, eDel, eDel.lFace!!)\n }\n }\n\n /**\n * Claim: the mesh is now in a consistent state, except that eDel.Org\n * may have been deleted. Now we disconnect eDel.Dst.\n */\n if (eDelSym.oNext === eDelSym) {\n killVertex(eDelSym.org!!, null)\n killFace(eDelSym.lFace!!, null)\n } else {\n /* Make sure that eDel.Dst and eDel.Lface point to valid half-edges */\n eDel.lFace?.anEdge = eDelSym.sym?.lNext\n eDelSym.org?.anEdge = eDelSym.oNext\n splice(eDelSym, eDelSym.sym?.lNext!!)\n }\n\n /* Any isolated vertices or faces have already been freed. */\n killEdge(eDel)\n return true\n }\n\n /******************** Other Edge Operations */\n /**\n * All these routines can be implemented with the basic edge\n * operations above. They are provided for convenience and efficiency.\n */\n /**\n * __gl_meshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n * eNew == eOrg.Lnext, and eNew.Dst is a newly created vertex.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshAddEdgeVertex(eOrg: GLUhalfEdge): GLUhalfEdge {\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n run {\n val newVertex = GLUvertex()\n makeVertex(newVertex, eNewSym, eNew.org!!)\n }\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n return eNew\n }\n\n /**\n * __gl_meshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n * such that eNew == eOrg.Lnext. The new vertex is eOrg.Sym.Org == eNew.Org.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshSplitEdge(eOrg: GLUhalfEdge): GLUhalfEdge {\n val tempHalfEdge = glMeshAddEdgeVertex(eOrg)\n val eNew = tempHalfEdge.sym!!\n\n /* Disconnect eOrg from eOrg.Sym.Org and connect it to eNew.Org */\n splice(eOrg.sym!!, eOrg.sym?.sym?.lNext!!)\n splice(eOrg.sym!!, eNew)\n\n /* Set the vertex and face information */\n eOrg.sym?.org = eNew.org\n eNew.sym?.org?.anEdge = eNew.sym /* may have pointed to eOrg.Sym */\n eNew.sym?.lFace = eOrg.sym?.lFace\n eNew.winding = eOrg.winding /* copy old winding information */\n eNew.sym?.winding = eOrg.sym!!.winding\n return eNew\n }\n\n /**\n * __gl_meshConnect( eOrg, eDst ) creates a new edge from eOrg.Sym.Org\n * to eDst.Org, and returns the corresponding half-edge eNew.\n * If eOrg.Lface == eDst.Lface, this splits one loop into two,\n * and the newly created loop is eNew.Lface. Otherwise, two disjoint\n * loops are merged into one, and the loop eDst.Lface is destroyed.\n *\n * If (eOrg == eDst), the new face will have only two edges.\n * If (eOrg.Lnext == eDst), the old face is reduced to a single edge.\n * If (eOrg.Lnext.Lnext == eDst), the old face is reduced to two edges.\n */\n fun glMeshConnect(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): GLUhalfEdge {\n var joiningLoops = false\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n splice(eNewSym, eDst)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n eNewSym.org = eDst.org\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n\n /* Make sure the old face points to a valid half-edge */\n eOrg.lFace?.anEdge = eNewSym\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We split one loop into two -- the new loop is eNew.Lface */\n makeFace(newFace, eNew, eOrg.lFace!!)\n }\n return eNew\n }\n\n /******************** Other Operations */\n /**\n * __gl_meshZapFace( fZap ) destroys a face and removes it from the\n * global face list. All edges of fZap will have a null pointer as their\n * left face. Any edges which also have a null pointer as their right face\n * are deleted entirely (along with any isolated vertices this produces).\n * An entire mesh can be deleted by zapping its faces, one at a time,\n * in any order. Zapped faces cannot be used in further mesh operations!\n */\n fun glMeshZapFace(fZap: GLUface) {\n val eStart = fZap.anEdge!!\n\n /* walk around face, deleting edges whose right face is also null */\n var eNext = eStart.lNext!!\n do {\n val e = eNext\n eNext = e.lNext!!\n e.lFace = null\n if (e.sym?.lFace == null) {\n /* delete the edge -- see __gl_MeshDelete above */\n if (e.oNext === e) {\n killVertex(e.org!!, null)\n } else {\n /* Make sure that e.Org points to a valid half-edge */\n e.org?.anEdge = e.oNext\n splice(e, e.sym?.lNext!!)\n }\n val eSym = e.sym!!\n if (eSym.oNext === eSym) {\n killVertex(eSym.org!!, null)\n } else {\n /* Make sure that eSym.Org points to a valid half-edge */\n eSym.org?.anEdge = eSym.oNext\n splice(eSym, eSym.sym?.lNext!!)\n }\n killEdge(e)\n }\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fZap.prev!!\n val fNext = fZap.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /**\n * __gl_meshNewMesh() creates a new mesh with no edges, no vertices,\n * and no loops (what we usually call a \"face\").\n */\n fun glMeshNewMesh(): GLUmesh {\n val mesh = GLUmesh()\n val v = mesh.vHead\n val f = mesh.fHead\n val e = mesh.eHead\n val eSym = mesh.eHeadSym\n v.prev = v\n v.next = v.prev\n v.anEdge = null\n v.data = null\n f.prev = f\n f.next = f.prev\n f.anEdge = null\n f.data = null\n f.trail = null\n f.marked = false\n f.inside = false\n e.next = e\n e.sym = eSym\n e.oNext = null\n e.lNext = null\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.next = eSym\n eSym.sym = e\n eSym.oNext = null\n eSym.lNext = null\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return mesh\n }\n\n /**\n * glMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n * both meshes, and returns the new mesh (the old meshes are destroyed).\n */\n fun glMeshUnion(mesh1: GLUmesh, mesh2: GLUmesh): GLUmesh {\n val f1 = mesh1.fHead\n val v1 = mesh1.vHead\n val e1 = mesh1.eHead\n val f2 = mesh2.fHead\n val v2 = mesh2.vHead\n val e2 = mesh2.eHead\n\n /* Add the faces, vertices, and edges of mesh2 to those of mesh1 */\n if (f2.next !== f2) {\n f1.prev?.next = f2.next\n f2.next?.prev = f1.prev\n f2.prev?.next = f1\n f1.prev = f2.prev\n }\n if (v2.next !== v2) {\n v1.prev?.next = v2.next\n v2.next?.prev = v1.prev\n v2.prev?.next = v1\n v1.prev = v2.prev\n }\n if (e2.next !== e2) {\n e1.sym?.next?.sym?.next = e2.next\n e2.next?.sym?.next = e1.sym?.next\n e2.sym?.next?.sym?.next = e1\n e1.sym?.next = e2.sym?.next\n }\n return mesh1\n }\n\n /**\n * glMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMeshZap(mesh: GLUmesh) {\n val fHead = mesh.fHead\n while (fHead.next !== fHead) {\n glMeshZapFace(fHead.next!!)\n }\n }\n\n /**\n * __gl_meshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMesh(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n f = fNext\n }\n var v = mesh.vHead.next!!\n while (v !== mesh.vHead) {\n val vNext = v.next!!\n v = vNext\n }\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n /* One call frees both e and e.Sym (see EdgePair above) */\n val eNext = e.next!!\n e = eNext\n }\n }\n\n /**\n * __gl_meshCheckMesh( mesh ) checks a mesh for self-consistency.\n */\n fun glMeshCheckMesh(mesh: GLUmesh) {\n val fHead = mesh.fHead\n val vHead = mesh.vHead\n val eHead = mesh.eHead\n var fPrev = fHead\n while (true) {\n val f = fPrev.next!!\n if (f === fHead) break\n var e = f.anEdge!!\n do e = e.lNext!! while (e !== f.anEdge)\n fPrev = f\n }\n var vPrev = vHead\n while (true) {\n val v = vPrev.next!!\n if (v === vHead) break\n var e = v.anEdge!!\n do {\n e = e.oNext!!\n } while (e !== v.anEdge)\n vPrev = v\n }\n var ePrev = eHead\n while (true) {\n val e = ePrev.next!!\n if (e === eHead) break\n ePrev = e\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\ninternal object Normal {\n private const val SLANTED_SWEEP = false\n private var S_UNIT_X = 0.0 /* Pre-normalized */\n private var S_UNIT_Y = 0.0\n private const val TRUE_PROJECT = false\n\n init {\n if (SLANTED_SWEEP) {\n /**\n * The \"feature merging\" is not intended to be complete. There are\n * special cases where edges are nearly parallel to the sweep line\n * which are not implemented. The algorithm should still behave\n * robustly (ie. produce a reasonable tesselation) in the presence\n * of such edges, however it may miss features which could have been\n * merged. We could minimize this effect by choosing the sweep line\n * direction to be something unusual (ie. not parallel to one of the\n * coordinate axes).\n */\n S_UNIT_X = 0.5094153956495538 /* Pre-normalized */\n S_UNIT_Y = 0.8605207462201063\n } else {\n S_UNIT_X = 1.0\n S_UNIT_Y = 0.0\n }\n }\n\n private fun dot(u: DoubleArray, v: DoubleArray): Double {\n return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]\n }\n\n fun normalize(v: DoubleArray) {\n var len = v[0] * v[0] + v[1] * v[1] + v[2] * v[2]\n len = sqrt(len)\n v[0] /= len\n v[1] /= len\n v[2] /= len\n }\n\n fun longAxis(v: DoubleArray): Int {\n var i = 0\n if (abs(v[1]) > abs(v[0])) {\n i = 1\n }\n if (abs(v[2]) > abs(v[i])) {\n i = 2\n }\n return i\n }\n\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray) {\n val vHead = tess.mesh?.vHead!!\n val maxVal = DoubleArray(3)\n val minVal = DoubleArray(3)\n val minVert = arrayOfNulls(3)\n val maxVert = arrayOfNulls(3)\n val d1 = DoubleArray(3)\n val d2 = DoubleArray(3)\n val tNorm = DoubleArray(3)\n maxVal[2] = -2 * GLU.GLU_TESS_MAX_COORD\n maxVal[1] = maxVal[2]\n maxVal[0] = maxVal[1]\n minVal[2] = 2 * GLU.GLU_TESS_MAX_COORD\n minVal[1] = minVal[2]\n minVal[0] = minVal[1]\n var v = vHead.next!!\n while (v !== vHead) {\n var i = 0\n while (i < 3) {\n val c = v.coords[i]\n if (c < minVal[i]) {\n minVal[i] = c\n minVert[i] = v\n }\n if (c > maxVal[i]) {\n maxVal[i] = c\n maxVert[i] = v\n }\n ++i\n }\n v = v.next!!\n }\n\n /**\n * Find two vertices separated by at least 1/sqrt(3) of the maximum\n * distance between any two vertices\n */\n var i = 0\n if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {\n i = 1\n }\n if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {\n i = 2\n }\n if (minVal[i] >= maxVal[i]) {\n /* All vertices are the same -- normal doesn't matter */\n norm[0] = 0.0\n norm[1] = 0.0\n norm[2] = 1.0\n return\n }\n\n /**\n * Look for a third vertex which forms the triangle with maximum area\n * (Length of normal == twice the triangle area)\n */\n var maxLen2 = 0.0\n val v1 = minVert[i]!!\n val v2 = maxVert[i]!!\n d1[0] = v1.coords[0] - v2.coords[0]\n d1[1] = v1.coords[1] - v2.coords[1]\n d1[2] = v1.coords[2] - v2.coords[2]\n v = vHead.next!!\n while (v !== vHead) {\n d2[0] = v.coords[0] - v2.coords[0]\n d2[1] = v.coords[1] - v2.coords[1]\n d2[2] = v.coords[2] - v2.coords[2]\n tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1]\n tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2]\n tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0]\n val tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2]\n if (tLen2 > maxLen2) {\n maxLen2 = tLen2\n norm[0] = tNorm[0]\n norm[1] = tNorm[1]\n norm[2] = tNorm[2]\n }\n v = v.next!!\n }\n if (maxLen2 <= 0) {\n /* All points lie on a single line -- any decent normal will do */\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n norm[longAxis(d1)] = 1.0\n }\n }\n\n fun checkOrientation(tess: GLUtessellatorImpl) {\n val fHead = tess.mesh?.fHead!!\n val vHead = tess.mesh?.vHead!!\n\n /**\n * When we compute the normal automatically, we choose the orientation\n * so that the the sum of the signed areas of all contours is non-negative.\n */\n var area = 0.0\n var f = fHead.next!!\n while (f !== fHead) {\n var e = f.anEdge!!\n if (e.winding <= 0) {\n f = f.next!!\n continue\n }\n do {\n area += (e.org!!.s - e.sym!!.org!!.s) * (e.org!!.t + e.sym!!.org!!.t)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.next!!\n }\n if (area < 0) {\n /* Reverse the orientation by flipping all the t-coordinates */\n var v = vHead.next!!\n while (v !== vHead) {\n v.t = -v.t\n v = v.next!!\n }\n tess.tUnit[0] = -tess.tUnit[0]\n tess.tUnit[1] = -tess.tUnit[1]\n tess.tUnit[2] = -tess.tUnit[2]\n }\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n fun glProjectPolygon(tess: GLUtessellatorImpl) {\n val vHead = tess.mesh?.vHead!!\n val norm = DoubleArray(3)\n var computedNormal = false\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm)\n computedNormal = true\n }\n val sUnit = tess.sUnit\n val tUnit = tess.tUnit\n val i = longAxis(norm)\n if (TRUE_PROJECT) {\n /**\n * Choose the initial sUnit vector to be approximately perpendicular\n * to the normal.\n */\n normalize(norm)\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n\n /* Now make it exactly perpendicular */\n val w = dot(sUnit, norm)\n sUnit[0] -= w * norm[0]\n sUnit[1] -= w * norm[1]\n sUnit[2] -= w * norm[2]\n normalize(sUnit)\n\n /* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */\n tUnit[0] = norm[1] * sUnit[2] - norm[2] * sUnit[1]\n tUnit[1] = norm[2] * sUnit[0] - norm[0] * sUnit[2]\n tUnit[2] = norm[0] * sUnit[1] - norm[1] * sUnit[0]\n normalize(tUnit)\n } else {\n /* Project perpendicular to a coordinate axis -- better numerically */\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n tUnit[i] = 0.0\n tUnit[(i + 1) % 3] = if (norm[i] > 0) -S_UNIT_Y else S_UNIT_Y\n tUnit[(i + 2) % 3] = if (norm[i] > 0) S_UNIT_X else -S_UNIT_X\n }\n\n /* Project the vertices onto the sweep plane */\n var v = vHead.next!!\n while (v !== vHead) {\n v.s = dot(v.coords, sUnit)\n v.t = dot(v.coords, tUnit)\n v = v.next!!\n }\n if (computedNormal) {\n checkOrientation(tess)\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nabstract class PriorityQ {\n class PQnode {\n var handle = 0\n }\n\n class PQhandleElem {\n var key: Any? = null\n var node = 0\n }\n\n interface Leq {\n fun leq(key1: Any?, key2: Any?): Boolean\n }\n\n abstract fun pqDeletePriorityQ()\n abstract fun pqInit(): Boolean\n abstract fun pqInsert(keyNew: Any?): Int\n abstract fun pqExtractMin(): Any?\n abstract fun pqDelete(hCurr: Int)\n abstract fun pqMinimum(): Any?\n abstract fun pqIsEmpty(): Boolean // #endif\n\n companion object {\n const val INIT_SIZE = 32\n\n fun leq(x: Any, y: Any) = Geom.vertLeq(x as GLUvertex, y as GLUvertex)\n\n fun pqNewPriorityQ(): PriorityQ = PriorityQSort()\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal class PriorityQHeap : PriorityQ() {\n var nodes = Array(INIT_SIZE + 1) { PQnode() }\n var handles = Array(INIT_SIZE + 1) { PQhandleElem() }\n var size = 0\n var max = INIT_SIZE\n var freeList = 0\n var initialized = false\n\n init {\n nodes[1].handle = 1\n handles[1].key = null\n }\n\n /* really __gl_pqHeapDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n handles = emptyArray()\n nodes = emptyArray()\n }\n\n fun floatDown(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n var child = c shl 1\n if (child < size && leq(h[n[child + 1].handle].key!!, h[n[child].handle].key!!)) {\n ++child\n }\n val hChild = n[child].handle\n if (child > size || leq(h[hCurr].key!!, h[hChild].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hChild\n h[hChild].node = c\n c = child\n }\n }\n\n fun floatUp(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n val parent = c shr 1\n val hParent = n[parent].handle\n if (parent == 0 || leq(h[hParent].key!!, h[hCurr].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hParent\n h[hParent].node = c\n c = parent\n }\n }\n\n /* really __gl_pqHeapInit */\n override fun pqInit(): Boolean {\n /* This method of building a heap is O(n), rather than O(n lg n). */\n var i = size\n while (i >= 1) {\n floatDown(i)\n --i\n }\n initialized = true\n return true\n }\n\n /* really __gl_pqHeapInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n val free: Int\n val curr = ++size\n if (curr * 2 > max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n nodes = Array(max + 1) { if (it < nodes.size) nodes[it] else PQnode() }\n handles = Array(max + 1) { if (it < handles.size) handles[it] else PQhandleElem() }\n }\n if (freeList == 0) {\n free = curr\n } else {\n free = freeList\n freeList = handles[free].node\n }\n nodes[curr].handle = free\n handles[free].node = curr\n handles[free].key = keyNew\n if (initialized) {\n floatUp(curr)\n }\n return free\n }\n\n /* really __gl_pqHeapExtractMin */\n override fun pqExtractMin(): Any? {\n val n = nodes\n val h = handles\n val hMin = n[1].handle\n val min = h[hMin].key\n if (size > 0) {\n n[1].handle = n[size].handle\n h[n[1].handle].node = 1\n h[hMin].key = null\n h[hMin].node = freeList\n freeList = hMin\n if (--size > 0) {\n floatDown(1)\n }\n }\n return min\n }\n\n /* really __gl_pqHeapDelete */\n override fun pqDelete(hCurr: Int) {\n val n = nodes\n val h = handles\n val curr = h[hCurr].node\n n[curr].handle = n[size].handle\n h[n[curr].handle].node = curr\n if (curr <= --size) {\n if (curr <= 1 || leq(h[n[curr shr 1].handle].key!!, h[n[curr].handle].key!!)) {\n floatDown(curr)\n } else {\n floatUp(curr)\n }\n }\n h[hCurr].key = null\n h[hCurr].node = freeList\n freeList = hCurr\n }\n\n override fun pqMinimum(): Any? {\n return handles[nodes[1].handle].key\n }\n\n override fun pqIsEmpty(): Boolean {\n return size == 0\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\ninternal class PriorityQSort: PriorityQ() {\n val heap = PriorityQHeap()\n var keys: Array? = arrayOfNulls(INIT_SIZE)\n\n // JAVA: 'order' contains indices into the keys array.\n // This simulates the indirect pointers used in the original C code\n // (from Frank Suykens, Luciad.com).\n var order: IntArray? = null\n var size = 0\n var max = INIT_SIZE\n var initialized = false\n\n /* really __gl_pqSortDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n heap.pqDeletePriorityQ()\n order = null\n keys = null\n }\n\n private class Stack {\n var p = 0\n var r = 0\n }\n\n /* really __gl_pqSortInit */\n override fun pqInit(): Boolean {\n val stack = arrayOfNulls(50)\n for (k in stack.indices) {\n stack[k] = Stack()\n }\n var top = 0\n var seed = 2016473283\n\n /**\n * Create an array of indirect pointers to the keys, so that we\n * the handles we have returned are still valid.\n */\n order = IntArray(size + 1)\n /* the previous line is a patch to compensate for the fact that IBM */\n /* machines return a null on a malloc of zero bytes (unlike SGI), */\n /* so we have to put in this defense to guard against a memory */\n /* fault four lines down. from fossum@austin.ibm.com. */\n var p = 0\n var r = size - 1\n var piv = 0\n var i = p\n while (i <= r) {\n // indirect pointers: keep an index into the keys array, not a direct pointer to its contents\n order!![i] = piv\n ++piv\n ++i\n }\n\n /**\n * Sort the indirect pointers in descending order,\n * using randomized Quicksort\n */\n stack[top]?.p = p\n stack[top]?.r = r\n ++top\n while (--top >= 0) {\n p = stack[top]!!.p\n r = stack[top]!!.r\n while (r > p + 10) {\n seed = abs(seed * 1539415821 + 1)\n i = p + seed % (r - p + 1)\n piv = order!![i]\n order!![i] = order!![p]\n order!![p] = piv\n i = p - 1\n var j = r + 1\n do {\n do {\n ++i\n } while (gt(keys!![order!![i]]!!, keys!![piv]!!))\n do {\n --j\n } while (lt(keys!![order!![j]]!!, keys!![piv]!!))\n swap(order!!, i, j)\n } while (i < j)\n swap(order!!, i, j) /* Undo last swap */\n if (i - p < r - j) {\n stack[top]?.p = j + 1\n stack[top]?.r = r\n ++top\n r = i - 1\n } else {\n stack[top]?.p = p\n stack[top]?.r = i - 1\n ++top\n p = j + 1\n }\n }\n /* Insertion sort small lists */\n i = p + 1\n while (i <= r) {\n piv = order!![i]\n var j = i\n while (j > p && lt(keys!![order!![j - 1]]!!, keys!![piv]!!)) {\n order!![j] = order!![j - 1]\n --j\n }\n order!![j] = piv\n ++i\n }\n }\n max = size\n initialized = true\n heap.pqInit() /* always succeeds */\n\n/* #ifndef NDEBUG\n p = order;\n r = p + size - 1;\n for (i = p; i < r; ++i) {\n Assertion.doAssert(LEQ( * * (i + 1), **i ));\n }\n #endif*/\n return true\n }\n\n /* really __gl_pqSortInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n if (initialized) {\n return heap.pqInsert(keyNew)\n }\n val curr = size\n if (++size >= max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n // pq->keys = (PQHeapKey *)memRealloc( pq->keys,(size_t)(pq->max * sizeof( pq->keys[0] )));\n val pqKeys = arrayOfNulls(max)\n keys?.copyInto(pqKeys)\n keys = pqKeys\n }\n keys!![curr] = keyNew\n\n /* Negative handles index the sorted array. */\n return -(curr + 1)\n }\n\n /* really __gl_pqSortExtractMin */\n override fun pqExtractMin(): Any? {\n if (size == 0) {\n return heap.pqExtractMin()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heap.pqExtractMin()\n }\n }\n do {\n --size\n } while (size > 0 && keys!![order!![size - 1]] == null)\n return sortMin\n }\n\n /* really __gl_pqSortMinimum */\n override fun pqMinimum(): Any? {\n if (size == 0) {\n return heap.pqMinimum()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heapMin\n }\n }\n return sortMin\n }\n\n /* really __gl_pqSortIsEmpty */\n override fun pqIsEmpty(): Boolean {\n return size == 0 && heap.pqIsEmpty()\n }\n\n /* really __gl_pqSortDelete */\n override fun pqDelete(hCurr: Int) {\n var curr = hCurr\n if (curr >= 0) {\n heap.pqDelete(curr)\n return\n }\n curr = -(curr + 1)\n keys!![curr] = null\n while (size > 0 && keys!![order!![size - 1]] == null) {\n --size\n }\n }\n\n companion object {\n private fun lt(x: Any, y: Any): Boolean {\n return !leq(y, x)\n }\n\n private fun gt(x: Any, y: Any): Boolean {\n return !leq(x, y)\n }\n\n private fun swap(array: IntArray, a: Int, b: Int) {\n val tmp = array[a]\n array[a] = array[b]\n array[b] = tmp\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.kgl.GL_LINE_LOOP\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_FAN\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Render {\n private const val USE_OPTIMIZED_CODE_PATH = false\n private val renderFan = RenderFan()\n private val renderStrip = RenderStrip()\n private val renderTriangle = RenderTriangle()\n\n /************************ Strips and Fans decomposition */\n /**\n * __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle\n * fans, strips, and separate triangles. A substantial effort is made\n * to use as few rendering primitives as possible (ie. to make the fans\n * and strips as large as possible).\n *\n * The rendering output is provided as callbacks (see the api).\n */\n fun glRenderMesh(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n /* Make a list of separate triangles so we can render them all at once */\n tess.lonelyTriList = null\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n f.marked = false\n f = f.next!!\n }\n f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /**\n * We examine all faces in an arbitrary order. Whenever we find\n * an unprocessed face F, we output a group of faces including F\n * whose size is maximum.\n */\n if (f.inside && !f.marked) {\n renderMaximumFaceGroup(tess, f)\n }\n f = f.next!!\n }\n if (tess.lonelyTriList != null) {\n renderLonelyTriangles(tess, tess.lonelyTriList)\n tess.lonelyTriList = null\n }\n }\n\n /**\n * We want to find the largest triangle fan or strip of unmarked faces\n * which includes the given face fOrig. There are 3 possible fans\n * passing through fOrig (one centered at each vertex), and 3 possible\n * strips (one for each CCW permutation of the vertices). Our strategy\n * is to try all of these, and take the primitive which uses the most\n * triangles (a greedy approach).\n */\n fun renderMaximumFaceGroup(tess: GLUtessellatorImpl, fOrig: GLUface) {\n val e = fOrig.anEdge!!\n var max = FaceCount()\n max.size = 1\n max.eStart = e\n max.render = renderTriangle\n if (!tess.flagBoundary) {\n var newFace = maximumFan(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n }\n max.render?.render(tess, max.eStart!!, max.size)\n }\n\n /* Macros which keep track of faces we have marked temporarily, and allow\n * us to backtrack when necessary. With triangle fans, this is not\n * really necessary, since the only awkward case is a loop of triangles\n * around a single origin vertex. However with strips the situation is\n * more complicated, and we need a general tracking method like the\n * one here.\n */\n private fun marked(f: GLUface): Boolean {\n return !f.inside || f.marked\n }\n\n private fun addToTrail(f: GLUface, t: GLUface?): GLUface {\n f.trail = t\n f.marked = true\n return f\n }\n\n private fun freeTrail(t: GLUface?) {\n var t = t\n while (t != null) {\n t.marked = false\n t = t.trail\n }\n }\n\n /**\n * eOrig.Lface is the face we want to render. We want to find the size\n * of a maximal fan around eOrig.Org. To do this we just walk around\n * the origin vertex as far as possible in both directions.\n */\n fun maximumFan(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderFan)\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++newFace.size\n e = e.oNext!!\n }\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++newFace.size\n e = e.sym?.lNext!!\n }\n newFace.eStart = e\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n private fun isEven(n: Long): Boolean {\n return n and 0x1L == 0L\n }\n\n /**\n * Here we are looking for a maximal strip that contains the vertices\n * eOrig.Org, eOrig.Dst, eOrig.Lnext.Dst (in that order or the\n * reverse, such that all triangles are oriented CCW).\n *\n * Again we walk forward and backward as far as possible. However for\n * strips there is a twist: to get CCW orientations, there must be\n * an *even* number of triangles in the strip on one side of eOrig.\n * We walk the strip starting on a side with an even number of triangles;\n * if both side have an odd number, we are forced to shorten one side.\n */\n fun maximumStrip(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderStrip)\n var headSize = 0L\n var tailSize = 0L\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.lNext?.sym!!\n if (marked(e.lFace!!)) break\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.oNext!!\n }\n val eTail = e\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.lNext!!\n if (marked(e.sym?.lFace!!)) break\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.oNext?.sym!!\n }\n val eHead = e\n newFace.size = tailSize + headSize\n when {\n isEven(tailSize) -> {\n newFace.eStart = eTail.sym\n }\n isEven(headSize) -> {\n newFace.eStart = eHead\n }\n else -> {\n /**\n * Both sides have odd length, we must shorten one of them. In fact,\n * we must start from eHead to guarantee inclusion of eOrig.Lface.\n */\n --newFace.size\n newFace.eStart = eHead.oNext\n }\n }\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n /**\n * Now we render all the separate triangles which could not be\n * grouped into a triangle fan or strip.\n */\n fun renderLonelyTriangles(tess: GLUtessellatorImpl, f: GLUface?) {\n var f = f\n var edgeState = -1 /* force edge state output for first vertex */\n tess.callBeginOrBeginData(GL_TRIANGLES)\n while (f != null) {\n /* Loop once for each edge (there will always be 3 edges) */\n var e = f.anEdge!!\n do {\n if (tess.flagBoundary) {\n /**\n * Set the \"edge state\" to true just before we output the\n * first vertex of each edge on the polygon boundary.\n */\n val newState = if (!e.sym!!.lFace!!.inside) 1 else 0\n if (edgeState != newState) {\n edgeState = newState\n tess.callEdgeFlagOrEdgeFlagData(edgeState != 0)\n }\n }\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.trail\n }\n tess.callEndOrEndData()\n }\n\n /************************ Boundary contour decomposition */\n /**\n * __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one\n * contour for each face marked \"inside\". The rendering output is\n * provided as callbacks (see the api).\n */\n fun glRenderBoundary(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n if (f.inside) {\n tess.callBeginOrBeginData(GL_LINE_LOOP)\n var e = f.anEdge!!\n do {\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n tess.callEndOrEndData()\n }\n f = f.next!!\n }\n }\n\n /************************ Quick-and-dirty decomposition */\n private const val SIGN_INCONSISTENT = 2\n /**\n * If check==false, we compute the polygon normal and place it in norm[].\n * If check==true, we check that each triangle in the fan from v0 has a\n * consistent orientation with respect to norm[]. If triangles are\n * consistently oriented CCW, return 1; if CW, return -1; if all triangles\n * are degenerate return 0; otherwise (no consistent orientation) return\n * SIGN_INCONSISTENT.\n */\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray, check: Boolean): Int {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val n = DoubleArray(3)\n var sign = 0\n\n /**\n * Find the polygon normal. It is important to get a reasonable\n * normal even when the polygon is self-intersecting (eg. a bowtie).\n * Otherwise, the computed normal could be very tiny, but perpendicular\n * to the true plane of the polygon due to numerical noise. Then all\n * the triangles would appear to be degenerate and we would incorrectly\n * decompose the polygon as a fan (or simply not render it at all).\n *\n * We use a sum-of-triangles normal algorithm rather than the more\n * efficient sum-of-trapezoids method (used in CheckOrientation()\n * in normal.c). This lets us explicitly reverse the signed area\n * of some triangles to get a reasonable normal in the self-intersecting\n * case.\n */\n if (!check) {\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n }\n var vc = 1\n var xc = v[vc].coords[0] - v[0].coords[0]\n var yc = v[vc].coords[1] - v[0].coords[1]\n var zc = v[vc].coords[2] - v[0].coords[2]\n while (++vc < vn) {\n val xp = xc\n val yp = yc\n val zp = zc\n xc = v[vc].coords[0] - v[0].coords[0]\n yc = v[vc].coords[1] - v[0].coords[1]\n zc = v[vc].coords[2] - v[0].coords[2]\n\n /* Compute (vp - v0) cross (vc - v0) */\n n[0] = yp * zc - zp * yc\n n[1] = zp * xc - xp * zc\n n[2] = xp * yc - yp * xc\n val dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2]\n if (!check) {\n /**\n * Reverse the contribution of back-facing triangles to get\n * a reasonable normal for self-intersecting polygons (see above)\n */\n if (dot >= 0) {\n norm[0] += n[0]\n norm[1] += n[1]\n norm[2] += n[2]\n } else {\n norm[0] -= n[0]\n norm[1] -= n[1]\n norm[2] -= n[2]\n }\n } else if (dot != 0.0) {\n /* Check the new orientation for consistency with previous triangles */\n sign = if (dot > 0) {\n if (sign < 0) return SIGN_INCONSISTENT\n 1\n } else {\n if (sign > 0) return SIGN_INCONSISTENT\n -1\n }\n }\n }\n return sign\n }\n\n /**\n * __gl_renderCache( tess ) takes a single contour and tries to render it\n * as a triangle fan. This handles convex polygons, as well as some\n * non-convex polygons if we get lucky.\n *\n * Returns true if the polygon was successfully rendered. The rendering\n * output is provided as callbacks (see the api).\n */\n fun glRenderCache(tess: GLUtessellatorImpl): Boolean {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val norm = DoubleArray(3)\n if (tess.cacheCount < 3) {\n /* Degenerate contour -- no output */\n return true\n }\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm, false)\n }\n val sign = computeNormal(tess, norm, true)\n if (sign == SIGN_INCONSISTENT) {\n /* Fan triangles did not have a consistent orientation */\n return false\n }\n if (sign == 0) {\n /* All triangles were degenerate */\n return true\n }\n return if (!USE_OPTIMIZED_CODE_PATH) {\n false\n } else {\n /* Make sure we do the right thing for each winding rule */\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD, GLU.GLU_TESS_WINDING_NONZERO -> {}\n GLU.GLU_TESS_WINDING_POSITIVE -> if (sign < 0) return true\n GLU.GLU_TESS_WINDING_NEGATIVE -> if (sign > 0) return true\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return true\n }\n tess.callBeginOrBeginData(if (tess.boundaryOnly) GL_LINE_LOOP else if (tess.cacheCount > 3) GL_TRIANGLE_FAN else GL_TRIANGLES)\n tess.callVertexOrVertexData(v[0].data!!)\n if (sign > 0) {\n var vc = 1\n while (vc < vn) {\n tess.callVertexOrVertexData(v[vc].data!!)\n ++vc\n }\n } else {\n var vc = vn - 1\n while (vc > 0) {\n tess.callVertexOrVertexData(v[vc].data!!)\n --vc\n }\n }\n tess.callEndOrEndData()\n true\n }\n }\n\n /**\n * This structure remembers the information we need about a primitive\n * to be able to render it later, once we have determined which\n * primitive is able to use the most triangles.\n */\n internal class FaceCount {\n constructor()\n constructor(size: Long, eStart: GLUhalfEdge?, render: RenderCallBack?) {\n this.size = size\n this.eStart = eStart\n this.render = render\n }\n\n /**\n * number of triangles used\n */\n var size = 0L\n /**\n * edge where this primitive starts\n */\n var eStart: GLUhalfEdge? = null\n var render: RenderCallBack? = null\n }\n\n internal interface RenderCallBack {\n fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long)\n }\n\n private class RenderTriangle : RenderCallBack {\n /**\n * Just add the triangle to a triangle list, so we can render all\n * the separate triangles at once.\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n tess.lonelyTriList = addToTrail(e.lFace!!, tess.lonelyTriList)\n }\n }\n\n private class RenderFan : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a fan starting from\n * edge \"e\". The fan *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_FAN)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n\n private class RenderStrip : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a strip starting from\n * edge \"e\". The strip *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_STRIP)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.lNext?.sym!!\n tess.callVertexOrVertexData(e.org?.data!!)\n if (marked(e.lFace!!)) break\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.tessellator.Dict.DictLeq\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Sweep {\n // #ifdef FOR_TRITE_TEST_PROGRAM\n // extern void DebugEvent( GLUtessellator *tess );\n // #else\n @Suppress(\"UNUSED_PARAMETER\")\n private fun debugEvent(tess: GLUtessellatorImpl) {}\n\n // #endif\n /*\n * Invariants for the Edge Dictionary.\n * - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n * at any valid location of the sweep event\n * - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n * share a common endpoint\n * - for each e, e.Dst has been processed, but not e.Org\n * - each edge e satisfies VertLeq(e.Dst,event) && VertLeq(event,e.Org)\n * where \"event\" is the current sweep line event.\n * - no edge e has zero length\n *\n * Invariants for the Mesh (the processed portion).\n * - the portion of the mesh left of the sweep line is a planar graph,\n * ie. there is *some* way to embed it in the plane\n * - no processed edge has zero length\n * - no two processed vertices have identical coordinates\n * - each \"inside\" region is monotone, ie. can be broken into two chains\n * of monotonically increasing vertices according to VertLeq(v1,v2)\n * - a non-invariant: these chains may intersect (very slightly)\n *\n * Invariants for the Sweep.\n * - if none of the edges incident to the event vertex have an activeRegion\n * (ie. none of these edges are in the edge dictionary), then the vertex\n * has only right-going edges.\n * - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n * by ConnectRightVertex), then it is the only right-going edge from\n * its associated vertex. (This says that these edges exist only\n * when it is necessary.)\n */\n /**\n * When we merge two edges into one, we need to compute the combined\n * winding of the new edge.\n */\n private fun addWinding(eDst: GLUhalfEdge, eSrc: GLUhalfEdge) {\n eDst.winding += eSrc.winding\n eDst.sym!!.winding += eSrc.sym!!.winding\n }\n\n private fun regionBelow(r: ActiveRegion): ActiveRegion {\n return Dict.dictKey(Dict.dictPred(r.nodeUp!!)) as ActiveRegion\n }\n\n private fun regionAbove(r: ActiveRegion): ActiveRegion? {\n return Dict.dictKey(Dict.dictSucc(r.nodeUp!!)) as ActiveRegion?\n }\n\n /**\n * Both edges must be directed from right to left (this is the canonical\n * direction for the upper edge of each region).\n *\n * The strategy is to evaluate a \"t\" value for each edge at the\n * current sweep line position, given by tess.event. The calculations\n * are designed to be very stable, but of course they are not perfect.\n *\n * Special case: if both edge destinations are at the sweep event,\n * we sort the edges by slope (they would otherwise compare equally).\n */\n fun edgeLeq(tess: GLUtessellatorImpl, reg1: ActiveRegion, reg2: ActiveRegion): Boolean {\n val event = tess.event!!\n val e1 = reg1.eUp\n val e2 = reg2.eUp\n if (e1.sym?.org === event) {\n return if (e2.sym?.org === event) {\n /**\n * Two edges right of the sweep line which meet at the sweep event.\n * Sort them by slope.\n */\n if (Geom.vertLeq(e1.org!!, e2.org!!)) {\n Geom.edgeSign(e2.sym?.org!!, e1.org!!, e2.org!!) <= 0\n } else Geom.edgeSign(e1.sym?.org!!, e2.org!!, e1.org!!) >= 0\n } else Geom.edgeSign(e2.sym?.org!!, event, e2.org!!) <= 0\n }\n if (e2.sym?.org === event) {\n return Geom.edgeSign(e1.sym?.org!!, event, e1.org!!) >= 0\n }\n\n /* General case - compute signed distance *from* e1, e2 to event */\n val t1 = Geom.edgeEval(e1.sym?.org!!, event, e1.org!!)\n val t2 = Geom.edgeEval(e2.sym?.org!!, event, e2.org!!)\n return t1 >= t2\n }\n\n fun deleteRegion(reg: ActiveRegion) {\n reg.eUp.activeRegion = null\n Dict.dictDelete(reg.nodeUp!!) /* __gl_dictListDelete */\n }\n\n /**\n * Replace an upper edge which needs fixing (see ConnectRightVertex).\n */\n fun fixUpperEdge(reg: ActiveRegion, newEdge: GLUhalfEdge): Boolean {\n if (!Mesh.glMeshDelete(reg.eUp)) return false\n reg.fixUpperEdge = false\n reg.eUp = newEdge\n newEdge.activeRegion = reg\n return true\n }\n\n fun topLeftRegion(reg: ActiveRegion): ActiveRegion? {\n var reg = reg\n val org = reg.eUp.org\n\n /* Find the region above the uppermost edge with the same origin */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.org === org)\n\n /**\n * If the edge above was a temporary edge introduced by ConnectRightVertex,\n * now is the time to fix it.\n */\n if (reg.fixUpperEdge) {\n val e = Mesh.glMeshConnect(regionBelow(reg).eUp.sym!!, reg.eUp.lNext!!)\n if (!fixUpperEdge(reg, e)) return null\n reg = regionAbove(reg)!!\n }\n return reg\n }\n\n fun topRightRegion(reg: ActiveRegion): ActiveRegion {\n var reg = reg\n val dst = reg.eUp.sym?.org\n\n /* Find the region above the uppermost edge with the same destination */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.sym?.org === dst)\n return reg\n }\n\n /**\n * Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n * (according to where the new edge belongs in the sweep-line dictionary).\n * The upper edge of the new region will be \"eNewUp\".\n * Winding number and \"inside\" flag are not updated.\n */\n fun addRegionBelow(\n tess: GLUtessellatorImpl,\n regAbove: ActiveRegion,\n eNewUp: GLUhalfEdge\n ): ActiveRegion {\n val regNew = ActiveRegion(eNewUp)\n /* __gl_dictListInsertBefore */\n regNew.nodeUp = Dict.dictInsertBefore(tess.dict!!, regAbove.nodeUp!!, regNew)\n regNew.fixUpperEdge = false\n regNew.sentinel = false\n regNew.dirty = false\n eNewUp.activeRegion = regNew\n return regNew\n }\n\n fun isWindingInside(tess: GLUtessellatorImpl, n: Int): Boolean {\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD -> return n and 1 != 0\n GLU.GLU_TESS_WINDING_NONZERO -> return n != 0\n GLU.GLU_TESS_WINDING_POSITIVE -> return n > 0\n GLU.GLU_TESS_WINDING_NEGATIVE -> return n < 0\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return n >= 2 || n <= -2\n }\n throw RuntimeException()\n /*NOTREACHED*/\n }\n\n fun computeWinding(tess: GLUtessellatorImpl, reg: ActiveRegion) {\n reg.windingNumber = regionAbove(reg)!!.windingNumber + reg.eUp.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n }\n\n /**\n * Delete a region from the sweep line. This happens when the upper\n * and lower chains of a region meet (at a vertex on the sweep line).\n * The \"inside\" flag is copied to the appropriate mesh face (we could\n * not do this before -- since the structure of the mesh is always\n * changing, this face may not have even existed until now).\n */\n fun finishRegion(reg: ActiveRegion) {\n val e = reg.eUp\n val f = e.lFace!!\n f.inside = reg.inside\n f.anEdge = e /* optimization for __gl_meshTessellateMonoRegion() */\n deleteRegion(reg)\n }\n\n /**\n * We are given a vertex with one or more left-going edges. All affected\n * edges should be in the edge dictionary. Starting at regFirst.eUp,\n * we walk down deleting all regions where both edges have the same\n * origin vOrg. At the same time we copy the \"inside\" flag from the\n * active region to the face, since at this point each face will belong\n * to at most one region (this was not necessarily true until this point\n * in the sweep). The walk stops at the region above regLast; if regLast\n * is null we walk as far as possible. At the same time we relink the\n * mesh if necessary, so that the ordering of edges around vOrg is the\n * same as in the dictionary.\n */\n fun finishLeftRegions(regFirst: ActiveRegion, regLast: ActiveRegion?): GLUhalfEdge {\n var regPrev = regFirst\n var ePrev = regFirst.eUp\n while (regPrev !== regLast) {\n regPrev.fixUpperEdge = false /* placement was OK */\n val reg = regionBelow(regPrev)\n var e = reg.eUp\n if (e.org !== ePrev.org) {\n if (!reg.fixUpperEdge) {\n /**\n * Remove the last left-going edge. Even though there are no further\n * edges in the dictionary with this origin, there may be further\n * such edges in the mesh (if we are adding left edges to a vertex\n * that has already been processed). Thus it is important to call\n * FinishRegion rather than just DeleteRegion.\n */\n finishRegion(regPrev)\n break\n }\n /**\n * If the edge below was a temporary edge introduced by\n * ConnectRightVertex, now is the time to fix it.\n */\n e = Mesh.glMeshConnect(ePrev.oNext?.sym!!, e.sym!!)\n if (!fixUpperEdge(reg, e)) throw RuntimeException()\n }\n\n /* Relink edges so that ePrev.Onext == e */\n if (ePrev.oNext !== e) {\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev, e)) throw RuntimeException()\n }\n finishRegion(regPrev) /* may change reg.eUp */\n ePrev = reg.eUp\n regPrev = reg\n }\n return ePrev\n }\n\n /**\n * Purpose: insert right-going edges into the edge dictionary, and update\n * winding numbers and mesh connectivity appropriately. All right-going\n * edges share a common origin vOrg. Edges are inserted CCW starting at\n * eFirst; the last edge inserted is eLast.Sym.Lnext. If vOrg has any\n * left-going edges already processed, then eTopLeft must be the edge\n * such that an imaginary upward vertical segment from vOrg would be\n * contained between eTopLeft.Sym.Lnext and eTopLeft; otherwise eTopLeft\n * should be null.\n */\n fun addRightEdges(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eFirst: GLUhalfEdge, eLast: GLUhalfEdge?, eTopLeft: GLUhalfEdge?,\n cleanUp: Boolean\n ) {\n var eTopLeft = eTopLeft\n var firstTime = true\n\n /* Insert the new right-going edges in the dictionary */\n var e = eFirst\n do {\n addRegionBelow(tess, regUp, e.sym!!)\n e = e.oNext!!\n } while (e !== eLast)\n\n /**\n * Walk *all* right-going edges from e.Org, in the dictionary order,\n * updating the winding numbers of each region, and re-linking the mesh\n * edges to match the dictionary ordering (if necessary).\n */\n if (eTopLeft == null) {\n eTopLeft = regionBelow(regUp).eUp.sym?.oNext\n }\n var regPrev = regUp\n var ePrev = eTopLeft!!\n var reg: ActiveRegion\n while (true) {\n reg = regionBelow(regPrev)\n e = reg.eUp.sym!!\n if (e.org !== ePrev.org) break\n if (e.oNext !== ePrev) {\n /* Unlink e from its current position, and relink below ePrev */\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev.sym?.lNext!!, e)) throw RuntimeException()\n }\n /* Compute the winding number and \"inside\" flag for the new regions */\n reg.windingNumber = regPrev.windingNumber - e.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n\n /**\n * Check for two outgoing edges with same slope -- process these\n * before any intersection tests (see example in __gl_computeInterior).\n */\n regPrev.dirty = true\n if (!firstTime && checkForRightSplice(tess, regPrev)) {\n addWinding(e, ePrev)\n deleteRegion(regPrev)\n if (!Mesh.glMeshDelete(ePrev)) throw RuntimeException()\n }\n firstTime = false\n regPrev = reg\n ePrev = e\n }\n regPrev.dirty = true\n if (cleanUp) {\n /* Check for intersections between newly adjacent edges. */\n walkDirtyRegions(tess, regPrev)\n }\n }\n\n fun callCombine(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n data: Array, weights: FloatArray, needed: Boolean\n ) {\n val coords = DoubleArray(3)\n\n /* Copy coord data in case the callback changes it. */\n coords[0] = isect.coords[0]\n coords[1] = isect.coords[1]\n coords[2] = isect.coords[2]\n val outData = arrayOfNulls(1)\n tess.callCombineOrCombineData(coords, data, weights, outData)\n isect.data = outData[0]\n if (isect.data == null) {\n if (!needed) {\n isect.data = data[0]\n } else if (!tess.fatalError) {\n /**\n * The only way fatal error is when two edges are found to intersect,\n * but the user has not provided the callback necessary to handle\n * generated intersection points.\n */\n tess.callErrorOrErrorData(GLU.GLU_TESS_NEED_COMBINE_CALLBACK)\n tess.fatalError = true\n }\n }\n }\n\n /**\n * Two vertices with idential coordinates are combined into one.\n * e1.Org is kept, while e2.Org is discarded.\n */\n fun spliceMergeVertices(tess: GLUtessellatorImpl, e1: GLUhalfEdge, e2: GLUhalfEdge) {\n val data = arrayOfNulls(4)\n val weights = floatArrayOf(0.5f, 0.5f, 0.0f, 0.0f)\n data[0] = e1.org?.data\n data[1] = e2.org?.data\n callCombine(tess, e1.org!!, data, weights, false)\n if (!Mesh.glMeshSplice(e1, e2)) throw RuntimeException()\n }\n\n /**\n * Find some weights which describe how the intersection vertex is\n * a linear combination of \"org\" and \"dest\". Each of the two edges\n * which generated \"isect\" is allocated 50% of the weight; each edge\n * splits the weight between its org and dst according to the\n * relative distance to \"isect\".\n */\n fun vertexWeights(\n isect: GLUvertex, org: GLUvertex, dst: GLUvertex,\n weights: FloatArray\n ) {\n val t1 = Geom.vertL1dist(org, isect)\n val t2 = Geom.vertL1dist(dst, isect)\n weights[0] = (0.5 * t2 / (t1 + t2)).toFloat()\n weights[1] = (0.5 * t1 / (t1 + t2)).toFloat()\n isect.coords[0] += weights[0] * org.coords[0] + weights[1] * dst.coords[0]\n isect.coords[1] += weights[0] * org.coords[1] + weights[1] * dst.coords[1]\n isect.coords[2] += weights[0] * org.coords[2] + weights[1] * dst.coords[2]\n }\n\n /**\n * We've computed a new intersection point, now we need a \"data\" pointer\n * from the user so that we can refer to this new vertex in the\n * rendering callbacks.\n */\n fun getIntersectData(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n orgUp: GLUvertex, dstUp: GLUvertex,\n orgLo: GLUvertex, dstLo: GLUvertex\n ) {\n val data = arrayOfNulls(4)\n val weights = FloatArray(4)\n val weights1 = FloatArray(2)\n val weights2 = FloatArray(2)\n data[0] = orgUp.data\n data[1] = dstUp.data\n data[2] = orgLo.data\n data[3] = dstLo.data\n isect.coords[2] = 0.0\n isect.coords[1] = isect.coords[2]\n isect.coords[0] = isect.coords[1]\n vertexWeights(isect, orgUp, dstUp, weights1)\n vertexWeights(isect, orgLo, dstLo, weights2)\n weights1.copyInto(weights, 0)\n weights2.copyInto(weights, 2)\n callCombine(tess, isect, data, weights, true)\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Org is above eLo, or eLo.Org is below eUp (depending on which\n * origin is leftmost).\n *\n * The main purpose is to splice right-going edges with the same\n * dest vertex and nearly identical slopes (ie. we can't distinguish\n * the slopes numerically). However the splicing can also help us\n * to recover from numerical errors. For example, suppose at one\n * point we checked eUp and eLo, and decided that eUp.Org is barely\n * above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * our test so that now eUp.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants.\n *\n * One possibility is to check these edges for intersection again\n * (ie. CheckForIntersect). This is what we do if possible. However\n * CheckForIntersect requires that tess.event lies between eUp and eLo,\n * so that it has something to fall back on when the intersection\n * calculation gives us an unusable answer. So, for those cases where\n * we can't check for intersection, this routine fixes the problem\n * by just splicing the offending vertex into the other edge.\n * This is a guaranteed solution, no matter how degenerate things get.\n * Basically this is a combinatorial solution to a numerical problem.\n */\n fun checkForRightSplice(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.org!!, eLo.org!!)) {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Org appears to be below eLo */\n if (!Geom.vertEq(eUp.org!!, eLo.org!!)) {\n /* Splice eUp.Org into eLo */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n } else if (eUp.org !== eLo.org) {\n /* merge the two vertices, discarding eUp.Org */\n tess.pq?.pqDelete(eUp.org?.pqHandle!!) /* __gl_pqSortDelete */\n spliceMergeVertices(tess, eLo.sym?.lNext!!, eUp)\n }\n } else {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Org appears to be above eUp, so splice eLo.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n }\n return true\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Sym.Org is above eLo, or eLo.Sym.Org is below eUp (depending on which\n * destination is rightmost).\n *\n * Theoretically, this should always be true. However, splitting an edge\n * into two pieces can change the results of previous tests. For example,\n * suppose at one point we checked eUp and eLo, and decided that eUp.Sym.Org\n * is barely above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * the test so that now eUp.Sym.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants\n * (otherwise new edges might get inserted in the wrong place in the\n * dictionary, and bad stuff will happen).\n *\n * We fix the problem by just splicing the offending vertex into the\n * other edge.\n */\n fun checkForLeftSplice(regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.sym?.org!!, eLo.sym?.org!!)) {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.sym?.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Sym.Org is above eUp, so splice eLo.Sym.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n val e = Mesh.glMeshSplitEdge(eUp)\n if (!Mesh.glMeshSplice(eLo.sym!!, e)) throw RuntimeException()\n e.lFace?.inside = regUp.inside\n } else {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.sym?.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Sym.Org is below eLo, so splice eUp.Sym.Org into eLo */\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n val e = Mesh.glMeshSplitEdge(eLo)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym!!)) throw RuntimeException()\n e.sym?.lFace?.inside = regUp.inside\n }\n return true\n }\n\n /**\n * Check the upper and lower edges of the given region to see if\n * they intersect. If so, create the intersection and add it\n * to the data structures.\n *\n * Returns true if adding the new intersection resulted in a recursive\n * call to AddRightEdges(); in this case all \"dirty\" regions have been\n * checked for intersections, and possibly regUp has been deleted.\n */\n fun checkForIntersect(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n val orgUp = eUp.org!!\n val orgLo = eLo.org!!\n val dstUp = eUp.sym?.org!!\n val dstLo = eLo.sym?.org!!\n val isect = GLUvertex()\n if (orgUp === orgLo) return false /* right endpoints are the same */\n val tMinUp = orgUp.t.coerceAtMost(dstUp.t)\n val tMaxLo = orgLo.t.coerceAtLeast(dstLo.t)\n if (tMinUp > tMaxLo) return false /* t ranges do not overlap */\n if (Geom.vertLeq(orgUp, orgLo)) {\n if (Geom.edgeSign(dstLo, orgUp, orgLo) > 0) return false\n } else {\n if (Geom.edgeSign(dstUp, orgLo, orgUp) < 0) return false\n }\n\n /* At this point the edges intersect, at least marginally */\n debugEvent(tess)\n Geom.edgeIntersect(dstUp, orgUp, dstLo, orgLo, isect)\n if (Geom.vertLeq(isect, tess.event!!)) {\n /**\n * The intersection point lies slightly to the left of the sweep line,\n * so move it until it''s slightly to the right of the sweep line.\n * (If we had perfect numerical precision, this would never happen\n * in the first place). The easiest and safest thing to do is\n * replace the intersection by tess.event.\n */\n isect.s = tess.event!!.s\n isect.t = tess.event!!.t\n }\n /**\n * Similarly, if the computed intersection lies to the right of the\n * rightmost origin (which should rarely happen), it can cause\n * unbelievable inefficiency on sufficiently degenerate inputs.\n * (If you have the test program, try running test54.d with the\n * \"X zoom\" option turned on).\n */\n val orgMin = if (Geom.vertLeq(orgUp, orgLo)) orgUp else orgLo\n if (Geom.vertLeq(orgMin, isect)) {\n isect.s = orgMin.s\n isect.t = orgMin.t\n }\n if (Geom.vertEq(isect, orgUp) || Geom.vertEq(isect, orgLo)) {\n /* Easy case -- intersection at one of the right endpoints */\n checkForRightSplice(tess, regUp)\n return false\n }\n if ((!Geom.vertEq(dstUp, tess.event!!)\n && Geom.edgeSign(dstUp, tess.event!!, isect) >= 0)\n || (!Geom.vertEq(dstLo, tess.event!!)\n && Geom.edgeSign(dstLo, tess.event!!, isect) <= 0)\n ) {\n /**\n * Very unusual -- the new upper or lower edge would pass on the\n * wrong side of the sweep event, or through it. This can happen\n * due to very small numerical errors in the intersection calculation.\n */\n if (dstLo === tess.event) {\n /* Splice dstLo into eUp, and process the new region(s) */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eUp = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n addRightEdges(tess, regUp, eUp.sym?.lNext!!, eUp, eUp, true)\n return true\n }\n if (dstUp === tess.event) {\n /* Splice dstUp into eLo, and process the new region(s) */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo = regUp\n regUp = topRightRegion(regUp)\n val e = regionBelow(regUp).eUp.sym?.oNext\n regLo.eUp = eLo.sym?.lNext!!\n eLo = finishLeftRegions(regLo, null)\n addRightEdges(tess, regUp, eLo.oNext!!, eUp.sym?.oNext, e, true)\n return true\n }\n /**\n * Special case: called from ConnectRightVertex. If either\n * edge passes on the wrong side of tess.event, split it\n * (and wait for ConnectRightVertex to splice it appropriately).\n */\n if (Geom.edgeSign(dstUp, tess.event!!, isect) >= 0) {\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n eUp.org?.s = tess.event!!.s\n eUp.org?.t = tess.event!!.t\n }\n if (Geom.edgeSign(dstLo, tess.event!!, isect) <= 0) {\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n Mesh.glMeshSplitEdge(eLo.sym!!)\n eLo.org?.s = tess.event!!.s\n eLo.org?.t = tess.event!!.t\n }\n /* leave the rest for ConnectRightVertex */\n return false\n }\n\n /**\n * General case -- split both edges, splice into new vertex.\n * When we do the splice operation, the order of the arguments is\n * arbitrary as far as correctness goes. However, when the operation\n * creates a new face, the work done is proportional to the size of\n * the new face. We expect the faces in the processed part of\n * the mesh (ie. eUp.Lface) to be smaller than the faces in the\n * unprocessed original contours (which will be eLo.Sym.Lnext.Lface).\n */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n eUp.org?.s = isect.s\n eUp.org?.t = isect.t\n eUp.org?.pqHandle = tess.pq!!.pqInsert(eUp.org) /* __gl_pqSortInsert */\n getIntersectData(tess, eUp.org!!, orgUp, dstUp, orgLo, dstLo)\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n regionAbove(regUp)?.dirty = regUp.dirty\n return false\n }\n\n /**\n * When the upper or lower edge of any region changes, the region is\n * marked \"dirty\". This routine walks through all the dirty regions\n * and makes sure that the dictionary invariants are satisfied\n * (see the comments at the beginning of this file). Of course\n * new dirty regions can be created as we make changes to restore\n * the invariants.\n */\n fun walkDirtyRegions(tess: GLUtessellatorImpl, regUp: ActiveRegion) {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n while (true) {\n\n /* Find the lowest dirty region (we walk from the bottom up). */\n while (regLo.dirty) {\n regUp = regLo\n regLo = regionBelow(regLo)\n }\n if (!regUp.dirty) {\n regLo = regUp\n regUp = regionAbove(regUp) ?: return\n if (!regUp.dirty) return /* We've walked all the dirty regions */\n }\n regUp.dirty = false\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n if (eUp.sym?.org !== eLo.sym?.org) {\n /* Check that the edge ordering is obeyed at the Dst vertices. */\n if (checkForLeftSplice(regUp)) {\n\n /**\n * If the upper or lower edge was marked fixUpperEdge, then\n * we no longer need it (since these edges are needed only for\n * vertices which otherwise have no right-going edges).\n */\n if (regLo.fixUpperEdge) {\n deleteRegion(regLo)\n if (!Mesh.glMeshDelete(eLo)) throw RuntimeException()\n regLo = regionBelow(regUp)\n eLo = regLo.eUp\n } else if (regUp.fixUpperEdge) {\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n eUp = regUp.eUp\n }\n }\n }\n if (eUp.org !== eLo.org) {\n if (eUp.sym?.org !== eLo.sym?.org && !regUp.fixUpperEdge && !regLo.fixUpperEdge\n && (eUp.sym?.org === tess.event || eLo.sym?.org === tess.event)\n ) {\n /**\n * When all else fails in CheckForIntersect(), it uses tess.event\n * as the intersection location. To make this possible, it requires\n * that tess.event lie between the upper and lower edges, and also\n * that neither of these is marked fixUpperEdge (since in the worst\n * case it might splice one of these edges into tess.event, and\n * violate the invariant that fixable edges are the only right-going\n * edge from their associated vertex).\n */\n if (checkForIntersect(tess, regUp)) {\n /* WalkDirtyRegions() was called recursively; we're done */\n return\n }\n } else {\n /**\n * Even though we can't use CheckForIntersect(), the Org vertices\n * may violate the dictionary edge ordering. Check and correct this.\n */\n checkForRightSplice(tess, regUp)\n }\n }\n if (eUp.org === eLo.org && eUp.sym?.org === eLo.sym?.org) {\n /* A degenerate loop consisting of only two edges -- delete it. */\n addWinding(eLo, eUp)\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n }\n }\n }\n\n /**\n * Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n * to the unprocessed portion of the mesh. Since there are no right-going\n * edges, two regions (one above vEvent and one below) are being merged\n * into one. \"regUp\" is the upper of these two regions.\n *\n * There are two reasons for doing this (adding a right-going edge):\n * - if the two regions being merged are \"inside\", we must add an edge\n * to keep them separated (the combined region would not be monotone).\n * - in any case, we must leave some record of vEvent in the dictionary,\n * so that we can merge vEvent with features that we have not seen yet.\n * For example, maybe there is a vertical edge which passes just to\n * the right of vEvent; we would like to splice vEvent into this edge.\n *\n * However, we don't want to connect vEvent to just any vertex. We don''t\n * want the new edge to cross any other edges; otherwise we will create\n * intersection vertices even when the input data had no self-intersections.\n * (This is a bad thing; if the user's input data has no intersections,\n * we don't want to generate any false intersections ourselves.)\n *\n * Our eventual goal is to connect vEvent to the leftmost unprocessed\n * vertex of the combined region (the union of regUp and regLo).\n * But because of unseen vertices with all right-going edges, and also\n * new vertices which may be created by edge intersections, we don''t\n * know where that leftmost unprocessed vertex is. In the meantime, we\n * connect vEvent to the closest vertex of either chain, and mark the region\n * as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n * to the next processed vertex on the boundary of the combined region.\n * Quite possibly the vertex we connected to will turn out to be the\n * closest one, in which case we won''t need to make any changes.\n */\n fun connectRightVertex(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eBottomLeft: GLUhalfEdge\n ) {\n var regUp = regUp\n var eBottomLeft = eBottomLeft\n var eTopLeft = eBottomLeft.oNext!!\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n var degenerate = false\n if (eUp.sym?.org !== eLo.sym?.org) {\n checkForIntersect(tess, regUp)\n }\n\n /**\n * Possible new degeneracies: upper or lower edge of regUp may pass\n * through vEvent, or may coincide with new intersection vertex\n */\n if (Geom.vertEq(eUp.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eTopLeft.sym?.lNext!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eTopLeft = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n degenerate = true\n }\n if (Geom.vertEq(eLo.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eBottomLeft, eLo.sym?.lNext!!)) throw RuntimeException()\n eBottomLeft = finishLeftRegions(regLo, null)\n degenerate = true\n }\n if (degenerate) {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n return\n }\n\n /**\n * Non-degenerate situation -- need to add a temporary, fixable edge.\n * Connect to the closer of eLo.Org, eUp.Org.\n */\n var eNew = if (Geom.vertLeq(eLo.org!!, eUp.org!!)) eLo.sym?.lNext!! else eUp\n eNew = Mesh.glMeshConnect(eBottomLeft.oNext?.sym!!, eNew)\n\n /**\n * Prevent cleanup, otherwise eNew might disappear before we've even\n * had a chance to mark it as a temporary edge.\n */\n addRightEdges(tess, regUp, eNew, eNew.oNext, eNew.oNext, false)\n eNew.sym?.activeRegion?.fixUpperEdge = true\n walkDirtyRegions(tess, regUp)\n }\n\n /**\n * Because vertices at exactly the same location are merged together\n * before we process the sweep event, some degenerate cases can't occur.\n * However if someone eventually makes the modifications required to\n * merge features which are close together, the cases below marked\n * TOLERANCE_NONZERO will be useful. They were debugged before the\n * code to merge identical vertices in the main loop was added.\n */\n private const val TOLERANCE_NONZERO = false\n /**\n * The event vertex lies exacty on an already-processed edge or vertex.\n * Adding the new vertex involves splicing it into the already-processed\n * part of the mesh.\n */\n fun connectLeftDegenerate(\n tess: GLUtessellatorImpl,\n regUp: ActiveRegion, vEvent: GLUvertex\n ) {\n var regUp = regUp\n val e = regUp.eUp\n if (Geom.vertEq(e.org!!, vEvent)) {\n /**\n * e.Org is an unprocessed vertex - just combine them, and wait\n * for e.Org to be pulled from the queue\n */\n spliceMergeVertices(tess, e, vEvent.anEdge!!)\n return\n }\n if (!Geom.vertEq(e.sym?.org!!, vEvent)) {\n /* General case -- splice vEvent into edge e which passes through it */\n Mesh.glMeshSplitEdge(e.sym!!)\n if (regUp.fixUpperEdge) {\n /* This edge was fixable -- delete unused portion of original edge */\n if (!Mesh.glMeshDelete(e.oNext!!)) throw RuntimeException()\n regUp.fixUpperEdge = false\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, e)) throw RuntimeException()\n sweepEvent(tess, vEvent) /* recurse */\n return\n }\n regUp = topRightRegion(regUp)\n val reg = regionBelow(regUp)\n var eTopRight = reg.eUp.sym!!\n val eLast = eTopRight.oNext\n var eTopLeft = eLast\n if (reg.fixUpperEdge) {\n /**\n * Here e.Sym.Org has only a single fixable edge going right.\n * We can delete it since now we have some real right-going edges.\n */\n deleteRegion(reg)\n if (!Mesh.glMeshDelete(eTopRight)) throw RuntimeException()\n eTopRight = eTopLeft?.sym?.lNext!!\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, eTopRight)) throw RuntimeException()\n if (!Geom.edgeGoesLeft(eTopLeft!!)) {\n /* e.Sym.Org had no left-going edges -- indicate this to AddRightEdges() */\n eTopLeft = null\n }\n addRightEdges(tess, regUp, eTopRight.oNext!!, eLast, eTopLeft, true)\n }\n\n /**\n * Purpose: connect a \"left\" vertex (one where both edges go right)\n * to the processed portion of the mesh. Let R be the active region\n * containing vEvent, and let U and L be the upper and lower edge\n * chains of R. There are two possibilities:\n *\n * - the normal case: split R into two regions, by connecting vEvent to\n * the rightmost vertex of U or L lying to the left of the sweep line\n *\n * - the degenerate case: if vEvent is close enough to U or L, we\n * merge vEvent into that edge chain. The subcases are:\n *\t- merging with the rightmost vertex of U or L\n *\t- merging with the active edge of U or L\n *\t- merging with an already-processed portion of U or L\n */\n fun connectLeftVertex(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n /* Get a pointer to the active region containing vEvent */\n val tmp = ActiveRegion(vEvent.anEdge?.sym!!)\n val regUp = Dict.dictKey(Dict.dictSearch(tess.dict!!, tmp)) as ActiveRegion\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n\n /* Try merging with U or L first */\n if (Geom.edgeSign(eUp.sym?.org!!, vEvent, eUp.org!!) == 0.0) {\n connectLeftDegenerate(tess, regUp, vEvent)\n return\n }\n\n /**\n * Connect vEvent to rightmost processed vertex of either chain.\n * e.Sym.Org is the vertex that we will connect to vEvent.\n */\n val reg = if (Geom.vertLeq(eLo.sym?.org!!, eUp.sym?.org!!)) regUp else regLo\n if (regUp.inside || reg.fixUpperEdge) {\n val eNew = if (reg === regUp) {\n Mesh.glMeshConnect(vEvent.anEdge?.sym!!, eUp.lNext!!)\n } else {\n val tempHalfEdge = Mesh.glMeshConnect(eLo.sym?.oNext?.sym!!, vEvent.anEdge!!)\n tempHalfEdge.sym!!\n }\n if (reg.fixUpperEdge) {\n if (!fixUpperEdge(reg, eNew)) throw RuntimeException()\n } else {\n computeWinding(tess, addRegionBelow(tess, regUp, eNew))\n }\n sweepEvent(tess, vEvent)\n } else {\n /**\n * The new vertex is in a region which does not belong to the polygon.\n * We don''t need to connect this vertex to the rest of the mesh.\n */\n addRightEdges(tess, regUp, vEvent.anEdge!!, vEvent.anEdge, null, true)\n }\n }\n\n /**\n * Does everything necessary when the sweep line crosses a vertex.\n * Updates the mesh and the edge dictionary.\n */\n fun sweepEvent(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n tess.event = vEvent /* for access in EdgeLeq() */\n debugEvent(tess)\n\n /**\n * Check if this vertex is the right endpoint of an edge that is\n * already in the dictionary. In this case we don't need to waste\n * time searching for the location to insert new edges.\n */\n var e = vEvent.anEdge!!\n while (e.activeRegion == null) {\n e = e.oNext!!\n if (e === vEvent.anEdge) {\n /* All edges go right -- not incident to any processed edges */\n connectLeftVertex(tess, vEvent)\n return\n }\n }\n\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n val regUp = topLeftRegion(e.activeRegion!!)!!\n val reg = regionBelow(regUp)\n val eTopLeft = reg.eUp\n val eBottomLeft = finishLeftRegions(reg, null)\n\n /**\n * Next we process all the right-going edges from vEvent. This\n * involves adding the edges to the dictionary, and creating the\n * associated \"active regions\" which record information about the\n * regions between adjacent dictionary edges.\n */\n if (eBottomLeft.oNext === eTopLeft) {\n /* No right-going edges -- add a temporary \"fixable\" edge */\n connectRightVertex(tess, regUp, eBottomLeft)\n } else {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n }\n }\n\n /**\n * Make the sentinel coordinates big enough that they will never be\n * merged with real input features. (Even with the largest possible\n * input contour and the maximum tolerance of 1.0, no merging will be\n * done with coordinates larger than 3 * GLU_TESS_MAX_COORD).\n */\n private const val SENTINEL_COORD = 4.0 * GLU.GLU_TESS_MAX_COORD\n /**\n * We add two sentinel edges above and below all other edges,\n * to avoid special cases at the top and bottom.\n */\n fun addSentinel(tess: GLUtessellatorImpl, t: Double) {\n val e = Mesh.glMeshMakeEdge(tess.mesh!!)\n e.org?.s = SENTINEL_COORD\n e.org?.t = t\n e.sym?.org?.s = -SENTINEL_COORD\n e.sym?.org?.t = t\n tess.event = e.sym?.org /* initialize it */\n val reg = ActiveRegion(e)\n reg.windingNumber = 0\n reg.inside = false\n reg.fixUpperEdge = false\n reg.sentinel = true\n reg.dirty = false\n reg.nodeUp = Dict.dictInsert(tess.dict!!, reg) /* __gl_dictListInsertBefore */\n }\n\n /**\n * We maintain an ordering of edge intersections with the sweep line.\n * This order is maintained in a dynamic dictionary.\n */\n fun initEdgeDict(tess: GLUtessellatorImpl) {\n /* __gl_dictListNewDict */\n tess.dict = Dict.dictNewDict(\n tess,\n object : DictLeq {\n override fun leq(frame: Any, key1: Any?, key2: Any?): Boolean {\n return edgeLeq(\n tess,\n key1 as ActiveRegion,\n key2 as ActiveRegion\n )\n }\n }\n )\n addSentinel(tess, -SENTINEL_COORD)\n addSentinel(tess, SENTINEL_COORD)\n }\n\n fun doneEdgeDict(tess: GLUtessellatorImpl) {\n while (true) {\n val reg = Dict.dictKey(Dict.dictMin(tess.dict!!)) as ActiveRegion? ?: break\n /**\n * At the end of all processing, the dictionary should contain\n * only the two sentinel edges, plus at most one \"fixable\" edge\n * created by ConnectRightVertex().\n */\n deleteRegion(reg)\n /* __gl_meshDelete( reg.eUp )*/\n }\n Dict.dictDeleteDict(tess.dict!!) /* __gl_dictListDeleteDict */\n }\n\n /**\n * Remove zero-length edges, and contours with fewer than 3 vertices.\n */\n fun removeDegenerateEdges(tess: GLUtessellatorImpl) {\n val eHead = tess.mesh?.eHead!!\n\n /*LINTED*/\n var e = eHead.next!!\n while (e !== eHead) {\n var eNext = e.next!!\n var eLnext = e.lNext!!\n if (Geom.vertEq(e.org!!, e.sym?.org!!) && e.lNext?.lNext !== e) {\n /* Zero-length edge, contour has at least 3 edges */\n spliceMergeVertices(tess, eLnext, e) /* deletes e.Org */\n if (!Mesh.glMeshDelete(e)) throw RuntimeException() /* e is a self-loop */\n e = eLnext\n eLnext = e.lNext!!\n }\n if (eLnext.lNext === e) {\n /* Degenerate contour (one or two edges) */\n if (eLnext !== e) {\n if (eLnext === eNext || eLnext === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(eLnext)) throw RuntimeException()\n }\n if (e === eNext || e === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(e)) throw RuntimeException()\n }\n e = eNext\n }\n }\n\n /**\n * Insert all vertices into the priority queue which determines the\n * order in which vertices cross the sweep line.\n */\n fun initPriorityQ(tess: GLUtessellatorImpl): Boolean {\n /* __gl_pqSortNewPriorityQ */\n tess.pq =\n PriorityQ.pqNewPriorityQ()\n val pq = tess.pq!!\n val vHead = tess.mesh?.vHead!!\n var v = vHead.next!!\n while (v !== vHead) {\n v.pqHandle = pq.pqInsert(v) /* __gl_pqSortInsert */\n v = v.next!!\n }\n if (!pq.pqInit()) { /* __gl_pqSortInit */\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n tess.pq = null\n return false\n }\n return true\n }\n\n fun donePriorityQ(tess: GLUtessellatorImpl) {\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n }\n\n /**\n * Delete any degenerate faces with only two edges. WalkDirtyRegions()\n * will catch almost all of these, but it won't catch degenerate faces\n * produced by splice operations on already-processed edges.\n * The two places this can happen are in FinishLeftRegions(), when\n * we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n * and in CheckForLeftSplice(), where we splice already-processed\n * edges to ensure that our dictionary invariants are not violated\n * by numerical errors.\n *\n * In both these cases it is *very* dangerous to delete the offending\n * edge at the time, since one of the routines further up the stack\n * will sometimes be keeping a pointer to that edge.\n */\n fun removeDegenerateFaces(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n val e = f.anEdge!!\n if (e.lNext?.lNext === e) {\n /* A face with only two edges */\n addWinding(e.oNext!!, e)\n if (!Mesh.glMeshDelete(e)) return false\n }\n f = fNext\n }\n return true\n }\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by tess.windingRule.\n * Each interior region is guaranteed be monotone.\n */\n fun glComputeInterior(tess: GLUtessellatorImpl): Boolean {\n tess.fatalError = false\n\n /**\n * Each vertex defines an event for our sweep line. Start by inserting\n * all the vertices in a priority queue. Events are processed in\n * lexicographic order, ie.\n *\n *\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n */\n removeDegenerateEdges(tess)\n if (!initPriorityQ(tess)) return false /* if error */\n initEdgeDict(tess)\n\n /* __gl_pqSortExtractMin */\n while (true) {\n val v = tess.pq?.pqExtractMin() as GLUvertex? ?: break\n while (true) {\n var vNext = tess.pq?.pqMinimum() as GLUvertex? /* __gl_pqSortMinimum */\n if (vNext == null || !Geom.vertEq(vNext, v)) break\n\n /**\n * Merge together all vertices at exactly the same location.\n * This is more efficient than processing them one at a time,\n * simplifies the code (see ConnectLeftDegenerate), and is also\n * important for correct handling of certain degenerate cases.\n * For example, suppose there are two identical edges A and B\n * that belong to different contours (so without this code they would\n * be processed by separate sweep events). Suppose another edge C\n * crosses A and B from above. When A is processed, we split it\n * at its intersection point with C. However this also splits C,\n * so when we insert B we may compute a slightly different\n * intersection point. This might leave two edges with a small\n * gap between them. This kind of error is especially obvious\n * when using boundary extraction (GLU_TESS_BOUNDARY_ONLY).\n */\n vNext = tess.pq?.pqExtractMin() as GLUvertex /* __gl_pqSortExtractMin*/\n spliceMergeVertices(tess, v.anEdge!!, vNext.anEdge!!)\n }\n sweepEvent(tess, v)\n }\n\n /* Set tess.event for debugging purposes */\n /* __GL_DICTLISTKEY */\n /* __GL_DICTLISTMIN */\n tess.event = (Dict.dictKey(\n Dict.dictMin(\n tess.dict!!\n )\n ) as ActiveRegion).eUp.org\n debugEvent(tess)\n doneEdgeDict(tess)\n donePriorityQ(tess)\n if (!removeDegenerateFaces(tess.mesh!!)) return false\n Mesh.glMeshCheckMesh(tess.mesh!!)\n return true\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessMono {\n /**\n * __gl_meshTessellateMonoRegion( face ) tessellates a monotone region\n * (what else would it do??) The region must consist of a single\n * loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n * case means that any vertical line intersects the interior of the\n * region in a single interval.\n *\n * Tessellation consists of adding interior edges (actually pairs of\n * half-edges), to split the region into non-overlapping triangles.\n *\n * The basic idea is explained in Preparata and Shamos (which I don''t\n * have handy right now), although their implementation is more\n * complicated than this one. The are two edge chains, an upper chain\n * and a lower chain. We process all vertices from both chains in order,\n * from right to left.\n *\n * The algorithm ensures that the following invariant holds after each\n * vertex is processed: the untessellated region consists of two\n * chains, where one chain (say the upper) is a single edge, and\n * the other chain is concave. The left vertex of the single edge\n * is always to the left of all vertices in the concave chain.\n *\n * Each step consists of adding the rightmost unprocessed vertex to one\n * of the two chains, and forming a fan of triangles from the rightmost\n * of two chain endpoints. Determining whether we can add each triangle\n * to the fan is a simple orientation test. By making the fan as large\n * as possible, we restore the invariant (check it yourself).\n */\n fun glMeshTessellateMonoRegion(face: GLUface) {\n /**\n * All edges are oriented CCW around the boundary of the region.\n * First, find the half-edge whose origin vertex is rightmost.\n * Since the sweep goes from left to right, face->anEdge should\n * be close to the edge we want.\n */\n var up = face.anEdge!!\n while (Geom.vertLeq(up.sym?.org!!, up.org!!)) {\n up = up.oNext?.sym!!\n }\n while (Geom.vertLeq(up.org!!, up.sym?.org!!)) {\n up = up.lNext!!\n }\n var lo = up.oNext?.sym!!\n while (up.lNext !== lo) {\n if (Geom.vertLeq(up.sym?.org!!, lo.org!!)) {\n /**\n * up.Sym.Org is on the left. It is safe to form triangles from lo.Org.\n * The EdgeGoesLeft test guarantees progress even when some triangles\n * are CW, given that the upper and lower chains are truly monotone.\n */\n while (lo.lNext !== up && (Geom.edgeGoesLeft(lo.lNext!!)\n || Geom.edgeSign(lo.org!!, lo.sym?.org!!, lo.lNext?.sym?.org!!) <= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n lo = lo.oNext?.sym!!\n } else {\n /* lo.Org is on the left. We can make CCW triangles from up.Sym.Org. */\n while (lo.lNext !== up && (Geom.edgeGoesRight(up.oNext?.sym!!)\n || Geom.edgeSign(up.sym?.org!!, up.org!!, up.oNext?.sym?.org!!) >= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(up, up.oNext?.sym!!)\n up = tempHalfEdge.sym!!\n }\n up = up.lNext!!\n }\n }\n while (lo.lNext?.lNext !== up) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n }\n\n /**\n * __gl_meshTessellateInterior( mesh ) tessellates each region of\n * the mesh which is marked \"inside\" the polygon. Each such region\n * must be monotone.\n */\n fun glMeshTessellateInterior(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Make sure we don''t try to tessellate the new triangles. */\n val next = f.next!!\n if (f.inside) {\n glMeshTessellateMonoRegion(f)\n }\n f = next\n }\n return true\n }\n\n /**\n * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n * which are not marked \"inside\" the polygon. Since further mesh operations\n * on NULL faces are not allowed, the main purpose is to clean up the\n * mesh so that exterior loops are not represented in the data structure.\n */\n fun glMeshDiscardExterior(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Since f will be destroyed, save its next pointer. */\n val next = f.next!!\n if (!f.inside) {\n Mesh.glMeshZapFace(f)\n }\n f = next\n }\n }\n\n /**\n * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n * winding numbers on all edges so that regions marked \"inside\" the\n * polygon have a winding number of \"value\", and regions outside\n * have a winding number of 0.\n *\n * If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n * separate an interior region from an exterior one.\n */\n fun glMeshSetWindingNumber(mesh: GLUmesh, value: Int, keepOnlyBoundary: Boolean): Boolean {\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n val eNext = e.next!!\n if (e.sym?.lFace?.inside != e.lFace?.inside) {\n\n /* This is a boundary edge (one side is interior, one is exterior). */\n e.winding = if (e.lFace!!.inside) value else -value\n } else {\n\n /* Both regions are interior, or both are exterior. */\n if (!keepOnlyBoundary) {\n e.winding = 0\n } else {\n if (!Mesh.glMeshDelete(e)) return false\n }\n }\n e = eNext\n }\n return true\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessState {\n const val T_DORMANT = 0\n const val T_IN_POLYGON = 1\n const val T_IN_CONTOUR = 2\n}","package earth.worldwind.util.http\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.*\n\n/**\n * Returns new platform-dependent HTTP client instance configured by default.\n * In case some special configuration will be required on each platform, then make this function \"expected\".\n */\n@Suppress(\"FunctionName\")\nfun DefaultHttpClient(\n connectTimeout: Long = 3000L,\n requestTimeout: Long = 30000L,\n config: HttpClientConfig<*>.() -> Unit = {}\n) = HttpClient {\n config(this)\n\n install(HttpTimeout) {\n connectTimeoutMillis = connectTimeout\n requestTimeoutMillis = requestTimeout\n }\n}\n","package earth.worldwind.util.math\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Viewport\nimport kotlin.math.*\n\n/**\n * Restricts a value to the range [min, max] degrees, clamping values outside the range. Values less than min are\n * returned as min, and values greater than max are returned as max. Values within the range are returned\n * unmodified.\n *
\n * The result of this method is undefined if min is greater than max.\n *\n * @param value the values to clamp\n * @param min the minimum value\n * @param max the maximum value\n *\n * @return the specified values clamped to the range [min, max] degrees\n */\nfun clamp(value: Double, min: Double, max: Double) = value.coerceIn(min, max)\n\n/**\n * Returns the fractional part of a specified number\n *\n * @param value the number whose fractional part to compute\n *\n * @return The fractional part of the specified number: value - floor(value)\n */\nfun fract(value: Double) = value - floor(value)\n\n/**\n * Computes the linear interpolation of two values according to a specified fractional amount. The fractional amount\n * is interpreted as a relative proportion of the two values, where 0.0 indicates the first value, 0.5 indicates a\n * 50/50 mix of the two values, and 1.0 indicates the second value.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two values in the range [0, 1]\n * @param value1 the first value\n * @param value2 the second value\n *\n * @return the interpolated value\n */\nfun interpolate(amount: Double, value1: Double, value2: Double) = (1 - amount) * value1 + amount * value2\n\n/**\n * Returns the integer modulus of a specified number. This differs from the % operator in that the result is\n * always positive when the modulus is positive. For example -1 % 10 = -1, whereas mod(-1, 10) = 1.\n *\n * @param value the integer number whose modulus to compute\n * @param modulus the modulus\n *\n * @return the remainder after dividing the number by the modulus\n */\nfun mod(value: Int, modulus: Int) = (value % modulus + modulus) % modulus\n\n/**\n * Computes the bounding rectangle for a unit square after applying a transformation matrix to the square's four\n * corners.\n *\n * @param unitSquareTransform the matrix to apply to the unit square\n * @param result a pre-allocated Viewport in which to return the computed bounding rectangle\n *\n * @return the result argument set to the computed bounding rectangle\n */\nfun boundingRectForUnitSquare(unitSquareTransform: Matrix4, result: Viewport): Viewport {\n val m = unitSquareTransform.m\n\n // transform of (0, 0)\n val x1 = m[3]\n val y1 = m[7]\n\n // transform of (1, 0)\n val x2 = m[0] + m[3]\n val y2 = m[4] + m[7]\n\n // transform of (0, 1)\n val x3 = m[1] + m[3]\n val y3 = m[5] + m[7]\n\n // transform of (1, 1)\n val x4 = m[0] + m[1] + m[3]\n val y4 = m[4] + m[5] + m[7]\n val minX = min(min(x1, x2), min(x3, x4)).toInt()\n val maxX = max(max(x1, x2), max(x3, x4)).toInt()\n val minY = min(min(y1, y2), min(y3, y4)).toInt()\n val maxY = max(max(y1, y2), max(y3, y4)).toInt()\n return result.set(minX, minY, maxX - minX, maxY - minY)\n}\n\n/**\n * Indicates whether a specified value is a power of two.\n *\n * @param value the value to test\n *\n * @return true if the specified value is a power of two, false othwerwise\n */\nfun isPowerOfTwo(value: Int) = value != 0 && value and value - 1 == 0\n\n/**\n * Returns the value that is the nearest power of 2 greater than or equal to the given value.\n *\n * @param value the reference value. The power of 2 returned is greater than or equal to this value.\n *\n * @return the value that is the nearest power of 2 greater than or equal to the reference value\n */\nfun powerOfTwoCeiling(value: Int): Int {\n val pow = ceil(ln(value.toDouble()) / ln(2.0)).toInt()\n return 1 shl pow\n}","package earth.worldwind\n\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.gesture.*\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.WheelEvent\nimport kotlin.math.cos\nimport kotlin.math.max\nimport kotlin.math.sin\n\n/**\n * This class provides the default window controller for WorldWind for controlling the globe via user interaction.\n */\nopen class BasicWorldWindowController(wwd: WorldWindow): WorldWindowController(wwd) {\n val primaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also { it.addListener(this) }\n val secondaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also {\n it.addListener(this)\n it.button = 2 // secondary mouse button\n }\n val panRecognizer: GestureRecognizer = PanRecognizer(wwd.canvas).also { it.addListener(this) }\n val pinchRecognizer: GestureRecognizer = PinchRecognizer(wwd.canvas).also { it.addListener(this) }\n val rotationRecognizer: GestureRecognizer = RotationRecognizer(wwd.canvas).also { it.addListener(this) }\n val tiltRecognizer: GestureRecognizer = TiltRecognizer(wwd.canvas).also { it.addListener(this) }\n// val tapRecognizer: GestureRecognizer = TapRecognizer(wwd.canvas).also { it.addListener(this) }\n// val clickRecognizer: GestureRecognizer = ClickRecognizer(wwd.canvas).also { it.addListener(this) }\n /**\n * A copy of the viewing parameters at the start of a gesture as a look at view.\n */\n protected val beginLookAt = LookAt()\n protected val beginLookAtPoint = Vec3()\n /**\n * The current state of the viewing parameters during a gesture as a look at view.\n */\n protected val lookAt = LookAt()\n protected val lastPoint = Vec2()\n protected var lastRotation = 0.0\n protected var lastWheelEvent = 0\n protected var activeGestures = 0\n\n init {\n // Establish the dependencies between gesture recognizers. The pan, pinch and rotate gesture may recognize\n // simultaneously with each other.\n panRecognizer.recognizeSimultaneouslyWith(pinchRecognizer)\n panRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n pinchRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n\n // Since the tilt gesture is a subset of the pan gesture, pan will typically recognize before tilt,\n // effectively suppressing tilt. Establish a dependency between the other touch gestures and tilt to provide\n // tilt an opportunity to recognize.\n panRecognizer.requireRecognizerToFail(tiltRecognizer)\n pinchRecognizer.requireRecognizerToFail(tiltRecognizer)\n rotationRecognizer.requireRecognizerToFail(tiltRecognizer)\n }\n\n override fun handleEvent(event: Event) {\n super.handleEvent(event)\n if (!event.defaultPrevented) {\n if (event.type == \"wheel\") {\n event.preventDefault()\n handleWheelEvent(event as WheelEvent)\n } else GestureRecognizer.allRecognizers.forEach { r -> if (r.target == wwd.canvas) r.handleEvent(event) }\n }\n }\n\n override fun gestureStateChanged(recognizer: GestureRecognizer) {\n when(recognizer) {\n primaryDragRecognizer, panRecognizer -> handlePanOrDrag(recognizer)\n secondaryDragRecognizer -> handleSecondaryDrag(recognizer)\n pinchRecognizer -> handlePinch(recognizer)\n rotationRecognizer -> handleRotation(recognizer)\n tiltRecognizer -> handleTilt(recognizer)\n// clickRecognizer, tapRecognizer -> handleClickOrTap(recognizer)\n }\n }\n\n// protected open fun handleClickOrTap(recognizer: GestureRecognizer) {\n// if (recognizer.state == RECOGNIZED) {\n// val pickPoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n//\n// // Identify if the top picked object contains a URL for hyperlinking\n// val pickList = wwd.pick(pickPoint)\n// val userObject = pickList.topPickedObject?.userObject\n// // If the url object was appended, open the hyperlink\n// if (userObject is Renderable && userObject.hasUserProperty(\"url\")) {\n// window.open(userObject.getUserProperty(\"url\") as String, \"_blank\")\n// }\n// }\n// }\n\n protected open fun handlePanOrDrag(recognizer: GestureRecognizer) {\n if (wwd.engine.globe.is2D) handlePanOrDrag2D(recognizer) else handlePanOrDrag3D(recognizer)\n }\n\n protected open fun handlePanOrDrag3D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastPoint.set(0.0, 0.0)\n }\n CHANGED -> {\n // Convert the translation from screen coordinates to arc degrees. Use the view's range as a\n // metric for converting screen pixels to meters, and use the globe's radius for converting from meters\n // to arc degrees. Transform viewport pixel size to canvas client pixel size.\n val globe = wwd.engine.globe\n val globeRadius = max(globe.equatorialRadius, globe.polarRadius)\n val distance = max(1.0, lookAt.range)\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(distance) * wwd.engine.densityFactor\n val forwardMeters = (ty - lastPoint.y) * metersPerPixel\n val sideMeters = -(tx - lastPoint.x) * metersPerPixel\n val forwardRadians = forwardMeters / globeRadius\n val sideRadians = sideMeters / globeRadius\n\n // Apply the change in latitude and longitude to the view, relative to the current heading.\n val sinHeading = sin(lookAt.heading.inRadians)\n val cosHeading = cos(lookAt.heading.inRadians)\n lookAt.position.apply {\n latitude = latitude.plusRadians(forwardRadians * cosHeading - sideRadians * sinHeading)\n longitude = longitude.plusRadians(forwardRadians * sinHeading + sideRadians * cosHeading)\n }\n lastPoint.set(tx, ty)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePanOrDrag2D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n wwd.engine.globe.geographicToCartesian(\n beginLookAt.position.latitude,\n beginLookAt.position.longitude,\n beginLookAt.position.altitude,\n beginLookAtPoint\n )\n }\n CHANGED -> {\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(lookAt.range) * wwd.engine.densityFactor\n val forwardMeters = ty * metersPerPixel\n val sideMeters = - tx * metersPerPixel\n\n // Adjust the change in latitude and longitude based on observation point heading.\n val heading = lookAt.heading\n val sinHeading = sin(heading.inRadians)\n val cosHeading = cos(heading.inRadians)\n val x = beginLookAtPoint.x + forwardMeters * sinHeading + sideMeters * cosHeading\n val y = beginLookAtPoint.y + forwardMeters * cosHeading - sideMeters * sinHeading\n wwd.engine.globe.cartesianToGeographic(x, y, beginLookAtPoint.z, lookAt.position)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleSecondaryDrag(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the current translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the gesture translation to a fraction of an angle.\n val headingDegrees = 180.0 * tx / wwd.canvas.clientWidth\n val tiltDegrees = 90.0 * ty / wwd.canvas.clientHeight\n\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.heading = beginLookAt.heading.plusDegrees(headingDegrees)\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePinch(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val scale = (recognizer as PinchRecognizer).scaleWithOffset\n\n when(state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> if (scale != 0.0) {\n // Apply the change in pinch scale to this view's range, relative to the range when the gesture began.\n lookAt.range = beginLookAt.range / scale\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleRotation(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val rotation = (recognizer as RotationRecognizer).rotationWithOffset\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastRotation = 0.0\n }\n CHANGED -> {\n // Apply the change in gesture rotation to this view's current heading. We apply relative to the\n // current heading rather than the heading when the gesture began in order to work simultaneously with\n // pan operations that also modify the current heading.\n lookAt.heading = lookAt.heading.minusDegrees(rotation - lastRotation)\n lastRotation = rotation\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleTilt(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the gesture translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the translation to a fraction of an angle.\n val tiltDegrees = -90.0 * ty / wwd.canvas.clientHeight\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleWheelEvent(event: WheelEvent) {\n val timeStamp = event.timeStamp.toInt()\n if (timeStamp - lastWheelEvent > 500) {\n wwd.engine.cameraAsLookAt(lookAt)\n lastWheelEvent = timeStamp\n }\n\n // Normalize the wheel delta based on the wheel delta mode. This produces a roughly consistent delta across\n // browsers and input devices.\n val normalizedDelta = when(event.deltaMode) {\n WheelEvent.DOM_DELTA_PIXEL -> event.deltaY\n WheelEvent.DOM_DELTA_LINE -> event.deltaY * 20.0\n WheelEvent.DOM_DELTA_PAGE -> event.deltaY * 200.0\n else -> event.deltaY\n }\n\n // Compute a zoom scale factor by adding a fraction of the normalized delta to 1. When multiplied by the\n // view's range, this has the effect of zooming out or zooming in depending on whether the delta is\n // positive or negative, respectfully.\n val scale = 1.0 + (normalizedDelta / 1000.0)\n\n // Apply the scale to this view's properties.\n lookAt.range *= scale\n applyChanges()\n }\n\n protected open fun applyChanges() {\n // Update camera view\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n protected open fun gestureDidBegin() {\n if (activeGestures++ == 0) {\n wwd.engine.cameraAsLookAt(beginLookAt)\n lookAt.copy(beginLookAt)\n }\n }\n\n protected open fun gestureDidEnd() {\n // this should always be the case, but we check anyway\n if (activeGestures > 0) activeGestures--\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.LookAt\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.KeyboardEvent\n\n/**\n * The KeyboardControls module provides keyboard controls for the globe.\n * Note: the canvas must be focusable this can be accomplished by establishing the \"tabindex\"\n * on the canvas element.\n */\nopen class KeyboardControls(\n /**\n * The WorldWindow associated with these controls.\n */\n protected val wwd: WorldWindow\n) {\n /**\n * Enable/disable keyboard events processing\n */\n var isEnabled = true\n /**\n * The incremental amount to increase or decrease the eye distance (for zoom) each cycle.\n */\n var zoomIncrement = 0.01f\n /**\n * The scale factor governing the pan speed. Increased values cause faster panning.\n */\n var panIncrement = 0.0000000005f\n /**\n * The incremental amount to increase or decrease the tilt (in degrees) each cycle.\n */\n var tiltIncrement = 0.5\n /**\n * The current state of the viewing parameters during an operation as a look at view.\n */\n protected val lookAt = LookAt()\n /**\n * Is key down?\n */\n protected var isKeyDown = false\n /**\n * Controls the globe with the keyboard.\n */\n protected val handleKeyDown = EventListener { event ->\n if (!isEnabled || event !is KeyboardEvent) return@EventListener\n\n isKeyDown = true\n wwd.engine.cameraAsLookAt(lookAt)\n\n // TODO: find a way to make this code portable for different keyboard layouts\n when (event.keyCode) {\n 187, 61 -> { // + key || +/= key\n handleZoom(\"zoomIn\")\n event.preventDefault()\n }\n 189, 173 -> { // - key || _/- key\n handleZoom(\"zoomOut\")\n event.preventDefault()\n }\n 33 -> { // Page Up\n handleTilt(\"tiltUp\")\n event.preventDefault()\n }\n 34 -> { // Page down\n handleTilt(\"tiltDown\")\n event.preventDefault()\n }\n 37 -> { // Left arrow\n handlePan(\"panLeft\")\n event.preventDefault()\n }\n 38 -> { // Up arrow\n handlePan(\"panUp\")\n event.preventDefault()\n }\n 39 -> { // Right arrow\n handlePan(\"panRight\")\n event.preventDefault()\n }\n 40 -> { // Down arrow\n handlePan(\"panDown\")\n event.preventDefault()\n }\n 78 -> { // N key\n resetHeading()\n event.preventDefault()\n }\n 82 -> { // R key\n resetHeadingAndTilt()\n event.preventDefault()\n }\n }\n }\n /**\n * On keyboard event finished.\n */\n protected val handleKeyUp = EventListener { event->\n if (isKeyDown) {\n isKeyDown = false\n event.preventDefault()\n }\n }\n\n init {\n // The tabIndex must be set for the keyboard controls to work\n val tabIndex = wwd.canvas.tabIndex\n if (tabIndex < 0) wwd.canvas.tabIndex = 0\n // Add keyboard listeners\n wwd.addEventListener(\"keydown\", handleKeyDown)\n wwd.addEventListener(\"keyup\", handleKeyUp)\n // Ensure keyboard controls are operational by setting the focus to the canvas\n wwd.addEventListener(\"click\", EventListener { if (isEnabled) wwd.canvas.focus() })\n }\n\n /**\n * Reset the view to North up.\n */\n protected open fun resetHeading() {\n lookAt.heading = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * Reset the view to North up and nadir.\n */\n protected open fun resetHeadingAndTilt() {\n lookAt.heading = Angle.ZERO\n lookAt.tilt = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * This function is called by the timer to perform the Pan operation.\n */\n protected open fun handlePan(operation: String) {\n if (isKeyDown) {\n var heading = lookAt.heading\n val distance = panIncrement * lookAt.range\n when (operation) {\n \"panDown\" -> heading -= Angle.POS180\n \"panLeft\" -> heading -= Angle.POS90\n \"panRight\" -> heading += Angle.POS90\n }\n lookAt.position.greatCircleLocation(heading, distance, lookAt.position)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handlePan, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Range operation.\n */\n protected open fun handleZoom(operation: String) {\n if (isKeyDown) {\n if (operation == \"zoomIn\") lookAt.range *= (1 - zoomIncrement)\n else if (operation == \"zoomOut\") lookAt.range *= (1 + zoomIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleZoom, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Tilt operation.\n */\n protected open fun handleTilt(operation: String) {\n if (isKeyDown) {\n if (operation == \"tiltUp\") lookAt.tilt = lookAt.tilt.minusDegrees(tiltIncrement)\n else if (operation == \"tiltDown\") lookAt.tilt = lookAt.tilt.plusDegrees(tiltIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleTilt, 50, operation)\n }\n }\n}","package earth.worldwind\n\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.gesture.SelectDragDetector\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.WebKgl\nimport kotlinx.browser.window\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.WebGLContextAttributes\nimport org.khronos.webgl.WebGLContextEvent\nimport org.khronos.webgl.WebGLRenderingContext\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.roundToInt\n\n/**\n * Represents a WorldWind window for an HTML canvas.\n */\nopen class WorldWindow(\n /**\n * The HTML canvas associated with this WorldWindow.\n */\n val canvas: HTMLCanvasElement,\n /**\n * Render resource cache capacity in bytes\n */\n cacheCapacity: Long = RenderResourceCache.recommendedCapacity()\n) {\n /**\n * WebGL context associated with the HTML canvas.\n */\n protected val gl = createContext(canvas)\n /**\n * Main WorldWindow scope to execute jobs which should be cancelled on GL context lost\n */\n val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * Main WorldWind engine, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\n open val engine = WorldWind(WebKgl(gl), RenderResourceCache(cacheCapacity))\n /**\n * List of registered event listeners for the specified event type on this WorldWindow's canvas.\n */\n protected val eventListeners = mutableMapOf()\n /**\n * The controller used to manipulate the globe.\n */\n var controller: WorldWindowController = BasicWorldWindowController(this)\n /**\n * The controller used to manipulate the globe with the keyboard.\n */\n open val keyboardControls = KeyboardControls(this)\n /**\n * Renderable selection and drag gestures detector. Assign [SelectDragDetector.callback] to handle events.\n */\n open val selectDragDetector = SelectDragDetector(this)\n /**\n * The list of callbacks to call immediately before and immediately after performing a redrawn. The callbacks\n * have two arguments: this WorldWindow and the redraw stage, e.g., redrawCallback(worldWindow, stage);.\n * The stage will be either WorldWind.BEFORE_REDRAW or WorldWind.AFTER_REDRAW indicating whether the\n * callback has been called either immediately before or immediately after a redrawn, respectively.\n * Applications may add functions to this array or remove them.\n */\n val redrawCallbacks = mutableSetOf<(WorldWindow, RedrawStage)->Unit>()\n protected val frame = Frame()\n protected var redrawRequestId = 0\n protected var isRedrawRequested = false\n\n protected class EventListenerEntry(val callback: (Event) -> Unit) {\n val listeners = mutableListOf()\n }\n\n init {\n // Prevent the browser's default actions in response to mouse and touch events, which interfere with\n // navigation. Register these event listeners before any others to ensure that they're called last.\n val preventDefaultListener = EventListener { e -> e.preventDefault() }\n addEventListener(\"mousedown\", preventDefaultListener)\n addEventListener(\"touchstart\", preventDefaultListener)\n addEventListener(\"contextmenu\", preventDefaultListener)\n addEventListener(\"wheel\", preventDefaultListener)\n\n // Redirect various UI interactions to the appropriate handler.\n val onGestureEvent = EventListener { e -> controller.handleEvent(e) }\n if (window.navigator.maxTouchPoints == 0) {\n // Prevent the browser's default actions in response to pointer events which interfere with navigation.\n // This CSS style property is configured here to ensure that it's set for all applications.\n canvas.style.setProperty(\"touch-action\", \"none\")\n\n addEventListener(\"pointerdown\", onGestureEvent)\n window.addEventListener(\"pointermove\", onGestureEvent, false) // get pointermove events outside event target\n window.addEventListener(\"pointercancel\", onGestureEvent, false) // get pointercancel events outside event target\n window.addEventListener(\"pointerup\", onGestureEvent, false) // get pointerup events outside event target\n } else {\n addEventListener(\"mousedown\", onGestureEvent)\n window.addEventListener(\"mousemove\", onGestureEvent, false) // get mousemove events outside event target\n window.addEventListener(\"mouseup\", onGestureEvent, false) // get mouseup events outside event target\n addEventListener(\"touchstart\", onGestureEvent)\n addEventListener(\"touchmove\", onGestureEvent)\n addEventListener(\"touchend\", onGestureEvent)\n addEventListener(\"touchcancel\", onGestureEvent)\n }\n addEventListener(\"wheel\", onGestureEvent)\n\n // Set up to handle WebGL context events.\n canvas.addEventListener(\"webglcontextlost\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Inform WebGL that we handle context restoration, enabling the context restored event to be delivered.\n event.preventDefault()\n // Notify the draw context that the WebGL rendering context has been lost.\n contextLost()\n }, false)\n canvas.addEventListener(\"webglcontextrestored\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Notify the draw context that the WebGL rendering context has been restored.\n contextRestored()\n }, false)\n\n // Set up WebGL context and start rendering to the WebGL context in an animation frame loop.\n this.contextRestored()\n }\n\n /**\n * Registers an event listener for the specified event type on this WorldWindow's canvas. This function\n * delegates the processing of events to the WorldWindow's canvas. For details on this function and its\n * arguments, see the W3C [org.w3c.dom.events.EventTarget] documentation.\n * @see EventTarget\n *\n * When an event occurs, this calls the registered event listeners in order of reverse registration.\n *\n * @param type The event type to listen for.\n * @param listener The [EventListener] to call when the event occurs.\n */\n fun addEventListener(type: String, listener: EventListener) {\n var entry = eventListeners[type]\n if (entry == null) {\n entry = EventListenerEntry { event ->\n event.asDynamic().worldWindow = this@WorldWindow\n // calls listeners in reverse registration order\n entry?.listeners?.forEach{ l -> l.handleEvent(event) }\n }.also { eventListeners[type] = it }\n }\n\n if (!entry.listeners.contains(listener)) { // suppress duplicate listeners\n entry.listeners.add(0, listener) // insert the listener at the beginning of the list\n // first listener added, add the event listener callback\n if (entry.listeners.size == 1) canvas.addEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Removes an event listener for the specified event type from this WorldWindow's canvas. The listener must be\n * the same object passed to addEventListener. Calling removeEventListener with arguments that do not identify a\n * currently registered listener has no effect.\n *\n * @param type Indicates the event type the listener registered for.\n * @param listener The listener to remove.\n */\n fun removeEventListener(type: String, listener: EventListener) {\n val entry = eventListeners[type] ?: return // no entry for the specified type\n if (entry.listeners.remove(listener) && entry.listeners.isEmpty()) {\n canvas.removeEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Causes this WorldWindow to redraw itself at the next available opportunity. The redrawn occurs on the main\n * thread at a time of the browser's discretion. Applications should call redraw after changing the World\n * Window's state, but should not expect that change to be reflected on screen immediately after this function\n * returns. This is the preferred method for requesting a redrawn of the WorldWindow.\n */\n fun requestRedraw() { isRedrawRequested = true } // redraw during the next animation frame\n\n /**\n * Converts window coordinates to coordinates relative to this WorldWindow's canvas.\n * @param x The X coordinate to convert.\n * @param y The Y coordinate to convert.\n * @returns The converted coordinates.\n */\n fun canvasCoordinates(x: Number, y: Number): Vec2 {\n val bbox = canvas.getBoundingClientRect()\n val xc = x.toDouble() - (bbox.left + canvas.clientLeft) // * canvas.width / bbox.width\n val yc = y.toDouble() - (bbox.top + canvas.clientTop) // * canvas.height / bbox.height\n return Vec2(xc, yc)\n }\n\n /**\n * Requests the WorldWind objects displayed at a specified screen-coordinate point.\n *\n * If the point intersects the terrain, the returned list contains an object identifying the associated geographic\n * position. This returns an empty list when nothing in the WorldWind scene intersects the specified point.\n *\n * @param pickPoint The point to examine in this WorldWindow's screen coordinates.\n * @returns A list of picked WorldWind objects at the specified pick point.\n */\n fun pick(pickPoint: Vec2) = pickShapesInRegion(pickPoint.x, pickPoint.y)\n\n /**\n * Requests the WorldWind objects displayed within a specified screen-coordinate region. This returns all\n * objects that intersect the specified region, regardless of whether an object is actually visible, and\n * marks objects that are visible as on top.\n *\n * @param x the X coordinate relative to this WorldWindow's canvas.\n * @param y the Y coordinate relative to this WorldWindow's canvas.\n * @param width the width in canvas pixels\n * @param height the height in canvas pixels\n * @param pickCenter picks top shape and terrain in rectangle center as priority\n *\n * @returns A list of visible WorldWind objects within the specified region.\n */\n fun pickShapesInRegion(\n x: Double, y: Double, width: Double = 0.0, height: Double = 0.0, pickCenter: Boolean = true\n ): PickedObjectList {\n // Allocate a list in which to collect and return the picked objects.\n val pickedObjects = PickedObjectList()\n\n // Nothing can be picked if viewport is undefined.\n val viewport = engine.viewport\n if (viewport.isEmpty) return pickedObjects\n\n // Determine pick viewport\n val pickViewport = if (width != 0.0 && height != 0.0) Viewport(\n floor(x).toInt(), viewport.height - ceil(y + height).toInt(), ceil(width).toInt(), ceil(height).toInt()\n ) else Viewport(x.roundToInt() - 1, viewport.height - y.roundToInt() - 1, 3, 3)\n if (!pickViewport.intersect(viewport)) return pickedObjects\n\n // Prepare pick frame\n frame.pickedObjects = pickedObjects\n frame.pickViewport = pickViewport\n if (pickCenter) {\n // Compute the pick point in OpenGL screen coordinates, rounding to the nearest whole pixel. Nothing can be picked\n // if pick point is outside the WorldWindow's viewport.\n val px = pickViewport.x + pickViewport.width / 2.0\n val py = pickViewport.y + pickViewport.height / 2.0\n if (viewport.contains(px, py)) {\n val pickRay = Line()\n if (engine.rayThroughScreenPoint(px, viewport.height - py, pickRay)) {\n frame.pickPoint = Vec2(px, py)\n frame.pickRay = pickRay\n }\n }\n }\n frame.isPickMode = true\n redrawFrame()\n\n return pickedObjects\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been lost. This function removes all\n * cached WebGL resources and resets all properties tracking the current WebGL state.\n */\n protected open fun contextLost() {\n // Stop the rendering animation frame loop, resuming only if the WebGL context is restored.\n window.cancelAnimationFrame(redrawRequestId)\n\n // Cancel all async jobs but keep scope reusable\n mainScope.coroutineContext.cancelChildren()\n\n // Remove all cached WebGL resources, which are now invalid.\n engine.reset()\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been restored. This function prepares\n * this draw context to resume rendering.\n */\n protected open fun contextRestored() {\n // Remove all cached WebGL resources, which are now invalid.\n engine.renderResourceCache.clear()\n\n // Specify the default WorldWind OpenGL state.\n engine.setupDrawContext()\n\n // Store current screen density factor\n engine.densityFactor = window.devicePixelRatio.toFloat()\n\n // Enable WebGL depth texture extension to be able to use GL_DEPTH_COMPONENT texture format\n gl.getExtension(\"WEBGL_depth_texture\")\n\n // Enable WebGL support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements()\n gl.getExtension(\"OES_element_index_uint\")\n\n // Subscribe on events from WorldWind's global event bus.\n mainScope.launch {\n WorldWind.events.collect {\n when (it) {\n is WorldWind.Event.RequestRedraw -> requestRedraw()\n is WorldWind.Event.UnmarkResourceAbsent -> {\n engine.renderResourceCache.absentResourceList.unmarkResourceAbsent(it.resourceId)\n }\n }\n }\n }\n\n // Request redraw at least once.\n requestRedraw()\n\n // Resume the rendering animation frame loop until the WebGL context is lost.\n animationFrameLoop()\n }\n\n protected open fun animationFrameLoop() {\n // Render to the WebGL context as needed.\n redrawIfNeeded()\n\n // Continue the animation frame loop until the WebGL context is lost.\n redrawRequestId = window.requestAnimationFrame { animationFrameLoop() }\n }\n\n protected open fun redrawIfNeeded() {\n // Check if the drawing buffer needs to resize to match its screen size, which requires a redrawn.\n resize()\n\n // Redraw the WebGL drawing buffer only when necessary.\n if (!isRedrawRequested) return\n isRedrawRequested = false\n redrawFrame()\n }\n\n protected open fun redrawFrame() {\n val isPickMode = frame.isPickMode\n try {\n // Prepare to redraw and notify redraw callbacks that a redrawn is about to occur.\n if (!isPickMode) callRedrawCallbacks(RedrawStage.BEFORE_REDRAW)\n // Render frame. Propagate redraw requests submitted during rendering.\n if (engine.renderFrame(frame) || isPickMode) requestRedraw()\n // Redraw the WebGL drawing buffer.\n engine.drawFrame(frame)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"WorldWindow\", \"drawFrame\", \"Exception occurred during redrawing.\\n$e\"\n )\n } finally {\n // Recycle each frame to be reused\n frame.recycle()\n // Notify redraw callbacks that a redrawn has completed.\n if (!isPickMode) callRedrawCallbacks(RedrawStage.AFTER_REDRAW)\n }\n }\n\n protected open fun resize() {\n // Check if canvas size is changed\n val width = (gl.canvas.clientWidth * engine.densityFactor).roundToInt()\n val height = (gl.canvas.clientHeight * engine.densityFactor).roundToInt()\n\n if (gl.canvas.width != width || gl.canvas.height != height || engine.viewport.isEmpty) {\n // Make the canvas drawing buffer size match its screen size.\n gl.canvas.width = width\n gl.canvas.height = height\n\n // Set the WebGL viewport to match the canvas drawing buffer size.\n engine.setupViewport(gl.drawingBufferWidth, gl.drawingBufferHeight)\n\n // Cause this WorldWindow to redraw with the new size.\n requestRedraw()\n }\n }\n\n protected open fun callRedrawCallbacks(stage: RedrawStage) = redrawCallbacks.forEach {\n try {\n it(this, stage)\n } catch (e: Exception) {\n // Keep going. Execute the rest of the callbacks.\n log(ERROR, \"Exception calling redraw callback.\\n$e\")\n }\n }\n\n companion object {\n /**\n * Create the WebGL context associated with the HTML canvas.\n */\n protected fun createContext(canvas: HTMLCanvasElement): WebGLRenderingContext {\n // Request a WebGL context with antialiasing is disabled. Antialiasing causes gaps to appear at the edges of\n // terrain tiles.\n val glAttrs = WebGLContextAttributes(antialias = false)\n val context = canvas.getContext(\"webgl\", glAttrs)\n ?: canvas.getContext(\"experimental-webgl\", glAttrs)\n require(context is WebGLRenderingContext) {\n logMessage(ERROR, \"WorldWindow\", \"createContext\", \"webglNotSupported\")\n }\n return context\n }\n }\n\n enum class RedrawStage {\n /**\n * Indicates that a redrawn callback has been called immediately after a redrawn.\n */\n AFTER_REDRAW,\n /**\n * Indicates that a redrawn callback has been called immediately before a redrawn.\n */\n BEFORE_REDRAW;\n }\n}","package earth.worldwind\n\nimport earth.worldwind.gesture.GestureListener\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\n\n/**\n * This class provides a base window controller with required properties and methods which subclasses may\n * inherit from to create custom window controllers for controlling the globe via user interaction.\n */\nabstract class WorldWindowController(\n /**\n * The WorldWindow associated with this controller.\n */\n protected val wwd: WorldWindow\n): EventListener, GestureListener {\n protected val gestureEventListeners = mutableListOf()\n\n override fun handleEvent(event: Event) {\n for (i in gestureEventListeners.indices) {\n gestureEventListeners[i].handleEvent(event)\n if (event.defaultPrevented) break\n }\n }\n\n /**\n * Registers a gesture event listener on this controller. Registering event listeners using this function\n * enables applications to prevent the controller's default behavior.\n *\n * When an event occurs, application event listeners are called before WorldWindowController event listeners.\n *\n * @param listener The function to call when the event occurs.\n */\n protected open fun addGestureListener(listener: EventListener) { gestureEventListeners += listener }\n\n /**\n * Removes a gesture event listener from this controller. The listener must be the same object passed to\n * addGestureListener. Calling removeGestureListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addGestureListener.\n */\n protected open fun removeGestureListener(listener: EventListener) { gestureEventListeners -= listener }\n}","package earth.worldwind.formats.geotiff\n\nobject GeoTiffConstants {\n const val MODEL_PIXEL_SCALE = 33550\n const val MODEL_TRANSFORMATION = 34264\n const val MODEL_TIEPOINT = 33922\n const val GEO_KEY_DIRECTORY = 34735\n const val GEO_DOUBLE_PARAMS = 34736\n const val GEO_ASCII_PARAMS = 34737\n\n // GDAL\n const val GDAL_NODATA = 42113\n const val GDAL_METADATA = 42112\n\n const val GT_MODEL_TYPE_GEO_KEY = 1024\n const val GT_RASTER_TYPE_GEO_KEY = 1025\n const val GT_CITATION_GEO_KEY = 1026\n\n // Geographic CS Parameter Keys\n const val GEOGRAPHIC_TYPE_GEO_KEY = 2048\n const val GEOG_CITATION_GEO_KEY = 2049\n const val GEOG_GEODETIC_DATUM_GEO_KEY = 2050\n const val GEOG_PRIME_MERIDIAN_GEO_KEY = 2051\n const val GEOG_LINEAR_UNITS_GEO_KEY = 2052\n const val GEOG_LINEAR_UNIT_SIZE_GEO_KEY = 2053\n const val GEOG_ANGULAR_UNITS_GEO_KEY = 2054\n const val GEOG_ANGULAR_UNIT_SIZE_GEO_KEY = 2055\n const val GEOG_ELLIPSOID_GEO_KEY = 2056\n const val GEOG_SEMI_MAJOR_AXIS_GEO_KEY = 2057\n const val GEOG_SEMI_MINOR_AXIS_GEO_KEY = 2058\n const val GEOG_INV_FLATTENING_GEO_KEY = 2059\n const val GEOG_AZIMUTH_UNITS_GEO_KEY = 2060\n const val GEOG_PRIME_MERIDIAN_LONG_GEO_KEY = 2061\n const val GEOG_TOWGS84_GEO_KEY = 2062\n\n // Projected CS Parameter Keys\n const val PROJECTED_CS_TYPE_GEO_KEY = 3072\n const val PCS_CITATION_GEO_KEY = 3073\n const val PROJECTION_GEO_KEY = 3074\n const val PROJ_COORD_TRANS_GEO_KEY = 3075\n const val PROJ_LINEAR_UNITS_GEO_KEY = 3076\n const val PROJ_LINEAR_UNIT_SIZE_GEO_KEY = 3077\n const val PROJ_STD_PARALLEL_1_GEO_KEY = 3078\n const val PROJ_STD_PARALLEL_2_GEO_KEY = 3079\n const val PROJ_NAT_ORIGIN_LONG_GEO_KEY = 3080\n const val PROJ_NAT_ORIGIN_LAT_GEO_KEY = 3081\n const val PROJ_FALSE_EASTING_GEO_KEY = 3082\n const val PROJ_FALSE_NORTHING_GEO_KEY = 3083\n const val PROJ_FALSE_ORIGIN_LONG_GEO_KEY = 3084\n const val PROJ_FALSE_ORIGIN_LAT_GEO_KEY = 3085\n const val PROJ_FALSE_ORIGIN_EASTING_GEO_KEY = 3086\n const val PROJ_FALSE_ORIGIN_NORTHING_GEO_KEY = 3087\n const val PROJ_CENTER_LONG_GEO_KEY = 3088\n const val PROJ_CENTER_LAT_GEO_KEY = 3089\n const val PROJ_CENTER_EASTING_GEO_KEY = 3090\n const val PROJ_CENTER_NORTHING_GEO_KEY = 3091\n const val PROJ_SCALE_AT_NAT_ORIGIN_GEO_KEY = 3092\n const val PROJ_SCALE_AT_CENTER_GEO_KEY = 3093\n const val PROJ_AZIMUTH_ANGLE_GEO_KEY = 3094\n const val PROJ_STRAIGHT_VERT_POLE_LONG_GEO_KEY = 3095\n\n // Vertical CS Keys\n const val VERTICAL_CS_TYPE_GEO_KEY = 4096\n const val VERTICAL_CITATION_GEO_KEY = 4097\n const val VERTICAL_DATUM_GEO_KEY = 4098\n const val VERTICAL_UNITS_GEO_KEY = 4099\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_ASCII_PARAMS\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_DOUBLE_PARAMS\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nclass GeoTiffKeyEntry(\n keyId: Int,\n private val tiffTagLocation: Int,\n private val count: Int,\n private val valueOffset: Int\n) {\n init {\n require(keyId != 0) { logMessage(ERROR, \"GeoTiffKeyEntry\", \"constructor\", \"Missing key ID\") }\n }\n\n fun getGeoKeyValue(geoDoubleParamsValue: List): Number? = when (tiffTagLocation) {\n 0 -> valueOffset\n GEO_ASCII_PARAMS -> error(logMessage(ERROR, \"GeoTiffKeyEntry\", \"getGeoKeyValue\", \"Invalid key type\"))\n GEO_DOUBLE_PARAMS -> geoDoubleParamsValue[valueOffset]\n else -> null\n }\n\n fun getAsciiGeoKeyValue(geoAsciiParamsValue: String?): String? {\n require(tiffTagLocation == GEO_ASCII_PARAMS) {\n logMessage(ERROR, \"GeoTiffKeyEntry\", \"getAsciiGeoKeyValue\", \"Invalid key type\")\n }\n return geoAsciiParamsValue?.let {\n val keyValue = StringBuilder()\n for (i in valueOffset until count - 1) keyValue.append(it[i])\n if (it[count - 1] != '|') keyValue.append(it[count - 1])\n keyValue.toString()\n }\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Sector\n\nclass GeoTiffMetadata {\n var bitsPerSample: List = mutableListOf()\n var colorMap: Array? = null\n var compression: Int = 0\n var extraSamples: Array? = null\n var imageDescription: String? = null\n var imageLength: Int = 0\n var imageWidth: Int = 0\n var maxSampleValue: Number? = null\n var minSampleValue: Number? = null\n var orientation: Int = 0\n var photometricInterpretation: Int = -1\n var planarConfiguration: Int = -1\n var resolutionUnit: Number? = null\n var rowsPerStrip: Int = 0\n var samplesPerPixel: Int = 0\n var sampleFormat: Int = TiffConstants.SampleFormat.UNSIGNED\n var software: Array? = null\n var stripByteCounts: List = mutableListOf()\n var stripOffsets: List = mutableListOf()\n var tileByteCounts: List = mutableListOf()\n var tileOffsets: List = mutableListOf()\n var tileLength: Int = 0\n var tileWidth: Int = 0\n var xResolution: Number? = null\n var yResolution: Number? = null\n var geoAsciiParams: String? = null\n var geoDoubleParams: List = mutableListOf()\n var geoKeyDirectory: List = mutableListOf()\n var modelPixelScale: List = mutableListOf()\n var modelTiePoint: List = mutableListOf()\n var modelTransformation: List = mutableListOf()\n var noData: Number? = null\n var metaData: String? = null\n var bbox: Sector? = null\n var gtModelTypeGeoKey: Number? = null\n var gtRasterTypeGeoKey: Number? = null\n var gtCitationGeoKey: String? = null\n var geographicTypeGeoKey: Number? = null\n var geogCitationGeoKey: String? = null\n var geogAngularUnitsGeoKey: Number? = null\n var geogAngularUnitSizeGeoKey: Number? = null\n var geogSemiMajorAxisGeoKey: Number? = null\n var geogInvFlatteningGeoKey: Number? = null\n var projectedCSType: Number? = null\n var projLinearUnits: Number? = null\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.*\nimport kotlin.math.ceil\n\nclass GeoTiffReader(arrayBuffer: ArrayBuffer) {\n private val imageFileDirectories = mutableListOf()\n private val geoTiffData = DataView(arrayBuffer)\n private val metadata = GeoTiffMetadata()\n private var isLittleEndian = false\n\n init {\n getEndianness()\n require(isTiffFileType()) { logMessage(ERROR, \"GeoTiffReader\", \"constructor\",\"Invalid file type\") }\n parseImageFileDirectory(GeoTiffUtil.getBytes(geoTiffData, 4, 4, isLittleEndian).toInt())\n getMetadataFromImageFileDirectory()\n parseGeoKeys()\n setBBox()\n }\n\n private fun getEndianness() {\n isLittleEndian = when (GeoTiffUtil.getBytes(geoTiffData, 0, 2, isLittleEndian)) {\n 0x4949 -> true\n 0x4D4D -> false\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"getEndianness\",\"Invalid Byte Order Value\"))\n }\n }\n\n private fun isTiffFileType() = GeoTiffUtil.getBytes(geoTiffData, 2, 2, isLittleEndian) == 42\n\n private fun isGeoTiff() = getIFDByTag(GeoTiffConstants.GEO_KEY_DIRECTORY) != null\n\n fun createTypedElevationArray(): ArrayBufferView {\n val elevations = mutableListOf()\n if (metadata.stripOffsets.isNotEmpty()) {\n elevations.addAll(parseStrips(true).flatten())\n } else if (metadata.tileOffsets.isNotEmpty()) {\n val tiles = parseTiles(true)\n val tilesAcross = (metadata.imageWidth + metadata.tileWidth - 1) / metadata.tileWidth\n\n for (y in 0 until metadata.imageLength) for (x in 0 until metadata.imageWidth) {\n val tileAcross = x / metadata.tileWidth\n val tileDown = y / metadata.tileLength\n val tileIndex = tileDown * tilesAcross + tileAcross\n val xInTile = x % metadata.tileWidth\n val yInTile = y % metadata.tileLength\n val sampleIndex = yInTile * metadata.tileWidth + xInTile\n val pixelSamples = tiles[tileIndex][sampleIndex]\n elevations.add(pixelSamples)\n }\n } else error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid metadata\"))\n\n return when(metadata.bitsPerSample[0]) {\n 8 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int8Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint8Array(elevations.toTypedArray().unsafeCast>())\n }\n 16 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int16Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint16Array(elevations.toTypedArray().unsafeCast>())\n }\n 32 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int32Array(elevations.toTypedArray().unsafeCast>())\n TiffConstants.SampleFormat.IEEE_FLOAT -> Float32Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint32Array(elevations.toTypedArray().unsafeCast>())\n }\n 64 -> Float64Array(elevations.toTypedArray().unsafeCast>())\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid bits per sample\"))\n }\n }\n\n private fun parseStrips(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n return Array(metadata.stripOffsets.size) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.stripByteCounts[it],\n metadata.stripOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun parseBlock(\n returnElevation: Boolean, compression: Int, bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int,\n bitsPerSample: List, sampleFormat: Int\n ) = when (compression) {\n TiffConstants.Compression.UNCOMPRESSED ->\n parseUncompressedBlock(blockByteCount, bitsPerSample, blockOffset, sampleFormat, returnElevation, bytesPerPixel)\n TiffConstants.Compression.PACK_BITS ->\n parsePackBitsCompressedBlocks(bytesPerPixel, blockByteCount, blockOffset, bitsPerSample, sampleFormat, returnElevation)\n TiffConstants.Compression.CCITT_1D -> {\n log(WARN, \"Compression type not yet implemented: CCITT_1D\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_3_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_3_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_4_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_4_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.LZW -> {\n log(WARN, \"Compression type not yet implemented: LZW\")\n emptyArray()\n }\n TiffConstants.Compression.JPEG -> {\n log(WARN, \"Compression type not yet implemented: JPEG\")\n emptyArray()\n }\n else -> {\n log(WARN, \"Unsupported compression type $compression\")\n emptyArray()\n }\n }\n\n private fun parsePackBitsCompressedBlocks(\n bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int, bitsPerSample: List, sampleFormat: Int,\n returnElevation: Boolean\n ): Array {\n val block = mutableListOf()\n val arrayBuffer = if (metadata.tileWidth != 0 && metadata.tileLength != 0) {\n Int8Array(metadata.tileWidth * metadata.tileLength * bytesPerPixel)\n } else {\n Int8Array(metadata.rowsPerStrip * metadata.imageWidth * bytesPerPixel)\n }\n val uncompressedDataView = DataView(arrayBuffer.buffer)\n var newBlock = true\n var blockLength = 0\n var numOfIterations = 0\n var uncompressedOffset = 0\n\n for (byteOffset in 0 until blockByteCount) {\n if (newBlock) {\n blockLength = 1\n numOfIterations = 1\n newBlock = false\n when (val nextSourceByte = geoTiffData.getInt8(blockOffset + byteOffset)) {\n in 0..127 -> blockLength = nextSourceByte + 1\n in -127..-1 -> numOfIterations = -nextSourceByte + 1\n else -> newBlock = true\n }\n } else {\n val currentByte = GeoTiffUtil.getBytes(geoTiffData, blockOffset + byteOffset, 1, isLittleEndian)\n for (currentIteration in 0 until numOfIterations) {\n uncompressedDataView.setInt8(uncompressedOffset, currentByte.toByte())\n uncompressedOffset++\n }\n blockLength--\n if (blockLength == 0) newBlock = true\n }\n }\n\n for (byteOffset in 0 until arrayBuffer.length step bytesPerPixel) {\n val pixel = mutableListOf()\n for ((i, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = i * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n uncompressedDataView, byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0]) else block.addAll(pixel)\n }\n return block.toTypedArray()\n }\n\n private fun parseUncompressedBlock(\n blockByteCount: Int, bitsPerSample: List, blockOffset: Int, sampleFormat: Int, returnElevation: Boolean,\n bytesPerPixel: Int\n ): Array {\n val block = mutableListOf()\n var byteOffset = 0\n while (byteOffset < blockByteCount) {\n val pixel = mutableListOf()\n for ((m, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = m * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n geoTiffData, blockOffset + byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0])\n else block.addAll(pixel.toList())\n byteOffset += bytesPerPixel\n }\n return block.toTypedArray()\n }\n\n private fun parseTiles(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n val tilesAcross = ceil(metadata.imageWidth / metadata.tileWidth.toDouble()).toInt()\n val tilesDown = ceil(metadata.imageLength / metadata.tileLength.toDouble()).toInt()\n return Array(tilesDown * tilesAcross) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.tileByteCounts[it],\n metadata.tileOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun geoTiffImageToPCS(xValue: Double, yValue: Double) = when {\n metadata.modelTiePoint.size > 6 && metadata.modelPixelScale.isEmpty() -> TODO()\n metadata.modelTransformation.size == 16 -> Location(\n Angle.fromDegrees(yValue * metadata.modelTransformation[4] + yValue * metadata.modelTransformation[5]\n + metadata.modelTransformation[7]),\n Angle.fromDegrees(xValue * metadata.modelTransformation[0] + yValue * metadata.modelTransformation[1]\n + metadata.modelTransformation[3])\n )\n metadata.modelPixelScale.size < 3 || metadata.modelTiePoint.size < 6 -> Location(Angle.fromDegrees(yValue), Angle.fromDegrees(xValue))\n else -> Location(\n Angle.fromDegrees((yValue - metadata.modelTiePoint[1]) * -1 * metadata.modelPixelScale[1] + metadata.modelTiePoint[4]),\n Angle.fromDegrees((xValue - metadata.modelTiePoint[0]) * metadata.modelPixelScale[0] + metadata.modelTiePoint[3])\n )\n }\n\n private fun setBBox() {\n val upperLeft = geoTiffImageToPCS(0.0, 0.0)\n val upperRight = geoTiffImageToPCS(metadata.imageWidth.toDouble(), 0.0)\n val lowerLeft = geoTiffImageToPCS(0.0, metadata.imageLength.toDouble())\n metadata.bbox = Sector(lowerLeft.latitude, upperLeft.latitude, upperLeft.longitude, upperRight.longitude)\n }\n\n private fun getMetadataFromImageFileDirectory() {\n for (ifd in imageFileDirectories) when (ifd.tag) {\n TiffConstants.IFDTag.BITS_PER_SAMPLE -> metadata.bitsPerSample = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.COLOR_MAP -> metadata.colorMap = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.COMPRESSION -> metadata.compression = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.EXTRA_SAMPLES -> metadata.extraSamples = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.IMAGE_DESCRIPTION -> metadata.imageDescription = ifd.getIFDEntryAsciiValue()\n TiffConstants.IFDTag.IMAGE_LENGTH -> metadata.imageLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.IMAGE_WIDTH -> metadata.imageWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.MAX_SAMPLE_VALUE -> metadata.maxSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.MIN_SAMPLE_VALUE -> metadata.minSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.ORIENTATION -> metadata.orientation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PHOTOMETRIC_INTERPRETATION -> metadata.photometricInterpretation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PLANAR_CONFIGURATION -> metadata.planarConfiguration = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.ROWS_PER_STRIP -> metadata.rowsPerStrip = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.RESOLUTION_UNIT -> metadata.resolutionUnit = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.SAMPLES_PER_PIXEL -> metadata.samplesPerPixel = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SAMPLE_FORMAT -> metadata.sampleFormat = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SOFTWARE -> metadata.software = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.STRIP_BYTE_COUNTS -> metadata.stripByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.STRIP_OFFSETS -> metadata.stripOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_BYTE_COUNTS -> metadata.tileByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_OFFSETS -> metadata.tileOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_LENGTH -> metadata.tileLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.TILE_WIDTH -> metadata.tileWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.X_RESOLUTION -> metadata.xResolution = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.Y_RESOLUTION -> metadata.yResolution = ifd.getIFDEntryValue()[0]\n GeoTiffConstants.GEO_ASCII_PARAMS -> metadata.geoAsciiParams = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GEO_DOUBLE_PARAMS -> metadata.geoDoubleParams = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GEO_KEY_DIRECTORY -> metadata.geoKeyDirectory = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_PIXEL_SCALE -> metadata.modelPixelScale = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_TIEPOINT -> metadata.modelTiePoint = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GDAL_METADATA -> metadata.metaData = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GDAL_NODATA -> metadata.noData = ifd.getIFDEntryValue()[0]\n else -> log(WARN, \"Ignored GeoTiff tag: ${ifd.tag}\")\n }\n }\n\n private fun parseGeoKeys() {\n require(isGeoTiff()) { logMessage(Logger.INFO, \"GeoTiffReader\", \"parse\", \"Invalid GeoTiff file\") }\n val geoKeyDirectory = metadata.geoKeyDirectory\n if (geoKeyDirectory.isNotEmpty()) {\n val numberOfKeys = geoKeyDirectory[3]\n\n for (i in 0 until numberOfKeys) {\n val keyId = geoKeyDirectory[4 + i * 4]\n val tiffTagLocation = geoKeyDirectory[5 + i * 4]\n val count = geoKeyDirectory[6 + i * 4]\n val valueOffset = geoKeyDirectory[7 + i * 4]\n\n when (keyId) {\n GeoTiffConstants.GT_MODEL_TYPE_GEO_KEY ->\n metadata.gtModelTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count,valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_RASTER_TYPE_GEO_KEY ->\n metadata.gtRasterTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_CITATION_GEO_KEY ->\n metadata.gtCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOGRAPHIC_TYPE_GEO_KEY ->\n metadata.geographicTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_CITATION_GEO_KEY ->\n metadata.geogCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOG_ANGULAR_UNITS_GEO_KEY ->\n metadata.geogAngularUnitsGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_ANGULAR_UNIT_SIZE_GEO_KEY ->\n metadata.geogAngularUnitSizeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset )\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_SEMI_MAJOR_AXIS_GEO_KEY ->\n metadata.geogSemiMajorAxisGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_INV_FLATTENING_GEO_KEY ->\n metadata.geogInvFlatteningGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJECTED_CS_TYPE_GEO_KEY ->\n metadata.projectedCSType = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJ_LINEAR_UNITS_GEO_KEY ->\n metadata.projLinearUnits = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n else -> log(WARN, \"Ignored GeoTiff key: $keyId\")\n }\n }\n } else error(logMessage(INFO, \"GeoTiffReader\", \"parseGeoKeys\", \"missingGeoKeyDirectoryTag\"))\n }\n\n private fun parseImageFileDirectory(offset: Int) {\n val noOfDirectoryEntries = GeoTiffUtil.getBytes(geoTiffData, offset, 2, isLittleEndian).toInt()\n val directoryEntries = mutableListOf()\n var i = offset + 2\n repeat(noOfDirectoryEntries) {\n val tag = GeoTiffUtil.getBytes(geoTiffData, i, 2, isLittleEndian).toInt()\n val type = GeoTiffUtil.getBytes(geoTiffData, i + 2, 2, isLittleEndian).toInt()\n val count = GeoTiffUtil.getBytes(geoTiffData, i + 4, 4, isLittleEndian).toInt()\n val valueOffset = GeoTiffUtil.getBytes(geoTiffData, i + 8, 4, isLittleEndian).toInt()\n directoryEntries.add(TiffIFDEntry(tag, type, count, valueOffset, geoTiffData, isLittleEndian))\n i += 12\n }\n imageFileDirectories.addAll(directoryEntries)\n val nextIfdOffset = GeoTiffUtil.getBytes(geoTiffData, i, 4, isLittleEndian).toInt()\n if (nextIfdOffset != 0) parseImageFileDirectory(nextIfdOffset)\n }\n\n // Get image file directory by tag value.\n private fun getIFDByTag(tag: Int) = imageFileDirectories.find { it.tag == tag }\n}",null,null,"package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nobject GeoTiffUtil {\n\n fun getBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, isLittleEndian: Boolean, isSigned: Boolean = false\n ): Number = when {\n numOfBytes <= 0 -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"No bytes requested\"))\n numOfBytes <= 1 -> if (isSigned) geoTiffData.getInt8(byteOffset) else geoTiffData.getUint8(byteOffset)\n numOfBytes <= 2 -> if (isSigned) geoTiffData.getInt16(byteOffset, isLittleEndian) else geoTiffData.getUint16(byteOffset, isLittleEndian)\n numOfBytes <= 3 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) ushr 8 else geoTiffData.getUint32(byteOffset, isLittleEndian) ushr 8\n numOfBytes <= 4 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) else geoTiffData.getUint32(byteOffset, isLittleEndian)\n numOfBytes <= 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"Too many bytes requested\"))\n }\n\n fun getSampleBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, sampleFormat: Int, isLittleEndian: Boolean\n ): Number = when (sampleFormat) {\n TiffConstants.SampleFormat.UNSIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n TiffConstants.SampleFormat.SIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, true)\n TiffConstants.SampleFormat.IEEE_FLOAT -> when (numOfBytes) {\n 3 -> geoTiffData.getFloat32(byteOffset, isLittleEndian).toInt() ushr 8\n 4 -> geoTiffData.getFloat32(byteOffset, isLittleEndian)\n 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(\n ERROR, \"GeoTiffUtil\", \"getSampleBytes\",\n \"Do not attempt to parse the data not handled: $numOfBytes\"\n ))\n }\n else -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n }\n}","package earth.worldwind.formats.geotiff\n\nclass TiffConstants {\n object IFDTag {\n const val NEW_SUBFILE_TYPE = 254\n const val SUBFILE_TYPE = 255\n const val IMAGE_WIDTH = 256\n const val IMAGE_LENGTH = 257\n const val BITS_PER_SAMPLE = 258\n const val COMPRESSION = 259\n const val PHOTOMETRIC_INTERPRETATION = 262\n const val THRESHHOLDING = 263\n const val CELL_WIDTH = 264\n const val CELL_LENGTH = 265\n const val FILL_ORDER = 266\n const val DOCUMENT_NAME = 269\n const val IMAGE_DESCRIPTION = 270\n const val MAKE = 271\n const val MODEL = 272\n const val STRIP_OFFSETS = 273\n const val ORIENTATION = 274\n const val SAMPLES_PER_PIXEL = 277\n const val ROWS_PER_STRIP = 278\n const val STRIP_BYTE_COUNTS = 279\n const val MIN_SAMPLE_VALUE = 280\n const val MAX_SAMPLE_VALUE = 281\n const val X_RESOLUTION = 282\n const val Y_RESOLUTION = 283\n const val PLANAR_CONFIGURATION = 284\n const val PAGE_NAME = 285\n const val X_POSITION = 286\n const val Y_POSITION = 287\n const val FREE_OFFSETS = 288\n const val FREE_BYTE_COUNTS = 289\n const val GRAY_RESPONSE_UNIT = 290\n const val GRAY_RESPONSE_CURVE = 291\n const val T4_OPTIONS = 292\n const val T6_OPTIONS = 293\n const val RESOLUTION_UNIT = 296\n const val PAGE_NUMBER = 297\n const val TRANSFER_FUNCTION = 301\n const val SOFTWARE = 305\n const val DATE_TIME = 306\n const val ARTIST = 315\n const val HOST_COMPUTER = 316\n const val PREDICTOR = 317\n const val WHITE_POINT = 318\n const val PRIMARY_CHROMATICI_TIES = 319\n const val COLOR_MAP = 320\n const val HALFTONE_HINTS = 321\n const val TILE_WIDTH = 322\n const val TILE_LENGTH = 323\n const val TILE_OFFSETS = 324\n const val TILE_BYTE_COUNTS = 325\n const val INK_SET = 332\n const val INK_NAMES = 333\n const val NUMBER_OF_INKS = 334\n const val DOT_RANGE = 336\n const val TARGET_PRINTER = 337\n const val EXTRA_SAMPLES = 338\n const val SAMPLE_FORMAT = 339\n const val S_MIN_SAMPLE_VALUE = 340\n const val S_MAX_SAMPLE_VALUE = 341\n const val TRANSFER_RANGE = 342\n const val JPEG_PROC = 512\n const val JPEG_INTERCHANGE_FORMAT = 513\n const val JPEG_INTERCHANGE_FORMAT_LENGTH = 514\n const val JPEG_RESTART_INTERVAL = 515\n const val JPEG_LOSSLESS_PREDICTORS = 517\n const val JPEG_POINT_TRANSFORMS = 518\n const val JPEG_Q_TABLES = 519\n const val JPEG_DC_TABLES = 520\n const val JPEG_AC_TABLES = 521\n const val Y_CB_CR_COEFFICIENTS = 529\n const val Y_CB_CR_SUB_SAMPLING = 530\n const val Y_CB_CR_POSITIONING = 531\n const val REFERENCE_BLACK_WHITE = 532\n const val COPYRIGHT = 33432\n }\n\n object Compression {\n const val UNCOMPRESSED = 1\n const val CCITT_1D = 2\n const val GROUP_3_FAX = 3\n const val GROUP_4_FAX = 4\n const val LZW = 5\n const val JPEG = 6\n const val PACK_BITS = 32773\n }\n\n object Orientation {\n const val ROW0_IS_TOP_COL0_IS_LHS = 1\n const val ROW0_IS_TOP_COL0_IS_RHS = 2\n const val ROW0_IS_BOTTOM_COL0_IS_RHS = 3\n const val ROW0_IS_BOTTOM_COL0_IS_LHS = 4\n const val ROW0_IS_LHS_COL0_IS_TOP = 5\n const val ROW0_IS_RHS_COL0_IS_TOP = 6\n const val ROW0_IS_RHS_COL0_IS_BOTTOM = 7\n const val ROW0_IS_LHS_COL0_IS_BOTTOM = 8\n }\n\n object PhotometricInterpretation {\n const val WHITE_IS_ZERO = 0\n const val BLACK_IS_ZERO = 1\n const val RGB = 2\n const val RGB_PALETTE = 3\n const val TRANSPARENCY_MASK = 4\n const val CMYK = 5\n const val Y_CB_CR = 6\n const val CIE_LAB = 7\n }\n\n object PlanarConfiguration {\n const val CHUNKY = 1\n const val PLANAR = 2\n }\n\n object ResolutionUnit {\n const val NONE = 1\n const val INCH = 2\n const val CENTIMETER = 3\n }\n\n object SampleFormat {\n const val UNSIGNED = 1\n const val SIGNED = 2\n const val IEEE_FLOAT = 3\n const val UNDEFINED = 4\n }\n\n object Type {\n const val BYTE = 1\n const val ASCII = 2\n const val SHORT = 3\n const val LONG = 4\n const val RATIONAL = 5\n const val SBYTE = 6\n const val UNDEFINED = 7\n const val SSHORT = 8\n const val SLONG = 9\n const val SRATIONAL = 10\n const val FLOAT = 11\n const val DOUBLE = 12\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nclass TiffIFDEntry(\n val tag: Int,\n private val type: Int,\n private val count: Int,\n private val valueOffset: Int,\n private val geoTiffData: DataView,\n private val isLittleEndian: Boolean\n) {\n fun getIFDEntryValue(allowAscii: Boolean = false): List {\n require (allowAscii || type != TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Key Type - ASCII not allowed.\")\n }\n val length = getIFDTypeLength()\n return if (length * count <= 4) listOf(if (!isLittleEndian) valueOffset shr ((4 - length) * 8) else valueOffset)\n else getIFDEntryValueLongerThan4(length)\n }\n\n fun getIFDEntryAsciiValue(): String {\n require(type == TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\",\"Invalid Key Type - ASCII required.\")\n }\n return getIFDEntryValue(true).map { it.toInt().toChar() }.joinToString(\"\")\n }\n\n private fun getIFDTypeLength() = when (type) {\n TiffConstants.Type.BYTE, TiffConstants.Type.ASCII, TiffConstants.Type.SBYTE, TiffConstants.Type.UNDEFINED -> 1\n TiffConstants.Type.SHORT, TiffConstants.Type.SSHORT -> 2\n TiffConstants.Type.LONG, TiffConstants.Type.SLONG, TiffConstants.Type.FLOAT -> 4\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL, TiffConstants.Type.DOUBLE -> 8\n else -> -1\n }\n\n private fun getIFDEntryValueLongerThan4(ifdTypeLength: Int): List {\n val ifdValues = mutableListOf()\n for (i in 0 until count) {\n val indexOffset = ifdTypeLength * i\n if (ifdTypeLength >= 8) when (type) {\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL -> {\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 4, isLittleEndian))\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset + 4, 4, isLittleEndian))\n }\n TiffConstants.Type.DOUBLE -> ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 8, isLittleEndian))\n else -> error(logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Type of IFD\"))\n } else ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, ifdTypeLength, isLittleEndian))\n }\n return ifdValues\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple mouse clicks.\n */\nopen class ClickRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfClicks = 1\n var button: Short = 0\n var maxMouseMovement = 5\n var maxClickDuration = 500\n var maxClickInterval = 400\n protected val clicks = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n clicks.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (button != event.button) state = FAILED else {\n clicks.add(Click(clientX, clientY))\n failAfterDelay(maxClickDuration) // fail if the click is down too long\n }\n }\n\n override fun mouseMove(event: MouseEvent) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxMouseMovement * window.devicePixelRatio) state = FAILED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (mouseButtonMask != 0) return // wait until the last button is up\n if (clicks.size == numberOfClicks) {\n clientX = clicks[0].clientX\n clientY = clicks[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxClickInterval) // fail if the interval between clicks is too long\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() { timeout?.let { window.clearTimeout(it) }.also { timeout = null } }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for mouse drag gestures.\n */\nopen class DragRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var button: Short = 0\n var interpretDistance = 5\n\n override fun mouseMove(event: MouseEvent) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) {\n state = if (shouldRecognize()) {\n resetTranslation() // set translation to zero when the drag begins\n BEGAN\n } else {\n FAILED\n }\n }\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (mouseButtonMask == 0) { // last button up\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state == POSSIBLE) state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret mouse movement when the cursor moves far enough\n }\n\n /**\n * @return true when the specified button is the only button down\n */\n protected open fun shouldRecognize() = 1 shl button.toInt() == mouseButtonMask\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.util.Logger\nimport org.w3c.dom.Touch\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport org.w3c.dom.pointerevents.PointerEvent\n\n/**\n * Gesture recognizers translate user input event streams into higher level actions. A gesture\n * recognizer is associated with an event target, which dispatches mouse and keyboard events to the gesture\n * recognizer. When a gesture recognizer has received enough information from the event stream to interpret the\n * action, it calls its callback functions. Callback functions may be specified at construction or added to the\n * [gestureCallbacks] list after construction.\n */\nabstract class GestureRecognizer(\n /**\n * Indicates the document element this gesture recognizer observes for mouse and touch events.\n */\n val target: EventTarget,\n /**\n * An optional function to call when this gesture is recognized. If non-null, the\n * function is called when this gesture is recognized, and is passed a single argument: this gesture recognizer,\n * e.g., gestureCallback(recognizer).\n */\n callback: ((GestureRecognizer)->Unit)?\n): EventListener {\n /**\n * Indicates whether this gesture recognizer is enabled. When false, this gesture recognizer will ignore any events\n * dispatched by its target.\n */\n var isEnabled = true\n /**\n * Indicates this gesture's current state. Possible values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN],\n * [CHANGED], [CANCELLED] and [ENDED].\n */\n var state = POSSIBLE\n set(newState) {\n nextState = null // clear any pending state transition\n when (newState) {\n POSSIBLE -> field = newState\n FAILED -> {\n field = newState\n updateRecognizersWaitingForFailure()\n resetIfEventsEnded()\n }\n RECOGNIZED -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Recognized\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n BEGAN -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Began\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n }\n }\n CHANGED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n }\n CANCELLED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n ENDED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n }\n /**\n * Indicates the X coordinate of this gesture.\n */\n var clientX = 0\n /**\n * Returns the Y coordinate of this gesture.\n */\n var clientY = 0\n /**\n * Indicates this gesture's translation along the X axis since the gesture started.\n */\n var translationX = 0.0\n private set\n /**\n * Indicates this gesture's translation along the Y axis since the gesture started.\n */\n var translationY = 0.0\n private set\n /**\n * Indicates the currently pressed mouse buttons as a bitmask. A value of 0 indicates that no buttons are\n * pressed. A nonzero value indicates that one or more buttons are pressed as follows: bit 1 indicates the\n * primary button, bit 2 indicates the auxiliary button, bit 3 indicates the secondary button.\n */\n var mouseButtonMask = 0\n private set\n /**\n * Indicates the number of active touches.\n */\n val touchCount get() = touches.size\n /**\n * The list of functions to call when this gesture is recognized. The functions have a single argument:\n * this gesture recognizer, e.g., gestureCallback(recognizer). Applications may\n * add functions to this array or remove them.\n */\n val gestureCallbacks = mutableListOf<(GestureRecognizer)->Unit>()\n private var nextState: GestureState? = null\n private var clientStartX = 0\n private var clientStartY = 0\n private var translationWeight = 0.4\n private val touches = mutableListOf()\n private var touchCentroidShiftX = 0\n private var touchCentroidShiftY = 0\n private val canRecognizeWith = mutableSetOf()\n private val requiresFailureOf = mutableSetOf()\n private val requiredToFailBy = mutableSetOf()\n private val listenerList = mutableListOf()\n\n companion object {\n val allRecognizers = mutableListOf()\n }\n\n init {\n // Add the optional gesture callback.\n callback?.let { gestureCallbacks += it }\n\n // Add this recognizer to the list of all recognizers.\n allRecognizers += this\n }\n\n /**\n * Registers a gesture state listener on this GestureRecognizer. Registering state listeners using this function\n * enables applications to receive notifications of gesture recognition.\n *\n * @param listener The function to call when the event occurs.\n */\n fun addListener(listener: GestureListener) { listenerList += listener }\n\n /**\n * Removes a gesture state listener from this GestureRecognizer. The listener must be the same object passed to\n * addListener. Calling removeListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addListener.\n */\n fun removeListener(listener: GestureListener) { listenerList -= listener }\n\n fun touch(index: Int): TouchWrapper {\n require(index in touches.indices) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"touch\", \"indexOutOfRange\")\n }\n return touches[index]\n }\n\n fun recognizeSimultaneouslyWith(recognizer: GestureRecognizer) {\n canRecognizeWith.add(recognizer)\n recognizer.canRecognizeWith.add(this)\n }\n\n fun canRecognizeSimultaneouslyWith(recognizer: GestureRecognizer) = canRecognizeWith.contains(recognizer)\n\n fun requireRecognizerToFail(recognizer: GestureRecognizer) {\n requiresFailureOf.add(recognizer)\n recognizer.requiredToFailBy.add(this)\n }\n\n fun requiresRecognizerToFail(recognizer: GestureRecognizer) = requiresFailureOf.contains(recognizer)\n\n fun requiredToFailByRecognizer(recognizer: GestureRecognizer) = requiredToFailBy.contains(recognizer)\n\n open fun reset() {\n state = POSSIBLE\n nextState = null\n clientX = 0\n clientY = 0\n clientStartX = 0\n clientStartY = 0\n translationX = 0.0\n translationY = 0.0\n mouseButtonMask = 0\n touches.clear()\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun resetTranslation() {\n clientStartX = clientX\n clientStartY = clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun prepareToRecognize() {}\n\n protected open fun mouseDown(event: MouseEvent) {}\n protected open fun mouseMove(event: MouseEvent) {}\n protected open fun mouseUp(event: MouseEvent) {}\n\n protected open fun touchStart(touch: TouchWrapper) {}\n protected open fun touchMove(touch: TouchWrapper) {}\n protected open fun touchCancel(touch: TouchWrapper) {}\n protected open fun touchEnd(touch: TouchWrapper) {}\n \n protected open fun updateRecognizersWaitingForFailure() {\n // Transition gestures that are waiting for this gesture to transition to Failed.\n requiredToFailBy.forEach { r -> r.nextState?.let { r.state = it } }\n }\n\n protected open fun tryToRecognize(newState: GestureState): Boolean {\n // Transition to Failed if another gesture can prevent this gesture from recognizing.\n if (allRecognizers.any { r -> canBePreventedByRecognizer(r) }) {\n state = FAILED\n return false\n }\n\n // Delay the transition to Recognized/Began if this gesture is waiting for a gesture in the Possible state.\n if (allRecognizers.any { r -> isWaitingForRecognizerToFail(r) }) {\n nextState = newState\n return false\n }\n\n // Transition to Failed state all other gestures that can be prevented from recognizing by this gesture.\n allRecognizers.filter { r -> canPreventRecognizer(r) }.forEach { r -> r.state = FAILED }\n return true\n }\n\n protected open fun canPreventRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE &&\n (requiredToFailByRecognizer(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun canBePreventedByRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == RECOGNIZED &&\n (requiresRecognizerToFail(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun isWaitingForRecognizerToFail(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE && requiresRecognizerToFail(that)\n\n protected open fun notifyListeners() = listenerList.forEach { l -> l.gestureStateChanged(this) }\n\n protected open fun callGestureCallbacks() = gestureCallbacks.forEach { c -> c(this) }\n\n override fun handleEvent(event: Event) {\n if (!isEnabled) return\n\n if (event.defaultPrevented && state == POSSIBLE) return // ignore cancelled events while in the Possible state\n\n try {\n when {\n event.type == \"mousedown\" && event is MouseEvent -> handleMouseDown(event)\n event.type == \"mousemove\" && event is MouseEvent -> handleMouseMove(event)\n event.type == \"mouseup\" && event is MouseEvent -> handleMouseUp(event)\n event.type == \"touchstart\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchStart(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchmove\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchMove(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchcancel\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchCancel(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchend\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchEnd(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseDown(event)\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseMove(event)\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"mouse\" -> {\n // Intentionally left blank. The W3C Pointer Events specification is ambiguous on what cancel means\n // for mouse input, and there is no evidence that this event is actually generated (6/19/2015).\n }\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseUp(event)\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchStart(wrapPointer(event))\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchMove(wrapPointer(event))\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchCancel(wrapPointer(event))\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchEnd(wrapPointer(event))\n else -> Logger.logMessage(Logger.INFO, \"GestureRecognizer\", \"handleEvent\",\n \"Unrecognized event type: ${event.type}\")\n }\n } catch (e: Exception) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"handleEvent\", \"Error handling event.\\n$e\")\n }\n }\n\n protected open fun handleMouseDown(event: MouseEvent) {\n if (event.type == \"mousedown\" && touches.size > 0) return // ignore synthesized mouse down events on Android Chrome\n\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask != 0) return // ignore redundant mouse down events\n\n if (mouseButtonMask == 0) { // first button down\n clientX = event.clientX\n clientY = event.clientY\n clientStartX = event.clientX\n clientStartY = event.clientY\n translationX = 0.0\n translationY = 0.0\n }\n\n mouseButtonMask = mouseButtonMask or buttonBit\n mouseDown(event)\n }\n\n protected open fun handleMouseMove(event: MouseEvent) {\n if (mouseButtonMask == 0) return // ignore mouse move events when this recognizer does not consider any button to be down\n\n if (clientX == event.clientX && clientY == event.clientY) return // ignore redundant mouse move events\n\n val dx = event.clientX - clientStartX\n val dy = event.clientY - clientStartY\n val w = translationWeight\n clientX = event.clientX\n clientY = event.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n mouseMove(event)\n }\n\n protected open fun handleMouseUp(event: MouseEvent) {\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask == 0) return // ignore mouse up events for buttons this recognizer does not consider to be down\n\n mouseButtonMask = mouseButtonMask and buttonBit.inv()\n mouseUp(event)\n\n if (mouseButtonMask == 0) resetIfEventsEnded() // last button up\n }\n\n protected open fun handleTouchStart(touch: TouchWrapper) {\n touches.add(touch)\n\n if (touches.size == 1) { // first touch\n clientX = touch.clientX\n clientY = touch.clientY\n clientStartX = touch.clientX\n clientStartY = touch.clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n } else touchesAddedOrRemoved()\n\n touchStart(touch)\n }\n\n protected open fun handleTouchMove(nextTouch: TouchWrapper) {\n val touch = touchById(nextTouch.identifier) ?: return // ignore events for touches that did not start in this recognizer's target\n if (touch.clientX == nextTouch.clientX && touch.clientY == nextTouch.clientY) return // ignore redundant touch move events, which we've encountered on Android Chrome\n\n touch.clientX = nextTouch.clientX\n touch.clientY = nextTouch.clientY\n\n val centroid = touchCentroid()\n val dx = centroid.clientX - clientStartX + touchCentroidShiftX\n val dy = centroid.clientY - clientStartY + touchCentroidShiftY\n val w = translationWeight\n clientX = centroid.clientX\n clientY = centroid.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n\n touchMove(touch)\n }\n\n protected open fun handleTouchCancel(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchCancel(touch)\n resetIfEventsEnded()\n }\n\n protected open fun handleTouchEnd(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchEnd(touch)\n resetIfEventsEnded()\n }\n\n protected open fun resetIfEventsEnded() {\n if (state != POSSIBLE && mouseButtonMask == 0 && touches.size == 0) reset()\n }\n\n protected open fun touchesAddedOrRemoved() {\n touchCentroidShiftX += clientX\n touchCentroidShiftY += clientY\n val centroid = touchCentroid()\n clientX = centroid.clientX\n clientY = centroid.clientY\n touchCentroidShiftX -= clientX\n touchCentroidShiftY -= clientY\n }\n\n protected open fun touchCentroid(): Click {\n var x = 0\n var y = 0\n\n touches.forEach { touch ->\n x += touch.clientX / touches.size\n y += touch.clientY / touches.size\n }\n\n return Click(x, y)\n }\n\n protected open fun indexOfTouchWithId(identifier: Int) = touches.indexOfFirst { t -> t.identifier == identifier }\n\n protected open fun touchById(identifier: Int) = touches.firstOrNull { t -> t.identifier == identifier }\n\n protected open fun wrapTouch(event: Touch) = TouchWrapper(event.identifier, event.clientX, event.clientY)\n\n protected open fun wrapPointer(event: PointerEvent) = TouchWrapper(event.pointerId, event.clientX, event.clientY)\n\n protected class Click(\n /**\n * The X coordinate of the click point's location.\n */\n val clientX: Int,\n /**\n * The Y coordinate of the click point's location.\n */\n val clientY: Int\n )\n}",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for touch panning gestures.\n */\nopen class PanRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var minNumberOfTouches = 1\n var maxNumberOfTouches = Int.MAX_VALUE\n var interpretDistance = 20\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) state = if (shouldRecognize()) BEGAN else FAILED\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch cancelled\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n }\n\n override fun prepareToRecognize() {\n // set translation to zero when the pan begins\n resetTranslation()\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret touches when the touch centroid moves far enough\n }\n\n protected open fun shouldRecognize() = touchCount in minNumberOfTouches..maxNumberOfTouches\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger pinch gestures.\n */\nopen class PinchRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceDistance = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val scaleWithOffset get() = scale * offsetScale\n protected var scale = 1.0\n protected var offsetScale = 1.0\n protected val pinchTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n scale = 1.0\n offsetScale = 1.0\n referenceDistance = 0.0\n pinchTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (pinchTouches.size < 2) {\n pinchTouches.add(touch)\n if (pinchTouches.size == 2) {\n referenceDistance = currentPinchDistance()\n offsetScale *= scale\n scale = 1.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (pinchTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val distance = currentPinchDistance()\n val newScale = abs(distance / referenceDistance)\n val w = weight\n scale = scale * (1 - w) + newScale * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceDistance = currentPinchDistance()\n scale = 1.0\n }\n\n protected open fun shouldRecognize() =\n abs(currentPinchDistance() - referenceDistance) > interpretThreshold * window.devicePixelRatio\n\n protected open fun currentPinchDistance(): Double {\n val touch0 = pinchTouches[0]\n val touch1 = pinchTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return sqrt((dx * dx + dy * dy).toDouble())\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.atan2\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger rotation gestures.\n */\nopen class RotationRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceAngle = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val rotationWithOffset get() = rotation + offsetRotation\n protected var rotation = 0.0\n protected var offsetRotation = 0.0\n protected val rotationTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n rotation = 0.0\n offsetRotation = 0.0\n referenceAngle = 0.0\n rotationTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (rotationTouches.size < 2) {\n rotationTouches.add(touch)\n if (rotationTouches.size == 2) {\n referenceAngle = currentTouchAngle()\n offsetRotation += rotation\n rotation = 0.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (rotationTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val angle = currentTouchAngle()\n val newRotation = Angle.normalizeAngle180(angle - referenceAngle)\n val w = weight\n rotation = rotation * (1 - w) + newRotation * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0)\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceAngle = currentTouchAngle()\n rotation = 0.0\n }\n\n protected open fun shouldRecognize(): Boolean {\n rotation = Angle.normalizeAngle180(currentTouchAngle() - referenceAngle)\n return abs(rotation) > interpretThreshold\n }\n\n protected open fun currentTouchAngle(): Double {\n val touch0 = rotationTouches[0]\n val touch1 = rotationTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return Angle.toDegrees(atan2(dy.toDouble(), dx.toDouble()))\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.BasicWorldWindowController\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Highlightable\nimport earth.worldwind.shape.Movable\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.MouseEvent\n\nopen class SelectDragDetector(protected val wwd: WorldWindow) {\n /**\n * Main interface representing all interaction callbacks\n */\n var callback: SelectDragCallback? = null\n /**\n * Enable/disable mouse events processing.\n * If disabled, highlighting of Renderables and all callbacks will be switched off.\n */\n var isEnabled = true\n /**\n * Enable/disable dragging of flying objects using their terrain projection position\n */\n var isDragTerrainPosition = false\n protected var pickedPosition: Position? = null\n protected var pickedRenderable: Renderable? = null\n protected val oldHighlighted = mutableSetOf()\n protected val newHighlighted = mutableSetOf()\n protected var isDragging = false\n protected var isDraggingArmed = false\n private val dragRefPt = Vec2()\n private val lastTranslation = Vec2()\n\n protected val handlePick = EventListener { event ->\n // Do not pick new items if dragging is in progress or detector is disabled\n if (isDragging || !isEnabled) return@EventListener\n\n // Determine pick point from event\n var clientX = 0\n var clientY = 0\n when (event) {\n is MouseEvent -> {\n clientX = event.clientX\n clientY = event.clientY\n }\n is TouchEvent -> {\n event.changedTouches.item(0)?.let { touch ->\n clientX = touch.clientX\n clientY = touch.clientY\n } ?: return@EventListener\n }\n else -> return@EventListener\n }\n\n // Reset previous pick result\n pickedPosition = null\n pickedRenderable = null\n lastTranslation.set(0.0, 0.0)\n\n // Get pick point in canvas coordinates\n val pickPoint = wwd.canvasCoordinates(clientX, clientY)\n\n // Pick objects in selected point\n val pickList = wwd.pick(pickPoint)\n\n // Get picked position from terrain object, if user pressed inside the globe\n pickedPosition = pickList.terrainPickedObject?.terrainPosition\n\n// // NOTE Region selection use bounding box intersection with specified rectangle. Use highlighter path thickness instead.\n// if (!pickList.hasNonTerrainObjects) {\n// pickList = wwd.pickShapesInRegion(\n// Viewport(pickPoint.x - SLOPE / 2 , pickPoint.y - SLOPE / 2, SLOPE, SLOPE)\n// )\n// }\n\n // Redraw canvas in case we de-highlight old or highlight new renderables\n var redrawRequired = false\n\n // Put picked renderables into new highlighted set\n for (obj in pickList.objects) if (!obj.isTerrain && obj.userObject is Highlightable) newHighlighted.add(obj.userObject)\n\n // De-highlight any previously highlighted renderables which is not selected or picked\n for (highlighted in oldHighlighted)\n if (!newHighlighted.contains(highlighted)\n && highlighted is Renderable && highlighted.getUserProperty(HIGHLIGHT_LOCKED_KEY) != true) {\n highlighted.isHighlighted = false\n oldHighlighted.remove(highlighted)\n redrawRequired = true\n }\n\n // Highlight picked objects which was not highlighted yet\n for (highlighted in newHighlighted) if (!oldHighlighted.contains(highlighted)) {\n highlighted.isHighlighted = true\n oldHighlighted.add(highlighted)\n redrawRequired = true\n }\n\n // Clear new highlighted buffer until next frame\n newHighlighted.clear()\n\n // Update the window if we changed anything\n if (redrawRequired) wwd.requestRedraw()\n\n // Get top picked renderable to use it in listener callbacks\n val topPickedObject = pickList.topPickedObject?.userObject\n if (topPickedObject is Renderable) pickedRenderable = topPickedObject\n\n // Take reference position as a backup, if user pressed outside the globe\n if (topPickedObject is Movable && pickedPosition == null) pickedPosition = topPickedObject.referencePosition\n\n // Determine whether the dragging flag should be \"armed\".\n isDraggingArmed = topPickedObject is Renderable && callback?.canMoveRenderable(topPickedObject) == true\n }\n\n protected val handlePrimaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderablePicked(renderable, position) else callback.onTerrainPicked(position)\n } ?: callback.onNothingPicked()\n wwd.requestRedraw()\n }\n }\n\n protected val handleSecondaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderableContext(renderable, position) else callback.onTerrainContext(position)\n } ?: callback.onNothingContext()\n wwd.requestRedraw()\n }\n }\n\n protected val handleDrag: (GestureRecognizer) -> Unit = { recognizer ->\n when (recognizer.state) {\n BEGAN, CHANGED -> {\n val callback = callback\n val renderable = pickedRenderable\n // Reference position is a priority during movement\n val toPosition = if (renderable is Movable) renderable.referencePosition else pickedPosition\n if (toPosition != null && renderable != null && callback != null) {\n // Signal that dragging is in progress\n isDragging = true\n\n // First we compute the screen coordinates of the position's \"ground\" point. We'll apply the\n // screen X and Y drag distances to this point, from which we'll compute a new position,\n // wherein we restore the original position's altitude.\n val fromPosition = Position(toPosition)\n val clapToGround = isDragTerrainPosition || renderable !is Movable || renderable.altitudeMode == AltitudeMode.CLAMP_TO_GROUND\n val movePoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n if (clapToGround && wwd.engine.pickTerrainPosition(movePoint.x, movePoint.y, toPosition)\n || !clapToGround && wwd.engine.geographicToScreenPoint(fromPosition.latitude, fromPosition.longitude, 0.0, dragRefPt)\n && wwd.engine.screenPointToGroundPosition(\n dragRefPt.x + recognizer.translationX - lastTranslation.x,\n dragRefPt.y + recognizer.translationY - lastTranslation.y,\n toPosition\n )) {\n // Backup last translation\n lastTranslation.set(recognizer.translationX, recognizer.translationY)\n // Restore original altitude\n toPosition.altitude = fromPosition.altitude\n // Update movable position\n if (renderable is Movable) renderable.moveTo(wwd.engine.globe, toPosition)\n // Notify callback\n callback.onRenderableMoved(renderable, fromPosition, toPosition)\n // Reflect the change in position on the globe.\n wwd.requestRedraw()\n } else {\n // Probably clipped by near/far clipping plane or off the globe.\n // The position was not updated. Stop the drag.\n recognizer.state = CANCELLED\n }\n }\n }\n ENDED -> {\n val callback = callback\n val position = pickedPosition\n val renderable = pickedRenderable\n if (renderable != null && position != null && callback != null) {\n callback.onRenderableMovingFinished(renderable, position)\n wwd.requestRedraw()\n }\n cancelDragging()\n }\n CANCELLED -> cancelDragging()\n else -> {}\n }\n }\n\n protected val primaryClickRecognizer = ClickRecognizer(wwd.canvas, handlePrimaryClick)\n protected val tapRecognizer = TapRecognizer(wwd.canvas, handlePrimaryClick)\n protected val secondaryClickRecognizer = ClickRecognizer(wwd.canvas, handleSecondaryClick).apply { button = 2 } // Secondary mouse button\n protected val doubleTapRecognizer = TapRecognizer(wwd.canvas, handleSecondaryClick).apply { numberOfTaps = 2 } // Double tap\n protected val dragRecognizer = object : DragRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n protected val panRecognizer = object : PanRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n\n companion object {\n// const val SLOPE = 16\n const val HIGHLIGHT_LOCKED_KEY = \"highlight_locked\"\n }\n\n init {\n wwd.addEventListener(\"mousedown\", handlePick)\n wwd.addEventListener(\"mousemove\", handlePick)\n wwd.addEventListener(\"touchstart\", handlePick)\n wwd.addEventListener(\"touchmove\", handlePick)\n\n // Resolve conflict between item movement and globe rotation\n val controller = wwd.controller\n if (controller is BasicWorldWindowController) {\n controller.primaryDragRecognizer.requireRecognizerToFail(dragRecognizer)\n controller.panRecognizer.requireRecognizerToFail(panRecognizer)\n }\n }\n\n protected fun cancelDragging() {\n isDragging = false\n isDraggingArmed = false\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple taps.\n */\nopen class TapRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfTaps = 1\n var numberOfTouches = 1\n var maxTouchMovement = 20\n var maxTapDuration = 500\n var maxTapInterval = 400\n protected val taps = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n taps.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n\n if (touchCount > numberOfTouches) {\n state = FAILED\n } else if (touchCount == 1) { // first touch started\n taps.add(TouchWrapper(touchCount, clientX, clientY))\n failAfterDelay(maxTapDuration) // fail if the tap is down too long\n } else {\n val tap = taps[taps.size - 1]\n tap.identifier = touchCount // max number of simultaneous touches\n tap.clientX = clientX // touch centroid\n tap.clientY = clientY\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxTouchMovement * window.devicePixelRatio ) state = FAILED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n if (touchCount != 0) return // wait until the last touch ends\n val tapCount = taps.size\n val tap = taps[tapCount - 1]\n if (tap.identifier != numberOfTouches) {\n state = FAILED // wrong number of touches\n } else if (tapCount == numberOfTaps) {\n clientX = taps[0].clientX\n clientY = taps[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxTapInterval) // fail if the interval between taps is too long\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() = timeout?.let { window.clearTimeout(it) }.also { timeout = null }\n}","package earth.worldwind.gesture\n\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger tilt gestures.\n */\nopen class TiltRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : PanRecognizer(target, callback) {\n var maxTouchDistance = 300\n var maxTouchDivergence = 50\n\n companion object {\n const val LEFT = 1 shl 0\n const val RIGHT = 1 shl 1\n const val UP = 1 shl 2\n const val DOWN = 1 shl 3\n }\n\n override fun shouldInterpret(): Boolean {\n for (i in 0 until touchCount) {\n val touch = touch(i)\n val dx = touch.translationX\n val dy = touch.translationY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > interpretDistance) return true // interpret touches when any touch moves far enough\n }\n return false\n }\n\n override fun shouldRecognize(): Boolean {\n if (touchCount < 2) return false\n val touch0 = touch(0)\n val touch1 = touch(1)\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > maxTouchDistance * window.devicePixelRatio) return false // touches must be close together\n val tx = touch0.translationX - touch1.translationX\n val ty = touch0.translationY - touch1.translationY\n val divergence = sqrt((tx * tx + ty * ty).toDouble())\n if (divergence > maxTouchDivergence * window.devicePixelRatio) return false // touches must be moving in a mostly parallel direction\n\n val verticalMask = UP or DOWN\n val dirMask0 = touchDirection(touch0) and verticalMask\n val dirMask1 = touchDirection(touch1) and verticalMask\n return (dirMask0 and dirMask1) != 0 // touches must move in the same vertical direction\n }\n\n protected open fun touchDirection(touch: TouchWrapper): Int {\n val dx = touch.translationX\n val dy = touch.translationY\n var dirMask = 0\n if (abs(dx) > abs(dy)) {\n dirMask = dirMask or if (dx < 0) LEFT else 0\n dirMask = dirMask or if (dx > 0) RIGHT else 0\n } else {\n dirMask = dirMask or if (dy < 0) UP else 0\n dirMask = dirMask or if (dy > 0) DOWN else 0\n }\n return dirMask\n }\n}","package earth.worldwind.gesture\n\n/**\n * Represents a touch point.\n */\nopen class TouchWrapper(\n /**\n * A number uniquely identifying the touch point\n */\n var identifier: Int,\n /**\n * The X coordinate of the touch point's location.\n */\n var clientX: Int,\n /**\n * The Y coordinate of the touch point's location.\n */\n var clientY: Int\n) {\n /**\n * Indicates this touch point's translation along the X axis since the touch started.\n */\n var translationX: Int\n get() = clientX - clientStartX\n set(value) { clientStartX = clientX - value }\n /**\n * Indicates this touch point's translation along the Y axis since the touch started.\n */\n var translationY: Int\n get() = clientY - clientStartY\n set(value) { clientStartY = clientY - value }\n protected var clientStartX = clientX\n protected var clientStartY = clientY\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying elevations from a variety of sources.\n *
\n * ElevationSource supports following source types:\n * - Uniform Resource Locator [URL]\n *
\n * ElevationSource instances are intended to be used as a key into a cache or other data structure that enables sharing\n * of loaded elevation resources. File paths and URLs with the same string representation considered equals.\n */\nactual open class ElevationSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an elevation source with an [URL].\n *\n * @param url Uniform Resource Locator\n *\n * @return the new elevation source\n */\n fun fromUrl(url: URL) = ElevationSource(url.href)\n\n /**\n * Constructs an elevation source with a URL string.\n *\n * @param urlString complete URL string\n *\n * @return the new elevation source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ElevationSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an elevation source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ElevationSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new elevation source\n */\n actual fun fromUnrecognized(source: Any) = when(source) {\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ElevationSource(source)\n }\n }\n\n /**\n * Indicates whether this elevation source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when (source) {\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.formats.geotiff.GeoTiffReader\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport io.ktor.client.fetch.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.await\nimport kotlinx.coroutines.withContext\nimport org.khronos.webgl.*\nimport org.khronos.webgl.ArrayBuffer\nimport org.khronos.webgl.ArrayBufferView\nimport org.khronos.webgl.Uint8Array\nimport kotlin.math.roundToInt\n\nactual open class TiledElevationCoverage actual constructor(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n) : AbstractTiledElevationCoverage(tileMatrixSet, elevationSourceFactory) {\n /**\n * Makes a copy of this elevation coverage\n */\n actual open fun clone() = TiledElevationCoverage(tileMatrixSet, elevationSourceFactory).also {\n it.displayName = displayName\n it.sector.copy(sector)\n }\n\n override suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int) {\n val elevationSource = elevationSourceFactory.createElevationSource(tileMatrix, row, column)\n if (elevationSource.isUrl) {\n val url = elevationSource.asUrl()\n try {\n // Ktor JS Client cannot be used here, because it is not able to return ArrayBuffer directly.\n val response = fetch(url).await()\n if (response.ok) {\n val arrayBuffer = response.arrayBuffer().await()\n val contentType = response.headers.get(\"Content-Type\")\n var message: String? = null\n val buffer = when {\n contentType.equals(\"image/bil\", true) ||\n contentType.equals(\"application/bil\", true) ||\n contentType.equals(\"application/bil16\", true) -> Int16Array(arrayBuffer)\n contentType.equals(\"application/bil32\", true) -> Float32Array(arrayBuffer)\n contentType.equals(\"image/tiff\", true) -> decodeTiffImage(arrayBuffer)\n contentType.equals(\"text/xml\", true) -> {\n message = \"Elevations retrieval failed (${response.statusText}): $url.\\n\"\n +String.asDynamic().fromCharCode.apply(null, Uint8Array(arrayBuffer))\n null\n }\n else -> {\n message = \"Elevations retrieval failed (Unexpected content type $contentType): $url\"\n null\n }\n }?.let { elevationSource.postprocessor?.process(it) ?: it } // Apply buffer transformations\n decodeBuffer(buffer)?.let {\n retrievalSucceeded(key, it, \"Elevation retrieval succeeded: $url\")\n } ?: retrievalFailed(key, message ?: \"Elevations retrieval failed: $url\")\n } else {\n retrievalFailed(key, \"Elevations retrieval failed (${response.statusText}): $url\")\n }\n } catch (e: Throwable) {\n retrievalFailed(key, \"Elevations retrieval failed (${e.message}): $url\")\n }\n } else retrievalFailed(key, \"Unsupported elevation source type\")\n }\n\n private suspend fun decodeTiffImage(arrayBuffer: ArrayBuffer) = withContext(Dispatchers.Default) {\n GeoTiffReader(arrayBuffer).createTypedElevationArray()\n }\n\n protected open fun decodeBuffer(buffer: ArrayBufferView?) = when (buffer) {\n is Int16Array -> ShortArray(buffer.length) { buffer[it] }\n is Float32Array -> ShortArray(buffer.length) {\n val value = buffer[it]\n // Consider converting null value from float to short\n if (value == Float.MAX_VALUE) Short.MIN_VALUE else value.roundToInt().toShort()\n }\n else -> null\n }\n\n protected open fun retrievalSucceeded(key: Long, value: ShortArray, message: String) {\n retrievalSucceeded(key, value)\n if (isLoggable(DEBUG)) log(DEBUG, message)\n }\n\n protected open fun retrievalFailed(key: Long, message: String) {\n retrievalFailed(key)\n log(WARN, message)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nactual open class TiledImageLayer actual constructor(\n name: String?, tiledSurfaceImage: TiledSurfaceImage?\n): AbstractTiledImageLayer(name, tiledSurfaceImage) {\n /**\n * Makes a copy of this image layer\n */\n actual open fun clone() = TiledImageLayer(displayName, tiledSurfaceImage?.clone())\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.util.Level\nimport kotlinx.browser.document\nimport org.khronos.webgl.get\nimport org.khronos.webgl.set\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.math.floor\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nactual open class MercatorImageTile actual constructor(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): AbstractMercatorImageTile(sector, level, row, column) {\n companion object {\n val srcCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val srcCtx = srcCanvas.getContext(\"2d\", js(\"{ willReadFrequently: true }\")) as CanvasRenderingContext2D\n val dstCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val dstCtx = dstCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n\n override suspend fun process(resource: Resource) = if (resource is Image) {\n val width = resource.width\n val height = resource.height\n val widthDouble = resource.width.toDouble()\n val heightDouble = resource.height.toDouble()\n\n // Get source image data\n srcCanvas.width = width\n srcCanvas.height = height\n srcCtx.drawImage(resource, 0.0, 0.0, widthDouble, heightDouble)\n val srcData = srcCtx.getImageData(0.0, 0.0, widthDouble, heightDouble)\n\n // Prepare destination image data\n dstCanvas.width = width\n dstCanvas.height = height\n val dstData = dstCtx.createImageData(widthDouble, heightDouble)\n\n // Re-project mercator tile to equirectangular projection\n val sector = sector as MercatorSector\n val miny = sector.minLatPercent\n val maxy = sector.maxLatPercent\n for (y in 0 until height) {\n val sy = 1.0 - y / (height - 1.0)\n val lat = sy * sector.deltaLatitude.inDegrees + sector.minLatitude.inDegrees\n val dy = (1.0 - (gudermannianInverse(lat.degrees) - miny) / (maxy - miny)).coerceIn(0.0, 1.0)\n val srcRow = floor(dy * (height - 1)).toInt()\n for (x in 0 until width) {\n val src = 4 * (x + srcRow * width)\n val dst = 4 * (x + y * width)\n dstData.data[dst] = srcData.data[src]\n dstData.data[dst + 1] = srcData.data[src + 1]\n dstData.data[dst + 2] = srcData.data[src + 2]\n dstData.data[dst + 3] = srcData.data[src + 3]\n }\n }\n\n // Replace image source with transformed canvas image data\n dstCtx.putImageData(dstData, 0.0, 0.0)\n //resource.src = dstCanvas.toDataURL() // This approach is performance ineffective thus replaced by toBlob()\n dstCanvas.toBlob({\n // Setting new src will call onLoad or onError in RenderResourceCache and continue image retrieval process\n if (it != null) resource.src = URL.createObjectURL(it)\n // Call image.onError in RenderResourceCache to fail retrieval and mark resource as absent\n else resource.onerror?.invoke(\"Error saving canvas to Blob\", \"\", 0, 0, null) as Unit\n })\n\n resource // Do not call super.process to prevent unnecessary onLoad event processing\n } else super.process(resource)\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.CENTER\nimport org.w3c.dom.CanvasTextAlign\n\n/**\n * Holds attributes controlling the style, size and other attributes of [earth.worldwind.shape.Label] shapes and\n * the textual features of [earth.worldwind.shape.Placemark] and other shapes. The values used for these attributes are those\n * defined by the CSS Font property.\n */\nactual open class Font(\n /**\n * The font size.\n */\n var size: Int,\n /**\n * The font family.\n * @see CSS font-family for defined values.\n */\n var family: String = \"sans-serif\",\n /**\n * The font weight.\n * @see CSS font-weight for defined values.\n */\n var weight: String = \"normal\",\n /**\n * The font style.\n * @see CSS font-style for defined values.\n */\n var style: String = \"normal\",\n /**\n * The font variant.\n * @see CSS font-variant for defined values.\n */\n var variant: String = \"normal\",\n /**\n * The horizontal alignment of the font.\n * Recognized values are \"left\", \"center\" and \"right\".\n */\n var horizontalAlignment: CanvasTextAlign = CanvasTextAlign.CENTER\n) {\n actual constructor(): this(14)\n actual constructor(family: String, weight: FontWeight, size: Int): this(\n size, family,\n if (weight == FontWeight.BOLD) \"bold\" else \"normal\",\n if (weight == FontWeight.ITALIC) \"italic\" else \"normal\",\n )\n\n init {\n require(size > 0) {\n logMessage(ERROR, \"Font\", \"constructor\", \"invalidSize\");\n }\n }\n\n actual fun copy(font: Font) {\n size = font.size\n style = font.style\n variant = font.variant\n weight = font.weight\n family = font.family\n horizontalAlignment = font.horizontalAlignment\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Font) return false\n if (size != other.size) return false\n if (style != other.style) return false\n if (variant != other.variant) return false\n if (weight != other.weight) return false\n if (family != other.family) return false\n if (horizontalAlignment != other.horizontalAlignment) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = size\n result = 31 * result + style.hashCode()\n result = 31 * result + variant.hashCode()\n result = 31 * result + weight.hashCode()\n result = 31 * result + family.hashCode()\n result = 31 * result + horizontalAlignment.hashCode()\n return result\n }\n\n /**\n * A string representing this font's style, weight, size and family properties, suitable for\n * passing directly to a 2D canvas context.\n */\n override fun toString() = \"$style $variant $weight ${size}px $family\"\n}","package earth.worldwind.render\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.image.*\nimport earth.worldwind.util.AbsentResourceList\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.kgl.*\nimport kotlinx.browser.window\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.time.Duration.Companion.seconds\n\nactual open class RenderResourceCache(\n capacity: Long = recommendedCapacity(), lowWater: Long = (capacity * 0.75).toLong()\n) : LruMemoryCache(capacity, lowWater) {\n companion object {\n fun recommendedCapacity(): Long = (window.navigator.asDynamic().deviceMemory as? Number)\n ?.let { it.toLong() * 1024 * 1024 * 1024 / 16 * 3 } ?: (512L * 1024 * 1024) // 512 Mb as backup\n }\n\n override var age = 0L // Manually incrementable cache age\n var urlRetrievalQueueSize = 16\n /**\n * Main render resource retrieval scope\n */\n actual val mainScope = MainScope()\n /**\n * Identifies requested resources that whose retrieval failed.\n */\n actual val absentResourceList = AbsentResourceList(3, 60.seconds)\n /**\n * List of retrievals currently in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n\n override fun clear() {\n super.clear()\n currentRetrievals.clear()\n absentResourceList.clear()\n age = 0\n }\n\n actual fun incAge() { ++age }\n\n actual fun releaseEvictedResources(dc: DrawContext) {\n // TODO Implement evicted resources management\n }\n\n actual fun retrieveTexture(imageSource: ImageSource, options: ImageOptions?): Texture? {\n when {\n imageSource.isImage -> {\n // Following type of image sources is already in memory, so a texture may be created and put into the cache immediately.\n return createTexture(options, imageSource.asImage())?.also { put(imageSource, it, it.byteCount) }\n }\n imageSource.isImageFactory -> {\n val factory = imageSource.asImageFactory()\n if (factory.isRunBlocking) {\n // Image factory makes easy operations, so a texture may be created and put into the cache immediately.\n return factory.createImage()?.let { image ->\n createTexture(options, image)?.also { put(imageSource, it, it.byteCount) }\n }\n }\n }\n }\n\n // Ignore retrieval of already requested resources or marked as absent\n if (currentRetrievals.size >= urlRetrievalQueueSize || currentRetrievals.contains(imageSource)\n || absentResourceList.isResourceAbsent(imageSource.hashCode())) return null\n\n // Retrieve remote image source\n when {\n imageSource.isResource -> retrieveRemoteImage(imageSource, options, imageSource.asResource().fileUrl)\n imageSource.isUrl -> retrieveRemoteImage(imageSource, options, imageSource.asUrl())\n imageSource.isImageFactory -> {\n currentRetrievals += imageSource\n mainScope.launch {\n imageSource.asImageFactory().createImage()?.let {\n retrievalSucceeded(imageSource, options, it)\n } ?: retrievalFailed(imageSource)\n }\n }\n }\n\n return null\n }\n\n actual fun retrieveTextFile(fileResource: FileResource, result: (String) -> Unit) {\n mainScope.launch {\n try {\n result(fileResource.getText())\n } catch (e: Throwable) {\n log(ERROR, \"Resource retrieval failed ($fileResource): ${e.message}\")\n }\n }\n }\n\n protected open fun retrieveRemoteImage(imageSource: ImageSource, options: ImageOptions?, src: String) {\n val image = Image()\n var postprocessorExecuted = false\n image.onload = {\n // Check if image postprocessor is assigned and not yet executed.\n // OnLoad event can be called second time by reassigning image.src inside postprocessor.\n val postprocessor = imageSource.postprocessor\n if (postprocessor != null && !postprocessorExecuted) {\n postprocessorExecuted = true // Prevent cyclic processing due to src modification inside postprocessing.\n mainScope.launch { postprocessor.process(image) } // Apply image transformation.\n } else retrievalSucceeded(imageSource, options, image) // Consume original or processed image as retrieved\n if (postprocessor != null) URL.revokeObjectURL(image.src) // Revoke URL possibly created in postprocessor\n }\n image.onerror = { _, _, _, _, _ -> retrievalFailed(imageSource) }\n currentRetrievals += imageSource\n image.crossOrigin = \"anonymous\"\n image.src = src\n }\n\n protected open fun createTexture(options: ImageOptions?, image: TexImageSource): Texture? {\n var (width, height) = when (image) {\n is HTMLImageElement -> image.width to image.height\n is HTMLCanvasElement -> image.width to image.height\n else -> return null\n }\n\n // Process initialWidth and initialHeight if specified\n if (width == 0 || height == 0) {\n // If source image has dimensions, then resize it proportionally to fit initial size restrictions\n val ratioW = if (options != null && options.initialWidth > 0) width / options.initialWidth else 0\n val ratioH = if (options != null && options.initialHeight > 0) height / options.initialHeight else 0\n val ratio = if (ratioH > ratioW) ratioH else ratioW\n if (ratio > 0) {\n width /= ratio\n height /= ratio\n }\n } else if (options != null && options.initialWidth > 0 && options.initialHeight > 0) {\n // If source image has no dimensions (e.g. SVG image), then set initial size of image\n width = options.initialWidth\n height = options.initialHeight\n }\n\n // Create image texture and apply texture parameters\n val texture = ImageTexture(image, width, height)\n if (options?.resamplingMode == ResamplingMode.NEAREST_NEIGHBOR) {\n texture.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n texture.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n }\n if (options?.wrapMode == WrapMode.REPEAT) {\n texture.setTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT)\n texture.setTexParameter(GL_TEXTURE_WRAP_T, GL_REPEAT)\n }\n return texture\n }\n\n protected open fun retrievalSucceeded(source: ImageSource, options: ImageOptions?, image: TexImageSource) {\n // Create texture and put it into cache.\n createTexture(options, image)?.let { put(source, it, it.byteCount) }\n currentRetrievals -= source\n absentResourceList.unmarkResourceAbsent(source.hashCode())\n WorldWind.requestRedraw()\n if (isLoggable(DEBUG)) log(DEBUG, \"Image retrieval succeeded: $source\")\n }\n\n protected open fun retrievalFailed(source: ImageSource) {\n currentRetrievals -= source\n absentResourceList.markResourceAbsent(source.hashCode())\n log(WARN, \"Image retrieval failed: $source\")\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.render.image.ImageTexture\nimport earth.worldwind.shape.TextAttributes\nimport kotlinx.browser.document\nimport org.w3c.dom.*\nimport kotlin.math.ceil\n\nactual open class TextRenderer actual constructor(protected val rc: RenderContext) {\n private val lineSpacing = 0.15 // fraction of font size\n\n /**\n * Creates a texture for a specified text string and specified text attributes.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A texture for the specified text string.\n */\n actual fun renderText(text: String?, attributes: TextAttributes): Texture? =\n if (text?.isNotEmpty() == true) ImageTexture(drawText(text, attributes)) else null\n\n /**\n * Creates a 2D Canvas for a specified text string while considering current TextRenderer state regarding outline\n * usage and color, text color, typeface, and outline width.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A 2D Canvas for the specified text string.\n */\n protected open fun drawText(text: String, attributes: TextAttributes): HTMLCanvasElement {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n\n val textSize = textSize(ctx2D, text, attributes)\n val lines = text.split(\"\\n\")\n val strokeOffset = if (attributes.isOutlineEnabled) attributes.outlineWidth / 2.0 else 0.0\n\n canvas.width = ceil(textSize.x * rc.densityFactor).toInt()\n canvas.height = ceil(textSize.y * rc.densityFactor).toInt()\n\n ctx2D.scale(rc.densityFactor.toDouble(), rc.densityFactor.toDouble())\n ctx2D.font = attributes.font.toString()\n ctx2D.textBaseline = CanvasTextBaseline.BOTTOM\n ctx2D.textAlign = attributes.font.horizontalAlignment\n ctx2D.fillStyle = attributes.textColor.toCssColorString()\n ctx2D.strokeStyle = attributes.outlineColor.toCssColorString()\n ctx2D.lineWidth = attributes.outlineWidth.toDouble()\n ctx2D.lineCap = CanvasLineCap.ROUND\n ctx2D.lineJoin = CanvasLineJoin.ROUND\n\n when (attributes.font.horizontalAlignment) {\n CanvasTextAlign.LEFT -> ctx2D.translate(strokeOffset, 0.0)\n CanvasTextAlign.RIGHT -> ctx2D.translate(textSize.x - strokeOffset, 0.0)\n else -> ctx2D.translate(textSize.x / 2.0, 0.0)\n }\n\n for (i in lines.indices) {\n val line = lines[i]\n ctx2D.translate(0.0, attributes.font.size * (1.0 + lineSpacing) + strokeOffset)\n if (attributes.isOutlineEnabled) ctx2D.strokeText(line, 0.0, 0.0)\n ctx2D.fillText(line, 0.0, 0.0)\n }\n\n return canvas\n }\n\n /**\n * Returns the width and height of a specified text string considering the current typeFace and outline usage.\n * @param ctx2D Canvas rendering context\n * @param text The text string.\n * @param textAttributes Text font, size, color etc.\n * @returns A vector indicating the text's width and height, respectively, in pixels.\n */\n protected open fun textSize(ctx2D: CanvasRenderingContext2D, text: String, textAttributes: TextAttributes): Vec2 {\n if (text.isEmpty()) Vec2()\n\n ctx2D.font = textAttributes.font.toString()\n\n val lines = text.split(\"\\n\")\n var height = lines.size * (textAttributes.font.size * (1.0 + lineSpacing))\n var maxWidth = 0.0\n for (i in lines.indices) maxWidth = maxWidth.coerceAtLeast(ctx2D.measureText(lines[i]).width)\n\n if (textAttributes.isOutlineEnabled) {\n maxWidth += textAttributes.outlineWidth\n height += textAttributes.outlineWidth\n }\n\n return Vec2(maxWidth, height)\n }\n}","package earth.worldwind.render.image\n\nimport dev.icerock.moko.resources.ImageResource\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlinx.browser.document\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.collections.mutableMapOf\nimport kotlin.collections.set\n\n/**\n * Provides a mechanism for specifying images from a variety of sources. ImageSource retains the image source on behalf\n * of the caller, making this information available to WorldWind components that load images on the caller's behalf.\n *
\n * ImageSource supports following source types:\n * - Uniform Resource Locator [URL]\n * - [Image] object\n * - WorldWind [ImageSource.ImageFactory]\n * - Multi-platform resource identifier\n *
\n * ImageSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded images. Images are compared by reference. URLs with the same string representation considered equals.\n */\nactual open class ImageSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n protected val lineStippleFactories = mutableMapOf()\n /**\n * Constructs an image source with a multi-platform resource identifier.\n *\n * @param imageResource the multi-platform resource identifier\n *\n * @return the new image source\n */\n actual fun fromResource(imageResource: ImageResource) = ImageSource(imageResource)\n\n /**\n * Constructs an image source with an [Image]. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param image the [Image] to use as an image source\n *\n * @return the new image source\n */\n fun fromImage(image: Image) = ImageSource(image)\n\n /**\n * Constructs an image source with a [ImageFactory]. WorldWind shapes configured with an image factory image source\n * construct their images lazily, typically when the shape becomes visible on screen.\n *\n * @param factory the [ImageFactory] to use as an image source\n *\n * @return the new image source\n */\n fun fromImageFactory(factory: ImageFactory) = ImageSource(factory)\n\n /**\n * Constructs an image source with an [URL]. The image's dimensions should be no greater than 2048 x 2048.\n *\n * @param url Uniform Resource Locator\n *\n * @return the new image source\n */\n fun fromUrl(url: URL) = ImageSource(url.href)\n\n /**\n * Constructs an image source with a URL string. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param urlString complete URL string\n *\n * @return the new image source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ImageSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an image source with a line stipple pattern. The result is a one-dimensional image with pixels\n * representing the specified stipple factor and stipple pattern. Line stipple images can be used for displaying\n * dashed shape outlines. See [earth.worldwind.shape.ShapeAttributes.outlineImageSource].\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n *\n * @return the new image source\n */\n actual fun fromLineStipple(factor: Int, pattern: Short): ImageSource {\n val lFactor = factor.toLong() and 0xFFFFFFFFL\n val lPattern = pattern.toLong() and 0xFFFFL\n val key = lFactor shl 32 or lPattern\n val factory = lineStippleFactories[key] ?: LineStippleImageFactory(factor, pattern).also {\n lineStippleFactories[key] = it\n }\n return ImageSource(factory)\n }\n\n /**\n * Constructs an image source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ImageSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new image source\n */\n actual fun fromUnrecognized(source: Any) = when (source) {\n is ImageResource -> fromResource(source)\n is Image -> fromImage(source)\n is ImageFactory -> fromImageFactory(source)\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ImageSource(source)\n }\n }\n\n /**\n * Indicates whether this image source is a multi-platform resource.\n */\n val isResource get() = source is ImageResource\n /**\n * Indicates whether this image source is a [Image].\n */\n val isImage get() = source is Image\n /**\n * Indicates whether this image source is an image factory.\n */\n val isImageFactory get() = source is ImageFactory\n /**\n * Indicates whether this image source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source multi-platform resource identifier. Call isResource to determine whether the source is a\n * Multi-platform resource.\n */\n fun asResource() = source as ImageResource\n\n /**\n * @return the source [Image]. Call [isImage] to determine whether the source is a [Image].\n */\n fun asImage() = source as Image\n\n /**\n * @return the source [ImageFactory]. Call isImageFactory to determine whether the source is an image\n * factory.\n */\n fun asImageFactory() = source as ImageFactory\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when(source) {\n is ImageResource -> \"Resource: $source\"\n is Image -> \"Image: $source\"\n is ImageFactory -> \"ImageFactory: $source\"\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n\n /**\n * Factory for delegating construction of images. WorldWind shapes configured with a ImageFactory construct\n * their images lazily, typically when the shape becomes visible on screen.\n */\n interface ImageFactory {\n /**\n * Image factory runs asynchronously by default, but this behavior can be changed by overriding current attribute.\n */\n val isRunBlocking: Boolean get() = false\n\n /**\n * Returns the image associated with this factory. This method may be called more than once and may be called\n * from a non-UI thread. Each invocation must return an image with equivalent content, dimensions and\n * configuration. Any side effects applied to the WorldWind scene by the factory must be executed on the main\n * thread.\n *\n * @return the image associated with this factory\n */\n fun createImage(): TexImageSource?\n }\n\n protected open class LineStippleImageFactory(protected val factor: Int, protected val pattern: Short): ImageFactory {\n override fun createImage(): TexImageSource {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n canvas.width = if (factor <= 0) 16 else factor * 16\n canvas.height = 1\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n ctx2D.strokeStyle = \"white\"\n ctx2D.beginPath()\n if (factor <= 0) {\n ctx2D.moveTo(0.0, 0.5)\n ctx2D.lineTo(canvas.width.toDouble(), 0.5)\n } else {\n var offset = 0\n for (bi in 0..15) {\n val bit = pattern.toInt() and (1 shl bi)\n if (bit != 0) {\n ctx2D.moveTo(offset.toDouble(), 0.5)\n ctx2D.lineTo((offset + factor).toDouble(), 0.5)\n }\n offset += factor\n }\n }\n ctx2D.stroke()\n return canvas\n }\n\n override fun toString() = \"LineStippleCanvasFactory factor=$factor, pattern=\" + (pattern.toInt() and 0xFFFF).toString(16).uppercase()\n }\n\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.TexImageSource\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\n\nopen class ImageTexture(image: TexImageSource, width: Int, height: Int) : Texture(width, height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: TexImageSource? = image\n override val hasMipMap = isPowerOfTwo(width) && isPowerOfTwo(height)\n\n constructor(image: HTMLImageElement) : this(image, image.width, image.height)\n\n constructor(image: HTMLCanvasElement) : this(image, image.width, image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.Tile\nimport org.w3c.dom.Image\nimport org.w3c.dom.events.Event\n\nactual open class ImageTile actual constructor(\n sector: Sector, level: Level, row: Int, column: Int\n): Tile(sector, level, row, column), ResourcePostprocessor {\n actual var imageSource: ImageSource? = null\n actual var cacheSource: ImageSource? = null\n\n /**\n * Repeat image.onLoad event defined in RenderResourceCache to continue retrieval of original unprocessed image\n */\n override suspend fun process(resource: Resource): Resource {\n if (resource is Image) {\n resource.onload?.invoke(Event(\"load\"))\n }\n return resource\n }\n}","package earth.worldwind.util\n\n/**\n * Logs selected message types to the console.\n */\nactual object Logger {\n actual val ERROR = 1\n actual val WARN = 2\n actual val INFO = 3\n actual val DEBUG = 4\n\n /**\n * Indicates the current logging level [ERROR], [WARN], [INFO] or [DEBUG].\n */\n var loggingLevel = ERROR\n\n actual fun isLoggable(priority: Int) = priority in ERROR until loggingLevel\n\n actual fun log(priority: Int, message: String, tr: Throwable?) {\n if (isLoggable(priority)) {\n val messageWithTrace = tr?.run { message + '\\n' + stackTraceToString() } ?: message\n when (priority) {\n ERROR -> console.error(messageWithTrace)\n WARN -> console.warn(messageWithTrace)\n INFO -> console.info(messageWithTrace)\n else -> console.log(messageWithTrace)\n }\n }\n }\n\n actual fun logMessage(level: Int, className: String, methodName: String, message: String, tr: Throwable?) =\n makeMessage(className, methodName, message).also { log(level, it, tr) }\n\n actual fun makeMessage(className: String, methodName: String, message: String) =\n \"$className.$methodName: ${messageTable[message] ?: message}\"\n}","package earth.worldwind.util\n\n/**\n * JS use BasicPool instead of SynchronizedPool\n */\nactual class SynchronizedPool: BasicPool()","package earth.worldwind.util.kgl\n\nimport org.khronos.webgl.*\n\nactual data class KglShader(val obj: WebGLShader? = null) {\n actual companion object{ actual val NONE = KglShader() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglProgram(val obj: WebGLProgram? = null) {\n actual companion object{ actual val NONE = KglProgram() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglUniformLocation(val obj: WebGLUniformLocation? = null) {\n actual companion object{ actual val NONE = KglUniformLocation() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglBuffer(val obj: WebGLBuffer? = null) {\n actual companion object{ actual val NONE = KglBuffer() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglTexture(val obj: WebGLTexture? = null) {\n actual companion object{ actual val NONE = KglTexture() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglFramebuffer(val obj: WebGLFramebuffer? = null) {\n actual companion object{ actual val NONE = KglFramebuffer() }\n actual fun isValid() = obj != null\n}\n\nclass WebKgl(val gl: WebGLRenderingContext) : Kgl {\n\n override val hasMaliOOMBug = false\n\n override fun getParameteri(pname: Int): Int = gl.getParameter(pname) as Int\n\n override fun getParameterf(pname: Int): Float = gl.getParameter(pname) as Float\n\n override fun getParameteriv(pname: Int): IntArray = gl.getParameter(pname) as IntArray\n\n override fun getParameterfv(pname: Int): FloatArray = gl.getParameter(pname) as FloatArray\n\n override fun createShader(type: Int) = KglShader(gl.createShader(type))\n\n override fun shaderSource(shader: KglShader, source: String) = gl.shaderSource(shader.obj, source)\n\n override fun compileShader(shader: KglShader) = gl.compileShader(shader.obj)\n\n override fun deleteShader(shader: KglShader) = gl.deleteShader(shader.obj)\n\n override fun getShaderParameteri(shader: KglShader, pname: Int): Int {\n val value = gl.getShaderParameter(shader.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getProgramInfoLog(program: KglProgram): String = gl.getProgramInfoLog(program.obj) ?: \"\"\n\n override fun getShaderInfoLog(shader: KglShader): String = gl.getShaderInfoLog(shader.obj) ?: \"\"\n\n override fun createProgram() = KglProgram(gl.createProgram())\n\n override fun deleteProgram(program: KglProgram) = gl.deleteProgram(program.obj)\n\n override fun attachShader(program: KglProgram, shader: KglShader) = gl.attachShader(program.obj, shader.obj)\n\n override fun linkProgram(program: KglProgram) = gl.linkProgram(program.obj)\n\n override fun useProgram(program: KglProgram) = gl.useProgram(program.obj)\n\n override fun getProgramParameteri(program: KglProgram, pname: Int): Int {\n val value = gl.getProgramParameter(program.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getUniformLocation(program: KglProgram, name: String) =\n KglUniformLocation(gl.getUniformLocation(program.obj, name))\n\n override fun bindAttribLocation(program: KglProgram, index: Int, name: String) =\n gl.bindAttribLocation(program.obj, index, name)\n\n override fun createBuffer() = KglBuffer(gl.createBuffer())\n\n override fun bindBuffer(target: Int, buffer: KglBuffer) = gl.bindBuffer(target, buffer.obj)\n\n override fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int) {\n val len = size / 2\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun deleteBuffer(buffer: KglBuffer) = gl.deleteBuffer(buffer.obj)\n\n override fun vertexAttribPointer(\n location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int\n ) = gl.vertexAttribPointer(location, size, type, normalized, stride, offset)\n\n override fun enableVertexAttribArray(location: Int) = gl.enableVertexAttribArray(location)\n\n override fun disableVertexAttribArray(location: Int) = gl.disableVertexAttribArray(location)\n\n override fun enable(cap: Int) = gl.enable(cap)\n\n override fun disable(cap: Int) = gl.disable(cap)\n\n override fun uniform1f(location: KglUniformLocation, f: Float) =\n gl.uniform1f(location.obj, f)\n\n override fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 1\n gl.uniform1fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform1i(location: KglUniformLocation, i: Int) =\n gl.uniform1i(location.obj, i)\n\n override fun uniform2f(location: KglUniformLocation, x: Float, y: Float) =\n gl.uniform2f(location.obj, x, y)\n\n override fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 2\n gl.uniform2fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform2i(location: KglUniformLocation, x: Int, y: Int) =\n gl.uniform2i(location.obj, x, y)\n\n override fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float) =\n gl.uniform3f(location.obj, x, y, z)\n\n override fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 3\n gl.uniform3fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int) =\n gl.uniform3i(location.obj, x, y, z)\n\n override fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float) =\n gl.uniform4f(location.obj, x, y, z, w)\n\n override fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 4\n gl.uniform4fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int) = gl.uniform4i(location.obj, x, y, z, w)\n\n override fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 9\n gl.uniformMatrix3fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 16\n gl.uniformMatrix4fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun lineWidth(width: Float) = gl.lineWidth(width)\n\n override fun polygonOffset(factor: Float, units: Float) = gl.polygonOffset(factor, units)\n\n override fun cullFace(mode: Int) = gl.cullFace(mode)\n\n override fun frontFace(mode: Int) = gl.frontFace(mode)\n\n override fun depthFunc(func: Int) = gl.depthFunc(func)\n\n override fun depthMask(mask: Boolean) = gl.depthMask(mask)\n\n override fun blendFunc(sFactor: Int, dFactor: Int) = gl.blendFunc(sFactor, dFactor)\n\n override fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean) = gl.colorMask(r, g, b, a)\n\n override fun viewport(x: Int, y: Int, width: Int, height: Int) = gl.viewport(x, y, width, height)\n\n override fun clear(mask: Int) = gl.clear(mask)\n\n override fun clearColor(r: Float, g: Float, b: Float, a: Float) = gl.clearColor(r, g, b, a)\n\n override fun createTexture() = KglTexture(gl.createTexture())\n\n override fun deleteTexture(texture: KglTexture) = gl.deleteTexture(texture.obj)\n\n override fun texImage2D(\n target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?\n ) = gl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer?.unsafeCast())\n\n override fun activeTexture(texture: Int) = gl.activeTexture(texture)\n\n override fun bindTexture(target: Int, texture: KglTexture) = gl.bindTexture(target, texture.obj)\n\n override fun generateMipmap(target: Int) = gl.generateMipmap(target)\n\n override fun texParameteri(target: Int, pname: Int, value: Int) = gl.texParameteri(target, pname, value)\n\n override fun drawArrays(mode: Int, first: Int, count: Int) = gl.drawArrays(mode, first, count)\n\n override fun drawElements(mode: Int, count: Int, type: Int, offset: Int) = gl.drawElements(mode, count, type, offset)\n\n override fun getError() = gl.getError()\n\n override fun finish() = gl.finish()\n\n override fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer) = gl.bindFramebuffer(target, framebuffer.obj)\n\n override fun createFramebuffer() = KglFramebuffer(gl.createFramebuffer())\n\n override fun deleteFramebuffer(framebuffer: KglFramebuffer) = gl.deleteFramebuffer(framebuffer.obj)\n\n override fun checkFramebufferStatus(target: Int) = gl.checkFramebufferStatus(target)\n\n override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int) =\n gl.framebufferTexture2D(target, attachment, textarget, texture.obj, level)\n\n override fun readPixels(\n x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray\n ) = gl.readPixels(x, y, width, height, format, type, Uint8Array(buffer.unsafeCast().buffer))\n\n override fun pixelStorei(pname: Int, param: Int) = gl.pixelStorei(pname, param)\n}\n","package earth.worldwind.util.locale\n\nimport kotlinx.browser.window\n\nactual val language = window.navigator.language.split('-')[0]\nactual val country = window.navigator.language.split('-')[1]",null,null,null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.Instant\n\nactual fun convertToInstant(t: Any) = when(t) {\n is kotlin.js.Date -> Instant.fromEpochMilliseconds(t.getTime().toLong())\n else -> throw IllegalArgumentException(\"Can't convert to LocalDateTime: $t\")\n}\n",null,"package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\n\n/**\n * Represents transformations between geographic coordinates and Cartesian coordinates. GeographicProjection specifies\n * the Cartesian coordinate system used by Globe and WorldWindow.\n */\ninterface GeographicProjection {\n /**\n * This projection's display name.\n */\n val displayName: String\n /**\n * Indicates whether this projection is a 2D projection.\n */\n val is2D: Boolean get() = false\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous: Boolean get() = false\n /**\n * Indicates the geographic limits of this projection.\n * May be null to indicate the full range of latitude and longitude.\n */\n val projectionLimits: Sector? get() = null // Sector().setFullSphere()\n\n /**\n * Converts a geographic position to Cartesian coordinates.\n *\n * @param globe the globe this projection is applied to\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3\n\n fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3\n\n fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4\n\n fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?,\n verticalExaggeration: Float, origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray\n\n fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray\n\n /**\n * Converts a Cartesian point to a geographic position.\n *\n * @param globe Globe model\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position\n\n fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4\n\n /**\n * Computes the first intersection of a specified globe and line. The line is interpreted as a ray; intersection\n * points behind the line's origin are ignored.\n *\n * @param globe the globe this projection is applied to\n * @param line the line to intersect with the globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(globe: Globe, line: Line, result: Vec3): Boolean\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.TileFactory\n\ninterface MercatorTileFactory : TileFactory {\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) =\n MercatorImageTile(sector as MercatorSector, level, row, column).apply {\n imageSource = getImageSource(column, (1 shl level.levelNumber) - 1 - row, level.levelNumber)?.also {\n it.postprocessor = this\n }\n }\n\n fun getImageSource(x: Int, y: Int, z: Int): ImageSource?\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.render.Renderable\n\n/**\n * Interface for processing user input to interact with renderables.\n */\ninterface SelectDragCallback {\n /**\n * Nothing was picked due to picking point is outside the terrain.\n */\n fun onNothingPicked() {}\n\n /**\n * Nothing context was requested due to selected point is outside the terrain.\n */\n fun onNothingContext() {}\n\n /**\n * Terrain position was picked.\n *\n * @param position picked terrain position\n */\n fun onTerrainPicked(position: Position) {}\n\n /**\n * Terrain context at some position was requested.\n *\n * @param position picked terrain position\n */\n fun onTerrainContext(position: Position) {}\n\n /**\n * Check if renderable is pick-able.\n *\n * @param renderable some renderable intended to be picked\n * @return renderable is pick-able\n */\n fun canPickRenderable(renderable: Renderable) = false\n\n /**\n * Some renderable was picked.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderablePicked(renderable: Renderable, position: Position) {}\n\n /**\n * Some renderables context was requested.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderableContext(renderable: Renderable, position: Position) {}\n\n /**\n * Check if picked renderable is movable.\n *\n * @param renderable picked renderable\n * @return picked renderable is movable\n */\n fun canMoveRenderable(renderable: Renderable) = false\n\n /**\n * Renderable was moved from ane position to another.\n *\n * @param renderable picked renderable which is moving\n * @param fromPosition previous position\n * @param toPosition current position\n */\n fun onRenderableMoved(renderable: Renderable, fromPosition: Position, toPosition: Position) {}\n\n /**\n * Renderable movement was finished\n *\n * @param renderable renderable which was moved\n * @param position last position during movement\n */\n fun onRenderableMovingFinished(renderable: Renderable, position: Position) {}\n\n /**\n * Renderable was double-tapped or double-clicked\n *\n * @param renderable renderable which was double-tapped or double-clicked\n * @param position picked terrain or renderable center position\n */\n fun onRenderableDoubleTap(renderable: Renderable, position: Position) {}\n}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(960);\n"],"names":["root","factory","exports","module","define","amd","this","createErrorType","name","init","superErrorClass","JsJodaException","message","Error","captureStackTrace","constructor","stack","apply","arguments","toString","prototype","Object","create","DateTimeException","cause","msg","DateTimeParseException","text","index","parsedString","errorIndex","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","_inheritsLoose","subClass","superClass","__proto__","_assertThisInitialized","self","ReferenceError","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","assert$1","freeze","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","matches","RegExp","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","nanoString","rval","slice","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","prop","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","MONTHS","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","valueOf","dayOfWeek","style","locale","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","p1","p2","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","date","time","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","_ch","ap","hap","nod","cod","lod","sod","mod","los","cos","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","year","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","PARSER","PARSER$1","PARSER$2","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","UTC","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","MAX_WIDTH$1","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","_zeroSecs","_hi","_lo","_ldt","div","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","day","hour","secVal","nanoVal","sec","toEpochSecond","StringBuilder","_str","end","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","MonthDay","dayOfMonth","_month","_day","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","MAX_VALUE","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","f","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","withOffsetSameLocal","compare","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN_VALUE","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","used","jsJodaExports","use","fn","otherFormats","mainFormat","item","others","main","onZero","padding","structure","","isoDayNumber","receiver","timeZoneId","$this$Format","$this$alternativeParsing","$this$optional","contents","year$factory","monthNumber$factory","dayOfMonth$factory","hour$factory","hourOfAmPm$factory","amPm$factory","minute$factory","second$factory","isNegative$factory","totalHoursAbs$factory","minutesOfHour$factory","secondsOfMinute$factory","timeZoneId$factory","actualBuilder","actualFormat","reference","","ifZero","alternativeFormats","primaryFormat","monthNumber","isoDayOfWeek","names","element","ix2","isYearOfEra","$this$build","hourOfAmPm","amPm","nanosecond","zerosToAdd","totalHoursAbs","minutesOfHour","secondsOfMinute","spacePadding","outputPlusOnExceededWidth","NamedUnsignedIntFieldFormatDirective$getStringValue$ref","NamedUnsignedIntFieldFormatDirective$getStringValue$ref$lambda","target","getStringValue","accessor","defaultValue","property","minValue","maxValue","formats","directive","string","withPlusSign","Accessor$getter$ref","Accessor$getter$ref$lambda","Truth$test$ref","Truth$test$ref$lambda","$this_buildList","expectedValue","getter","predicates","allSubFormatsNegative","alwaysOutputSign","formatters","zeroPadding","setter","expected","whatThisExpects","conflicting","multiplyByMinus1","input","initialContainer","startIndex","errors","parseOptions","state","inputPosition","parserStructure","ix","commands","operations","followedBy","accumulator","iterator","unconditionalModifications","newOperations","currentNumberSpan","unconditionalModificationsForTails","op","simplified","list","mergedTails","firstOperation","it","withMinus","minNumberLength","maxNumberLength","maxPaddedNumberLength","accumulated","accumulatedWidth","prepadding","children","isTerminal","trie","newChildren","child","grandChildKey","grandChild","StringSetParserOperation$lambda","strings","node","searchResult","","consumerLengths","$numberString","$i","$error","consumers","sum","$input","$startIndex","isNegativeSetter","operation","$withMinus","$setter","$name","fractionalPart","digits","ofZone","zoneOffset","DateTimeFormatException_init_$Init$","DateTimeArithmeticException_init_$Init$","IllegalTimeZoneException_init_$Init$","","block","truncatedDate","secDelta","epochDays","intermediate","matched","String$toString$ref$lambda","Accessor$getterNotNull$ref","Accessor$getterNotNull$ref$lambda","plusOnExceedsWidth","parsers","container","oldValue","suffix","wasNegative","SignedFormatStructure$formatter$checkIfAllNegative$ref$lambda","this$0","seenNonZero","check","default","Predicate$test$ref","predicate","Predicate$test$ref$lambda","storage","numerator","indexOfNextUnparsed","$index","nextIndex","$conflictingValue","$value","conflictingValue","lastMatch","digitsInRow","$digitsInRow","numberString","$char","newDigits","denominator","decoder","epochMilliseconds","epochSeconds","nanosecondAdjustment","q","timeZone","ResourcePlatformDetails","engine","AbstractTutorial","ElevationHeatmapLayer","Color","Ellipse","GKGraticuleLayer","MGRSGraticuleLayer","Path","listOf","Polygon","thickenLine","ShowTessellationLayer","SurfaceImage","scope","window","$currentTutorial","$tutorials","$actionsContainer","$wwd","document","getElementById","wwd","WorldWindow","tutorialSelect","projectionSelect","actionsContainer","tutorials","mapOf","BasicTutorial","CameraViewTutorial","LookAtViewTutorial","PlacemarksTutorial","PathsTutorial","PolygonsTutorial","EllipsesTutorial","ShapesDashAndFillTutorial","LabelsTutorial","SightlineTutorial","SurfaceImageTutorial","ShowTessellationTutorial","MGRSGraticuleTutorial","GKGraticuleTutorial","WmsLayerTutorial","WmtsLayerTutorial","WcsElevationTutorial","ElevationHeatmapTutorial","projections","Wgs84Projection","MercatorProjection","currentTutorial","BackgroundLayer","StarFieldLayer","AtmosphereLayer","BasicElevationCoverage","innerHTML","onchange","event","$projections","actionName","$actionName","onclick","tutorial","projectionName","setCameraAction","aircraft","airport","heading","distanceMeters","tilt","LookAt","setLookAtAction","altitude","Position","positionView","mtRainier","eye","distance","$this$launch","$completion","launch","renderable","FileResource","identifier","userObject","layer","terrainPosition","po","MutableSharedFlow","asSharedFlow","gl","renderResourceCache","globe","tessellator","frameController","frameMetrics","Globe","BasicTessellator","BasicFrameController","LayerList","Camera","GoToAnimator","RenderContext","DrawContext","initLocation","initAltitude","BufferPool","VertexAttrib","DrawElements","lhs","rhs","DrawShapeState","bindTexture","dc","BoundingBox","DrawableQueue","inDegrees","angle","degrees","radians","coerceIn","adjustExtremes","rExtremes","s","sExtremes","t","tExtremes","p","pdr","pds","pdt","swapAxes","aExtremes","bExtremes","tmp","intersectsAt","plane","effectiveRadius","dq1","bq1","bq2","z","Vec3","Ellipsoid","semiMajorAxis","inverseFlattening","Frustum_init_$Init$","Viewport","Line_init_$Init$","Location_init_$Init$","latitude","longitude","LookAt_init_$Init$","altitudeMode","roll","Matrix3_init_$Init$","Matrix4_init_$Init$","xUnits","yUnits","Position_init_$Init$","Location","Range_init_$Init$","lower","upper","Sector_init_$Init$","sector","minLatitude","maxLatitude","minLongitude","maxLongitude","matrixWidth","matrixHeight","tileWidth","tileHeight","entries","Vec2_init_$Init$","Vec3_init_$Init$","Vec2","Viewport_init_$Init$","height","HelmertParameters","dX","dY","dZ","omegaX","omegaY","omegaZ","fromEllipsoid","toEllipsoid","MGRSString","convertUTMToMGRS","easting","northing","gridEasting","gridNorthing","east","north","letters","roundMGRS","getGridValues","setNumber","aaPattern","errorCode","getLatitudeLetter","latDeg","makeMGRSString","floorValue","intValue","j","iEast","sEast","iNorth","sNorth","hemisphere","PolarCoordConverter","ellipsoid","projection","ElevationModel","LruMemoryCache","$key","$tileMatrix","$row","$column","tileMatrixSet","elevationSourceFactory","AbstractElevationCoverage","AbsentResourceList","MainScope","serviceAddress","coverageName","outputFormat","resolution","buildTileMatrixSet","buildElevationSourceFactory","coverage","imageFormat","tiles","triStripElements","toList","level","row","column","$level","Tile","lazy","tiledSurfaceImage","RenderableLayer","imageSource","imageOptions","ImageOptions","surfaceImage","AbstractLayer","asInt","AbstractShaderProgram","AbstractAtmosphereProgram","greatCircleIntersectionAtLongitude","deltaLon","getDeltaLongitude","midPoint","greatCircleMidPoint","greatCircleIntersectionAtLatitude","azimuth","GraticuleSupport","AbstractTile","initRenderingParams","params","applyRenderingParams","opacity","o","color","applyOpacity","compArray","colorValue","path","getLineShapeAttributes","createLineShapeAttributes","attrs","lineWidth","getVisibleTiles","rc","tileList","vs","gridRectangle","getGridRectangleForSector","x1","x2","col","tile","callback","rows","cols","factor","toWgsParameters","fromWgsParameters","AbstractGraticuleLayer","GridTilesSupport","GKOverview","GKMetricLabels","renderLabel","appropriateType","label","shouldRenderLabel","shouldRenderSmallScale","shouldRenderMinimalScale","getTypeWithBiggerScale","generateMeridiansAndParallels","shouldGenerateMeridian","generateWestMeridian","minLon","minLat","latStep","positions","westLine","GridElement","shouldGenerateParallel","generateNorthParallel","lonStep","northLine","gkSector","tileType","previousName","countInParent","childNumber","AbstractGraticuleTile","getMillionNameByCoord","addLabel","point","labelType","labelBy","rowOrCol","takeLast","createLine","firstPosition","nextPosition","lineWithIntersection","intersectPoint","anotherPoint","startPoint","movedByXPoint","lineX","mutableListOf","getTypeLine","intersect","point1","point2","x3","y3","x4","y4","getWGSPositionFromXY","minXMinY","minXMaxY","maxXMaxY","maxXMinY","ZoneExtremes","removeLabels","yLabel","checkIfOutOfZone","xLabel","getTypeBy","shouldClean","isNotInScale","tooFar","getDistanceBy","scaleModulo","maxResolution","selectMGRSRenderables","getVisibleZones","zoneList","rectangle","coerceAtLeast","maxLat","gridSector","getGridColumn","y1","getGridRow","y2","MGRSGridZone","coerceAtMost","getGridSector","maxLon","AbstractUTMGraticuleLayer","MGRSOverview","setSquareName","sz","tenMeterDegree","mgrs","utm","","isPointInRange","altitudeAboveGround","UTMZone","UTMZoneSector","SWEasting","SWNorthing","UTMSquareSector","","adjustDateLineCrossingPoints","corners","locationsCrossDateLine","locations","posNext","delta","lonSign","corner","boundingSector","lat","lon","Sector","isNorthNeighborInView","isEastNeighborInView","ImageTile","getX","getY","getTilesX","tileDelta","getTilesY","minLatPercent","maxLatPercent","TiledImageLayer","tileFactory","levelSet","TiledSurfaceImage","isTransparent","MercatorTiledImageLayer","$urlParts","$randomValue","$randomValues","seen1","datatype","arraysize","ucd","serializationConstructorMarker","metadata","data","starDataSource","TiledElevationCoverage","coordinateSystem","$wmsTileFactory","serviceMetadata","layerName","layerNames","decodeWmsCapabilities","xmlText","withContext","$this$withContext","createWmsImageLayer","wmsLayers","WmsImageLayer","joinToString","createWmsSurfaceImage","layerLimit","wmsLayerConfig","levelSetConfig","config","$this$$receiver","$xmlText","lc","l","wmsVersion","styleNames","decodeWmtsCapabilities","createWmtsImageLayer","wmtsLayer","WmtsImageLayer","createWmtsSurfaceImage","determineCompatibleTileMatrixSet","tileMatrixSets","directAxisOrder","tileMatrices","minX","maxY","scaleDenominator","previousHeight","previousWidth","previousCorner","tileMatrix","topLeftCorner","toDouble","createWmtsTileFactory","w","resourceUrl","WmtsTileFactory","baseUrl","determineKvpUrl","dcp","getMethods","constraints","styleIdentifier","buildWmtsKvpTemplate","kvpServiceAddress","createWmtsLevelSet","pixelSpan","tileSpanX","tileSpanY","maxX","minY","deltaX","deltaY","template","tileMatrixIdentifiers","firstLevelHeight","title","onlineResource","logoURL","CRS","minx","maxx","miny","maxy","resx","resy","version","updateSequence","service","capability","request","layers","exception","emptyList","WmsException","addressType","address","city","stateOrProvince","postCode","country","voiceTelephone","facsimileTelephone","electronicMailAddress","contactAddress","contactPersonPrimary","contactPerson","contactOrganization","post","http","unitSymbol","multipleValues","nearestValue","south","west","authority","abstract","keywordList","_styles","_referenceSystems","_geographicBoundingBox","_boundingBoxes","_dimensions","_attribution","_authorityUrls","identifiers","metadataUrls","dataUrls","featureListUrls","_maxScaleDenominator","_minScaleDenominator","isQueryable","_cascaded","isOpaque","isNoSubsets","_fixedWidth","_fixedHeight","url","getCapabilities","getMap","getFeatureInfo","dcpType","fees","accessConstraints","contactInformation","maxHeight","legendUrls","styleSheetUrl","styleUrl","deliveryPoints","administrativeArea","postalCode","electronicMailAddresses","crs","lowerCorner","upperCorner","allowedValues","phone","hoursOfService","contactInstructions","postMethods","dcps","voice","fax","individualName","positionName","contactInfo","role","keywords","serviceType","serviceTypeVersions","providerName","serviceContact","serviceIdentification","serviceProvider","operationsMetadata","themes","serviceMetadataUrls","unitOfMeasure","valueDefault","boundingBoxes","wgs84BoundingBox","styles","infoFormats","tileMatrixSetLinks","resourceUrls","dimensions","resourceType","isDefault","layerRefs","tileMatrixIdentifier","minTileRow","maxTileRow","minTileCol","maxTileCol","supportedCrs","wellKnownScaleSet","boundingBox","tileMatrixSetLimits","AbstractRenderable","Color_init_$Init$","red","green","blue","alpha","attributes","TextRenderer","TextCacheKey","isRT","byteCount","appendBuffer","allocNewBuffer","usage","blockSize","blockCount","AbstractBufferObject","imageConfig","center","majorRadius","minorRadius","AbstractShape","RenderData","BoundingSphere","PlacemarkAttributes_init_$Init$","imageColor","imageOffset","imageScale","minimumImageScale","isDrawLabel","isDrawLeader","isDepthTest","labelAttributes","leaderAttributes","GLUtessellatorCallbackAdapter","ShapeAttributes_init_$Init$","isDrawInterior","isDrawOutline","isDrawVerticals","isDepthWrite","isLightingEnabled","interiorColor","outlineColor","outlineWidth","interiorImageSource","outlineImageSource","AbstractSurfaceRenderable","TextAttributes_init_$Init$","font","textColor","textOffset","isOutlineEnabled","maxTrys","minCheckInterval","source","levelNumber","roundToInt","tileOrigin","firstLevelDelta","numLevels","levelOffset","Level","capacity","lowWater","declination","rightAscension","keepWidth","roundUp","","nextDigit","pointPos","mb","","","","invalidFormat","","createTimeField","upperCase","tz","offsetAt","createIntegerField","insertField","createHexField","createOctalField","createCharacter","endStage","setDone","toInt","endStage$default","padStart","padEnd","insertField$default","createFloat","fractionPartLength","roundToLong","fl","rest","fractionalFormat","createScientific","ExponentFormatter","createAutoFloat","args","StringFormat","eUp","head","frame","leq","GLUvertex","GLUface","GLUhalfEdge","makeDormant","requireState","newState","gotoState","addVertex","coords","vertexData","flushCache","vertex","CachedVertex","dot","u","v","PriorityQ","PQnode","PQhandleElem","lt","swap","PriorityQHeap","FaceCount_init_$Init$","eStart","render","marked","addToTrail","freeTrail","isEven","RenderFan","RenderStrip","RenderTriangle","addWinding","eDst","eSrc","regionBelow","regionAbove","$tess","connectTimeout","requestTimeout","HttpClient","$config","$connectTimeout","$requestTimeout","$this$HttpClient","$this$install","$this$null","unitSquareTransform","modulus","WorldWindowController","EventListener","keyCode","preventDefault","tabIndex","focus","canvas","cacheCapacity","WorldWind","WebKgl","RenderResourceCache","BasicWorldWindowController","KeyboardControls","SelectDragDetector","Frame","preventDefaultListener","onGestureEvent","navigator","maxTouchPoints","setProperty","addEventListener","statusMessage","keyId","tiffTagLocation","valueOffset","parseBlock","returnElevation","compression","bytesPerPixel","blockByteCount","blockOffset","bitsPerSample","sampleFormat","parseUncompressedBlock","byteOffset","pixel","bytesPerSample","sampleOffset","parsePackBitsCompressedBlocks","arrayBuffer","Int8Array","uncompressedDataView","DataView","buffer","newBlock","blockLength","numOfIterations","uncompressedOffset","nextSourceByte","getInt8","currentByte","setInt8","geoTiffImageToPCS","xValue","yValue","parseImageFileDirectory","noOfDirectoryEntries","directoryEntries","tag","TiffIFDEntry","nextIfdOffset","GeoTiffMetadata","getEndianness","isTiffFileType","getMetadataFromImageFileDirectory","ifd","parseGeoKeys","isGeoTiff","getIFDByTag","geoKeyDirectory","numberOfKeys","GeoTiffKeyEntry","setBBox","upperLeft","upperRight","lowerLeft","geoTiffData","isLittleEndian","GestureRecognizer","clientX","clientY","DragRecognizer","PanRecognizer","changedTouches","pickPoint","pickList","redrawRequired","highlighted","topPickedObject","recognizer","toPosition","fromPosition","clapToGround","movePoint","ClickRecognizer","TapRecognizer","controller","AbstractSource","decodeTiffImage","$arrayBuffer","AbstractTiledElevationCoverage","AbstractTiledImageLayer","createElement","getContext","willReadFrequently","$resource","URL","createObjectURL","onerror","resource","AbstractMercatorImageTile","Font_init_$Init$","family","weight","variant","horizontalAlignment","$imageSource","$options","$result","$fileResource","$postprocessor","$image","$postprocessorExecuted","postprocessor","revokeObjectURL","src","image","Texture","isPowerOfTwo","BasicPool","KglShader","KglProgram","KglUniformLocation","KglBuffer","KglTexture","KglFramebuffer","language","Plane_init_$Init$","TileMatrixSet_init_$Init$","LevelSet_init_$Init$","PickedObject","positionCopy","r8","g8","b8","pickedObject","lookAtPosition","cameraPosition","lookAt","elevation","sinFovY2","radius","pickMode","isRedrawRequested","modelview","eyeAltitude","far","maxDepthValue","near","distanceToSurface","tanHalfFov","maxNearDistance","pool","instance","BasicDrawableTerrain","attribLocation","bufferBound","colorAttachment","depthAttachment","fill","framebuffer","program","textureUnit","texture","textureUnitIndex","pixelCount","pixelBuffer","packAlignment","resultSet","idx","matrix","mode","prim","DrawableHeatmap","terrain","terrainOrigin","DrawableLines","drawable","groupId","order","depth","increment","newEntries","entry","sortWith","DrawableScreenTexture","that","DrawableShape","DrawableSightline","depthTexture","DrawableStarField","sunBuffer","sunTexture","DrawableSurfaceColor","DrawableSurfaceShape","scratchList","terrainSector","shapeCount","shape","primIdx","DrawableSurfaceTexture","textureSector","texCoordMatrix","usingTerrainAttrs","DrawableTessellation","globeOffset","pickedObjectId","BasicShaderProgram","pickRay","pickedObjects","pickViewport","pickPointOnly","objectFound","topObjectId","topObject","terrainObject","normalizedLat","a1","a2","stride","rMin","rMax","sMin","sMax","tMin","tMax","rLen","sLen","tLen","rSum","sSum","tSum","cx","cy","cz","rx2","ry2","rz2","minHeight","heights","points","centroidLat","centroidLon","minDist2","dist2","frustum","coherentPlane","nr","viewport","subViewport","bln","blf","brn","brf","tln","tlf","trn","trf","left","right","bottom","top","mvpInv","va","vb","nl","nb","nt","nn","nf","pointA","pointB","elements","vx","vy","vz","sx","sy","epsilon","vert1x","vert1y","vert1z","vert2x","vert2y","vert2z","vert0x","vert0y","vert0z","edge1x","edge1y","edge1z","edge2x","edge2y","edge2z","px","py","pz","det","invDet","tx","ty","qx","qy","qz","latitudeDegrees","longitudeDegrees","offsetSec","offsetIn","offsetHours","latDegrees","lonDegrees","latitudeRadians","longitudeRadians","location","lat1","lon1","lat2","lon2","azimuthRadians","lat1Radians","lon1Radians","lat2Radians","lon2Radians","c","distanceRadians","latRadians","lonRadians","cosLat","sinLat","cosAzimuth","sinAzimuth","sinDistance","cosDistance","endLatRadians","endLonRadians","dLon","dPhi","dLat","xScale","yScale","dst","srcDeltaLat","srcDeltaLon","dstDeltaLat","dstDeltaLon","xs","ys","xt","yt","ma","ma0","ma1","ma2","contentEquals","contentHashCode","A","vv","big","k","dum","imax","ii","ip","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","zScale","viewportWidth","viewportHeight","vFieldOfView","nearDistance","farDistance","aspect","nearHeight","nearWidth","mx","my","mz","c11","c22","c33","c12","c13","c23","numPoints","dx","dy","dz","ma3","mr1","mr2","mr3","mr4","depthOffset","cr","sr","sh","ct","st","result1","result2","result3","u2","u2p1","i1","i2","i3","itemp","sw","nearResult","farResult","mw","nx","ny","nz","nw","fx","fy","fz","fw","Offset","vector","da","db","line","lDotV","magnitude","minLatDegrees","minLonDegrees","deltaLatDegrees","deltaLonDegrees","maxLatDegrees","maxLonDegrees","empty","deltaLatitudeDegrees","deltaLongitudeDegrees","lOrd","toLong","lRow","lCol","deltaLat","TileMatrix","TileMatrixSet","nearestIdx","nearestDelta2","delta2","converter","GKCoordConverter","GKCoord","nPow2","nPow3","e0","pLat","sinLatPow2","cosLatPow3","cosLatPow5","tanLat","tanLatPow2","tanLatPow4","n2","iii","iiia","iv","V","VI","l0","beta","cosBeta","cos2beta","bx","cosBx","cos2Bx","sinBx","sin2Bx","a22","a24","a26","a28","b13","b15","b17","b19","parameters","fromGlobe","toGlobe","fromCartesian","toCartesian","MGRSCoordConverter","err","MGRSCoord","ups","convertUPSToMGRS","falseEasting","falseNorthing","ltr2LowValue","invF","es2","sLat","esSin","powEs","cLat","onePlusEs","oneMinusEs","dLam","rho","Easting","Northing","tempPhi","minEasting","maxEasting","minNorthing","phi","sinPhi","aOrNull","fOrNull","originLatitude","centralMeridian","TMCoordConverter","TMCoord","scaleFactor","cm","tn","tn2","tn3","tn4","tn5","tempLong","tempOrigin","c3","c5","c7","tan2","tan4","tan6","eta","eta2","eta3","eta4","sn","tmd","t1","t2","t3","t4","t5","t6","t7","t8","t9","ftphi","t10","de","t11","t12","t13","t14","t15","t16","t17","UPSCoordConverter","UPSCoord","UTMCoordConverter","UTMCoord","tempZone","tm","State","ec2","numLat","numLon","verticalExaggeration","origin","rowOffset","rowStride","retrieve","maxTimestamp","timestamp","gridWidth","gridHeight","cancelChildren","targetIdx","x0","y0","xf","yf","targetPixelSpan","tileBlock","TileBlock","rasterWidth","rasterHeight","matrixMinLat","matrixMaxLat","matrixMinLon","matrixMaxLon","matrixDeltaLat","matrixDeltaLon","uIdx","i0","fract","col0","col1","vIdx","j0","row0","row1","tileArray","intersection","uMin","uMax","colMin","colMax","vMin","vMax","rowMin","rowMax","rIdx","hIdx","j1","wIdx","i0j0","i1j0","i0j1","i1j1","iMin","iMax","jMin","jMax","rowJMin","rowJMax","colIMin","colIMax","texel","ecc","vec","eqr","minLatLimit","maxLatLimit","minLonLimit","maxLonLimit","elevIndex","xOffset","yOffset","zOffset","rowIndex","latIndex","colIndex","lonIndex","resultIndex","skip","phiLast","lambda","cosLon","sinLon","rpm","eqr2","pol2","ux","uy","uz","ey","ez","hgt","h","zpx","zpxSqrt","ra2","e4","evoluteBorderTest","rad1","rad2","rad","rad3","aTan","dpySqrt","s2","m2","found","sf","tf","si","ti","tileRowStride","i00","i10","i01","i11","f00","f10","f01","f11","levelNumberDepth","minLevelNumber","TerrainTile","BasicTerrain","childs","vertexTexCoords","lineElements","FloatBufferObject","ds","tIdx","sIdx","toShort","ve","borderHeight","invWavelength","g","kr","km","fragMode","direction","eyePoint","equatorialRadius","atmosphereAltitude","ar","lightLocation","SkyProgram","GroundProgram","altitudes","ShortBufferObject","DrawableGroundAtmosphere","nightTexture","textureBound","DrawableSkyAtmosphere","renderingParams","paramsKey","needsToUpdate","labelOffset","pathType","surfacePoint","p1In","p2In","outPoint","inPoint","sectors","viewingVector","normalVector","GraticuleRenderingParams","GKGraticuleTile","isZeroOrMinimalValue","distanceToTile","enableRenderingForChildTile","typeWithBiggerScale","ge","renderMetricGraticule","shouldCreateSubTile","createSubTiles","newType","subTiles","subTile","createLabels","labelPos","createMetricGraticule","squares","b1","b2","determinant","previousScaleName","get500kPrefix","rowFromTop","num","get200kPrefix","get100kPrefix","get50kPrefix","countOf100Maps","get25kPrefix","countOf50Maps","get10kPrefix","lineType","xMinZone","xMaxZone","yMinZone","yMaxZone","firstRow","lastRow","firstCol","lastCol","createLinesAndLabels","startX","nextX","startY","nextY","movedByYPoint","createYLineThatIntersectCorners","firstY","lastX","intersectWest","lastY","intersectEast","labelLineIntersectionPoint","eastingOffset","northOffset","centerGK","centerXY","Pair","getLabelType","getLabelId","coord","ew","gt","contains","zoneNumber","polyline","computePositionFromUTM","computePositionFromUPS","utmZone","utmZoneSector","maxNorthing","startEasting","startNorthing","squaresArray","UTMSquareZone","graticuleType","createSquaresUPS","createSquaresUTM","lineSector","endsWith","latitude1","latitude2","UTMExtremes","levelExtremes","labelEasting","labelNorthing","labelHemisphere","northingOffset","viewFrustum","gridStep","gridStepTimesTen","currentHemisphere","sb","createSubGrids","subGrids","sg","UTMSquareGrid","pA","pB","centerPoint","squareGrid","ElevationHeatmapProgram","limits","colors","dPercent","dLatPercent","firstRowPercent","firstColLon","d1","d2","MercatorSector","childLevel","d0","t0","northRow","southRow","westCol","eastCol","percent","tileSize","transparent","resultServerUrl","urlTemplate","urlParts","parseUrl","serverUrl","randomValue","removeSurrounding","split","WebMercatorImageLayer","starData","sunCelestialLocation","StarFieldProgram","indexes","positionIndex","starInfo","pointSize","raIndex","decIndex","magIndex","starMetaInfo","numDays","minMag","maxMag","urlString","tileSector","retrieveWmsCapabilities","wmsCapabilities","DefaultHttpClient","bodyAsText","matchingCoordinateSystems","wmsLayerCoordinateSystems","toMutableSet","toSet","WmsLayerConfig","imageFormats","layerCapabilities","LevelSetConfig","minScaleDenominator","layerCapability","minRadiansPerPixel","retrieveWmtsCapabilities","wmtsCapabilities","flipRow","regex","lowerValues","upperValues","userProperties","hsv","rr","gg","bb","attachment","currentFramebuffer","textureName","tanFov2","modelPoint","zOrder","cameraDistance","sortOrder","hasMipMap","widthPow2","powerOfTwoCeiling","bytesPerRow","heightPow2","param","currentTexture","currentBuffer","sourceData","enoughSpace","subAllocAndPopulate","bufferSize","currentProgram","fs","enable","sightline","visibleColor","occludedColor","screenX","screenY","drawableCount","highlightAttributes","minDistance2","distance2","metersPerPixel","intervals","topRange","Range","sideRange","elementBuffer","toShortArray","drawState","drawableLines","drawStateLines","TriangleShaderProgram","elementBufferKey","IntBufferObject","side","calculatedIntervals","sanitizedIntervals","spineCount","majorArcRadians","minorArcRadians","isStandardAxisOrientation","headingAdjustment","deltaRadians","globeRadius","arrayOffset","spineIdx","spineRadius","firstLoc","azimuthDegrees","arcRadius","loc","firstOrLast","vertPoint","isExtrudedSkirt","offsetVertexIndex","texCoord2d","maxRadius","subdivisions","subdivisionCount","actualRotation","boundingRectForUnitSquare","pixelSizeMeters","SightlineProgram","vertexCount","begin","numSubsegments","deltaDist","deltaAlt","dist","alt","extrudeVertex","pixelSize","Placemark","offsetX","offsetY","scaleX","scaleY","activeTexture","visibilityScale","absTilt","camera","actualTilt","labelTexture","vertexIndex","outData","polygonData","boundaryEdge","errnum","noIntermediatePoints","lineVertexCount","verticalVertexCount","tess","isIntermediate","addIndices","v0","v1","v2","errNum","errStr","newArray","SurfaceTextureProgram","retrieveCurrentLevel","currentAncestorTile","currentAncestorTexture","ancestorTile","ancestorTexture","cacheSource","isCacheOnly","isCacheAbsent","permanent","resourceId","timeSinceLastMark","latAbsDifference","lonAbsDifference","nearestLat","lonDifference","nearestLon","last","radiansPerPixel","degreesPerPixel","newEntry","oldEntry","spaceRequired","sortedEntries","ca","sortedWith","evicted","meanLongitude","meanAnomaly","eclipticLongitude","eclipticLongitudeRad","obliquityOfTheEcliptic","CelestialLocation","celestialLocation","GMST","dayFraction","firstRowLat","detailFactor","texelSize","nearestPoint","distanceToCamera","latMin","lonMin","latMid","lonMid","latMax","lonMax","childRow","childCol","childSector","child0","child1","child2","cache","cacheSize","fractionWidth","take","createStringField","Specification","reason","convertToInstant","which","aCallback","coords_offset","Dict","DictNode","dict","newNode","aNode","aDict","GLUtessellatorImpl","tooLarge","clamped","cacheVertex","mesh","printStackTrace","weights","gapL","gapR","o1","o2","z1","z2","eNext","eSym","ePrev","aONext","bONext","newVertex","eOrig","vNext","vPrev","newFace","fNext","fPrev","eDel","del","vDel","newOrg","fDel","newLface","newVertex1","newVertex2","eOrg","joiningLoops","joiningVertices","eDelSym","eNew","eNewSym","tempHalfEdge","GLUmesh","fHead","vHead","eHead","norm","maxVal","minVal","minVert","maxVert","tNorm","maxLen2","tLen2","area","computedNormal","sUnit","tUnit","PriorityQSort","curr","hCurr","hChild","hParent","keyNew","free","hMin","Stack","seed","piv","pqKeys","sortMin","heapMin","fOrig","trail","headSize","tailSize","eTail","edgeState","vn","vc","xc","yc","zc","xp","yp","zp","key1","key2","reg1","reg2","e1","reg","newEdge","org","regAbove","eNewUp","regNew","ActiveRegion","regFirst","regLast","regPrev","regUp","eFirst","eLast","eTopLeft","cleanUp","firstTime","isect","needed","orgUp","dstUp","orgLo","dstLo","weights1","weights2","regLo","eLo","orgMin","eBottomLeft","degenerate","vEvent","eTopRight","eLnext","pq","face","up","keepOnlyBoundary","defaultPrevented","forwardRadians","sideRadians","sinHeading","cosHeading","forwardMeters","sideMeters","headingDegrees","clientWidth","tiltDegrees","clientHeight","rotation","timeStamp","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","DOM_DELTA_PAGE","setTimeout","KeyboardControls$handlePan$ref","KeyboardControls$handlePan$ref$lambda","KeyboardControls$handleZoom$ref","KeyboardControls$handleZoom$ref$lambda","KeyboardControls$handleTilt$ref","KeyboardControls$handleTilt$ref$lambda","glAttrs","listener","$entry","handleEvent","bbox","getBoundingClientRect","clientLeft","clientTop","pickCenter","PickedObjectList","cancelAnimationFrame","devicePixelRatio","getExtension","requestAnimationFrame","isPickMode","drawingBufferWidth","drawingBufferHeight","stage","geoDoubleParamsValue","geoAsciiParamsValue","keyValue","elevations","parseTiles","tilesAcross","tilesDown","tileAcross","tileDown","tileIndex","xInTile","yInTile","sampleIndex","pixelSamples","flatten","parseStrips","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Uint32Array","Float64Array","numOfBytes","isSigned","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat64","getFloat32","allowAscii","getIFDEntryValueLongerThan4","ifdTypeLength","ifdValues","indexOffset","button","Click","touch","delay","pointerType","buttonBit","nextTouch","centroid","touchIdx","TouchWrapper","pointerId","newScale","touch0","touch1","newRotation","tap","tapCount","dirMask","ElevationSource","href","GeoTiffReader","fetch","ok","statusText","headers","widthDouble","heightDouble","drawImage","srcData","getImageData","dstData","createImageData","srcRow","putImageData","toBlob","deviceMemory","options","fileResource","Image","onload","crossOrigin","ratioW","ratioH","ratio","ImageTexture","ctx2D","textSize","lines","strokeOffset","textBaseline","textAlign","fillStyle","strokeStyle","lineCap","lineJoin","translate","strokeText","fillText","textAttributes","measureText","imageResource","ImageSource","lFactor","lPattern","beginPath","moveTo","lineTo","bi","stroke","UNPACK_PREMULTIPLY_ALPHA_WEBGL","texImage2D","Event","priority","tr","messageWithTrace","stackTraceToString","console","warn","info","log","className","pname","getParameter","createShader","shader","shaderSource","compileShader","deleteShader","getShaderParameter","getProgramInfoLog","getShaderInfoLog","createProgram","deleteProgram","attachShader","linkProgram","useProgram","getProgramParameter","getUniformLocation","bindAttribLocation","createBuffer","bindBuffer","subarray","bufferData","bufferSubData","deleteBuffer","vertexAttribPointer","enableVertexAttribArray","disableVertexAttribArray","cap","disable","uniform1f","uniform1i","uniform2f","uniform3f","arr","uniform3fv","uniform4f","uniform4fv","transpose","uniformMatrix3fv","uniformMatrix4fv","polygonOffset","frontFace","func","depthFunc","mask","depthMask","sFactor","dFactor","blendFunc","colorMask","createTexture","internalFormat","border","generateMipmap","texParameteri","drawArrays","drawElements","bindFramebuffer","createFramebuffer","textarget","framebufferTexture2D","readPixels","pixelStorei","Wcs100ElevationSourceFactory","LN2","O","relativeStart","relativeEnd","finalValue","TypedArray","asUint","taylor_2_bound","taylor_n_bound","searchString","subjectString","lastIndex","initial","collection","destination","pair","pairs","expectedSize","comparator","destinationOffset","endIndex","rangeSize","subrange","fromIndex","toIndex","newSize","ArrayList_init_$Init$","initialCapacity","rangeCheck","comparison","$comparator","endInclusive","median","leftIndex","rightIndex","leftValue","rightValue","internalMap","HashMap_init_$Init$","loadFactor","original","backing","$entryIterator","backingMap","HashSet_init_$Init$","computeHashSize","computeShift","hashSize","InternalHashMap_init_$Init$","","","registerModification","ensureExtraCapacity","shouldCompact","extraCapacity","spareCapacity","gaps","ensureCapacity","minCapacity","newHashSize","allocateValuesArray","curValuesArray","newValuesArray","rehash","compact","valuesArray","putRehash","probesLeft","findKey","findValue","addKey","tentativeMaxProbeDistance","probeDistance","putIndex","removeKeyAt","removeHashAt","removedHash","hole","patchAttemptsLeft","putEntry","keysArray","presenceArray","hashArray","maxProbeDistance","LinkedHashMap_init_$Init$","LinkedHashSet_init_$Init$","seed1","seed2","jClass","givenSimpleName","isInstanceFunction","classifier","isMarkedNullable","jClasses","kClass","sequence","StringBuilder_init_$Init$","content","uppercase","code","radix","match","nextPattern","$match","$range","$nextPattern","ignoreCase","n1","thisChar","otherChar","thisOffset","otherOffset","bytes","throwOnMalformed","byteIndex","stringBuilder","byte","high","low","byte1","byte2","byte3","byte4","indent","qualifier","shortInfo","hasSeen","stackStart","dropCommonFrames","commonFrames","lastBreak","preLastBreak","messageLines","suppressed","suppressedIndent","sourceUnit","targetUnit","sourceCompareTarget","separator","postfix","limit","truncated","transform","single","to","minimumValue","maximumValue","KotlinNothingValueException_init_$Init$","interfaces","maxSize","masks","currentSize","imask","iid","iidImask","numberIndex","intArray","numberWithSettledBit","activeBit","initValue","$array","ia","descriptor","obj1","obj2","typeOf","shiftNumber","MASK","bigNumber","signum","chunk","hashCodeMap","symbol","cachedHashCode","constructorFunction","proto","this_","errorInfo","srcLen","dstLen","thisNeg","otherNeg","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","numBits","radixLong","rem","digitsPerTime","radixToPower","remDiv","twoPwr32","defaultConstructor","associatedObjectKey","associatedObjects","suspendArity","kind","ctor","metadataConstructor","iface","possibleActiveBit","arity","jsClass","objType","klassMetadata","parentProto","propName","base64","fromBase64","resultLength","shift","sixBit","needle","middle","toBase64","releaseIntercepted","intercepted","resultContinuation","completion","$receiver","$completion$1","Exception_init_$Init$","IllegalArgumentException_init_$Init$","IndexOutOfBoundsException_init_$Init$","IllegalStateException_init_$Init$","UnsupportedOperationException_init_$Init$","RuntimeException_init_$Init$","NoSuchElementException_init_$Init$","Error_init_$Init$","ConcurrentModificationException_init_$Init$","NullPointerException_init_$Init$","NoWhenBranchMatchedException_init_$Init$","ClassCastException_init_$Init$","implFindEntry","ArrayDeque_init_$Init$","copyElements","newCapacity","newElements","positiveMod","incremented","decremented","isVarargs","iteratorFactory","exceptionalState","$block","transformer","calcNext","sendWhen","ensureItemIterator","nextItemIterator","getInitialValue","getNextValue","acc","removed","interceptor","baseKey","safeCast","step","addend","thisUpper","otherUpper","$indent","firstChar","limitForMaxRadix","limitBeforeMul","delimiters","chars","charAtIndex","delimiter","currentOffset","isLimited","$delimitersList","$ignoreCase","currentIndex","indices","getNextMatch","rawValue","","isInNanos","isInMillis","normalValue","unitDiscriminator","addValuesMixedRanges","thisMillis","otherNanos","otherMillis","resultMillis","otherNanoRemainder","compareBits","","hasDays","hasHours","hasMinutes","hasSeconds","components","whole","fractional","fractionalSize","isoZeroes","fracString","nonZeroDigits","normalMillis","maxNsInUnit","valueInNs","normalNanos","isoChar","isTimeComponent","shortName","initializer","third","base","quotient","ac","bc","uradix","beforeAdding","dividend","CancellationException_init_$Init$","CharacterCodingException_init_$Init$","ArithmeticException_init_$Init$","AssertionError_init_$Init$","NumberFormatException_init_$Init$","UninitializedPropertyAccessException_init_$Init$","modified","$elements","predicateResultToRemove","iter","insertionRangeCheck","increaseLength","putAllEntries","updated","removeKey","classifierName","nullable","$arity","toInsert","newLength","stringCsq","lastStart","advanceToNextCharacter","code1","code2","approx","res","approxDouble","approx2","log2","approxRes","approxRem","bitCount","currentResult","currentException","outcome","oldCapacity","otherIterator","ourValue","internalLastIndex","internalIndex","decrementedInternalIndex","decrementedHead","tail","copyCollectionElements","oldElement","dest","collectionSize","nextNotReady","newLeft","containsAll","bits","rnd","rangeStart","rangeEnd","strictIso","infinityString","hasSign","prevUnit","component","dotIndex","afterFirst","allowSpaces","unitName","cont","annotationClass","size_local","mid","resultSize","reverseIndex","paramCount","superType","isPositive","Sequence$iterator$ref$lambda","Iterable$iterator$ref$lambda","throwOnInvalidSequence","charIndex","codePoint","lastTwoBits","threshold","oldChar","newChar","$delimiters","missingDelimiterValue","newIndent","minCommonIndent","marginPrefix","firstNonWhitespaceIndex","startFound","handler","trace","event1","event2","event3","event4","expect","update","onCancelling","invokeImmediately","parentContext","initParentJob","active","uCont","handle","delegate","","isReusable","callSegmentOnCancellation","segment","installParentHandle","invokeOnCancellationImpl","multipleHandlersError","dispatchResume","tryResume","undispatched","dispatcher","eventLoop","resumedState","proposedUpdate","resumeMode","onCancellation","idempotent","resumeImpl","resumeImpl$default","alreadyResumedError","detachChildIfNonResuable","cancelHandler","idempotentResume","cancelCause","handled","continuation","originalException","thrownException","unconfined","isActive","","","allocateList","finalizeFinishingState","wasCancelling","proposedException","exceptions","finalCause","getFinalRootCause","addSuppressedExceptions","rootCause","seenExceptions","unwrappedCause","unwrapped","finalException","finalState","completeStateFinalization","notifyCancelling","cancelParent","isCancellation","startInternal","addLastAtomic","promoteEmptyToNodeList","promoteSingleToNodeList","createCauseException","getOrPromoteCancellingList","tryMakeCancelling","cancelling","tryMakeCompleting","tryMakeCompletingSlowPath","finishing","notifyRootCause","firstChild","tryFinalizeSimpleState","tryWaitForChild","stateString","isCompleting","job","childJob","handlesException","parentJob","setElementLazy","prev","channel","pointers","onClosedHasNext","hasNextOnNoWaiterSuspend","cancellable","updCellResult","onClosedHasNextNoWaiterSuspend","","","updateCellSend","waiter","closed","updateCellSendSlow","bufferOrRendezvousSend","curSenders","updateCellReceive","senders","updateCellReceiveSlow","helpExpandBuffer","trySelectResult","expandBuffer","updateCellExpandBuffer","updateCellExpandBufferSlow","incCompletedExpandBufferAttempts","nAttempts","incCompletedExpandBufferAttempts$default","","completeCloseOrCancel","completeClose","sendersCur","lastSegment","closeLinkedList","lastBufferedCellGlobalIndex","markAllEmptyCellsAsClosed","globalIndex","cancelSuspendedReceiveRequests","sendersCounter","suspendedReceivers","completeCancel","removeUnprocessedElements","onUndeliveredElement","undeliveredElementException","suspendedSenders","sender","isClosed","sendersAndCloseStatusCur","isClosedForReceive","isCellNonEmpty","findSegmentSend","startFrom","updateSendersCounterIfLower","curCounter","findSegmentReceive","updateReceiversCounterIfLower","findSegmentBufferEnd","currentBufferEndCounter","moveSegmentBufferEndToSpecifiedOrLast","select","$element","$select","firstSegment","counter","pauseEB","closeStatus","createSegment$ref$lambda","holder","trySendImpl","isSendOp","trySendDropLatest","trySendDropOldest","onBufferOverflow","","","","","tryEmitLocked","tryEmitNoCollectorsLocked","","dropOldestLocked","newHead","correctCollectorIndexesOnDropOldest","enqueueLocked","curSize","curBuffer","growBuffer","newBuffer","updateBufferLocked","newReplayIndex","newMinCollectorIndex","newBufferEndIndex","newQueueEndIndex","cleanupTailLocked","tryTakeValue","slot","resumes","oldIndex","getPeekedValueLockedAt","resume","tryPeekLocked","awaitValue","findSlotsToResumeLocked","resumesIn","resumeCount","flow","replay","bufferCapacity","currentContext","collectElement","collectJob","emissionParentJob","","","","createNewSegment","newTail","$context","propertyName","fatalCompletion","findClause","clauseObject","trySelectInternalResult","token","combined","collector","collectContext","timeMillis","trySuspend","takenState","cancelLater","dispatched","cancellationCause","caller","upd","makeCancelHandler","tryResumeImpl","actualCompletion","task","queue","eh","continueCompleting","lastChild","waitChild","$this$sequence","makeNode","joinInternal","joinSuspend","cancelMakeCompleting","makeCancelling","causeExceptionCache","causeException","awaitSuspend","immediate","yieldContext","isSender","shouldSendSuspend","curSendersAndCloseStatus","globalCellIndex","ebCompleted","ebCompletedAndBit","pauseExpandBuffers","cancel","markCancellationStarted","closedByThisOperation","markCancelled","markClosed","invokeCloseHandler","closeHandler","minElem","cellState","cellStateString","cancelEmitter","emitter","emitted","emitSuspend","newBufferSize0","maxResumeCount","curEmitterIndex","newBufferSize1","subscriptionCount","curSlots","slots","fatalException","finallyException","internalResult","trySelectInternal","curState","clause","timeout","$continuation","await$lambda","addedContext","oldContext","coroutine","extraBufferCapacity","bufferCapacity0","deserializer","previousValue","$this$buildSerialDescriptor","baseClass","klassName","subClassName","missingFields","serialName","typeArguments","failOnMissingTypeArgSerializer","serializers","elementClassifierIfArray","keySerializer","valueSerializer","aSerializer","bSerializer","cSerializer","elementSerializer","rootClass","isNullable","$typeArguments","clazz","types","cachedSerializer","contextualSerializer","shouldBeNullable","$types","typeParameters","sdBuilder","builderAction","","elementsCount","elementDesc","keyDesc","valueDesc","elementDescriptor","keyDescriptor","valueDescriptor","primitive","eSerializer","kSerializer","vSerializer","primitiveSerializer","readIfAbsent","prepareHighMarksArray","slotsCount","elementsInLastSlot","highMarks","generatedSerializer","$primitiveSerializer","serializer","$serialName","objectInstance","","typeParams","elementDescriptors","namesHash","kindHash","bufferWithData","tagBlock","$keySerializer","$valueSerializer","$this$buildClassSerialDescriptor","class2ContextualFactory","polyBase2Serializers","polyBase2DefaultSerializerProvider","polyBase2NamedSerializers","polyBase2DefaultDeserializerProvider","provider","concreteClass","assocObject","$factory","SerializationException_init_$Init$","another","elementName","annotations","isOptional","composite","decodeSequentially","compositeDecoder","eClass","checkIndex","vIndex","readSize","requiredCapacity","markHigh","offsetInSlot","nextUnmarkedHighIndex","slotOffset","slotMarks","indexInSlot","buildIndices","annotation","nestedName","parentName","childName","inlineDescriptor","currentTag","$deserializer","$previousValue","decodeStructure","typeArgumentsSerializers","serializedClassName","registered","kclass","serial","actualClass","actualSerializer","defaultSerializerProvider","defaultDeserializerProvider","forClass","allowOverwrite","concreteSerializer","answer","baseClassSerializers","previousSerializer","previousByName","simpleName","seen","goldenMask","missingFieldsBits","configuration","serializersModule","encodeDefaults","ignoreUnknownKeys","isLenient","allowStructuredMapKeys","prettyPrint","explicitNulls","prettyPrintIndent","coerceInputValues","useArrayPolymorphism","classDiscriminator","allowSpecialFloatingPointValues","useAlternativeNames","namingStrategy","decodeEnumsCaseInsensitive","allowTrailingComma","classDiscriminatorMode","body","isString","coerceToInlineType","deferred","","$deferred","JsonElementMarker$readIfAbsent$ref","JsonElementMarker$readIfAbsent$ref$lambda","entity","json","$descriptor","useLowercaseEnums","strategyForClasses","nameToPut","$this_buildDeserializationNamesMap","resize","readArray","lastToken","readValue","readDeepRecursive","lexer","discriminator","jsonTree","discriminatorToSkip","coerceInputValue","handleUnknown","unknownKey","decodeStringKey","discriminatorHolder","lastPos","c4","unparsedPrimitive","absenceIsNull","polyDiscriminator","polyDescriptor","desc","keyKind","appendEscape","lastPosition","appendEsc","startPosition","currentPosition","currentChar","decodedString","takePeeked","appendHex","startPos","fromHexChar","character","consumeBooleanLiteral","literalSuffix","actual","initC2ESC","esc","initC2TC","cl","initEscape","initCharToToken","typeParamsSerializers","sd","readObject","hint","checkLeadingComma","newMode","skipLeftoverElements","isMapKey","decodeListIndex","hasComma","decodeObjectIndex","isUnknown","decodeMapIndex","decodingKey","currentObject","currentElement","strategy","baseName","deserializationNamesMap","fallbackName","cpos","snapshot","expectedToken","wasConsumed","doConsume","usedAppend","wasUnquotedString","eof","allowLenientStrings","tokenStack","processed","lastIndexOf","hintMessage","hasQuotation","exponentAccumulator","isExponentPositive","hasExponent","hasChars","doubleAccumulator","consumeBoolean","tc","closingQuote","keyToMatch","positionSnapshot","client","userConfig","manageEngine","$this$intercept","engineFactory","$engine","$previousConfigBlock","$configure","$plugin","pluginData","requestData","responseData","response","responseBody","$this$writer","callContext","$client","$response","","executeWithinCallContext","checkExtensions","requestedExtension","$requestData","$this$async","unsafeRequestHeaders","callJob","cleanupHandler","createCallContext$lambda","$cleanupHandler","engineName","requestHeaders","$requestHeaders","$content","$this$buildHeaders","observableContentPhase","BodyProgress$handle$slambda","observableByteChannel","cachedResponseText","addDefaultResponseValidation$lambda$slambda","$this$HttpResponseValidator","$contentType","$body","$this_intercept","defaultTransformers$slambda","$responseJobHolder","validateResponse","processException","responseValidators","callExceptionHandlers","expectSuccess","$builder","plugin","wrapContent","requestContentType","contentType","charset","charsets","charsetQuality","sendCharset","responseCharsetFallback","withQuality","withoutQuality","quality","truncatedQuality","allowHttpsDowngrade","$scope","checkHttpMethod","requestJob","clientEngineJob","$requestJob","$handler","nextSender","maxSendCount","requestTimeoutMillis","connectTimeoutMillis","socketTimeoutMillis","checkTimeoutValue","$request","$executionContext","$killer","hasNotNullTimeouts","timeoutMillis","originCall","method","executionContext","statusCode","requestTime","developmentMode","fallbackCharset","expectedType","checkCapabilities","HttpStatement$execute$slambda","contentLength","$contentLength","$listener","createWebSocket","urlString_capturingHack","protocolHeaderNames","protocols","ws_capturingHack","headers_capturingHack","executeWebSocketRequest","$headers_capturingHack","eventListener","$this_buildHeaders","awaitConnection$lambda","$eventListener","clientConfig","$jsHeaders","$clientConfig","$bodyBytes","$this$buildObject","stream","$stream","readChunk$lambda","promise","$controller","commonFetch$lambda","$responseData","$this_writer","coroutineContext","websocket","installedFeatures","configure","previousConfigBlock","exceptionResponseText","BeforeReceive","actualCharset","sendResult","requestBuilder","killer","savedCall","rawResponse","status","bodyBytes","frameData","definition","spaceToPlus","encodeURLParameter$lambda","$spaceToPlus","encodeFull","$encodeFull","plusIsSpace","encodeSlash","symbolSize","release","prefixEnd","digit1","digit2","encodeURLPath$lambda","contentSubtype","existingContent","slashesCount","slashIndex","out","escapeValue","parametersOnly","items","valueEnd","paramEnd","$parameters","headerName","headerValue","header","major","minor","decode","nameIndex","equalIndex","spaceNameIndex","spaceEndIndex","spaceEqualIndex","spaceValueIndex","spaceIndex","applyOrigin","tmpLocation","protocol","host","port","user","password","pathSegments","fragment","trailingQuery","encodedPath","encodedUser","encodedQueryParameters","schemeLength","incorrectSchemePosition","scheme","slashCount","nextSlash","passwordIndex","pathEnd","rawPath","basePath","rawChunks","relativePath","fragmentStart","colonIndex","defaultPort","encodedPassword","specifiedPort","pathStartIndex","pathEndIndex","queryStart","queryEnd","pathStart","usernameStart","usernameEnd","passwordStart","passwordEnd","encodedParametersBuilder","slash","subtype","hasParameter","parameter","flushImpl","flushWrittenBytes","ensureNotFailed","closeable","$count","autoFlush","$attachJob","$channel","$dispatcher","charactersCopied","after","before","decodedText","bytesWritten","memory","readRemaining","writeRemaining","availableSpace","writeSize","newWritePosition","overrunSize","allocator","typedArray","view","remaining","","readASCII","atLeastMinCharactersRequire","minShouldBeLess","copied","utf8","codepoint","readUtf8","lastByteCount","prematureEndOfStreamChars","fixGapAfterReadFallback","overrun","fixGapAfterReadFallbackUnreserved","chunk1","chunk2","new","doFill","appendView","prepareReadLoop","minSize","desiredExtraBytes","minSizeIsTooBig","afterRead","dstOffset","appendNewChunk","appendChainImpl","chainedSizeDelta","_tail","tailPosition","writePacketMerging","foreignStolen","lastSize","nextSize","maxCopySize","appendSize","prependSize","writePacketSlowPrepend","readPosition","newReadPosition","_head","pre","bytesCount","inputLength","subView","inputRemaining","chunkSize","characters","parentPool","cp","dstLimit","lastCharIndex","resultLimit","resultPosition","index1","resultPosition1","stage1Limit","freeSpace","highValue","lowValue","_charset","i8","writeIndex","encoder","dstRemaining","numChars","dropLastChar","endIndexExclusive","array1","charactersDecoded","bytesConsumed","nativeDecoder","maxCharacters","sizeInBytes","encoding","fatal","requestedEncoding","readRemainingSuspend","","builderSize","builderHead","addBytesRead","atLeast","closeElement","addBytesWritten","ensureNotClosed","rewindRemaining","startGap","endGap","newLimit","writePosition","chain","discardAsMuchAsPossible","skipped","currentCount","currentSkipped","ensureNext","flushChain","oldTail","writeByteFallback","appendCharFallback","packet","chunkBuffer","headRemaining","positionBefore","positionAfter","appendNext","sleepCondition","bufferOffset","attachJob","convertTo","ensureListForKey","caseInsensitiveName","listForKey","newMap","interceptors","subject","phase","relation","","","createContext","debugMode","sharedInterceptorsList","cacheInterceptors","interceptorsQuantity","phases","phaseIndex","phaseContent","findPhase","phasesList","findPhaseIndex","hasPhase","notSharedInterceptorsList","setInterceptorsListFromPhase","relativeTo","loop","direct","resumeRootWith","blocks","reifiedType","kotlinType","concurrent","hasNodeApi","stringValues","proceedLoop","copyInterceptors","lastRelatedPhaseIndex","resetInterceptorsList","tryAddToPhaseFastPath","currentInterceptors","discardLastRootContinuation","kType","firstIndex","maxElem","controlFrame","opcode","fin","rsv1","rsv2","rsv3","frameType","disposableHandle","Close_init_$Init$","fileUrl","fileName","darkFileUrl","times","initialDelay","maxDelay","segments","","","isAllowed","allow","unexpectedCharacterException","uri","unexpected","getNextCharacter","hexCharToValue","internalReason","","","encoded","decoded","$decoded","$encoded","segmentBuilder","","findPortSeparator","userInfoSeparator","portSeparator","encodedHost","portString","","encodedAuthority","","makeSchemeSpecificPart","_authorityPart","_pathPart","_queryPart","_fragmentPart","","ssp","","","","","","","uriString","ssi","fsi","qsi","expanded","opaquePart","encodedParameter","oldQuery","hasSchemeOrAuthority","oldLength","nextToEncode","nextAllowed","toEncode","bytesLength","convertPlus","throwOnFailure","hexValue","nextC","newDigit","part","oldPart","oldPath","secondary","namespace","","","endOfElement","writeIndent","newDepth","indentSeq","writeIndent$default","addToPending","requireCurrent","isAppend","xmlDeclMode","stringSerializer","prefixMap","filler","namespaces","","removeFirstToCurrent","ns","locationInfo","eventType","localName","namespaceUri","namespaceContext","standalone","parentNamespaceContext","namespaceDecls","namespacePrefix","writer","localname","reader","missingNamespaces","namespaceAt","prefixAt","localNameAt","finishPartialStartTag","close","endOfTag","down","highSurogate","lowSurogate","writeEscapedText","triggerStartDocument","repeats","pending","ev","ensureNamespaceIfRepairing","rawWriteAttribute","$this_appendXmlCodepoint","isRepairNamespaces","xmlVersion","versionString","namespaceIndicesAt","startIdx","endIdx","arrayUseAtDepth","prefixArrayPos","pairPos","nsArrayPos","getPrefix","getNamespace","indentSequence","nodeList","seenPrefixes","namespaceURI","localPart","doc","frag","wrapperElement","$wrapperElement","startLocation","initialDepth","wrappedString","IOException_init_$Init$","lazyMessage","prefixes","extendNamespace","nscount","wrapperNamespaceContext","getDelegate","actualInput","rootElementName","SimpleNamespaceContext_init_$Init$","XmlException_init_$Init$","","nodeType","attr","nsUri","$text","ce","$target","$data","processInstr","textElems","qualifiedName","publicId","systemId","attrNs","attrPrefix","textEvent","originalNSContext","$namespaceURI","events","decl","verString","effectiveEncoding","appliedPrefix","setElementStack","esp","hlp","actualPrefix","lastWasHyphen","existingNamespaceForPrefix","enlargeNamespaceBuffer","nextPair","setPrefix","setNamespace","prefixStr","namespaceUriStr","commentPos","orig","namespaceForPrefix","useNameInfo","useOutputKind","overriddenSerializer","tagName","pedantic","autoPolymorphic","encodeDefault","unknownChildHandler","typeDiscriminatorName","throwOnRepeatedElement","verifyElementOrder","parentNamespace","nextNulledItemsIdx","childDesc","defaultOrList","$inputType","","","xmlDescriptor","polyInfo","attrIndex","stringValue","polyMap","nameMap","childDescriptor","$xmlDescriptor","inputKind","candidates","repairNamespaces","indentString","policy","nilAttribute","xmlName","annotatedName","isDefaultNamespace","Builder_init_$Init$","isStrictAttributeNames","isStrictBoolean","nameToIdx","$parentDescriptor","eq","isStrictNames","","$serializersModule","serializerParent","tagParent","$policy","$serializerParent","","xmlPolyChildren","polyAttrName","qName","polyChild","childInfo","childSerializerParent","canBeAttribute","overrideOutputKind","serialDescriptor","useName","isDocumentRoot","outputKind","elementUseNameInfo","","$tagParent","childrenNameAnnotation","preserveSpace","","","keyNameInfo","parentInfo","keyTagParent","valueNameInfo","valueTagParent","","$canBeAttribute","childUseNameInfo","useParentInfo","effectiveUseNameInfo","getElementDescriptors","initialChildReorderInfo","descriptors","createElementDescriptor","","originalOrderNodes","allNodes","members","finalToDeclMap","declToOrderMap","nextElemIdx","attrOrMembers","general","minIdx","nextIdx","successor","requestedOutputKind","valueChildIndex","valueChild","invalidIdx","xmlCData","polyChildSpecification","pkgPos","typeNameBase","currentPkg","parentTag","eqPos","prefPos","typename","realSerialName","elementTypeDescriptor","elementUseOutputKind","elementIdx","childCount","beforeAny","hasWildCard","afterAny","nodes","beforesToCheck","aftersToCheck","unseenSuccessors","$beforeAny","$afterAny","$parentNamespace","readCompactFragmentContent","deserialize","nextValue","deserializeInput","contentSerializer","nameSpace","rootName","xmlDecoderBase","rootNameInfo","realName","rootDescriptor","defaultOverEmpty","defaultString","descOutputKind","deser","serialValueDecoder","tagId","attrName","childXmlDescriptor","effectiveDeserializer","inputType","isNameOfAttr","normalizedName","containingNamespaceUri","emptyNsPrefix","valChildDesc","singleParsed","orderedBefore","orderedAfter","seenSiblingIndex","alreadySeenTrailingIndex","valueKind","lastAttrIndex","peek","fixedIndex","rawIndex","polyMode","sdec","typeQName","childSerialName","childQnames","isMixed","typeTag","parentType","useAnnotations","isValue","parentChildDesc","elementKind","typeDescriptor","serialKind","typeNameInfo","parentSerialKind","parentDescriptor","childIndex","orderConstraints","orderNodes","xmlBefore","xmlAfter","befores","afters","isListEluded","childAnnotation","mapParent","keyUseName","pseudoKeyParent","keyEffectiveOutputKind","prefixedName","cIndex","elementSerialDescriptor","effectiveSerializerParent","effectiveTagParent","overridenSerializer","fallback","typeName","xmlCodecBase","defaultDecoder","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"worldwind-tutorials.js","mappings":"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BE,cACK,IAD8BiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GAC7E,IAAe,QAAS,OA/Q3B,OAoPJF,EA6BE,cACK,IADsBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACrE,IAAe,QAAS,OA9QrC,OAgPMF,EAgCE,cACK,IADsBiD,GAAgBjD,EAAOC,EAAiB14C,EAAO24C,GACrE,IAAe,QAAS,OACzB,UAAI,MAAO,wBAAsBF,SAxCjD,EAAkBgD,EA4C1B,CAtSIJ,CAAa,eAuMTM,OACJC,EAAgBrB,GAAkB,IAAK,GACvCsB,EAAiBtB,GAAkB,UAAS,MAAuB,GACnEuB,EAAgBvB,GAAkB,IAAK,QAAS,OAChD,cAAgB,IAAA1a,GAAOic,EAAU,MAAUF,EAAU,MAAUA,EAAU,MAAWC,EAAW,MACnG,CA3MIF,CAAQ,KAZhB,eGRA,eCFqC,eACJ,eACD,eACC,eACG,eACJ,eACe,eACb,eACH,eACC,eACD,eACG,eACI,eACb,eACC,eACQ,eACF,eACM,eACH,eACG,eACD,eACA,eACJ,eACA,eACQ,eACX,eACC,eACA,eACE,eACI,eACE,eACC,eACT,eACA,eACK,eACJ,eACM,eACT,eACC,eACH,eACO,eACJ,eACE,eACY,eACd,eACK,eACJ,eACC,eACC,eACI,eACT,eACE,eACK,eACL,eACK,eACD,eACA,eACK,eACA,eACJ,eACL,eACc,eACO,eACT,eACG,eACH,eACR,eACC,eACA,eACM,eACA,eACD,eACE,eACZ,gBA1E1B,eA8E6B,aACJ,aACG,aACA,aACR,aACC,aACK,gBAP1B,eA4CyB,aACF,aACI,aACD,YAJ1B,eAQqB,aACC,aACA,aACD,aACI,aACH,aACI,aACH,aACD,aACI,cACJ,cACC,aAZvB,aC3HAd,EACAnwD,EACAsV,EACA24C,EACAoD,EACAC,GALA,aACA,aACA,aACA,aACA,aACA,YANJ,aCMIn+B,EAAqBwa,YAAyC,OAC9D4jB,GAAA,UAAkBp+B,EAAQwa,GACL,aACD,aACG,aACA,eACA,eACA,W7UmF6B,K6UlFtB,eATlC,aCCIxa,EAAqBwa,YAAyC,OAC9D4jB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GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HlSwmU,K0HmS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HnSwmU,K0HoS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HpSumU,K0HqS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HrSumU,K0HsS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HtSwmU,K0HuS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,I1HvSwmU,K0HwS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HxSumU,K0HyS1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,IAAM6b,EAAG,GAAK7b,EAAG,I1HzSumU,K0H0S1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,I1H1SsmU,K0H2S1qU,MAAE,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,GAAK6b,EAAG,IAAM7b,EAAG,I1H3SsmU,K0H4S1qU,MAAE,IAAM6b,EAAG,GAAK7b,EAAG,GAAK6b,EAAG,GAAK7b,EAAG,GAAK6b,EAA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","sources":["webpack://worldwind-tutorials/webpack/universalModuleDefinition","webpack://worldwind-tutorials/../../node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/DateTimeFormatBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Standard.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/LocalDateFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/LocalTimeFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/LocalDateTimeFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/UtcOffsetFormat.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Clock.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Preconditions.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/DateTimeComponents.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/format/DateTimeFormat.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Lazy.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/dateCalculations.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/Builder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/FieldFormatDirective.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/FieldSpec.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/FormatStructure.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collectionJs.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/Predicate.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/formatter/Formatter.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/formatter/FormatterOperation.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/NumberConsumer.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/ParseResult.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/Parser.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/comparisons/Comparisons.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/format/parser/ParserOperation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ComparisonsJs.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Library.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/InstantSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/TimeZoneSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/internal/mathJs.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/js/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/dynamic.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/properties/PropertyReferenceDelegates.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/long.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/HashCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/FloorDivMod.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/Duration.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalTime.kt","webpack://worldwind-tutorials/../../../../../../../../.gradle/daemon/8.5/Z:/BuildAgent/work/8ebe0a8279b7bad8/core/common/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/build/generated/moko-resources/jsMain/src/earth/worldwind/tutorials/MR.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/AbstractTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/BasicTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/CameraViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ElevationHeatmapTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/EllipsesTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Angle.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/GKGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LabelsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LookAtViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/MGRSGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PathsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PlacemarksTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PolygonsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShapesDashAndFillTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShowTessellationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SightlineTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SurfaceImageTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WcsElevationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmtsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/jsMain/kotlin/earth/worldwind/tutorials/Main.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/math.kt","webpack://worldwind-tutorials/../../../../worldwind/build/generated/moko-resources/jsMain/src/earth/worldwind/MR.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/GoToAnimator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObjectList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Maps.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/WorldWind.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/BasicDrawableTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/kgl/Kgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawShapeState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableGroup.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableHeatmap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLines.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableQueue.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableScreenTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableStarField.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceColor.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableTessellation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/BasicFrameController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/Frame.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/AltitudeMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingSphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Camera.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Ellipsoid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Frustum.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Line.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Location.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/LookAt.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix3.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ArraysJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix4.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Offset.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/OffsetMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Plane.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Position.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Range.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Sector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec2.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec3.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Viewport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertParameters.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertTransformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/Hemisphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/PolarCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/GestureState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/Globe.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/ElevationModel.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractTiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sets.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/BasicElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/MercatorProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/Wgs84Projection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTessellator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/TerrainTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/BackgroundLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/LayerList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/RenderableLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/ShowTessellationLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AbstractAtmosphereProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AtmosphereLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableGroundAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableSkyAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/GroundProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/SkyProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleRenderingParams.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/LineStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridElement.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridTilesSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKLayerHelper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricLabels.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/AbstractUTMGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGridZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMMetricScaleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/AbstractMercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/WebMercatorImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/WebMercatorLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationSourceFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSet.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsLayerFactory.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/regex/RegexExtensions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAttribution.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAuthorityUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapability.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactInformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactPersonPrimary.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDcpType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsException.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsGeographicBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsIdentifier.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsInfoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLogoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsMetadataUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequest.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequestOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsService.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsConstraint.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsContactInfo.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDcp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDescription.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttpMethod.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperationsMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsPhone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceContact.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceIdentification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceProvider.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsContents.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLegendURL.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsResourceUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTheme.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixLimits.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSetLink.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractSurfaceRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Color.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/FontWeight.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Framebuffer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/RenderContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Texture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/AbstractBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/BufferPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/FloatBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/IntBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/ShortBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageOptions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ResamplingMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/WrapMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/AbstractShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/BasicShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SightlineProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SurfaceTextureProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/TriangleShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/AbstractShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Ellipse.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Label.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OmnidirectionalSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OrientationMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Path.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PathType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Placemark.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PlacemarkAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Polygon.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/ShapeAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/SurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TextAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbsentResourceList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/BasicPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Level.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSetConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LruMemoryCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/MessageTable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/SunPosition.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Tile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/ExponentFormatter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/Specification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/StringFormat.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLU.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLUtessellatorCallbackAdapter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/error/Error.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/ActiveRegion.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/CachedVertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Dict.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/DictNode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUface.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUhalfEdge.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUmesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUtessellatorImpl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUvertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Geom.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Mesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Normal.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQ.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQHeap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQSort.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Render.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Sweep.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessMono.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/http/DefaultHttpClient.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/math/WWMath.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/BasicWorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/KeyboardControls.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindow.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffKeyEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffReader.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/kotlinHacks.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffUtil.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffIFDEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/ClickRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/DragRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/GestureRecognizer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MutableCollections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PanRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PinchRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/RotationRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/SelectDragDetector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TapRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TiltRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TouchWrapper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/ElevationSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/coverage/TiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/TiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/mercator/MercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/Font.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/RenderResourceCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/TextRenderer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/Logger.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/SynchronizedPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/kgl/WebKgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/locale/Locale.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/format/ConvertToInstant.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/GeographicProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/SelectDragCallback.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js/math.polyfills.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/ArrayBuffer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js.arrays/fill.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/native/kotlin/Number.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/src/kotlin/Unit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/NumbersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayFunctions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArraySorting.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntry.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntryDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/coroutines/cancellation/CancellationException.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/random/PlatformRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/Random.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/XorWowRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KClassImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/primitives.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/reflection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/sequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/CharacterCodingExceptionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/StringBuilderJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/charJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_WhitespaceChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/CharCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_TitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/numberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/regex.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringsCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/utf8Encoding.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/throwableExtensions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/time/DurationUnitJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterables.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/ExceptionsH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShort.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Enum.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/BitMask.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/noPackageHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/bitUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/runtimeForStdLib.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/charSequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/collectionsHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/compareTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coreRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/hacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/longjs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/metadataUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/numberConversion.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/rangeTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/reflectRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/typeCheckUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CharCategories.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_DigitChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_LetterChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_OtherLowercaseChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/CoroutineImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/IntrinsicsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/exceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/text/numberConversions_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/ArrayDeque.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/IndexedValue.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/PrimitiveIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/SequenceBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/ContinuationInterceptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContextImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/intrinsics/Intrinsics.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/enums/EnumEntries.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/internal/progressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/PrimitiveRanges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/ProgressionIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Progressions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Appendable.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Indent.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringNumberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/DeepRecursive.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Result.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Tuples.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByte.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByteArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UInt.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntRange.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UProgressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULong.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UnsignedUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULongArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShortArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UStrings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/regexp.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/Continuation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/MathH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/reflection_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Maps.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MapWithDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sets.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CollectionsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/JsClass.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_OneToManyTitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/EventListener.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Job.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/AbstractCoroutine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Builders.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CompletionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuationImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletableDeferred.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionState.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineName.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineScope.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineStart.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Delay.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/EventLoop.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadLocal.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Exceptions.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/JobSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Concurrent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/LinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/MainCoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Supervisor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Unconfined.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferOverflow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/ConcurrentLinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/InlineList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channels.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ConflatedBufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/SharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/AbstractSharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/SafeCollector.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/operators/Share.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/CoroutineExceptionHandlerImpl.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/OnUndeliveredElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Scopes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Symbol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/SystemProps.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/SystemProps.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Cancellable.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Undispatched.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/selects/Select.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Window.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Debug.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Dispatchers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/EventLoop.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/SchedulerTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/flow/internal/SafeCollector.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/StackTraceRecovery.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionHandler.common.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coroutineInternalJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Promise.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/ContextAware.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializationExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializersCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/BuiltInSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NothingSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModuleBuilders.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/SerializersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/AssociatedObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_UArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonConfiguration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/AbstractJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonPath.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonTreeReader.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/SchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/StringJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/JsonSchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/internal/createMapForCache.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/content/ObservableContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineCapability.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/BodyProgress.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultResponseValidation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultTransform.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpClientPlugin.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpPlainText.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRequestLifecycle.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpSend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/observer/DelegatedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/request/RequestBody.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ByteChannelUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ClientEvents.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/HttpClientEngineBase.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/DefaultTransformJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/websocket/JsWebSocketSession.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/49d4a482a8522285/ktor-client/ktor-client-core/js/src/io/ktor/client/utils/ExceptionUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-events/common/src/io/ktor/events/Events.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Query.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/UrlDecodedParametersBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Url.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/CloseElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/BufferUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferAppend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/PrimiteArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/Memory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/EncodeResult.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/ByteArrayPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ExceptionUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteReadChannelJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Win1252Table.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/PlatformUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/collections/CopyOnWriteHashMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/PipelineContext.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/StackTraceRecoverJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/reflect/Type.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/KtorSimpleLoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/LoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/reflect/TypeInfoJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/CloseReason.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameCommon.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameType.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/js/src/io/ktor/websocket/FrameJs.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/FileResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ImageResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ResourcePlatformDetails.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/internal/ioUtil.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/Uri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/NotCachedHolder.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/PathSegments.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriCodec.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriSyntaxException.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/constants.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/AbstractPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/Part.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/PathPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/AbstractHierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/HierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/OpaqueUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/StringUri.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/NamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/commondomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/EventType.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/Namespace.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/SimpleNamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XMLConstants.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReaderBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlDelegatingReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlEvent.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/_IOException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlUtil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/KtXmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/XmlVersion.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/NamespaceHolder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/PlatformXmlWriterBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/chars.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NamedNodeMap.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/XmlBoolean.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Attr.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlReaderExt.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.js.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/jsMultiplatform.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/JSCompactFragment.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/XMLFragmentStreamReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/impl/jsDomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Element.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/ProcessingInstruction.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/CharacterData.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReaderNS.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/ElementSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/InputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/OutputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/PolyBaseInfo.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XML.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlSerializationPolicy.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/defaultPlatformModule.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XMLDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlCodecBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlExceptions.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/DummyDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/XmlQNameSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderNode.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderConstraint.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/compat.js.kt","webpack://worldwind-tutorials/webpack/bootstrap","webpack://worldwind-tutorials/webpack/runtime/define property getters","webpack://worldwind-tutorials/webpack/runtime/global","webpack://worldwind-tutorials/webpack/runtime/hasOwnProperty shorthand","webpack://worldwind-tutorials/webpack/runtime/make namespace object","webpack://worldwind-tutorials/webpack/runtime/publicPath","webpack://worldwind-tutorials/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"worldwind-tutorials\"] = factory();\n\telse\n\t\troot[\"worldwind-tutorials\"] = factory();\n})(this, () => {\nreturn ","//! @version @js-joda/core - 3.2.0\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction createErrorType(name, init, superErrorClass) {\n if (superErrorClass === void 0) {\n superErrorClass = Error;\n }\n\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = new Error().stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.message = message;\n init && init.apply(this, arguments);\n\n this.toString = function () {\n return this.name + \": \" + this.message;\n };\n }\n\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause) {\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text, index, cause) {\n if (text === void 0) {\n text = '';\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n msg += ': ' + text + ', at index: ' + index;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n\n this.parsedString = function () {\n return text;\n };\n\n this.errorIndex = function () {\n return index;\n };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n if (!assertion) {\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\nfunction requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(parameterName + ' must not be null');\n }\n\n return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(parameterName + ' must be an instance of ' + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ', but is ' + value.constructor.name : ''));\n }\n\n return value;\n}\nfunction abstractMethodFail(methodName) {\n throw new TypeError('abstract method \"' + methodName + '\" is not implemented');\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n requireNonNull: requireNonNull,\n requireInstance: requireInstance,\n abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n function MathUtil() {}\n\n MathUtil.intDiv = function intDiv(x, y) {\n var r = x / y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.intMod = function intMod(x, y) {\n var r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.roundDown = function roundDown(r) {\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n };\n\n MathUtil.floorDiv = function floorDiv(x, y) {\n var r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.floorMod = function floorMod(x, y) {\n var r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n };\n\n MathUtil.safeAdd = function safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n var r = MathUtil.safeToInt(x + y);\n\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n\n return r;\n };\n\n MathUtil.safeSubtract = function safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n return MathUtil.safeToInt(x - y);\n };\n\n MathUtil.safeMultiply = function safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n\n if (x === 0 || y === 0) {\n return 0;\n }\n\n var r = MathUtil.safeToInt(x * y);\n\n if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n throw new ArithmeticException('Multiplication overflows: ' + x + ' * ' + y);\n }\n\n return r;\n };\n\n MathUtil.parseInt = function (_parseInt) {\n function parseInt(_x) {\n return _parseInt.apply(this, arguments);\n }\n\n parseInt.toString = function () {\n return _parseInt.toString();\n };\n\n return parseInt;\n }(function (value) {\n var r = parseInt(value);\n return MathUtil.safeToInt(r);\n });\n\n MathUtil.safeToInt = function safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n };\n\n MathUtil.verifyInt = function verifyInt(value) {\n if (value == null) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n }\n\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n\n if (value % 1 !== 0) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n }\n\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException('Calculation overflows an int: ' + value);\n }\n };\n\n MathUtil.safeZero = function safeZero(value) {\n return value === 0 ? 0 : +value;\n };\n\n MathUtil.compareNumbers = function compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n };\n\n MathUtil.smi = function smi(int) {\n return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n };\n\n MathUtil.hash = function hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n\n var result = number;\n\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n\n return MathUtil.smi(result);\n };\n\n MathUtil.hashCode = function hashCode() {\n var result = 17;\n\n for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n numbers[_key] = arguments[_key];\n }\n\n for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n var n = _numbers[_i];\n result = (result << 5) - result + MathUtil.hash(n);\n }\n\n return MathUtil.hash(result);\n };\n\n return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar Enum = function () {\n function Enum(name) {\n this._name = name;\n }\n\n var _proto = Enum.prototype;\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n function TemporalAmount() {}\n\n var _proto = TemporalAmount.prototype;\n\n _proto.get = function get(unit) {\n abstractMethodFail('get');\n };\n\n _proto.units = function units() {\n abstractMethodFail('units');\n };\n\n _proto.addTo = function addTo(temporal) {\n abstractMethodFail('addTo');\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n };\n\n return TemporalAmount;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n function TemporalUnit() {}\n\n var _proto = TemporalUnit.prototype;\n\n _proto.duration = function duration() {\n abstractMethodFail('duration');\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n };\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.addTo = function addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n };\n\n _proto.between = function between(temporal1, temporal2) {\n abstractMethodFail('between');\n };\n\n return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n _inheritsLoose(Duration, _TemporalAmount);\n\n function Duration(seconds, nanos) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanos);\n return _this;\n }\n\n Duration.ofDays = function ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n Duration.ofHours = function ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n Duration.ofMinutes = function ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n };\n\n Duration.ofMillis = function ofMillis(millis) {\n var secs = MathUtil.intDiv(millis, 1000);\n var mos = MathUtil.intMod(millis, 1000);\n\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n\n return Duration._create(secs, mos * 1000000);\n };\n\n Duration.ofNanos = function ofNanos(nanos) {\n var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n\n return this._create(secs, nos);\n };\n\n Duration.of = function of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n };\n\n Duration.from = function from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n var duration = Duration.ZERO;\n amount.units().forEach(function (unit) {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n };\n\n Duration.between = function between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n var nanos = 0;\n\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {}\n }\n\n return this.ofSeconds(secs, nanos);\n };\n\n Duration.parse = function parse(text) {\n requireNonNull(text, 'text');\n var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n var matches = PATTERN.exec(text);\n\n if (matches !== null) {\n if ('T' === matches[3] === false) {\n var negate = '-' === matches[1];\n var dayMatch = matches[2];\n var hourMatch = matches[4];\n var minuteMatch = matches[5];\n var secondMatch = matches[6];\n var fractionMatch = matches[7];\n\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n\n var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n\n var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n\n var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n\n var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n\n var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n };\n\n Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n if (parsed == null) {\n return 0;\n }\n\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: ' + errorText, text, 0, ex);\n }\n };\n\n Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n\n parsed = (parsed + '000000000').substring(0, 9);\n return parseFloat(parsed) * negate;\n };\n\n Duration._create = function _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n };\n\n Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n\n return Duration.ofSeconds(seconds, nanos);\n };\n\n Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n\n return new Duration(seconds, nanoAdjustment);\n };\n\n var _proto = Duration.prototype;\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n };\n\n _proto.units = function units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n };\n\n _proto.isZero = function isZero() {\n return this._seconds === 0 && this._nanos === 0;\n };\n\n _proto.isNegative = function isNegative() {\n return this._seconds < 0;\n };\n\n _proto.seconds = function seconds() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withSeconds = function withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n };\n\n _proto.withNanos = function withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n };\n\n _proto.plusDuration = function plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n };\n\n _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n\n if (amountToAdd === 0) {\n return this;\n }\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n }\n\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n\n var duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n };\n\n _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n };\n\n _proto.minus = function minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n };\n\n _proto.minusDuration = function minusDuration(duration) {\n requireNonNull(duration, 'duration');\n var secsToSubtract = duration.seconds();\n var nanosToSubtract = duration.nano();\n\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n\n return this.plus(-secsToSubtract, -nanosToSubtract);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n\n if (multiplicand === 1) {\n return this;\n }\n\n var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.dividedBy = function dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n\n if (divisor === 1) {\n return this;\n }\n\n var secs = MathUtil.intDiv(this._seconds, divisor);\n var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.abs = function abs() {\n return this.isNegative() ? this.negated() : this;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.toDays = function toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n };\n\n _proto.toHours = function toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n };\n\n _proto.toMinutes = function toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n };\n\n _proto.toMillis = function toMillis() {\n var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n };\n\n _proto.toNanos = function toNanos() {\n var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n };\n\n _proto.compareTo = function compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherDuration.nano();\n };\n\n _proto.equals = function equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n\n var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n var rval = 'PT';\n\n if (hours !== 0) {\n rval += hours + 'H';\n }\n\n if (minutes !== 0) {\n rval += minutes + 'M';\n }\n\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n\n if (this._nanos > 0) {\n rval += '.';\n var nanoString;\n\n if (secs < 0) {\n nanoString = '' + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n } else {\n nanoString = '' + (LocalTime.NANOS_PER_SECOND + this._nanos);\n }\n\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n\n rval += 'S';\n return rval;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Duration;\n}(TemporalAmount);\nfunction _init() {\n Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\nvar YearConstants = function YearConstants() {};\nfunction _init$1() {\n YearConstants.MIN_VALUE = -999999;\n YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n _inheritsLoose(ChronoUnit, _TemporalUnit);\n\n function ChronoUnit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto = ChronoUnit.prototype;\n\n _proto.duration = function duration() {\n return this._duration;\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n };\n\n _proto.isDateBased = function isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n };\n\n _proto.addTo = function addTo(temporal, amount) {\n return temporal.plus(amount, this);\n };\n\n _proto.between = function between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n return this.duration().compareTo(other.duration());\n };\n\n return ChronoUnit;\n}(TemporalUnit);\nfunction _init$2() {\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar TemporalField = function () {\n function TemporalField() {}\n\n var _proto = TemporalField.prototype;\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.baseUnit = function baseUnit() {\n abstractMethodFail('baseUnit');\n };\n\n _proto.rangeUnit = function rangeUnit() {\n abstractMethodFail('rangeUnit');\n };\n\n _proto.range = function range() {\n abstractMethodFail('range');\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n };\n\n _proto.getFrom = function getFrom(temporal) {\n abstractMethodFail('getFrom');\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.displayName = function displayName() {\n abstractMethodFail('displayName');\n };\n\n _proto.equals = function equals(other) {\n abstractMethodFail('equals');\n };\n\n _proto.name = function name() {\n abstractMethodFail('name');\n };\n\n return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), 'Smallest minimum value \\'' + minSmallest + '\\' must be less than largest minimum value \\'' + minLargest + '\\'', IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), 'Smallest maximum value \\'' + maxSmallest + '\\' must be less than largest maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n assert(!(minLargest > maxLargest), 'Minimum value \\'' + minLargest + '\\' must be less than maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n var _proto = ValueRange.prototype;\n\n _proto.isFixed = function isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n };\n\n _proto.minimum = function minimum() {\n return this._minSmallest;\n };\n\n _proto.largestMinimum = function largestMinimum() {\n return this._minLargest;\n };\n\n _proto.maximum = function maximum() {\n return this._maxLargest;\n };\n\n _proto.smallestMaximum = function smallestMaximum() {\n return this._maxSmallest;\n };\n\n _proto.isValidValue = function isValidValue(value) {\n return this.minimum() <= value && value <= this.maximum();\n };\n\n _proto.checkValidValue = function checkValidValue(value, field) {\n var msg;\n\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = 'Invalid value for ' + field + ' (valid values ' + this.toString() + '): ' + value;\n } else {\n msg = 'Invalid value (valid values ' + this.toString() + '): ' + value;\n }\n\n return assert(false, msg, DateTimeException);\n }\n\n return value;\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException('Invalid int value for ' + field + ': ' + value);\n }\n\n return value;\n };\n\n _proto.isValidIntValue = function isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n };\n\n _proto.isIntValue = function isIntValue() {\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n };\n\n _proto.toString = function toString() {\n var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? '/' + this.largestMinimum() : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? '/' + this.maximum() : '');\n return str;\n };\n\n ValueRange.of = function of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, 'Invalid number of arguments ' + arguments.length, IllegalArgumentException);\n }\n };\n\n return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n _inheritsLoose(ChronoField, _TemporalField);\n\n ChronoField.byName = function byName(fieldName) {\n for (var prop in ChronoField) {\n if (ChronoField[prop]) {\n if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n };\n\n function ChronoField(name, baseUnit, rangeUnit, range) {\n var _this;\n\n _this = _TemporalField.call(this) || this;\n _this._name = name;\n _this._baseUnit = baseUnit;\n _this._rangeUnit = rangeUnit;\n _this._range = range;\n return _this;\n }\n\n var _proto = ChronoField.prototype;\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.baseUnit = function baseUnit() {\n return this._baseUnit;\n };\n\n _proto.rangeUnit = function rangeUnit() {\n return this._rangeUnit;\n };\n\n _proto.range = function range() {\n return this._range;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.checkValidValue = function checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n };\n\n _proto.isDateBased = function isDateBased() {\n var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n return dateBased;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return temporal.range(this);\n };\n\n _proto.getFrom = function getFrom(temporal) {\n return temporal.getLong(this);\n };\n\n _proto.toString = function toString() {\n return this.name();\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(this);\n };\n\n return ChronoField;\n}(TemporalField);\nfunction _init$3() {\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(Math.floor(YearConstants.MIN_VALUE * 365.25), Math.floor(YearConstants.MAX_VALUE * 365.25)));\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalQueries = function () {\n function TemporalQueries() {}\n\n TemporalQueries.zoneId = function zoneId() {\n return TemporalQueries.ZONE_ID;\n };\n\n TemporalQueries.chronology = function chronology() {\n return TemporalQueries.CHRONO;\n };\n\n TemporalQueries.precision = function precision() {\n return TemporalQueries.PRECISION;\n };\n\n TemporalQueries.zone = function zone() {\n return TemporalQueries.ZONE;\n };\n\n TemporalQueries.offset = function offset() {\n return TemporalQueries.OFFSET;\n };\n\n TemporalQueries.localDate = function localDate() {\n return TemporalQueries.LOCAL_DATE;\n };\n\n TemporalQueries.localTime = function localTime() {\n return TemporalQueries.LOCAL_TIME;\n };\n\n return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n function TemporalAccessor() {}\n\n var _proto = TemporalAccessor.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n _inheritsLoose(TemporalQuery, _Enum);\n\n function TemporalQuery() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TemporalQuery.prototype;\n\n _proto.queryFrom = function queryFrom(temporal) {\n abstractMethodFail('queryFrom');\n };\n\n return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n var ExtendedTemporalQuery = function (_TemporalQuery) {\n _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n\n function ExtendedTemporalQuery() {\n return _TemporalQuery.apply(this, arguments) || this;\n }\n\n return ExtendedTemporalQuery;\n }(TemporalQuery);\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n _inheritsLoose(DayOfWeek, _TemporalAccessor);\n\n function DayOfWeek(ordinal, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._ordinal = ordinal;\n _this._name = name;\n return _this;\n }\n\n var _proto = DayOfWeek.prototype;\n\n _proto.ordinal = function ordinal() {\n return this._ordinal;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n DayOfWeek.values = function values() {\n return ENUMS.slice();\n };\n\n DayOfWeek.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < ENUMS.length; ordinal++) {\n if (ENUMS[ordinal].name() === name) {\n break;\n }\n }\n\n return DayOfWeek.of(ordinal + 1);\n };\n\n DayOfWeek.of = function of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException('Invalid value for DayOfWeek: ' + dayOfWeek);\n }\n\n return ENUMS[dayOfWeek - 1];\n };\n\n DayOfWeek.from = function from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n throw new DateTimeException('Unable to obtain DayOfWeek from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n } else {\n throw ex;\n }\n }\n };\n\n _proto.value = function value() {\n return this._ordinal + 1;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(days) {\n var amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n };\n\n _proto.minus = function minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n assert(_query != null, 'query', NullPointerException);\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$4() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n return DayOfWeek.from(temporal);\n });\n ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n _inheritsLoose(Month, _TemporalAccessor);\n\n function Month(value, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._value = MathUtil.safeToInt(value);\n _this._name = name;\n return _this;\n }\n\n var _proto = Month.prototype;\n\n _proto.value = function value() {\n return this._value;\n };\n\n _proto.ordinal = function ordinal() {\n return this._value - 1;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (null === field) {\n return false;\n }\n\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(months) {\n var amount = MathUtil.intMod(months, 12) + 12;\n var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n };\n\n _proto.minus = function minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n };\n\n _proto.length = function length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return leapYear ? 29 : 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.minLength = function minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.maxLength = function maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n var leap = leapYear ? 1 : 0;\n\n switch (this) {\n case Month.JANUARY:\n return 1;\n\n case Month.FEBRUARY:\n return 32;\n\n case Month.MARCH:\n return 60 + leap;\n\n case Month.APRIL:\n return 91 + leap;\n\n case Month.MAY:\n return 121 + leap;\n\n case Month.JUNE:\n return 152 + leap;\n\n case Month.JULY:\n return 182 + leap;\n\n case Month.AUGUST:\n return 213 + leap;\n\n case Month.SEPTEMBER:\n return 244 + leap;\n\n case Month.OCTOBER:\n return 274 + leap;\n\n case Month.NOVEMBER:\n return 305 + leap;\n\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n };\n\n _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n };\n\n _proto.query = function query(_query) {\n assert(_query != null, 'query() parameter must not be null', DateTimeException);\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n\n case Month.FEBRUARY:\n return 'FEBRUARY';\n\n case Month.MARCH:\n return 'MARCH';\n\n case Month.APRIL:\n return 'APRIL';\n\n case Month.MAY:\n return 'MAY';\n\n case Month.JUNE:\n return 'JUNE';\n\n case Month.JULY:\n return 'JULY';\n\n case Month.AUGUST:\n return 'AUGUST';\n\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n\n case Month.OCTOBER:\n return 'OCTOBER';\n\n case Month.NOVEMBER:\n return 'NOVEMBER';\n\n case Month.DECEMBER:\n return 'DECEMBER';\n\n default:\n return 'unknown Month, value: ' + this.value();\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n Month.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < MONTHS.length; ordinal++) {\n if (MONTHS[ordinal].name() === name) {\n break;\n }\n }\n\n return Month.of(ordinal + 1);\n };\n\n Month.values = function values() {\n return MONTHS.slice();\n };\n\n Month.of = function of(month) {\n if (month < 1 || month > 12) {\n assert(false, 'Invalid value for MonthOfYear: ' + month, DateTimeException);\n }\n\n return MONTHS[month - 1];\n };\n\n Month.from = function from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n\n try {\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Month from TemporalAccessor: ' + temporal + ' of type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n }\n };\n\n return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$5() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n _inheritsLoose(Period, _TemporalAmount);\n\n function Period(years, months, days) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n\n var _years = MathUtil.safeToInt(years);\n\n var _months = MathUtil.safeToInt(months);\n\n var _days = MathUtil.safeToInt(days);\n\n if (_years === 0 && _months === 0 && _days === 0) {\n if (!Period.ZERO) {\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n Period.ZERO = _assertThisInitialized(_this);\n }\n\n return Period.ZERO || _assertThisInitialized(_this);\n }\n\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n return _this;\n }\n\n Period.ofYears = function ofYears(years) {\n return Period.create(years, 0, 0);\n };\n\n Period.ofMonths = function ofMonths(months) {\n return Period.create(0, months, 0);\n };\n\n Period.ofWeeks = function ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n };\n\n Period.ofDays = function ofDays(days) {\n return Period.create(0, 0, days);\n };\n\n Period.of = function of(years, months, days) {\n return Period.create(years, months, days);\n };\n\n Period.from = function from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n\n requireNonNull(amount, 'amount');\n var years = 0;\n var months = 0;\n var days = 0;\n var units = amount.units();\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var unitAmount = amount.get(unit);\n\n if (unit === ChronoUnit.YEARS) {\n years = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.MONTHS) {\n months = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.DAYS) {\n days = MathUtil.safeToInt(unitAmount);\n } else {\n throw new DateTimeException('Unit must be Years, Months or Days, but was ' + unit);\n }\n }\n\n return Period.create(years, months, days);\n };\n\n Period.between = function between(startDate, endDate) {\n requireNonNull(startDate, 'startDate');\n requireNonNull(endDate, 'endDate');\n requireInstance(startDate, LocalDate, 'startDate');\n requireInstance(endDate, LocalDate, 'endDate');\n return startDate.until(endDate);\n };\n\n Period.parse = function parse(text) {\n requireNonNull(text, 'text');\n\n try {\n return Period._parse(text);\n } catch (ex) {\n if (ex instanceof ArithmeticException) {\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n };\n\n Period._parse = function _parse(text) {\n var matches = PATTERN.exec(text);\n\n if (matches != null) {\n var negate = '-' === matches[1] ? -1 : 1;\n var yearMatch = matches[2];\n var monthMatch = matches[3];\n var weekMatch = matches[4];\n var dayMatch = matches[5];\n\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n var years = Period._parseNumber(text, yearMatch, negate);\n\n var months = Period._parseNumber(text, monthMatch, negate);\n\n var weeks = Period._parseNumber(text, weekMatch, negate);\n\n var days = Period._parseNumber(text, dayMatch, negate);\n\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n };\n\n Period._parseNumber = function _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n\n var val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n };\n\n Period.create = function create(years, months, days) {\n return new Period(years, months, days);\n };\n\n var _proto = Period.prototype;\n\n _proto.units = function units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n };\n\n _proto.isZero = function isZero() {\n return this === Period.ZERO;\n };\n\n _proto.isNegative = function isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n };\n\n _proto.years = function years() {\n return this._years;\n };\n\n _proto.months = function months() {\n return this._months;\n };\n\n _proto.days = function days() {\n return this._days;\n };\n\n _proto.withYears = function withYears(years) {\n if (years === this._years) {\n return this;\n }\n\n return Period.create(years, this._months, this._days);\n };\n\n _proto.withMonths = function withMonths(months) {\n if (months === this._months) {\n return this;\n }\n\n return Period.create(this._years, months, this._days);\n };\n\n _proto.withDays = function withDays(days) {\n if (days === this._days) {\n return this;\n }\n\n return Period.create(this._years, this._months, days);\n };\n\n _proto.plus = function plus(amountToAdd) {\n var amount = Period.from(amountToAdd);\n return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n };\n\n _proto.minus = function minus(amountToSubtract) {\n var amount = Period.from(amountToSubtract);\n return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n\n return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.normalized = function normalized() {\n var totalMonths = this.toTotalMonths();\n var splitYears = MathUtil.intDiv(totalMonths, 12);\n var splitMonths = MathUtil.intMod(totalMonths, 12);\n\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n };\n\n _proto.toTotalMonths = function toTotalMonths() {\n return this._years * 12 + this._months;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof Period) {\n var other = obj;\n return this._years === other._years && this._months === other._months && this._days === other._days;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n };\n\n _proto.toString = function toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n var buf = 'P';\n\n if (this._years !== 0) {\n buf += '' + this._years + 'Y';\n }\n\n if (this._months !== 0) {\n buf += '' + this._months + 'M';\n }\n\n if (this._days !== 0) {\n buf += '' + this._days + 'D';\n }\n\n return buf;\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Period;\n}(TemporalAmount);\nfunction _init$6() {\n Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ParsePosition = function () {\n function ParsePosition(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n var _proto = ParsePosition.prototype;\n\n _proto.getIndex = function getIndex() {\n return this._index;\n };\n\n _proto.setIndex = function setIndex(index) {\n this._index = index;\n };\n\n _proto.getErrorIndex = function getErrorIndex() {\n return this._errorIndex;\n };\n\n _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n this._errorIndex = errorIndex;\n };\n\n return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar EnumMap = function () {\n function EnumMap() {\n this._map = {};\n }\n\n var _proto = EnumMap.prototype;\n\n _proto.putAll = function putAll(otherMap) {\n for (var key in otherMap._map) {\n this._map[key] = otherMap._map[key];\n }\n\n return this;\n };\n\n _proto.containsKey = function containsKey(key) {\n return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n };\n\n _proto.get = function get(key) {\n return this._map[key.name()];\n };\n\n _proto.put = function put(key, val) {\n return this.set(key, val);\n };\n\n _proto.set = function set(key, val) {\n this._map[key.name()] = val;\n return this;\n };\n\n _proto.retainAll = function retainAll(keyList) {\n var map = {};\n\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i].name();\n map[key] = this._map[key];\n }\n\n this._map = map;\n return this;\n };\n\n _proto.remove = function remove(key) {\n var keyName = key.name();\n var val = this._map[keyName];\n this._map[keyName] = undefined;\n return val;\n };\n\n _proto.keySet = function keySet() {\n return this._map;\n };\n\n _proto.clear = function clear() {\n this._map = {};\n };\n\n return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n _inheritsLoose(ResolverStyle, _Enum);\n\n function ResolverStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n function TemporalAdjuster() {}\n\n var _proto = TemporalAdjuster.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n abstractMethodFail('adjustInto');\n };\n\n return TemporalAdjuster;\n}();\n\nvar Temporal = function (_TemporalAccessor) {\n _inheritsLoose(Temporal, _TemporalAccessor);\n\n function Temporal() {\n return _TemporalAccessor.apply(this, arguments) || this;\n }\n\n var _proto = Temporal.prototype;\n\n _proto.isSupported = function isSupported(unit) {\n abstractMethodFail('isSupported');\n };\n\n _proto.minus = function minus(p1, p2) {\n if (arguments.length < 2) {\n return this.minusAmount(p1);\n } else {\n return this.minusAmountUnit(p1, p2);\n }\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n abstractMethodFail('minusAmount');\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n abstractMethodFail('minusAmountUnit');\n };\n\n _proto.plus = function plus(p1, p2) {\n if (arguments.length < 2) {\n return this.plusAmount(p1);\n } else {\n return this.plusAmountUnit(p1, p2);\n }\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n abstractMethodFail('plusAmount');\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n abstractMethodFail('plusAmountUnit');\n };\n\n _proto.until = function until(endTemporal, unit) {\n abstractMethodFail('until');\n };\n\n _proto.with = function _with(p1, p2) {\n if (arguments.length < 2) {\n return this.withAdjuster(p1);\n } else {\n return this.withFieldValue(p1, p2);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n abstractMethodFail('withAdjuster');\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n abstractMethodFail('withFieldValue');\n };\n\n return Temporal;\n}(TemporalAccessor);\n\nvar DefaultInterfaceTemporal = function (_Temporal) {\n _inheritsLoose(DefaultInterfaceTemporal, _Temporal);\n\n function DefaultInterfaceTemporal() {\n return _Temporal.apply(this, arguments) || this;\n }\n\n var _proto = DefaultInterfaceTemporal.prototype;\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n requireInstance(adjuster, TemporalAdjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmount(-amountToSubtract, unit);\n };\n\n return DefaultInterfaceTemporal;\n}(Temporal);\n\nvar ChronoLocalDate = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDate, _DefaultInterfaceTemp);\n\n function ChronoLocalDate() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDate.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return ChronoLocalDate;\n}(DefaultInterfaceTemporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n function StringUtil() {}\n\n StringUtil.startsWith = function startsWith(text, pattern) {\n return text.indexOf(pattern) === 0;\n };\n\n StringUtil.hashCode = function hashCode(text) {\n var len = text.length;\n\n if (len === 0) {\n return 0;\n }\n\n var hash = 0;\n\n for (var i = 0; i < len; i++) {\n var chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n\n return MathUtil.smi(hash);\n };\n\n return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n function ZoneId() {}\n\n ZoneId.systemDefault = function systemDefault() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.of = function of(zoneId) {\n throw new DateTimeException('not supported operation' + zoneId);\n };\n\n ZoneId.ofOffset = function ofOffset(prefix, offset) {\n throw new DateTimeException('not supported operation' + prefix + offset);\n };\n\n ZoneId.from = function from(temporal) {\n throw new DateTimeException('not supported operation' + temporal);\n };\n\n var _proto = ZoneId.prototype;\n\n _proto.id = function id() {\n abstractMethodFail('ZoneId.id');\n };\n\n _proto.rules = function rules() {\n abstractMethodFail('ZoneId.rules');\n };\n\n _proto.normalized = function normalized() {\n var rules = this.rules();\n\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n\n return this;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return StringUtil.hashCode(this.id());\n };\n\n _proto.toString = function toString() {\n return this.id();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneId;\n}();\n\nvar ZoneRules = function () {\n function ZoneRules() {}\n\n ZoneRules.of = function of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n };\n\n var _proto = ZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n abstractMethodFail('ZoneRules.isFixedOffset');\n };\n\n _proto.offset = function offset(instantOrLocalDateTime) {\n if (instantOrLocalDateTime instanceof Instant) {\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n abstractMethodFail('ZoneRules.offsetInstant');\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n abstractMethodFail('ZoneRules.validOffsets');\n };\n\n _proto.transition = function transition(localDateTime) {\n abstractMethodFail('ZoneRules.transition');\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n abstractMethodFail('ZoneRules.standardOffset');\n };\n\n _proto.daylightSavings = function daylightSavings(instant) {\n abstractMethodFail('ZoneRules.daylightSavings');\n };\n\n _proto.isDaylightSavings = function isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n };\n\n _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n abstractMethodFail('ZoneRules.isValidOffset');\n };\n\n _proto.nextTransition = function nextTransition(instant) {\n abstractMethodFail('ZoneRules.nextTransition');\n };\n\n _proto.previousTransition = function previousTransition(instant) {\n abstractMethodFail('ZoneRules.previousTransition');\n };\n\n _proto.transitions = function transitions() {\n abstractMethodFail('ZoneRules.transitions');\n };\n\n _proto.transitionRules = function transitionRules() {\n abstractMethodFail('ZoneRules.transitionRules');\n };\n\n _proto.toString = function toString() {\n abstractMethodFail('ZoneRules.toString');\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneRules;\n}();\n\nvar Fixed = function (_ZoneRules) {\n _inheritsLoose(Fixed, _ZoneRules);\n\n function Fixed(offset) {\n var _this;\n\n _this = _ZoneRules.call(this) || this;\n _this._offset = offset;\n return _this;\n }\n\n var _proto2 = Fixed.prototype;\n\n _proto2.isFixedOffset = function isFixedOffset() {\n return true;\n };\n\n _proto2.offsetOfInstant = function offsetOfInstant() {\n return this._offset;\n };\n\n _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n return this._offset;\n };\n\n _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n return this._offset;\n };\n\n _proto2.validOffsets = function validOffsets() {\n return [this._offset];\n };\n\n _proto2.transition = function transition() {\n return null;\n };\n\n _proto2.standardOffset = function standardOffset() {\n return this._offset;\n };\n\n _proto2.daylightSavings = function daylightSavings() {\n return Duration.ZERO;\n };\n\n _proto2.isDaylightSavings = function isDaylightSavings() {\n return false;\n };\n\n _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n };\n\n _proto2.nextTransition = function nextTransition() {\n return null;\n };\n\n _proto2.previousTransition = function previousTransition() {\n return null;\n };\n\n _proto2.transitions = function transitions() {\n return [];\n };\n\n _proto2.transitionRules = function transitionRules() {\n return [];\n };\n\n _proto2.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto2.toString = function toString() {\n return 'FixedRules:' + this._offset.toString();\n };\n\n return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n _inheritsLoose(ZoneOffset, _ZoneId);\n\n function ZoneOffset(totalSeconds) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n\n ZoneOffset._validateTotalSeconds(totalSeconds);\n\n _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n _this._id = ZoneOffset._buildId(totalSeconds);\n return _this;\n }\n\n var _proto = ZoneOffset.prototype;\n\n _proto.totalSeconds = function totalSeconds() {\n return this._totalSeconds;\n };\n\n _proto.id = function id() {\n return this._id;\n };\n\n ZoneOffset._buildId = function _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n var absTotalSeconds = Math.abs(totalSeconds);\n var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var buf = '' + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n }\n\n return buf;\n }\n };\n\n ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException('Zone offset hours not in valid range: value ' + hours + ' is not in the range -18 to 18');\n }\n\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException('Zone offset minutes not in valid range: abs(value) ' + Math.abs(minutes) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException('Zone offset seconds not in valid range: abs(value) ' + Math.abs(seconds) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset.of = function of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n var offset = ID_CACHE[offsetId];\n\n if (offset != null) {\n return offset;\n }\n\n var hours, minutes, seconds;\n\n switch (offsetId.length) {\n case 2:\n offsetId = offsetId[0] + '0' + offsetId[1];\n\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n\n default:\n throw new DateTimeException('Invalid ID for ZoneOffset, invalid format: ' + offsetId);\n }\n\n var first = offsetId[0];\n\n if (first !== '+' && first !== '-') {\n throw new DateTimeException('Invalid ID for ZoneOffset, plus/minus not found when expected: ' + offsetId);\n }\n\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n };\n\n ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException('Invalid ID for ZoneOffset, colon not found when expected: ' + offsetId);\n }\n\n var ch1 = offsetId[pos];\n var ch2 = offsetId[pos + 1];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException('Invalid ID for ZoneOffset, non numeric characters found: ' + offsetId);\n }\n\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n };\n\n ZoneOffset.ofHours = function ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n };\n\n ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n };\n\n ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n\n var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n var totalSecs = totalSeconds;\n var result = SECONDS_CACHE[totalSecs];\n\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._totalSeconds;\n };\n\n _proto.toString = function toString() {\n return this._id;\n };\n\n return ZoneOffset;\n}(ZoneId);\nfunction _init$7() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n\n DateTimeBuilder.create = function create(field, value) {\n var dtb = new DateTimeBuilder();\n\n dtb._addFieldValue(field, value);\n\n return dtb;\n };\n\n function DateTimeBuilder() {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this.fieldValues = new EnumMap();\n _this.chrono = null;\n _this.zone = null;\n _this.date = null;\n _this.time = null;\n _this.leapSecond = false;\n _this.excessDays = null;\n return _this;\n }\n\n var _proto = DateTimeBuilder.prototype;\n\n _proto.getFieldValue0 = function getFieldValue0(field) {\n return this.fieldValues.get(field);\n };\n\n _proto._addFieldValue = function _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n var old = this.getFieldValue0(field);\n\n if (old != null && old !== value) {\n throw new DateTimeException('Conflict found: ' + field + ' ' + old + ' differs from ' + field + ' ' + value + ': ' + this);\n }\n\n return this._putFieldValue0(field, value);\n };\n\n _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n };\n\n _proto.resolve = function resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n\n this._mergeDate(resolverStyle);\n\n this._mergeTime(resolverStyle);\n\n this._resolveTimeInferZeroes(resolverStyle);\n\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n\n this._resolveInstant();\n\n return this;\n };\n\n _proto._mergeDate = function _mergeDate(resolverStyle) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n };\n\n _proto._checkDate = function _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n\n for (var fieldName in this.fieldValues.keySet()) {\n var field = ChronoField.byName(fieldName);\n\n if (field) {\n if (this.fieldValues.get(field) !== undefined) {\n if (field.isDateBased()) {\n var val1 = void 0;\n\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n\n var val2 = this.fieldValues.get(field);\n\n if (val1 !== val2) {\n throw new DateTimeException('Conflict found: Field ' + field + ' ' + val1 + ' differs from ' + field + ' ' + val2 + ' derived from ' + date);\n }\n }\n }\n }\n }\n }\n };\n\n _proto._mergeTime = function _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n }\n };\n\n _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n if (hod == null) {\n return;\n }\n\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n\n if (moh != null && som == null && nos != null) {\n return;\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n\n var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n\n if (moh != null) {\n var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n\n if (som != null) {\n var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n\n if (nos != null) {\n var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n var _hodVal = hod;\n\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n\n var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n\n this._addObject(LocalTime.ofNanoOfDay(nod));\n\n this.excessDays = Period.ofDays(excessDays);\n } else {\n var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n\n var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n\n var sod = MathUtil.floorMod(totalSecs, 86400);\n\n this._addObject(LocalTime.ofSecondOfDay(sod));\n\n this.excessDays = Period.ofDays(_excessDays);\n }\n } else {\n var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n\n _hodVal = MathUtil.floorMod(_hodVal, 24);\n\n this._addObject(LocalTime.of(_hodVal, 0));\n\n this.excessDays = Period.ofDays(_excessDays2);\n }\n }\n }\n\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n };\n\n _proto._addObject = function _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate) {\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime) {\n this.time = dateOrTime;\n }\n };\n\n _proto._resolveInstant = function _resolveInstant() {\n if (this.date != null && this.time != null) {\n var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs != null) {\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n }\n }\n };\n\n _proto.build = function build(type) {\n return type.queryFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field == null) {\n return false;\n }\n\n return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n var value = this.getFieldValue0(field);\n\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n\n throw new DateTimeException('Field not found: ' + field);\n }\n\n return value;\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (_query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (_query === TemporalQueries.localTime()) {\n return this.time;\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return _query.queryFrom(this);\n } else if (_query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n function DateTimeParseContext() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DateTimeParseContext) {\n this._constructorSelf.apply(this, arguments);\n\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n var _proto = DateTimeParseContext.prototype;\n\n _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n };\n\n _proto._constructorFormatter = function _constructorFormatter(formatter) {\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n };\n\n _proto._constructorSelf = function _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n };\n\n _proto.copy = function copy() {\n return new DateTimeParseContext(this);\n };\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.isStrict = function isStrict() {\n return this._strict;\n };\n\n _proto.setStrict = function setStrict(strict) {\n this._strict = strict;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n _proto.startOptional = function startOptional() {\n this._parsed.push(this.currentParsed().copy());\n };\n\n _proto.endOptional = function endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n };\n\n _proto.isCaseSensitive = function isCaseSensitive() {\n return this._caseSensitive;\n };\n\n _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n };\n\n _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n\n if (!this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n\n for (var i = 0; i < length; i++) {\n var ch1 = cs1[offset1 + i];\n var ch2 = cs2[offset2 + i];\n\n if (ch1 !== ch2) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.charEquals = function charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n\n return this.charEqualsIgnoreCase(ch1, ch2);\n };\n\n _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n };\n\n _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n var currentParsedFieldValues = this.currentParsed().fieldValues;\n var old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return old != null && old !== value ? ~errorPos : successPos;\n };\n\n _proto.setParsedZone = function setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n };\n\n _proto.getParsed = function getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n };\n\n _proto.toParsed = function toParsed() {\n return this.currentParsed();\n };\n\n _proto.currentParsed = function currentParsed() {\n return this._parsed[this._parsed.length - 1];\n };\n\n _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n };\n\n _proto.getEffectiveChronology = function getEffectiveChronology() {\n var chrono = this.currentParsed().chrono;\n\n if (chrono == null) {\n chrono = this._overrideChronology;\n\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n\n return chrono;\n };\n\n return DateTimeParseContext;\n}();\n\nvar Parsed = function (_Temporal) {\n _inheritsLoose(Parsed, _Temporal);\n\n function Parsed(dateTimeParseContext) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this.chrono = null;\n _this.zone = null;\n _this.fieldValues = new EnumMap();\n _this.leapSecond = false;\n _this.dateTimeParseContext = dateTimeParseContext;\n return _this;\n }\n\n var _proto2 = Parsed.prototype;\n\n _proto2.copy = function copy() {\n var cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n };\n\n _proto2.toString = function toString() {\n return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n };\n\n _proto2.isSupported = function isSupported(field) {\n return this.fieldValues.containsKey(field);\n };\n\n _proto2.get = function get(field) {\n var val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n };\n\n _proto2.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto2.toBuilder = function toBuilder() {\n var builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n };\n\n return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n\n this._optional = 0;\n }\n\n DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n return temporal;\n };\n\n var _proto = DateTimePrintContext.prototype;\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.startOptional = function startOptional() {\n this._optional++;\n };\n\n _proto.endOptional = function endOptional() {\n this._optional--;\n };\n\n _proto.getValueQuery = function getValueQuery(query) {\n var result = this._temporal.query(query);\n\n if (result == null && this._optional === 0) {\n throw new DateTimeException('Unable to extract value: ' + this._temporal);\n }\n\n return result;\n };\n\n _proto.getValue = function getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException && this._optional > 0) {\n return null;\n }\n\n throw ex;\n }\n };\n\n _proto.temporal = function temporal() {\n return this._temporal;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setDateTime = function setDateTime(temporal) {\n this._temporal = temporal;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\nvar Field = function (_TemporalField) {\n _inheritsLoose(Field, _TemporalField);\n\n function Field() {\n return _TemporalField.apply(this, arguments) || this;\n }\n\n var _proto = Field.prototype;\n\n _proto.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto._isIso = function _isIso() {\n return true;\n };\n\n Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n var wby = Field._getWeekBasedYear(date);\n\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n };\n\n Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n var date = LocalDate.of(wby, 1, 1);\n\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n return 53;\n }\n\n return 52;\n };\n\n Field._getWeek = function _getWeek(date) {\n var dow0 = date.dayOfWeek().ordinal();\n var doy0 = date.dayOfYear() - 1;\n var doyThu0 = doy0 + (3 - dow0);\n var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n var firstMonDoy0 = firstThuDoy0 - 3;\n\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n\n var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n\n if (week === 53) {\n if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n week = 1;\n }\n }\n\n return week;\n };\n\n Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n var year = date.year();\n var doy = date.dayOfYear();\n\n if (doy <= 3) {\n var dow = date.dayOfWeek().ordinal();\n\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n var _dow = date.dayOfWeek().ordinal();\n\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n\n if (doy - _dow >= 0) {\n year++;\n }\n }\n\n return year;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.resolve = function resolve() {\n return null;\n };\n\n _proto.name = function name() {\n return this.toString();\n };\n\n return Field;\n}(TemporalField);\n\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n\n function DAY_OF_QUARTER_FIELD() {\n return _Field.apply(this, arguments) || this;\n }\n\n var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n\n _proto2.toString = function toString() {\n return 'DayOfQuarter';\n };\n\n _proto2.baseUnit = function baseUnit() {\n return ChronoUnit.DAYS;\n };\n\n _proto2.rangeUnit = function rangeUnit() {\n return QUARTER_YEARS;\n };\n\n _proto2.range = function range() {\n return ValueRange.of(1, 90, 92);\n };\n\n _proto2.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n };\n\n _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var qoy = temporal.getLong(QUARTER_OF_YEAR);\n\n if (qoy === 1) {\n var year = temporal.getLong(ChronoField.YEAR);\n return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n }\n\n return this.range();\n };\n\n _proto2.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n var year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n };\n\n _proto2.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n };\n\n _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var yearLong = fieldValues.get(ChronoField.YEAR);\n var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n\n var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n var doq = fieldValues.get(DAY_OF_QUARTER);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var max = 92;\n\n if (_qoy === 1) {\n max = IsoChronology.isLeapYear(y) ? 91 : 90;\n } else if (_qoy === 2) {\n max = 91;\n }\n\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this);\n }\n\n date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n };\n\n return DAY_OF_QUARTER_FIELD;\n}(Field);\n\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n\n function QUARTER_OF_YEAR_FIELD() {\n return _Field2.apply(this, arguments) || this;\n }\n\n var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n\n _proto3.toString = function toString() {\n return 'QuarterOfYear';\n };\n\n _proto3.baseUnit = function baseUnit() {\n return QUARTER_YEARS;\n };\n\n _proto3.rangeUnit = function rangeUnit() {\n return ChronoUnit.YEARS;\n };\n\n _proto3.range = function range() {\n return ValueRange.of(1, 4);\n };\n\n _proto3.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n };\n\n _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return this.range();\n };\n\n _proto3.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n\n var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv(moy + 2, 3);\n };\n\n _proto3.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n };\n\n return QUARTER_OF_YEAR_FIELD;\n}(Field);\n\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n\n function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n return _Field3.apply(this, arguments) || this;\n }\n\n var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto4.toString = function toString() {\n return 'WeekOfWeekBasedYear';\n };\n\n _proto4.baseUnit = function baseUnit() {\n return ChronoUnit.WEEKS;\n };\n\n _proto4.rangeUnit = function rangeUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto4.range = function range() {\n return ValueRange.of(1, 52, 53);\n };\n\n _proto4.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n };\n\n _proto4.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeek(LocalDate.from(temporal));\n };\n\n _proto4.adjustInto = function adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n };\n\n _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n\n var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var dow = dowLong;\n var weeks = 0;\n\n if (dow > 7) {\n weeks = MathUtil.intDiv(dow - 1, 7);\n dow = MathUtil.intMod(dow - 1, 7) + 1;\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var temp = LocalDate.of(wby, 1, 4);\n\n var range = Field._getWeekRangeByLocalDate(temp);\n\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this);\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n };\n\n _proto4.displayName = function displayName() {\n return 'Week';\n };\n\n return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n\n function WEEK_BASED_YEAR_FIELD() {\n return _Field4.apply(this, arguments) || this;\n }\n\n var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto5.toString = function toString() {\n return 'WeekBasedYear';\n };\n\n _proto5.baseUnit = function baseUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto5.rangeUnit = function rangeUnit() {\n return ChronoUnit.FOREVER;\n };\n\n _proto5.range = function range() {\n return ChronoField.YEAR.range();\n };\n\n _proto5.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n };\n\n _proto5.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n };\n\n _proto5.adjustInto = function adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n var date = LocalDate.from(temporal);\n var dow = date.get(ChronoField.DAY_OF_WEEK);\n\n var week = Field._getWeek(date);\n\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n\n var resolved = LocalDate.of(newWby, 1, 4);\n var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n };\n\n return WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar Unit = function (_TemporalUnit) {\n _inheritsLoose(Unit, _TemporalUnit);\n\n function Unit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto6 = Unit.prototype;\n\n _proto6.duration = function duration() {\n return this._duration;\n };\n\n _proto6.isDurationEstimated = function isDurationEstimated() {\n return true;\n };\n\n _proto6.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto6.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto6.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n };\n\n _proto6.addTo = function addTo(temporal, periodToAdd) {\n switch (this) {\n case WEEK_BASED_YEARS:\n {\n var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n\n case QUARTER_YEARS:\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.between = function between(temporal1, temporal2) {\n switch (this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.toString = function toString() {\n return name;\n };\n\n return Unit;\n}(TemporalUnit);\n\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$8() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DecimalStyle = function () {\n function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n var _proto = DecimalStyle.prototype;\n\n _proto.positiveSign = function positiveSign() {\n return this._positiveSign;\n };\n\n _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.negativeSign = function negativeSign() {\n return this._negativeSign;\n };\n\n _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n };\n\n _proto.zeroDigit = function zeroDigit() {\n return this._zeroDigit;\n };\n\n _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.decimalSeparator = function decimalSeparator() {\n return this._decimalSeparator;\n };\n\n _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n };\n\n _proto.convertToDigit = function convertToDigit(char) {\n var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n\n return val >= 0 && val <= 9 ? val : -1;\n };\n\n _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n\n var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n var convertedText = '';\n\n for (var i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n\n return convertedText;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof DecimalStyle) {\n return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n };\n\n _proto.toString = function toString() {\n return 'DecimalStyle[' + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + ']';\n };\n\n DecimalStyle.of = function of() {\n throw new Error('not yet supported');\n };\n\n DecimalStyle.availableLocales = function availableLocales() {\n throw new Error('not yet supported');\n };\n\n return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n _inheritsLoose(SignStyle, _Enum);\n\n function SignStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SignStyle.prototype;\n\n _proto.parse = function parse(positive, strict, fixedWidth) {\n switch (this) {\n case SignStyle.NORMAL:\n return !positive || !strict;\n\n case SignStyle.ALWAYS:\n case SignStyle.EXCEEDS_PAD:\n return true;\n\n default:\n return !strict && !fixedWidth;\n }\n };\n\n return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n _inheritsLoose(TextStyle, _Enum);\n\n function TextStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TextStyle.prototype;\n\n _proto.isStandalone = function isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n\n default:\n return false;\n }\n };\n\n _proto.asStandalone = function asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n\n default:\n return this;\n }\n };\n\n _proto.asNormal = function asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n\n default:\n return this;\n }\n };\n\n return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n function CharLiteralPrinterParser(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException('invalid literal, too long: \"' + literal + '\"');\n }\n\n this._literal = literal;\n }\n\n var _proto = CharLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n var ch = text.charAt(position);\n\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n\n return \"'\" + this._literal + \"'\";\n };\n\n return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CompositePrinterParser = function () {\n function CompositePrinterParser(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n var _proto = CompositePrinterParser.prototype;\n\n _proto.withOptional = function withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n\n return new CompositePrinterParser(this._printerParsers, optional);\n };\n\n _proto.print = function print(context, buf) {\n var length = buf.length();\n\n if (this._optional) {\n context.startOptional();\n }\n\n try {\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n\n if (pp.print(context, buf) === false) {\n buf.setLength(length);\n return true;\n }\n }\n } finally {\n if (this._optional) {\n context.endOptional();\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n if (this._optional) {\n context.startOptional();\n var pos = position;\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n pos = pp.parse(context, text, pos);\n\n if (pos < 0) {\n context.endOptional(false);\n return position;\n }\n }\n\n context.endOptional(true);\n return pos;\n } else {\n for (var _i = 0; _i < this._printerParsers.length; _i++) {\n var _pp = this._printerParsers[_i];\n position = _pp.parse(context, text, position);\n\n if (position < 0) {\n break;\n }\n }\n\n return position;\n }\n };\n\n _proto.toString = function toString() {\n var buf = '';\n\n if (this._printerParsers != null) {\n buf += this._optional ? '[' : '(';\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n buf += pp.toString();\n }\n\n buf += this._optional ? ']' : ')';\n }\n\n return buf;\n };\n\n return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n requireNonNull(field, 'field');\n\n if (field.range().isFixed() === false) {\n throw new IllegalArgumentException('Field must have a fixed set of values: ' + field);\n }\n\n if (minWidth < 0 || minWidth > 9) {\n throw new IllegalArgumentException('Minimum width must be from 0 to 9 inclusive but was ' + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException('Maximum width must be from 1 to 9 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException('Maximum width must exceed or equal the minimum width but ' + maxWidth + ' < ' + minWidth);\n }\n\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n var _proto = FractionPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var value = context.getValue(this.field);\n\n if (value === null) {\n return false;\n }\n\n var symbols = context.symbols();\n\n if (value === 0) {\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n for (var i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n var fraction = this.convertToFraction(value, symbols.zeroDigit());\n var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n\n if (fraction * 1 > 0) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n\n var str = fraction;\n str = symbols.convertNumberToI18N(str);\n\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n buf.append(str);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var effectiveMin = context.isStrict() ? this.minWidth : 0;\n var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n var length = text.length;\n\n if (position === length) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n position++;\n }\n\n var minEndPos = position + effectiveMin;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var maxEndPos = Math.min(position + effectiveMax, length);\n var total = 0;\n var pos = position;\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position;\n }\n\n pos--;\n break;\n }\n\n total = total * 10 + digit;\n }\n\n var moveLeft = pos - position;\n var scale = Math.pow(10, moveLeft);\n var value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n };\n\n _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n var range = this.field.range();\n range.checkValidValue(value, this.field);\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = value - _min;\n\n var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n\n var fraction = '' + _scaled;\n\n while (fraction.length < 9) {\n fraction = zeroDigit + fraction;\n }\n\n return fraction;\n };\n\n _proto.convertFromFraction = function convertFromFraction(total, scale) {\n var range = this.field.range();\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = MathUtil.intDiv(total * _range, scale);\n\n return _value;\n };\n\n _proto.toString = function toString() {\n var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n return 'Fraction(' + this.field + ',' + this.minWidth + ',' + this.maxWidth + decimal + ')';\n };\n\n return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n if (subsequentWidth === void 0) {\n subsequentWidth = 0;\n }\n\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n var _proto = NumberPrinterParser.prototype;\n\n _proto.field = function field() {\n return this._field;\n };\n\n _proto.minWidth = function minWidth() {\n return this._minWidth;\n };\n\n _proto.maxWidth = function maxWidth() {\n return this._maxWidth;\n };\n\n _proto.signStyle = function signStyle() {\n return this._signStyle;\n };\n\n _proto.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n };\n\n _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n };\n\n _proto._isFixedWidth = function _isFixedWidth() {\n return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n };\n\n _proto.print = function print(context, buf) {\n var contextValue = context.getValue(this._field);\n\n if (contextValue == null) {\n return false;\n }\n\n var value = this._getValue(context, contextValue);\n\n var symbols = context.symbols();\n var str = '' + Math.abs(value);\n\n if (str.length > this._maxWidth) {\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' exceeds the maximum print width of ' + this._maxWidth);\n }\n\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n\n break;\n\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' cannot be negative according to the SignStyle');\n }\n }\n\n for (var i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n\n buf.append(str);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n assert(position >= 0 && position < length);\n var sign = text.charAt(position);\n var negative = false;\n var positive = false;\n\n if (sign === context.symbols().positiveSign()) {\n if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n positive = true;\n position++;\n } else if (sign === context.symbols().negativeSign()) {\n if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n negative = true;\n position++;\n } else {\n if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n return ~position;\n }\n }\n\n var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n var minEndPos = position + effMinWidth;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n var total = 0;\n var pos = position;\n\n for (var pass = 0; pass < 2; pass++) {\n var maxEndPos = Math.min(pos + effMaxWidth, length);\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n pos--;\n\n if (pos < minEndPos) {\n return ~position;\n }\n\n break;\n }\n\n if (pos - position > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n\n if (this._subsequentWidth > 0 && pass === 0) {\n var parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1);\n }\n\n if (total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n var _parseLen = pos - position;\n\n if (positive) {\n if (_parseLen <= this._minWidth) {\n return ~(position - 1);\n }\n } else {\n if (_parseLen > this._minWidth) {\n return ~position;\n }\n }\n }\n\n return this._setValue(context, total, position, pos);\n };\n\n _proto._getValue = function _getValue(context, value) {\n return value;\n };\n\n _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto.toString = function toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return 'Value(' + this._field + ')';\n }\n\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return 'Value(' + this._field + ',' + this._minWidth + ')';\n }\n\n return 'Value(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + this._signStyle + ')';\n };\n\n return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n\n function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n var _this;\n\n _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException('The width must be from 1 to 10 inclusive but was ' + width);\n }\n\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException('The maxWidth must be from 1 to 10 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n\n if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n\n _this._baseValue = baseValue;\n _this._baseDate = baseDate;\n return _this;\n }\n\n var _proto2 = ReducedPrinterParser.prototype;\n\n _proto2._getValue = function _getValue(context, value) {\n var absValue = Math.abs(value);\n var baseValue = this._baseValue;\n\n if (this._baseDate !== null) {\n context.temporal();\n var chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n\n return absValue % EXCEED_POINTS[this._maxWidth];\n };\n\n _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n var baseValue = this._baseValue;\n\n if (this._baseDate != null) {\n var chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n var parseLen = successPos - errorPos;\n\n if (parseLen === this._minWidth && value >= 0) {\n var range = EXCEED_POINTS[this._minWidth];\n var lastPart = baseValue % range;\n var basePart = baseValue - lastPart;\n\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n\n if (value < baseValue) {\n value += range;\n }\n }\n\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto2.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n };\n\n _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n };\n\n _proto2.isFixedWidth = function isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n\n return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n };\n\n _proto2.toString = function toString() {\n return 'ReducedValue(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + (this._baseDate != null ? this._baseDate : this._baseValue) + ')';\n };\n\n return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n function OffsetIdPrinterParser(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n var _proto = OffsetIdPrinterParser.prototype;\n\n _proto._checkPattern = function _checkPattern(pattern) {\n for (var i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n\n throw new IllegalArgumentException('Invalid zone offset pattern: ' + pattern);\n };\n\n _proto.print = function print(context, buf) {\n var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs == null) {\n return false;\n }\n\n var totalSecs = MathUtil.safeToInt(offsetSecs);\n\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n var bufPos = buf.length();\n var output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + '0').appendChar(MathUtil.intMod(absHours, 10) + '0');\n\n if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + '0').appendChar(absMinutes % 10 + '0');\n output += absMinutes;\n\n if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + '0').appendChar(absSeconds % 10 + '0');\n output += absSeconds;\n }\n }\n\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n var noOffsetLen = this.noOffsetText.length;\n\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n var sign = text[position];\n\n if (sign === '+' || sign === '-') {\n var negative = sign === '-' ? -1 : 1;\n var array = [0, 0, 0, 0];\n array[0] = position + 1;\n\n if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n\n return ~position;\n };\n\n _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false;\n }\n\n var pos = array[0];\n\n if (this.type % 2 === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n\n pos++;\n }\n\n if (pos + 2 > parseText.length) {\n return required;\n }\n\n var ch1 = parseText[pos++];\n var ch2 = parseText[pos++];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n\n var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n\n if (value < 0 || value > 59) {\n return required;\n }\n\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n };\n\n _proto.toString = function toString() {\n var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return 'Offset(' + PATTERNS[this.type] + ',\\'' + converted + '\\')';\n };\n\n return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n var _proto = PadPrinterParserDecorator.prototype;\n\n _proto.print = function print(context, buf) {\n var preLen = buf.length();\n\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n\n var len = buf.length() - preLen;\n\n if (len > this._padWidth) {\n throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n }\n\n for (var i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var strict = context.isStrict();\n var caseSensitive = context.isCaseSensitive();\n assert(!(position > text.length));\n assert(position >= 0);\n\n if (position === text.length) {\n return ~position;\n }\n\n var endPos = position + this._padWidth;\n\n if (endPos > text.length) {\n if (strict) {\n return ~position;\n }\n\n endPos = text.length;\n }\n\n var pos = position;\n\n while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n\n text = text.substring(0, endPos);\n\n var resultPos = this._printerParser.parse(context, text, pos);\n\n if (resultPos !== endPos && strict) {\n return ~(position + pos);\n }\n\n return resultPos;\n };\n\n _proto.toString = function toString() {\n return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : ',\\'' + this._padChar + '\\')');\n };\n\n return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n _inheritsLoose(SettingsParser, _Enum);\n\n function SettingsParser() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SettingsParser.prototype;\n\n _proto.print = function print() {\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n switch (this) {\n case SettingsParser.SENSITIVE:\n context.setCaseSensitive(true);\n break;\n\n case SettingsParser.INSENSITIVE:\n context.setCaseSensitive(false);\n break;\n\n case SettingsParser.STRICT:\n context.setStrict(true);\n break;\n\n case SettingsParser.LENIENT:\n context.setStrict(false);\n break;\n }\n\n return position;\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case SettingsParser.SENSITIVE:\n return 'ParseCaseSensitive(true)';\n\n case SettingsParser.INSENSITIVE:\n return 'ParseCaseSensitive(false)';\n\n case SettingsParser.STRICT:\n return 'ParseStrict(true)';\n\n case SettingsParser.LENIENT:\n return 'ParseStrict(false)';\n }\n };\n\n return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n function StringLiteralPrinterParser(literal) {\n this._literal = literal;\n }\n\n var _proto = StringLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n var converted = this._literal.replace(\"'\", \"''\");\n\n return '\\'' + converted + '\\'';\n };\n\n return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n function ZoneRulesProvider() {}\n\n ZoneRulesProvider.getRules = function getRules(zoneId) {\n throw new DateTimeException('unsupported ZoneId:' + zoneId);\n };\n\n ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n return [];\n };\n\n return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n _inheritsLoose(ZoneRegion, _ZoneId);\n\n ZoneRegion.ofId = function ofId(zoneId) {\n var rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n };\n\n function ZoneRegion(id, rules) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._id = id;\n _this._rules = rules;\n return _this;\n }\n\n var _proto = ZoneRegion.prototype;\n\n _proto.id = function id() {\n return this._id;\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n function ZoneIdPrinterParser(query, description) {\n this.query = query;\n this.description = description;\n }\n\n var _proto = ZoneIdPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var zone = context.getValueQuery(this.query);\n\n if (zone == null) {\n return false;\n }\n\n buf.append(zone.id());\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position > length) {\n return ~position;\n }\n\n if (position === length) {\n return ~position;\n }\n\n var nextChar = text.charAt(position);\n\n if (nextChar === '+' || nextChar === '-') {\n var newContext = context.copy();\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n return endPos;\n }\n\n var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n var nextNextChar = text.charAt(position + 1);\n\n if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n\n if (text.substr(position, 6) === 'SYSTEM') {\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n var maxParseLength = length - position;\n var treeMap = zoneIdTree.treeMap;\n var parsedZoneId = null;\n var parseLength = 0;\n\n while (treeMap != null) {\n var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n };\n\n _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n var prefix = text.substring(prefixPos, position).toUpperCase();\n var newContext = context.copy();\n\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n };\n\n _proto.toString = function toString() {\n return this.description;\n };\n\n return ZoneIdPrinterParser;\n}();\n\nvar ZoneIdTree = function () {\n ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n return a.length - b.length;\n });\n var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n\n for (var i = 0; i < sortedZoneIds.length; i++) {\n treeMap.add(sortedZoneIds[i]);\n }\n\n return new ZoneIdTree(sortedZoneIds.length, treeMap);\n };\n\n function ZoneIdTree(size, treeMap) {\n this.size = size;\n this.treeMap = treeMap;\n }\n\n return ZoneIdTree;\n}();\n\nvar ZoneIdTreeMap = function () {\n function ZoneIdTreeMap(length, isLeaf) {\n if (length === void 0) {\n length = 0;\n }\n\n if (isLeaf === void 0) {\n isLeaf = false;\n }\n\n this.length = length;\n this.isLeaf = isLeaf;\n this._treeMap = {};\n }\n\n var _proto2 = ZoneIdTreeMap.prototype;\n\n _proto2.add = function add(zoneId) {\n var idLength = zoneId.length;\n\n if (idLength === this.length) {\n this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n } else if (idLength > this.length) {\n var subZoneId = zoneId.substr(0, this.length);\n var subTreeMap = this._treeMap[subZoneId];\n\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n\n subTreeMap.add(zoneId);\n }\n };\n\n _proto2.get = function get(zoneId) {\n return this._treeMap[zoneId];\n };\n\n return ZoneIdTreeMap;\n}();\n\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH$1 = 15;\nvar DateTimeFormatterBuilder = function () {\n function DateTimeFormatterBuilder() {\n this._active = this;\n this._parent = null;\n this._printerParsers = [];\n this._optional = false;\n this._padNextWidth = 0;\n this._padNextChar = null;\n this._valueParserIndex = -1;\n }\n\n DateTimeFormatterBuilder._of = function _of(parent, optional) {\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n var dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n return dtFormatterBuilder;\n };\n\n var _proto = DateTimeFormatterBuilder.prototype;\n\n _proto.parseCaseSensitive = function parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n\n return this;\n };\n\n _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n\n return this;\n };\n\n _proto.parseStrict = function parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n\n return this;\n };\n\n _proto.parseLenient = function parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n\n return this;\n };\n\n _proto.appendValue = function appendValue() {\n if (arguments.length === 1) {\n return this._appendValue1.apply(this, arguments);\n } else if (arguments.length === 2) {\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n };\n\n _proto._appendValue1 = function _appendValue1(field) {\n requireNonNull(field);\n\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH$1, SignStyle.NORMAL));\n\n return this;\n };\n\n _proto._appendValue2 = function _appendValue2(field, width) {\n requireNonNull(field);\n\n if (width < 1 || width > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + width);\n }\n\n var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n\n if (minWidth < 1 || minWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n }\n\n var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto.appendValueReduced = function appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n var activeValueParser = this._active._valueParserIndex;\n var basePP = this._active._printerParsers[activeValueParser];\n\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n\n this._appendInternal(pp.withFixedWidth());\n\n this._active._valueParserIndex = activeValueParser;\n } else {\n basePP = basePP.withFixedWidth();\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n return this;\n };\n\n _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n\n return this;\n };\n\n _proto.appendInstant = function appendInstant(fractionalDigits) {\n if (fractionalDigits === void 0) {\n fractionalDigits = -2;\n }\n\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException('Invalid fractional digits: ' + fractionalDigits);\n }\n\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n\n return this;\n };\n\n _proto.appendOffsetId = function appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n\n return this;\n };\n\n _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n\n return this;\n };\n\n _proto.appendZoneId = function appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n\n return this;\n };\n\n _proto.appendPattern = function appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n\n this._parsePattern(pattern);\n\n return this;\n };\n\n _proto.appendZoneText = function appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendText = function appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendWeekField = function appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto._parsePattern = function _parsePattern(pattern) {\n var FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (var pos = 0; pos < pattern.length; pos++) {\n var cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n var start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n var count = pos - start;\n\n if (cur === 'p') {\n var pad = 0;\n\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n pad = count;\n start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n count = pos - start;\n }\n }\n\n if (pad === 0) {\n throw new IllegalArgumentException('Pad letter \\'p\\' must be followed by valid pad pattern: ' + pattern);\n }\n\n this.padNext(pad);\n }\n\n var field = FIELD_MAP[cur];\n\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException('Pattern letter count must be 2: ' + cur);\n }\n\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException('Pattern letter count must be 1 or 4: ' + cur);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException('Unknown pattern letter: ' + cur);\n }\n\n pos--;\n } else if (cur === '\\'') {\n var _start = pos++;\n\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break;\n }\n }\n }\n\n if (pos >= pattern.length) {\n throw new IllegalArgumentException('Pattern ends with an incomplete string literal: ' + pattern);\n }\n\n var str = pattern.substring(_start + 1, pos);\n\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n } else if (cur === '[') {\n this.optionalStart();\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n\n this.optionalEnd();\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException('Pattern includes reserved character: \\'' + cur + '\\'');\n } else {\n this.appendLiteral(cur);\n }\n }\n };\n\n _proto._parseField = function _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.EXCEEDS_PAD);\n }\n\n break;\n\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n\n case 2:\n throw new IllegalArgumentException('Invalid number of pattern letters: ' + cur);\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n\n break;\n }\n };\n\n _proto.padNext = function padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n };\n\n _proto._padNext1 = function _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n };\n\n _proto._padNext2 = function _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException('The pad width must be at least one but was ' + padWidth);\n }\n\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n };\n\n _proto.optionalStart = function optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n };\n\n _proto.optionalEnd = function optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n\n if (this._active._printerParsers.length > 0) {\n var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n\n return this;\n };\n\n _proto._appendInternal = function _appendInternal(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.appendLiteral = function appendLiteral(literal) {\n assert(literal != null);\n\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n\n return this;\n };\n\n _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.append = function append(formatter) {\n requireNonNull(formatter, 'formatter');\n\n this._appendInternal(formatter._toPrinterParser(false));\n\n return this;\n };\n\n _proto.toFormatter = function toFormatter(resolverStyle) {\n if (resolverStyle === void 0) {\n resolverStyle = ResolverStyle.SMART;\n }\n\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n\n var pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n };\n\n return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\n\nvar InstantPrinterParser = function () {\n function InstantPrinterParser(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n var _proto2 = InstantPrinterParser.prototype;\n\n _proto2.print = function print(context, buf) {\n var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n var inNanos = 0;\n\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n\n if (inSecs == null) {\n return false;\n }\n\n var inSec = inSecs;\n var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n\n if (inSec >= -SECONDS_0000_TO_1970) {\n var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n\n buf.append(ldt);\n\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n\n var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n var pos = buf.length();\n buf.append(_ldt);\n\n if (_ldt.second() === 0) {\n buf.append(':00');\n }\n\n if (_hi < 0) {\n if (_ldt.year() === -10000) {\n buf.replace(pos, pos + 2, '' + (_hi - 1));\n } else if (_lo === 0) {\n buf.insert(pos, _hi);\n } else {\n buf.insert(pos + 1, Math.abs(_hi));\n }\n }\n }\n\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n } else {\n buf.append(('' + (inNano + 1000000000)).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n buf.append('.');\n var div = 100000000;\n\n for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n var digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - digit * div;\n div = MathUtil.intDiv(div, 10);\n }\n }\n\n buf.append('Z');\n return true;\n };\n\n _proto2.parse = function parse(context, text, position) {\n var newContext = context.copy();\n var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n\n var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n\n var pos = parser.parse(newContext, text, position);\n\n if (pos < 0) {\n return pos;\n }\n\n var yearParsed = newContext.getParsed(ChronoField.YEAR);\n var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n var sec = secVal != null ? secVal : 0;\n var nano = nanoVal != null ? nanoVal : 0;\n var year = MathUtil.intMod(yearParsed, 10000);\n var days = 0;\n\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n\n var instantSecs;\n\n try {\n var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n\n var successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n };\n\n _proto2.toString = function toString() {\n return 'Instant()';\n };\n\n return InstantPrinterParser;\n}();\n\nfunction _init$9() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringBuilder = function () {\n function StringBuilder() {\n this._str = '';\n }\n\n var _proto = StringBuilder.prototype;\n\n _proto.append = function append(str) {\n this._str += str;\n return this;\n };\n\n _proto.appendChar = function appendChar(str) {\n this._str += str[0];\n return this;\n };\n\n _proto.insert = function insert(offset, str) {\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n };\n\n _proto.replace = function replace(start, end, str) {\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n };\n\n _proto.length = function length() {\n return this._str.length;\n };\n\n _proto.setLength = function setLength(length) {\n this._str = this._str.slice(0, length);\n return this;\n };\n\n _proto.toString = function toString() {\n return this._str;\n };\n\n return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n };\n\n DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n };\n\n DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n };\n\n function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n if (chrono === void 0) {\n chrono = IsoChronology.INSTANCE;\n }\n\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n this._printerParser = printerParser;\n this._locale = locale;\n this._decimalStyle = decimalStyle;\n this._resolverStyle = resolverStyle;\n this._resolverFields = resolverFields;\n this._chrono = chrono;\n this._zone = zone;\n }\n\n var _proto = DateTimeFormatter.prototype;\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.decimalStyle = function decimalStyle() {\n return this._decimalStyle;\n };\n\n _proto.chronology = function chronology() {\n return this._chrono;\n };\n\n _proto.withChronology = function withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n };\n\n _proto.withLocale = function withLocale() {\n return this;\n };\n\n _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n };\n\n _proto.format = function format(temporal) {\n var buf = new StringBuilder(32);\n\n this._formatTo(temporal, buf);\n\n return buf.toString();\n };\n\n _proto._formatTo = function _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n var context = new DateTimePrintContext(temporal, this);\n\n this._printerParser.print(context, appendable);\n };\n\n _proto.parse = function parse(text, type) {\n if (arguments.length === 1) {\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n };\n\n _proto.parse1 = function parse1(text) {\n requireNonNull(text, 'text');\n\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto.parse2 = function parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n\n try {\n var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n\n return builder.build(type);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto._createError = function _createError(text, ex) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substring(0, 64) + '...';\n } else {\n abbr = text;\n }\n\n return new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed: ' + ex.message, text, 0, ex);\n };\n\n _proto._parseToBuilder = function _parseToBuilder(text, position) {\n var pos = position != null ? position : new ParsePosition(0);\n\n var result = this._parseUnresolved0(text, pos);\n\n if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substr(0, 64).toString() + '...';\n } else {\n abbr = text;\n }\n\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed at index ' + pos.getErrorIndex(), text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed, unparsed text found at index ' + pos.getIndex(), text, pos.getIndex());\n }\n }\n\n return result.toBuilder();\n };\n\n _proto.parseUnresolved = function parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n };\n\n _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n var context = new DateTimeParseContext(this);\n var pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n\n if (pos < 0) {\n position.setErrorIndex(~pos);\n return null;\n }\n\n position.setIndex(pos);\n return context.toParsed();\n };\n\n _proto._toPrinterParser = function _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n };\n\n _proto.toString = function toString() {\n var pattern = this._printerParser.toString();\n\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n };\n\n return DateTimeFormatter;\n}();\nfunction _init$a() {\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n _inheritsLoose(MonthDay, _TemporalAccessor);\n\n MonthDay.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n };\n\n MonthDay.now0 = function now0() {\n return this.nowClock(Clock.systemDefaultZone());\n };\n\n MonthDay.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n };\n\n MonthDay.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n var now = LocalDate.now(clock);\n return MonthDay.of(now.month(), now.dayOfMonth());\n };\n\n MonthDay.of = function of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n };\n\n MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException('Illegal value for DayOfMonth field, value ' + dayOfMonth + ' is not valid for month ' + month.toString());\n }\n\n return new MonthDay(month.value(), dayOfMonth);\n };\n\n MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n };\n\n MonthDay.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n\n try {\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain MonthDay from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n MonthDay.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n };\n\n MonthDay.parseString = function parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n };\n\n MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n };\n\n function MonthDay(month, dayOfMonth) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n return _this;\n }\n\n var _proto = MonthDay.prototype;\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n\n return _TemporalAccessor.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isValidYear = function isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n };\n\n _proto.withMonth = function withMonth(month) {\n return this.with(Month.of(month));\n };\n\n _proto.with = function _with(month) {\n requireNonNull(month, 'month');\n\n if (month.value() === this._month) {\n return this;\n }\n\n var day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n\n return MonthDay.of(this._month, dayOfMonth);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n };\n\n _proto.atYear = function atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n var cmp = this._month - other.monthValue();\n\n if (cmp === 0) {\n cmp = this._day - other.dayOfMonth();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof MonthDay) {\n var other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '--' + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return MonthDay;\n}(TemporalAccessor);\nvar PARSER;\nfunction _init$b() {\n PARSER = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n return MonthDay.from(temporal);\n });\n}\n\nvar YearMonth = function (_Temporal) {\n _inheritsLoose(YearMonth, _Temporal);\n\n YearMonth.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n };\n\n YearMonth.now0 = function now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n };\n\n YearMonth.nowZoneId = function nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n };\n\n YearMonth.nowClock = function nowClock(clock) {\n var now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n };\n\n YearMonth.of = function of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n };\n\n YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n };\n\n YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n };\n\n YearMonth.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n\n try {\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain YearMonth from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n YearMonth.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n };\n\n YearMonth.parseString = function parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER$1);\n };\n\n YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n };\n\n function YearMonth(year, month) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n return _this;\n }\n\n var _proto = YearMonth.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._getProlepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._getProlepticMonth = function _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.isValidDay = function isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.with = function _with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this.withAdjuster(adjusterOrField);\n } else {\n return this.withFieldValue(adjusterOrField, value);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n };\n\n _proto.withMonth = function withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return this.withYear(newYear);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusAmountUnit(MathUtil.MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n var end = YearMonth.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n\n switch (unit) {\n case ChronoUnit.MONTHS:\n return monthsUntil;\n\n case ChronoUnit.YEARS:\n return monthsUntil / 12;\n\n case ChronoUnit.DECADES:\n return monthsUntil / 120;\n\n case ChronoUnit.CENTURIES:\n return monthsUntil / 1200;\n\n case ChronoUnit.MILLENNIA:\n return monthsUntil / 12000;\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDay = function atDay(dayOfMonth) {\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.atEndOfMonth = function atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n var cmp = this._year - other.year();\n\n if (cmp === 0) {\n cmp = this._month - other.monthValue();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof YearMonth) {\n var other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return PARSER$1.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$c() {\n PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n return YearMonth.from(temporal);\n });\n}\n\nvar Year = function (_Temporal) {\n _inheritsLoose(Year, _Temporal);\n\n function Year(value) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(value);\n return _this;\n }\n\n var _proto = Year.prototype;\n\n _proto.value = function value() {\n return this._year;\n };\n\n Year.now = function now(zoneIdOrClock) {\n if (zoneIdOrClock === void 0) {\n zoneIdOrClock = undefined;\n }\n\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n };\n\n Year.now0 = function now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n };\n\n Year.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n };\n\n Year.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n var now = LocalDate.now(clock);\n return Year.of(now.year());\n };\n\n Year.of = function of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n };\n\n Year.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof Year) {\n return temporal;\n }\n\n try {\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Year from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n Year.parse = function parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n };\n\n Year.parseText = function parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER$2);\n };\n\n Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n if (formatter === void 0) {\n formatter = PARSER$2;\n }\n\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n };\n\n Year.isLeap = function isLeap(year) {\n return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isLeap = function isLeap() {\n return Year.isLeap(this._year);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return Year.of(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plus(MathUtil.MAX_SAFE_INTEGER, unit).plus(1, unit) : this.plus(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.YEAR, this._year);\n };\n\n _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n };\n\n _proto.length = function length() {\n return this.isLeap() ? 366 : 365;\n };\n\n _proto.atDay = function atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.atMonth = function atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n };\n\n _proto.atMonthMonth = function atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthNumber = function atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthDay = function atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query()');\n requireInstance(_query, TemporalQuery, 'query()');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '' + this._year;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var yearsUntil = end.value() - this.value();\n\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n return Year;\n}(Temporal);\nvar PARSER$2;\nfunction _init$d() {\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n PARSER$2 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n return Year.from(temporal);\n });\n}\n\nvar TemporalAdjusters = function () {\n function TemporalAdjusters() {}\n\n TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n };\n\n TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n };\n\n TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n };\n\n TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n };\n\n TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n };\n\n TemporalAdjusters.next = function next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n };\n\n TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n };\n\n TemporalAdjusters.previous = function previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n };\n\n TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n };\n\n return TemporalAdjusters;\n}();\n\nvar Impl = function (_TemporalAdjuster) {\n _inheritsLoose(Impl, _TemporalAdjuster);\n\n function Impl(ordinal) {\n var _this;\n\n _this = _TemporalAdjuster.call(this) || this;\n _this._ordinal = ordinal;\n return _this;\n }\n\n var _proto = Impl.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n switch (this._ordinal) {\n case 0:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n\n case 1:\n return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n case 2:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n\n case 3:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n\n case 4:\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n\n case 5:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n\n throw new IllegalStateException('Unreachable');\n };\n\n return Impl;\n}(TemporalAdjuster);\n\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n\n function DayOfWeekInMonth(ordinal, dow) {\n var _this2;\n\n _this2 = _TemporalAdjuster2.call(this) || this;\n _this2._ordinal = ordinal;\n _this2._dowValue = dow.value();\n return _this2;\n }\n\n var _proto2 = DayOfWeekInMonth.prototype;\n\n _proto2.adjustInto = function adjustInto(temporal) {\n if (this._ordinal >= 0) {\n var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n dowDiff += (this._ordinal - 1) * 7;\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n\n var daysDiff = this._dowValue - _curDow;\n daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n daysDiff -= (-this._ordinal - 1) * 7;\n return _temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return DayOfWeekInMonth;\n}(TemporalAdjuster);\n\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n\n function RelativeDayOfWeek(relative, dayOfWeek) {\n var _this3;\n\n _this3 = _TemporalAdjuster3.call(this) || this;\n requireNonNull(dayOfWeek, 'dayOfWeek');\n _this3._relative = relative;\n _this3._dowValue = dayOfWeek.value();\n return _this3;\n }\n\n var _proto3 = RelativeDayOfWeek.prototype;\n\n _proto3.adjustInto = function adjustInto(temporal) {\n var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n\n if ((this._relative & 1) === 0) {\n var daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n var _daysDiff = this._dowValue - calDow;\n\n return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n _inheritsLoose(IsoChronology, _Enum);\n\n function IsoChronology() {\n return _Enum.apply(this, arguments) || this;\n }\n\n IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n };\n\n var _proto = IsoChronology.prototype;\n\n _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n var current = fieldValues.get(field);\n\n if (current != null && current !== value) {\n throw new DateTimeException('Invalid state, field: ' + field + ' ' + current + ' conflicts with ' + field + ' ' + value);\n }\n\n fieldValues.put(field, value);\n };\n\n _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n\n var era = fieldValues.remove(ChronoField.ERA);\n\n if (era == null) {\n var year = fieldValues.get(ChronoField.YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n } else {\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException('Invalid value for era: ' + era);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n }\n\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var months = moy - 1;\n var days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART) {\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n\n return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n }\n\n var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(_y, doy);\n }\n\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n\n return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n }\n\n var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n\n return date;\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n\n return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n }\n\n var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n\n var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n\n if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n\n return _date;\n }\n }\n }\n\n return null;\n };\n\n _proto.date = function date(temporal) {\n return LocalDate.from(temporal);\n };\n\n return IsoChronology;\n}(Enum);\nfunction _init$e() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetTime, _DefaultInterfaceTemp);\n\n OffsetTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n\n try {\n var time = LocalTime.from(temporal);\n var offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n };\n\n OffsetTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n var now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n };\n\n OffsetTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n };\n\n function OffsetTime(time, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._time = time;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.atDate = function atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n };\n\n _proto.get = function get(field) {\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n\n return this._time.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localTime()) {\n return this._time;\n } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._time.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = OffsetTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end._toEpochNano() - this._toEpochNano();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return Math.floor(nanosUntil / 1000);\n\n case ChronoUnit.MILLIS:\n return Math.floor(nanosUntil / 1000000);\n\n case ChronoUnit.SECONDS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return Math.floor(nanosUntil / (12 * LocalTime.NANOS_PER_HOUR));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._time.plusSeconds(difference);\n\n return new OffsetTime(adjusted, offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n };\n\n _proto._toEpochNano = function _toEpochNano() {\n var nod = this._time.toNanoOfDay();\n\n var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetTime(time, offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n\n var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n\n return compare;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._time.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return OffsetTime;\n}(DefaultInterfaceTemporal);\nfunction _init$f() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n return OffsetTime.from(temporal);\n });\n}\n\nvar ChronoZonedDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoZonedDateTime, _DefaultInterfaceTemp);\n\n function ChronoZonedDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoZonedDateTime.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone();\n } else if (_query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.toInstant = function toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n\n return false;\n };\n\n return ChronoZonedDateTime;\n}(DefaultInterfaceTemporal);\n\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n\n ZonedDateTime.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n ZonedDateTime.of = function of() {\n if (arguments.length <= 2) {\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n };\n\n ZonedDateTime.of3 = function of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n };\n\n ZonedDateTime.of2 = function of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n };\n\n ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n };\n\n ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n\n var offset = null;\n var rules = zone.rules();\n var validOffsets = rules.validOffsets(localDateTime);\n\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n var trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null && validOffsets.some(function (validOffset) {\n return validOffset.equals(preferredOffset);\n })) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset');\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofInstant = function ofInstant() {\n if (arguments.length === 2) {\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n };\n\n ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n };\n\n ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n };\n\n ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n var rules = zone.rules();\n var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n };\n\n ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n\n if (rules.isValidOffset(localDateTime, offset) === false) {\n var trans = rules.transition(localDateTime);\n\n if (trans != null && trans.isGap()) {\n throw new DateTimeException('LocalDateTime ' + localDateTime + ' does not exist in zone ' + zone + ' due to a gap in the local time-line, typically caused by daylight savings');\n }\n\n throw new DateTimeException('ZoneOffset \"' + offset + '\" is not valid for LocalDateTime \"' + localDateTime + '\" in zone \"' + zone + '\"');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n\n var zone = ZoneId.from(temporal);\n\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n var zdt = ZonedDateTime._from(temporal, zone);\n\n if (zdt != null) return zdt;\n }\n\n var ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n };\n\n ZonedDateTime._from = function _from(temporal, zone) {\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if (!(ex instanceof DateTimeException)) throw ex;\n }\n };\n\n ZonedDateTime.__from = function __from(temporal, zone) {\n var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n };\n\n ZonedDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n };\n\n function ZonedDateTime(dateTime, offset, zone) {\n var _this;\n\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n _this = _ChronoZonedDateTime.call(this) || this;\n _this._dateTime = dateTime;\n _this._offset = offset;\n _this._zone = zone;\n return _this;\n }\n\n var _proto = ZonedDateTime.prototype;\n\n _proto._resolveLocal = function _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n };\n\n _proto._resolveInstant = function _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n };\n\n _proto._resolveOffset = function _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n\n return this;\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this._offset.totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n requireNonNull(field, 'field');\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this._dateTime);\n\n if (trans != null && trans.isOverlap()) {\n var earlierOffset = trans.offsetBefore();\n\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this.toLocalDateTime());\n\n if (trans != null) {\n var laterOffset = trans.offsetAfter();\n\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.zone = function zone() {\n return this._zone;\n };\n\n _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n };\n\n _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n var instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return ZonedDateTime._create(newValue, this.nano(), this._zone);\n\n case ChronoField.OFFSET_SECONDS:\n {\n var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n };\n\n _proto.withHour = function withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this.plusHours(-1 * hours);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n requireNonNull(_query, 'query');\n return _ChronoZonedDateTime.prototype.query.call(this, _query);\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = ZonedDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n\n var adjustedEnd = end._dateTime.plusSeconds(difference);\n\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n\n return unit.between(this, end);\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetDateTime = function toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n };\n\n _proto.toString = function toString() {\n var str = this._dateTime.toString() + this._offset.toString();\n\n if (this._offset !== this._zone) {\n str += '[' + this._zone.toString() + ']';\n }\n\n return str;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n };\n\n return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$g() {\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n return ZonedDateTime.from(temporal);\n });\n}\n\nvar OffsetDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetDateTime, _DefaultInterfaceTemp);\n\n OffsetDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n\n try {\n var offset = ZoneOffset.from(temporal);\n\n try {\n var ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n var instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetDateTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n var now = clockOrZone.instant();\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n };\n\n OffsetDateTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n };\n\n OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n var dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n };\n\n OffsetDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n };\n\n function OffsetDateTime(dateTime, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._dateTime = dateTime;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetDateTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = OffsetDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n };\n\n _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n throw new DateTimeException('Field too large for an int: ' + field);\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.get(field);\n }\n\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetTime = function toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n };\n\n _proto.toZonedDateTime = function toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.toInstant = function toInstant() {\n return this._dateTime.toInstant(this._offset);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster);\n\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field);\n\n if (field instanceof ChronoField) {\n var f = field;\n\n switch (f) {\n case ChronoField.INSTANT_SECONDS:\n return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n\n case ChronoField.OFFSET_SECONDS:\n {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetDateTime(dateTime, offset);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._dateTime.plusSeconds(difference);\n\n return new OffsetDateTime(adjusted, offset);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._dateTime.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return OffsetDateTime;\n}(DefaultInterfaceTemporal);\nfunction _init$h() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n return OffsetDateTime.from(temporal);\n });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n _inheritsLoose(LocalDate, _ChronoLocalDate);\n\n LocalDate.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone == null) {\n clock = Clock.systemDefaultZone();\n } else if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDate.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n var offset = zone.rules().offset(instant);\n var epochSec = instant.epochSecond() + offset.totalSeconds();\n var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n };\n\n LocalDate.of = function of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n };\n\n LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n var leap = IsoChronology.isLeapYear(year);\n\n if (dayOfYear === 366 && leap === false) {\n assert(false, 'Invalid date \\'DayOfYear 366\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n }\n\n var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n\n var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n };\n\n LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n if (epochDay === void 0) {\n epochDay = 0;\n }\n\n var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n\n yearEst += adjust;\n var marchDoy0 = doyEst;\n var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n var month = (marchMonth0 + 2) % 12 + 1;\n var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n var year = yearEst;\n return new LocalDate(year, month, dom);\n };\n\n LocalDate.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var date = temporal.query(TemporalQueries.localDate());\n\n if (date == null) {\n throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return date;\n };\n\n LocalDate.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n }\n\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n };\n\n LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n\n return LocalDate.of(year, month, day);\n };\n\n function LocalDate(year, month, dayOfMonth) {\n var _this;\n\n _this = _ChronoLocalDate.call(this) || this;\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n\n LocalDate._validate(_this._year, _this._month, _this._day);\n\n return _this;\n }\n\n LocalDate._validate = function _validate(year, month, dayOfMonth) {\n var dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, 'Invalid date \\'February 29\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n } else {\n assert(false, 'Invalid date \\'' + year + '\\' \\'' + month + '\\' \\'' + dayOfMonth + '\\'', DateTimeException);\n }\n }\n }\n };\n\n var _proto = LocalDate.prototype;\n\n _proto.isSupported = function isSupported(field) {\n return _ChronoLocalDate.prototype.isSupported.call(this, field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return ValueRange.of(1, this.lengthOfMonth());\n\n case ChronoField.DAY_OF_YEAR:\n return ValueRange.of(1, this.lengthOfYear());\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n\n case ChronoField.YEAR_OF_ERA:\n return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n assert(field != null, '', NullPointerException);\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK:\n return this.dayOfWeek().value();\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return MathUtil.intMod(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.DAY_OF_YEAR:\n return this.dayOfYear();\n\n case ChronoField.EPOCH_DAY:\n return this.toEpochDay();\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return MathUtil.intDiv(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._prolepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year >= 1 ? this._year : 1 - this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year >= 1 ? 1 : 0;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto._prolepticMonth = function _prolepticMonth() {\n return this._year * 12 + (this._month - 1);\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n switch (this._month) {\n case 2:\n return this.isLeapYear() ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.DAY_OF_WEEK:\n return this.plusDays(newValue - this.dayOfWeek().value());\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n\n case ChronoField.DAY_OF_MONTH:\n return this.withDayOfMonth(newValue);\n\n case ChronoField.DAY_OF_YEAR:\n return this.withDayOfYear(newValue);\n\n case ChronoField.EPOCH_DAY:\n return LocalDate.ofEpochDay(newValue);\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n if (this._year === year) {\n return this;\n }\n\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n };\n\n _proto.withMonth = function withMonth(month) {\n var m = month instanceof Month ? month.value() : month;\n\n if (this._month === m) {\n return this;\n }\n\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.plusDays(amountToAdd);\n\n case ChronoUnit.WEEKS:\n return this.plusWeeks(amountToAdd);\n\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n };\n\n _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n };\n\n _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this;\n }\n\n return _ChronoLocalDate.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(p1, p2) {\n if (arguments.length < 2) {\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n };\n\n _proto.until2 = function until2(endExclusive, unit) {\n var end = LocalDate.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.daysUntil(end);\n\n case ChronoUnit.WEEKS:\n return MathUtil.intDiv(this.daysUntil(end), 7);\n\n case ChronoUnit.MONTHS:\n return this._monthsUntil(end);\n\n case ChronoUnit.YEARS:\n return MathUtil.intDiv(this._monthsUntil(end), 12);\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(this._monthsUntil(end), 120);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(this._monthsUntil(end), 1200);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(this._monthsUntil(end), 12000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.daysUntil = function daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay();\n };\n\n _proto._monthsUntil = function _monthsUntil(end) {\n var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n return MathUtil.intDiv(packed2 - packed1, 32);\n };\n\n _proto.until1 = function until1(endDate) {\n var end = LocalDate.from(endDate);\n\n var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n\n var days = end._day - this._day;\n\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n var calcDate = this.plusMonths(totalMonths);\n days = end.toEpochDay() - calcDate.toEpochDay();\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n\n var years = MathUtil.intDiv(totalMonths, 12);\n var months = MathUtil.intMod(totalMonths, 12);\n return Period.of(years, months, days);\n };\n\n _proto.atTime = function atTime() {\n if (arguments.length === 1) {\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n };\n\n _proto.atTime1 = function atTime1(time) {\n requireNonNull(time, 'time');\n\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException('time must be an instance of LocalTime or OffsetTime' + (time && time.constructor && time.constructor.name ? ', but is ' + time.constructor.name : ''));\n }\n };\n\n _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n };\n\n _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n };\n\n _proto.atStartOfDay = function atStartOfDay(zone) {\n if (zone != null) {\n return this.atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n };\n\n _proto.atStartOfDayWithZone = function atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n var ldt = this.atTime(LocalTime.MIDNIGHT);\n\n if (zone instanceof ZoneOffset === false) {\n var trans = zone.rules().transition(ldt);\n\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n\n return ZonedDateTime.of(ldt, zone);\n };\n\n _proto.toEpochDay = function toEpochDay() {\n var y = this._year;\n var m = this._month;\n var total = 0;\n total += 365 * y;\n\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n\n if (m > 2) {\n total--;\n\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n\n return total - DAYS_0000_TO_1970;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(otherDate) {\n var cmp = this._year - otherDate._year;\n\n if (cmp === 0) {\n cmp = this._month - otherDate._month;\n\n if (cmp === 0) {\n cmp = this._day - otherDate._day;\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n };\n\n _proto.toString = function toString() {\n var dayString, monthString, yearString;\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n var absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = '-' + ('' + (yearValue - 10000)).slice(-4);\n } else {\n yearString = ('' + (yearValue + 10000)).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = '+' + yearValue;\n } else {\n yearString = '' + yearValue;\n }\n }\n\n if (monthValue < 10) {\n monthString = '-0' + monthValue;\n } else {\n monthString = '-' + monthValue;\n }\n\n if (dayValue < 10) {\n dayString = '-0' + dayValue;\n } else {\n dayString = '-' + dayValue;\n }\n\n return yearString + monthString + dayString;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return _ChronoLocalDate.prototype.format.call(this, formatter);\n };\n\n return LocalDate;\n}(ChronoLocalDate);\nfunction _init$i() {\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n return LocalDate.from(temporal);\n });\n}\n\nvar ChronoLocalDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDateTime, _DefaultInterfaceTemp);\n\n function ChronoLocalDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDateTime.prototype;\n\n _proto.chronology = function chronology() {\n return this.toLocalDate().chronology();\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n };\n\n _proto.toInstant = function toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n };\n\n return ChronoLocalDateTime;\n}(DefaultInterfaceTemporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n\n LocalDateTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalDateTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.of = function of() {\n if (arguments.length <= 2) {\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var date = LocalDate.of(year, month, dayOfMonth);\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n var offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n };\n\n LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n if (epochSecond === void 0) {\n epochSecond = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n\n requireNonNull(offset, 'offset');\n var localSecond = epochSecond + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n\n try {\n var date = LocalDate.from(temporal);\n var time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n LocalDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n };\n\n function LocalDateTime(date, time) {\n var _this;\n\n _this = _ChronoLocalDateTime.call(this) || this;\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n _this._date = date;\n _this._time = time;\n return _this;\n }\n\n var _proto = LocalDateTime.prototype;\n\n _proto._withDateTime = function _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n\n return new LocalDateTime(newDate, newTime);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n }\n\n return _ChronoLocalDateTime.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.year = function year() {\n return this._date.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._date.monthValue();\n };\n\n _proto.month = function month() {\n return this._date.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._date.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._date.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._date.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n };\n\n _proto.withHour = function withHour(hour) {\n var newTime = this._time.withHour(hour);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withMinute = function withMinute(minute) {\n var newTime = this._time.withMinute(minute);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withSecond = function withSecond(second) {\n var newTime = this._time.withSecond(second);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n var newTime = this._time.withNano(nanoOfSecond);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n }\n\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n var newDate = this._date.plusYears(years);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n var newDate = this._date.plusMonths(months);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n var newDate = this._date.plusWeeks(weeks);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusDays = function plusDays(days) {\n var newDate = this._date.plusDays(days);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n };\n\n _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n\n var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n totDays *= sign;\n var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n\n var curNoD = this._time.toNanoOfDay();\n\n totNanos = totNanos * sign + curNoD;\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n return _ChronoLocalDateTime.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n var daysUntil = this._date.daysUntil(end._date);\n\n var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n\n var amount = daysUntil;\n\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n var endDate = end._date;\n var endTime = end._time;\n\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n\n return this._date.until(endDate, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.of(this, zone);\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._date;\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(other) {\n var cmp = this._date.compareTo(other.toLocalDate());\n\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._date.toString() + 'T' + this._time.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$j() {\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n return LocalDateTime.from(temporal);\n });\n}\n\nvar LocalTime = function (_Temporal) {\n _inheritsLoose(LocalTime, _Temporal);\n\n LocalTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalTime._now = function _now(clock) {\n if (clock === void 0) {\n clock = Clock.systemDefaultZone();\n }\n\n requireNonNull(clock, 'clock');\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n var offset = zone.rules().offset(instant);\n var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n };\n\n LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n };\n\n LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n if (secondOfDay === void 0) {\n secondOfDay = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n };\n\n LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n if (nanoOfDay === void 0) {\n nanoOfDay = 0;\n }\n\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n };\n\n LocalTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var time = temporal.query(TemporalQueries.localTime());\n\n if (time == null) {\n throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return time;\n };\n\n LocalTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n };\n\n function LocalTime(hour, minute, second, nanoOfSecond) {\n var _this;\n\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n _this = _Temporal.call(this) || this;\n\n var _hour = MathUtil.safeToInt(hour);\n\n var _minute = MathUtil.safeToInt(minute);\n\n var _second = MathUtil.safeToInt(second);\n\n var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n }\n\n return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n }\n\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n return _this;\n }\n\n LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n };\n\n var _proto = LocalTime.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n requireNonNull(field);\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nano;\n\n case ChronoField.NANO_OF_DAY:\n return this.toNanoOfDay();\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this._second;\n\n case ChronoField.SECOND_OF_DAY:\n return this.toSecondOfDay();\n\n case ChronoField.MINUTE_OF_HOUR:\n return this._minute;\n\n case ChronoField.MINUTE_OF_DAY:\n return this._hour * 60 + this._minute;\n\n case ChronoField.HOUR_OF_AMPM:\n return MathUtil.intMod(this._hour, 12);\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n {\n var ham = MathUtil.intMod(this._hour, 12);\n return ham % 12 === 0 ? 12 : ham;\n }\n\n case ChronoField.HOUR_OF_DAY:\n return this._hour;\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this._hour === 0 ? 24 : this._hour;\n\n case ChronoField.AMPM_OF_DAY:\n return MathUtil.intDiv(this._hour, 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto.hour = function hour() {\n return this._hour;\n };\n\n _proto.minute = function minute() {\n return this._minute;\n };\n\n _proto.second = function second() {\n return this._second;\n };\n\n _proto.nano = function nano() {\n return this._nano;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this.withNano(newValue);\n\n case ChronoField.NANO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue);\n\n case ChronoField.MICRO_OF_SECOND:\n return this.withNano(newValue * 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return this.withNano(newValue * 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this.withSecond(newValue);\n\n case ChronoField.SECOND_OF_DAY:\n return this.plusSeconds(newValue - this.toSecondOfDay());\n\n case ChronoField.MINUTE_OF_HOUR:\n return this.withMinute(newValue);\n\n case ChronoField.MINUTE_OF_DAY:\n return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n\n case ChronoField.HOUR_OF_AMPM:\n return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.HOUR_OF_DAY:\n return this.withHour(newValue);\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this.withHour(newValue === 24 ? 0 : newValue);\n\n case ChronoField.AMPM_OF_DAY:\n return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withHour = function withHour(hour) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (this._hour === hour) {\n return this;\n }\n\n return new LocalTime(hour, this._minute, this._second, this._nano);\n };\n\n _proto.withMinute = function withMinute(minute) {\n if (minute === void 0) {\n minute = 0;\n }\n\n if (this._minute === minute) {\n return this;\n }\n\n return new LocalTime(this._hour, minute, this._second, this._nano);\n };\n\n _proto.withSecond = function withSecond(second) {\n if (second === void 0) {\n second = 0;\n }\n\n if (this._second === second) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, second, this._nano);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (this._nano === nanoOfSecond) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n\n var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n\n if (mofd === newMofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n\n var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n\n if (sofd === newSofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n\n var nofd = this.toNanoOfDay();\n var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n\n if (nofd === newNofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localTime()) {\n return this;\n }\n\n if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(nanosUntil, 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.intDiv(nanosUntil, 1000000);\n\n case ChronoUnit.SECONDS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDate = function atDate(date) {\n return LocalDateTime.of(date, this);\n };\n\n _proto.toSecondOfDay = function toSecondOfDay() {\n var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n };\n\n _proto.toNanoOfDay = function toNanoOfDay() {\n var total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n };\n\n _proto.toString = function toString() {\n var buf = '';\n var hourValue = this._hour;\n var minuteValue = this._minute;\n var secondValue = this._second;\n var nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n\n if (nanoValue > 0) {\n buf += '.';\n\n if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n } else {\n buf += ('' + (nanoValue + 1000000000)).substring(1);\n }\n }\n }\n\n return buf;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalTime;\n}(Temporal);\nfunction _init$k() {\n LocalTime.HOURS = [];\n\n for (var hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n LocalTime.MIN = LocalTime.HOURS[0];\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n LocalTime.NOON = LocalTime.HOURS[12];\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n return LocalTime.from(temporal);\n });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n _inheritsLoose(Instant, _Temporal);\n\n Instant.now = function now(clock) {\n if (clock === void 0) {\n clock = Clock.systemUTC();\n }\n\n return clock.instant();\n };\n\n Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n };\n\n Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n var secs = MathUtil.floorDiv(epochMilli, 1000);\n var mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n };\n\n Instant.from = function from(temporal) {\n try {\n var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Instant from TemporalAccessor: ' + temporal + ', type ' + typeof temporal, ex);\n }\n };\n\n Instant.parse = function parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n };\n\n Instant._create = function _create(seconds, nanoOfSecond) {\n if (seconds === 0 && nanoOfSecond === 0) {\n return Instant.EPOCH;\n }\n\n return new Instant(seconds, nanoOfSecond);\n };\n\n Instant._validate = function _validate(seconds, nanoOfSecond) {\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n };\n\n function Instant(seconds, nanoOfSecond) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n\n Instant._validate(seconds, nanoOfSecond);\n\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n return _this;\n }\n\n var _proto = Instant.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nanos;\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nanos, 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n\n case ChronoField.INSTANT_SECONDS:\n return this._seconds;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.epochSecond = function epochSecond() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.MILLI_OF_SECOND:\n {\n var nval = newValue * NANOS_PER_MILLI;\n return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n }\n\n case ChronoField.MICRO_OF_SECOND:\n {\n var _nval = newValue * 1000;\n\n return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n }\n\n case ChronoField.NANO_OF_SECOND:\n return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n\n case ChronoField.INSTANT_SECONDS:\n return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n\n var result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this._plus(MathUtil.intDiv(amountToAdd, 1000000), MathUtil.intMod(amountToAdd, 1000000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n\n case ChronoUnit.DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n };\n\n _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n\n if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = Instant.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this._nanosUntil(end);\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(this._nanosUntil(end), 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n\n case ChronoUnit.SECONDS:\n return this._secondsUntil(end);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto._nanosUntil = function _nanosUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n };\n\n _proto._secondsUntil = function _secondsUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var nanosDiff = end.nano() - this.nano();\n\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n\n return secsDiff;\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n var millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n };\n\n _proto.compareTo = function compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherInstant._nanos;\n };\n\n _proto.isAfter = function isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n };\n\n _proto.isBefore = function isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Instant) {\n return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n };\n\n _proto.toString = function toString() {\n return DateTimeFormatter.ISO_INSTANT.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Instant;\n}(Temporal);\nfunction _init$l() {\n Instant.MIN_SECONDS = -31619119219200;\n Instant.MAX_SECONDS = 31494816403199;\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n return Instant.from(temporal);\n });\n}\n\nvar Clock = function () {\n function Clock() {}\n\n Clock.systemUTC = function systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n };\n\n Clock.systemDefaultZone = function systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n };\n\n Clock.system = function system(zone) {\n return new SystemClock(zone);\n };\n\n Clock.fixed = function fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n };\n\n Clock.offset = function offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration);\n };\n\n var _proto = Clock.prototype;\n\n _proto.millis = function millis() {\n abstractMethodFail('Clock.millis');\n };\n\n _proto.instant = function instant() {\n abstractMethodFail('Clock.instant');\n };\n\n _proto.zone = function zone() {\n abstractMethodFail('Clock.zone');\n };\n\n _proto.withZone = function withZone() {\n abstractMethodFail('Clock.withZone');\n };\n\n return Clock;\n}();\n\nvar SystemClock = function (_Clock) {\n _inheritsLoose(SystemClock, _Clock);\n\n function SystemClock(zone) {\n var _this;\n\n requireNonNull(zone, 'zone');\n _this = _Clock.call(this) || this;\n _this._zone = zone;\n return _this;\n }\n\n var _proto2 = SystemClock.prototype;\n\n _proto2.zone = function zone() {\n return this._zone;\n };\n\n _proto2.millis = function millis() {\n return new Date().getTime();\n };\n\n _proto2.instant = function instant() {\n return Instant.ofEpochMilli(this.millis());\n };\n\n _proto2.equals = function equals(obj) {\n if (obj instanceof SystemClock) {\n return this._zone.equals(obj._zone);\n }\n\n return false;\n };\n\n _proto2.withZone = function withZone(zone) {\n if (zone.equals(this._zone)) {\n return this;\n }\n\n return new SystemClock(zone);\n };\n\n _proto2.toString = function toString() {\n return 'SystemClock[' + this._zone.toString() + ']';\n };\n\n return SystemClock;\n}(Clock);\n\nvar FixedClock = function (_Clock2) {\n _inheritsLoose(FixedClock, _Clock2);\n\n function FixedClock(fixedInstant, zoneId) {\n var _this2;\n\n _this2 = _Clock2.call(this) || this;\n _this2._instant = fixedInstant;\n _this2._zoneId = zoneId;\n return _this2;\n }\n\n var _proto3 = FixedClock.prototype;\n\n _proto3.instant = function instant() {\n return this._instant;\n };\n\n _proto3.millis = function millis() {\n return this._instant.toEpochMilli();\n };\n\n _proto3.zone = function zone() {\n return this._zoneId;\n };\n\n _proto3.toString = function toString() {\n return 'FixedClock[]';\n };\n\n _proto3.equals = function equals(obj) {\n if (obj instanceof FixedClock) {\n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n\n return false;\n };\n\n _proto3.withZone = function withZone(zone) {\n if (zone.equals(this._zoneId)) {\n return this;\n }\n\n return new FixedClock(this._instant, zone);\n };\n\n return FixedClock;\n}(Clock);\n\nvar OffsetClock = function (_Clock3) {\n _inheritsLoose(OffsetClock, _Clock3);\n\n function OffsetClock(baseClock, offset) {\n var _this3;\n\n _this3 = _Clock3.call(this) || this;\n _this3._baseClock = baseClock;\n _this3._offset = offset;\n return _this3;\n }\n\n var _proto4 = OffsetClock.prototype;\n\n _proto4.zone = function zone() {\n return this._baseClock.zone();\n };\n\n _proto4.withZone = function withZone(zone) {\n if (zone.equals(this._baseClock.zone())) {\n return this;\n }\n\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n };\n\n _proto4.millis = function millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n };\n\n _proto4.instant = function instant() {\n return this._baseClock.instant().plus(this._offset);\n };\n\n _proto4.equals = function equals(obj) {\n if (obj instanceof OffsetClock) {\n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n\n return false;\n };\n\n _proto4.toString = function toString() {\n return 'OffsetClock[' + this._baseClock + ',' + this._offset + ']';\n };\n\n return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n };\n\n function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n\n if (transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n var _proto = ZoneOffsetTransition.prototype;\n\n _proto.instant = function instant() {\n return this._transition.toInstant(this._offsetBefore);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n };\n\n _proto.dateTimeBefore = function dateTimeBefore() {\n return this._transition;\n };\n\n _proto.dateTimeAfter = function dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n };\n\n _proto.offsetBefore = function offsetBefore() {\n return this._offsetBefore;\n };\n\n _proto.offsetAfter = function offsetAfter() {\n return this._offsetAfter;\n };\n\n _proto.duration = function duration() {\n return Duration.ofSeconds(this.durationSeconds());\n };\n\n _proto.durationSeconds = function durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n };\n\n _proto.isGap = function isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n };\n\n _proto.isOverlap = function isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n };\n\n _proto.isValidOffset = function isValidOffset(offset) {\n return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n };\n\n _proto.validOffsets = function validOffsets() {\n if (this.isGap()) {\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n };\n\n _proto.compareTo = function compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ZoneOffsetTransition) {\n var d = other;\n return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n };\n\n _proto.toString = function toString() {\n return 'Transition[' + (this.isGap() ? 'Gap' : 'Overlap') + ' at ' + this._transition.toString() + this._offsetBefore.toString() + ' to ' + this._offsetAfter + ']';\n };\n\n return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$m() {\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n return temporal.query(TemporalQueries.CHRONO);\n });\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n return temporal.query(TemporalQueries.PRECISION);\n });\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n\n return null;\n });\n TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n var zone = temporal.query(TemporalQueries.ZONE_ID);\n return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n });\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n\n return null;\n });\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n\n return null;\n });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n\n function SystemDefaultZoneRules() {\n return _ZoneRules.apply(this, arguments) || this;\n }\n\n var _proto = SystemDefaultZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n return false;\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n return [this.offsetOfLocalDateTime(localDateTime)];\n };\n\n _proto.transition = function transition() {\n return null;\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n return this.offsetOfInstant(instant);\n };\n\n _proto.daylightSavings = function daylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isDaylightSavings = function isDaylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n };\n\n _proto.nextTransition = function nextTransition() {\n this._throwNotSupported();\n };\n\n _proto.previousTransition = function previousTransition() {\n this._throwNotSupported();\n };\n\n _proto.transitions = function transitions() {\n this._throwNotSupported();\n };\n\n _proto.transitionRules = function transitionRules() {\n this._throwNotSupported();\n };\n\n _proto._throwNotSupported = function _throwNotSupported() {\n throw new DateTimeException('not supported operation');\n };\n\n _proto.equals = function equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.toString = function toString() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n\n function SystemDefaultZoneId() {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._rules = new SystemDefaultZoneRules();\n return _this;\n }\n\n var _proto = SystemDefaultZoneId.prototype;\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n return false;\n };\n\n _proto.id = function id() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n function ZoneIdFactory() {}\n\n ZoneIdFactory.systemDefault = function systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n };\n\n ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n };\n\n ZoneIdFactory.of = function of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n\n if (zoneId.length === 1) {\n throw new DateTimeException('Invalid zone: ' + zoneId);\n }\n\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n var offset = ZoneOffset.of(zoneId.substring(3));\n\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n var _offset = ZoneOffset.of(zoneId.substring(2));\n\n if (_offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', _offset.rules());\n }\n\n return new ZoneRegion('UT' + _offset.id(), _offset.rules());\n }\n\n if (zoneId === 'SYSTEM') {\n return ZoneId.systemDefault();\n }\n\n return ZoneRegion.ofId(zoneId);\n };\n\n ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n\n if (prefix.length === 0) {\n return offset;\n }\n\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n\n throw new IllegalArgumentException('Invalid prefix, must be GMT, UTC or UT: ' + prefix);\n };\n\n ZoneIdFactory.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var obj = temporal.query(TemporalQueries.zone());\n\n if (obj == null) {\n throw new DateTimeException('Unable to obtain ZoneId from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return obj;\n };\n\n return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init$n() {\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\n\nfunction init() {\n if (isInit) {\n return;\n }\n\n isInit = true;\n _init$1();\n _init();\n _init$2();\n _init$3();\n _init$k();\n _init$8();\n _init$m();\n _init$4();\n _init$l();\n _init$i();\n _init$j();\n _init$d();\n _init$5();\n _init$c();\n _init$b();\n _init$6();\n _init$7();\n _init$g();\n _init$n();\n _init$e();\n _init$a();\n _init$9();\n _init$h();\n _init$f();\n}\n\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar ToNativeJsConverter = function () {\n function ToNativeJsConverter(temporal, zone) {\n var zonedDateTime;\n\n if (temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException('unsupported instance for convert operation:' + temporal);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n var _proto = ToNativeJsConverter.prototype;\n\n _proto.toDate = function toDate() {\n return new Date(this.instant.toEpochMilli());\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n return this.instant.toEpochMilli();\n };\n\n return ToNativeJsConverter;\n}();\n\nfunction convert(temporal, zone) {\n return new ToNativeJsConverter(temporal, zone);\n}\n\nvar NativeJsTemporal = function (_TemporalAccessor) {\n _inheritsLoose(NativeJsTemporal, _TemporalAccessor);\n\n function NativeJsTemporal(date, zone) {\n var _this;\n\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n _this = _TemporalAccessor.call(this) || this;\n _this._zone = zone;\n\n if (date instanceof Date) {\n _this._epochMilli = date.getTime();\n return _assertThisInitialized(_this);\n } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n _this._epochMilli = date.toDate().getTime();\n return _assertThisInitialized(_this);\n }\n\n assert(false, 'date must be either a javascript date or a moment');\n return _this;\n }\n\n var _proto = NativeJsTemporal.prototype;\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.localTime()) {\n return LocalTime.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.zone()) {\n return this._zone;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return MathUtil.floorMod(this._epochMilli, 1000) * 1000000;\n\n case ChronoField.INSTANT_SECONDS:\n return MathUtil.floorDiv(this._epochMilli, 1000);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n return field === ChronoField.INSTANT_SECONDS || field === ChronoField.NANO_OF_SECOND;\n };\n\n return NativeJsTemporal;\n}(TemporalAccessor);\n\nfunction nativeJs(date, zone) {\n return new NativeJsTemporal(date, zone);\n}\n\nfunction bindUse(jsJoda) {\n var used = [];\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n\n return jsJoda;\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n assert: assert$1,\n DateTimeBuilder: DateTimeBuilder,\n DateTimeParseContext: DateTimeParseContext,\n DateTimePrintContext: DateTimePrintContext,\n MathUtil: MathUtil,\n StringUtil: StringUtil,\n StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n _: _,\n convert: convert,\n nativeJs: nativeJs,\n ArithmeticException: ArithmeticException,\n DateTimeException: DateTimeException,\n DateTimeParseException: DateTimeParseException,\n IllegalArgumentException: IllegalArgumentException,\n IllegalStateException: IllegalStateException,\n UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n NullPointerException: NullPointerException,\n Clock: Clock,\n DayOfWeek: DayOfWeek,\n Duration: Duration,\n Instant: Instant,\n LocalDate: LocalDate,\n LocalTime: LocalTime,\n LocalDateTime: LocalDateTime,\n OffsetTime: OffsetTime,\n OffsetDateTime: OffsetDateTime,\n Month: Month,\n MonthDay: MonthDay,\n Period: Period,\n Year: Year,\n YearConstants: YearConstants,\n YearMonth: YearMonth,\n ZonedDateTime: ZonedDateTime,\n ZoneOffset: ZoneOffset,\n ZoneId: ZoneId,\n ZoneRegion: ZoneRegion,\n ZoneOffsetTransition: ZoneOffsetTransition,\n ZoneRules: ZoneRules,\n ZoneRulesProvider: ZoneRulesProvider,\n ChronoLocalDate: ChronoLocalDate,\n ChronoLocalDateTime: ChronoLocalDateTime,\n ChronoZonedDateTime: ChronoZonedDateTime,\n IsoChronology: IsoChronology,\n ChronoField: ChronoField,\n ChronoUnit: ChronoUnit,\n IsoFields: IsoFields,\n Temporal: Temporal,\n TemporalAccessor: TemporalAccessor,\n TemporalAdjuster: TemporalAdjuster,\n TemporalAdjusters: TemporalAdjusters,\n TemporalAmount: TemporalAmount,\n TemporalField: TemporalField,\n TemporalQueries: TemporalQueries,\n TemporalQuery: TemporalQuery,\n TemporalUnit: TemporalUnit,\n ValueRange: ValueRange,\n DateTimeFormatter: DateTimeFormatter,\n DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n DecimalStyle: DecimalStyle,\n ResolverStyle: ResolverStyle,\n SignStyle: SignStyle,\n TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package earth.worldwind.tutorials\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"0cf1472588d8984f73d63fea43188617\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val airport_terminal: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/airport_terminal.png\\\")\") as String, fileName = \"airport_terminal.png\")\n\n public actual val aircraft_fighter: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fighter.png\\\")\") as String, fileName = \"aircraft_fighter.png\")\n\n public actual val aircraft_fixwing: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fixwing.png\\\")\") as String, fileName = \"aircraft_fixwing.png\")\n\n public actual val pattern_sample_houndstooth: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/pattern_sample_houndstooth.png\\\")\") as String, fileName =\n \"pattern_sample_houndstooth.png\")\n\n public actual val worldwind_logo: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_logo.png\\\")\") as String, fileName = \"worldwind_logo.png\")\n\n public actual val ehipcc: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/ehipcc.png\\\")\") as String, fileName = \"ehipcc.png\")\n\n public actual override fun values(): List = listOf(airport_terminal,\n aircraft_fighter, aircraft_fixwing, pattern_sample_houndstooth, worldwind_logo, ehipcc)\n }\n}\n","package earth.worldwind.tutorials\n\nabstract class AbstractTutorial {\n\n /**\n * Defines a list of custom actions\n */\n open val actions: ArrayList? = null\n\n /**\n * Runs any of custom actions listed in [actions]\n */\n open fun runAction(actionName: String) {}\n\n /**\n * Runs after switching to this example\n */\n open fun start() {}\n\n /**\n * Runs before switching to another example\n */\n open fun stop() {}\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport kotlinx.datetime.Clock\n\nclass BasicTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n var starFieldLayer: StarFieldLayer? = null\n var atmosphereLayer: AtmosphereLayer? = null\n\n override fun start() {\n super.start()\n engine.layers.run {\n val time = Clock.System.now()\n starFieldLayer = (getLayer(indexOfLayerNamed(\"StarField\")) as StarFieldLayer).apply { this.time = time }\n atmosphereLayer = (getLayer(indexOfLayerNamed(\"Atmosphere\")) as AtmosphereLayer).apply { this.time = time }\n }\n }\n\n override fun stop() {\n super.stop()\n starFieldLayer?.time = null\n atmosphereLayer?.time = null\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\n\nclass CameraViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setCameraAction()\n }\n\n private fun setCameraAction() {\n // Create a view of Point Mugu airport as seen from an aircraft above Oxnard, CA.\n val aircraft = Position.fromDegrees(34.2, -119.2, 3000.0) // Above Oxnard CA, altitude in meters\n val airport = Position.fromDegrees(34.1192744, -119.1195850, 4.0) // KNTD airport, Point Mugu CA, altitude MSL\n\n // Compute heading and tilt angles from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply the camera view\n engine.camera.set(\n aircraft.latitude, aircraft.longitude, aircraft.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.heatmap.ElevationHeatmapLayer\n\nclass ElevationHeatmapTutorial(private val engine: WorldWind) : AbstractTutorial() {\n var elevationHeatmapLayer = ElevationHeatmapLayer();\n\n override fun start() {\n super.start()\n engine.layers.addLayer(elevationHeatmapLayer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(50.4501 , 30.5234 , 0.0), // Kyiv\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 0.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(elevationHeatmapLayer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Ellipse\n\nclass EllipsesTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Ellipses\").apply {\n // Create a surface ellipse with the default attributes, a 500km major-radius and a 300km minor-radius. Surface\n // ellipses are configured with a CLAMP_TO_GROUND altitudeMode and followTerrain set to true.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with custom attributes that make the interior 50% transparent and increase the\n // outline width.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -100.0, 0.0), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with a heading of 45 degrees, causing the semi-major axis to point Northeast and the\n // semi-minor axis to point Southeast.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n heading = 45.0.degrees\n }\n )\n\n // Create a surface circle with the default attributes and 400km radius.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -100.0, 0.0), 400000.0, 400000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create an ellipse with the default attributes, an altitude of 200 km, and a 500km major-radius and a 300km\n // minor-radius.\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -120.0, 200e3), 500000.0, 300000.0)\n )\n\n // Create an ellipse with custom attributes that make the interior 50% transparent and an extruded outline with\n // vertical lines\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -100.0, 200e3), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n isDrawVerticals = true\n }\n isExtrude = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-110.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmInline\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n@JvmInline\nvalue class Angle private constructor(\n /**\n * Size of this angle in degrees.\n */\n val inDegrees: Double\n): Comparable {\n /**\n * Size of this angle in radians. This may be useful for functions, which\n * generally take radians as trigonometric arguments.\n */\n val inRadians get() = toRadians(inDegrees)\n /**\n * Size of this angle in minutes.\n */\n val inMinutes get() = toMinutes(inDegrees)\n /**\n * Size of this angle in seconds.\n */\n val inSeconds get() = toSeconds(inDegrees)\n /**\n * Size of this angle in milliradians.\n */\n val inMrad get() = toMrad(inDegrees)\n /**\n * Size of this angle in mil NATO.\n */\n val inMilNATO get() = toMilNATO(inDegrees)\n /**\n * Size of this angle in mil Warsaw Pact.\n */\n val inMilWP get() = toMilWP(inDegrees)\n /**\n * Size of this angle in Streck.\n */\n val inStreck get() = toStreck(inDegrees)\n /**\n * Size of this angle in minute of angle (MOA).\n */\n val inMOA get() = toMOA(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of latitude, [-90, 90].\n */\n val isValidLatitude get() = isValidLatitude(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of longitude, [-180, 180].\n */\n val isValidLongitude get() = isValidLongitude(inDegrees)\n /**\n * Return North or South notation depends on sign\n */\n val latitudeLetter get() = if (inDegrees < 0.0) \"S\" else \"N\"\n /**\n * Return West or East notation depends on sign\n */\n val longitudeLetter get() = if (inDegrees < 0.0) \"W\" else \"E\"\n /**\n * Relative latitude (from wiki.openstreetmap.org)\n */\n val relativeLatitude get() = (1 - ln(tan(inRadians) + 1 / cos(inRadians)) / PI) / 2\n /**\n * Relative longitude (from wiki.openstreetmap.org)\n */\n val relativeLongitude get() = (inDegrees + 180.0) / 360.0\n\n companion object {\n /** Represents an angle of zero degrees */\n @JvmStatic val ZERO = 0.0.degrees\n /** Represents a right angle of positive 90 degrees */\n @JvmStatic val POS90 = 90.0.degrees\n /** Represents a right angle of negative 90 degrees */\n @JvmStatic val NEG90 = (-90.0).degrees\n /** Represents an angle of positive 180 degrees */\n @JvmStatic val POS180 = 180.0.degrees\n /** Represents an angle of negative 180 degrees */\n @JvmStatic val NEG180 = (-180.0).degrees\n /** Represents an angle of positive 360 degrees */\n @JvmStatic val POS360 = 360.0.degrees\n /** Represents an angle of negative 360 degrees */\n @JvmStatic val NEG360 = (-360.0).degrees\n /** Represents an angle of 1 minute */\n @JvmStatic val MINUTE = (1.0 / 60.0).degrees\n /** Represents an angle of 1 second */\n @JvmStatic val SECOND = (1.0 / 3600.0).degrees\n /**\n * Conversion factor for degrees to radians.\n */\n const val DEGREES_TO_RADIANS = PI / 180.0\n /**\n * Conversion factor for radians to degrees.\n */\n const val RADIANS_TO_DEGREES = 180.0 / PI\n /**\n * Conversion factor for degrees to minutes.\n */\n const val DEGREES_TO_MINUTES = 60.0\n /**\n * Conversion factor for minutes to degrees.\n */\n const val MINUTES_TO_DEGREES = 1.0 / 60.0\n /**\n * Conversion factor for degrees to seconds.\n */\n const val DEGREES_TO_SECONDS = 3600.0\n /**\n * Conversion factor for seconds to degrees.\n */\n const val SECONDS_TO_DEGREES = 1.0 / 3600.0\n /**\n * Conversion factor for degrees to milliradians.\n */\n const val DEGREES_TO_MRAD = PI * 2.0 / 360.0\n /**\n * Conversion factor for milliradians to degrees.\n */\n const val MRAD_TO_DEGREES = 360.0 / PI / 2.0\n /**\n * Conversion factor for degrees to milliradians (NATO).\n */\n const val DEGREES_TO_MIL_NATO = 6400.0 / 360.0\n /**\n * Conversion factor for milliradians (NATO) to degrees.\n */\n const val MIL_NATO_TO_DEGREES = 360.0 / 6400.0\n /**\n * Conversion factor for degrees to milliradians (Warsaw Pact).\n */\n const val DEGREES_TO_MIL_WP = 6000.0 / 360.0\n /**\n * Conversion factor for milliradians (Warsaw Pact) to degrees.\n */\n const val MIL_WP_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to milliradians (Sweden).\n */\n const val DEGREES_TO_STRECK = 6300.0 / 360.0\n /**\n * Conversion factor for milliradians (Sweden) to degrees.\n */\n const val STRECK_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to minute of angle (MOA).\n */\n const val DEGREES_TO_MOA = 21600.0 / 360.0\n /**\n * Conversion factor for minute of angle (MOA) to degrees.\n */\n const val MOA_TO_DEGREES = 360.0 / 21600.0\n\n /**\n * Returns an Angle equal to this Double number in degrees.\n */\n inline val Double.degrees get() = fromDegrees(this)\n\n /**\n * Returns an Angle equal to this Double number in radians.\n */\n inline val Double.radians get() = fromRadians(this)\n\n /**\n * Returns an Angle equal to this Double number in minutes.\n */\n inline val Double.minutes get() = fromMinutes(this)\n\n /**\n * Returns an Angle equal to this Double number in seconds.\n */\n inline val Double.seconds get() = fromSeconds(this)\n\n /**\n * Returns an Angle equal to this Double number in milliradians.\n */\n inline val Double.mrad get() = fromMrad(this)\n\n /**\n * Returns an Angle equal to this Double number in mil NATO.\n */\n inline val Double.milNATO get() = fromMilNATO(this)\n\n /**\n * Returns an Angle equal to this Double number in mil Warsaw Pact.\n */\n inline val Double.milWP get() = fromMilWP(this)\n\n /**\n * Returns an Angle equal to this Double number in Streck.\n */\n inline val Double.streck get() = fromStreck(this)\n\n /**\n * Returns an Angle equal to this Double number in minute of angle (MOA).\n */\n inline val Double.MOA get() = fromMOA(this)\n\n /**\n * Convert radians to degrees\n *\n * @param radians value in radians\n *\n * @return value in degrees\n */\n @JvmStatic fun toDegrees(radians: Double) = radians * RADIANS_TO_DEGREES\n\n /**\n * Convert degrees to radians\n *\n * @param degrees value in degrees\n *\n * @return value in radians\n */\n @JvmStatic fun toRadians(degrees: Double) = degrees * DEGREES_TO_RADIANS\n\n /**\n * Convert degrees to minutes\n *\n * @param degrees value in degrees\n *\n * @return value in minutes\n */\n @JvmStatic fun toMinutes(degrees: Double) = degrees * DEGREES_TO_MINUTES\n\n /**\n * Convert degrees to seconds\n *\n * @param degrees value in degrees\n *\n * @return value in seconds\n */\n @JvmStatic fun toSeconds(degrees: Double) = degrees * DEGREES_TO_SECONDS\n\n /**\n * Convert degrees to milliradians\n *\n * @param degrees value in degrees\n *\n * @return value in milliradians\n */\n @JvmStatic fun toMrad(degrees: Double) = degrees * DEGREES_TO_MRAD\n\n /**\n * Convert degrees to mil NATO\n *\n * @param degrees value in degrees\n *\n * @return value in mil NATO\n */\n @JvmStatic fun toMilNATO(degrees: Double) = degrees * DEGREES_TO_MIL_NATO\n\n /**\n * Convert degrees to mil Warsaw Pact\n *\n * @param degrees value in degrees\n *\n * @return value in mil Warsaw Pact\n */\n @JvmStatic fun toMilWP(degrees: Double) = degrees * DEGREES_TO_MIL_WP\n\n /**\n * Convert degrees to Streck\n *\n * @param degrees value in degrees\n *\n * @return value in mil Streck\n */\n @JvmStatic fun toStreck(degrees: Double) = degrees * DEGREES_TO_STRECK\n\n /**\n * Convert degrees to minute of angle (MOA)\n *\n * @param degrees value in degrees\n *\n * @return value in minute of angle (MOA)\n */\n @JvmStatic fun toMOA(degrees: Double) = degrees * DEGREES_TO_MOA\n\n /**\n * Obtains an angle from a specified number of degrees.\n *\n * @param degrees the size in degrees of the angle to be obtained\n *\n * @return a new angle, whose size in degrees is given by [degrees]\n */\n @JvmStatic fun fromDegrees(degrees: Double) = Angle(degrees)\n\n /**\n * Obtains an angle from a specified number of radians.\n *\n * @param radians the size in radians of the angle to be obtained.\n *\n * @return a new angle, whose size in radians is given by [radians].\n */\n @JvmStatic fun fromRadians(radians: Double) = Angle(radians * RADIANS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minutes.\n *\n * @param minutes the size in minutes of the angle to be obtained.\n *\n * @return a new angle, whose size in minutes is given by [minutes].\n */\n @JvmStatic fun fromMinutes(minutes: Double) = Angle(minutes * MINUTES_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of seconds.\n *\n * @param seconds the size in seconds of the angle to be obtained.\n *\n * @return a new angle, whose size in seconds is given by [seconds].\n */\n @JvmStatic fun fromSeconds(seconds: Double) = Angle(seconds * SECONDS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of milliradians.\n *\n * @param mrad the size in milliradians of the angle to be obtained.\n *\n * @return a new angle, whose size in milliradians is given by [mrad].\n */\n @JvmStatic fun fromMrad(mrad: Double) = Angle(mrad * MRAD_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil NATO.\n *\n * @param milNATO the size in mil NATO of the angle to be obtained.\n *\n * @return a new angle, whose size in mil NATO is given by [milNATO].\n */\n @JvmStatic fun fromMilNATO(milNATO: Double) = Angle(milNATO * MIL_NATO_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil Warsaw Pact.\n *\n * @param milWP the size in mil WP of the angle to be obtained.\n *\n * @return a new angle, whose size in mil WP is given by [milWP].\n */\n @JvmStatic fun fromMilWP(milWP: Double) = Angle(milWP * MIL_WP_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of Streck.\n *\n * @param streck the size in Streck of the angle to be obtained.\n *\n * @return a new angle, whose size in Streck is given by [streck].\n */\n @JvmStatic fun fromStreck(streck: Double) = Angle(streck * STRECK_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minute of angle (MOA).\n *\n * @param moa the size in MOA of the angle to be obtained.\n *\n * @return a new angle, whose size in MOA is given by [moa].\n */\n @JvmStatic fun fromMOA(moa: Double) = Angle(moa * MOA_TO_DEGREES)\n\n /**\n * Obtains an angle from rectangular coordinates.\n *\n * @param x the abscissa coordinate.\n * @param y the ordinate coordinate.\n *\n * @return a new angle, whose size is determined from `x` and `y`.\n */\n @JvmStatic fun fromXY(x: Double, y: Double) = atan2(y, x).radians\n\n /**\n * Obtain an angle from a given number of positive degrees, minutes and seconds.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes integer number of minutes, positive only between 0 and 60.\n * @param seconds integer number of seconds, positive only between 0 and 60.\n *\n * @return a new angle whose size in degrees is given by `degrees`, `minutes` and `seconds`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDMS(degrees: Int, minutes: Int, seconds: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidDegrees\")\n }\n require(minutes in 0 until 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidMinutes\")\n }\n require(seconds >= 0 && seconds < 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidSeconds\")\n }\n return fromDegrees(degrees + minutes / 60.0 + seconds / 3600.0)\n }\n\n /**\n * Obtain an angle from a given number of positive degrees and decimal minutes.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes double representing the decimal representation of minutes and seconds.\n *\n * @return a new angle whose size in degrees is given by `degrees` and decimal `minutes`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDM(degrees: Int, minutes: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidDegrees\")\n }\n require(minutes >= 0 && minutes < 60) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidMinutes\")\n }\n return fromDegrees(degrees + minutes / 60.0)\n }\n\n /**\n * Obtain an angle from a degrees, minute and seconds character string.\n *\n * eg:
\n         * 123 34 42\n         * -123* 34' 42\" (where * stands for the degree symbol)\n         * +45* 12' 30\" (where * stands for the degree symbol)\n         * 45 12 30 S\n         * 45 12 30 N\n         * 
\n * For a string containing both a sign and compass direction, the compass direction will take precedence.\n *\n * @param dmsString the degrees, minute and second character string.\n *\n * @return the corresponding angle.\n *\n * @throws IllegalArgumentException if dmsString is not properly formatted.\n */\n @JvmStatic\n fun fromDMS(dmsString: String): Angle {\n var dms = dmsString\n // Check for string format validity\n val regex = Regex(\"([-+]?\\\\d{1,3}[dD°\\\\s](\\\\s*\\\\d{1,2}['’\\\\s])?(\\\\s*\\\\d{1,2}[\\\"”\\\\s])?\\\\s*([NnSsEeWw])?\\\\s?)\")\n require(regex.matches(\"$dms \")) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidFormat\")\n }\n // Replace degree, min and sec signs with space\n dms = dms.replace(\"[Dd°'’\\\"”]\".toRegex(), \" \")\n // Replace multiple spaces with single ones\n dms = dms.replace(\"\\\\s+\".toRegex(), \" \")\n dms = dms.trim { it <= ' ' }\n\n // Check for sign prefix and suffix\n var sign = 1\n val suffix = dms.uppercase()[dms.length - 1]\n val prefix = dms[0]\n if (!suffix.isDigit()) {\n sign = if (suffix == 'S' || suffix == 'W') -1 else 1\n dms = dms.substring(0, dms.length - 1)\n dms = dms.trim { it <= ' ' }\n\n // check and trim the prefix if it is erroneously included\n if (!prefix.isDigit()) {\n dms = dms.substring(1, dms.length)\n dms = dms.trim { it <= ' ' }\n }\n } else if (!prefix.isDigit()) {\n sign *= if (prefix == '-') -1 else 1\n dms = dms.substring(1, dms.length)\n }\n\n // Extract degrees, minutes and seconds\n val dmsArray = dms.split(\" \")\n val d = dmsArray[0].toInt()\n val m = if (dmsArray.size > 1) dmsArray[1].toInt() else 0\n val s = if (dmsArray.size > 2) dmsArray[2].toDouble() else 0.0\n return fromDMS(d, m, s) * sign.toDouble()\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than -180 wrap back to +180, while angles greater than\n * +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeAngle180(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle > 180) angle - 360 else if (angle < -180) 360 + angle else angle\n }\n\n /**\n * Restricts an angle to the range [0, 360] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than 0 wrap back to 360, while angles greater than 360\n * wrap back to 0.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [0, 360] degrees\n */\n @JvmStatic\n fun normalizeAngle360(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle >= 0) angle else 360 + angle\n }\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, wrapping angles outside the range. Wrapping takes place along\n * a line of constant longitude which may pass through the poles. In which case, 135 degrees normalizes to 45\n * degrees; 181 degrees normalizes to -1 degree.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun normalizeLatitude(degrees: Double): Double {\n val lat = degrees % 180\n val normalizedLat = if (lat > 90) 180 - lat else if (lat < -90) -180 - lat else lat\n // Determine whether the latitude is in the north or south hemisphere\n val numEquatorCrosses = (degrees / 180).toInt()\n return if (numEquatorCrosses % 2 == 0) normalizedLat else -normalizedLat\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing a line of constant latitude which may pass through the antimeridian; angles less than -180 wrap\n * back to +180, while angles greater than +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeLongitude(degrees: Double): Double {\n val lon = degrees % 360\n return if (lon > 180) lon - 360 else if (lon < -180) 360 + lon else lon\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as -180, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampAngle180(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Restricts an angle to the range [0, 360] degrees, clamping angles outside the range. Angles less than 0 are\n * returned as 0, and angles greater than 360 are returned as 360. Angles within the range are returned unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [0, 360] degrees\n */\n @JvmStatic\n fun clampAngle360(degrees: Double) = degrees.coerceIn(0.0, 360.0)\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, clamping angles outside the range. Angles less than -90 are\n * returned as -90, and angles greater than +90 are returned as +90. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun clampLatitude(degrees: Double) = degrees.coerceIn(-90.0, 90.0)\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as 0, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampLongitude(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Computes the linear interpolation of two angles in the range [-180, +180] degrees according to a specified\n * fractional amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0\n * indicates the first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second\n * angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle in degrees\n * @param angle2 the second angle in degrees\n *\n * @return the interpolated angle in the range [-180, +180] degrees\n */\n @JvmStatic\n fun interpolateAngle180(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle180(angle).degrees\n }\n\n /**\n * Computes the linear interpolation of two angles in the range [0, 360] degrees according to a specified fractional\n * amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0 indicates the\n * first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle\n * @param angle2 the second angle\n *\n * @return the interpolated angle in the range [0, 360] degrees\n */\n @JvmStatic\n fun interpolateAngle360(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle360(angle).degrees\n }\n\n /**\n * Obtains the average of two angles. This method is commutative, so `midAngle(m, n)` and\n * `midAngle(n, m)` are equivalent.\n *\n * @param a1 the first angle.\n * @param a2 the second angle.\n *\n * @return the average of `a1` and `a2`\n */\n @JvmStatic\n fun average(a1: Angle, a2: Angle) = fromDegrees(0.5 * (a1.inDegrees + a2.inDegrees))\n\n @JvmStatic\n fun max(a: Angle, b: Angle) = if (a.inDegrees >= b.inDegrees) a else b\n\n @JvmStatic\n fun min(a: Angle, b: Angle) = if (a.inDegrees <= b.inDegrees) a else b\n\n /**\n * Indicates whether a specified value is within the normal range of latitude, [-90, 90].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of latitude, otherwise false.\n */\n @JvmStatic\n fun isValidLatitude(degrees: Double) = degrees >= -90 && degrees <= 90\n\n /**\n * Indicates whether a specified value is within the normal range of longitude, [-180, 180].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of longitude, otherwise false.\n */\n @JvmStatic\n fun isValidLongitude(degrees: Double) = degrees >= -180 && degrees <= 180\n }\n\n init {\n // NaN value is not suppoted due to unpredictable `compareTo(NaN)` behavior\n require(!inDegrees.isNaN()) {\n logMessage(ERROR, \"Angle\", \"init\", \"NaN is not supported!\")\n }\n }\n\n /**\n * Obtains the sum of these two angles.\n * This method is commutative, so `a.add(b)` and `b.add(a)` are equivalent.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to add to this one.\n *\n * @return an angle whose size is the total of these angles and angles size.\n */\n operator fun plus(angle: Angle) = fromDegrees(inDegrees + angle.inDegrees)\n fun plusDegrees(degrees: Double) = fromDegrees(this.inDegrees + degrees)\n fun plusRadians(radians: Double) = fromRadians(this.inRadians + radians)\n\n /**\n * Obtains the difference of these two angles. This method is not commutative.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to subtract from this angle.\n *\n * @return a new angle corresponding to this angle's size minus angle's size.\n */\n operator fun minus(angle: Angle) = fromDegrees(inDegrees - angle.inDegrees)\n fun minusDegrees(degrees: Double) = fromDegrees(this.inDegrees - degrees)\n fun minusRadians(radians: Double) = fromRadians(this.inRadians - radians)\n\n /**\n * Multiplies this angle by another angle.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to multiply.\n *\n * @return a new angle whose size equals this angle's size multiplied by angle's size.\n */\n operator fun times(angle: Angle) = this * angle.inDegrees\n\n /**\n * Multiplies this angle by `multiplier`.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param multiplier a scalar by which this angle is multiplied.\n *\n * @return a new angle whose size equals this angle's size multiplied by `multiplier`.\n */\n operator fun times(multiplier: Number) = fromDegrees(inDegrees * multiplier.toDouble())\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to divide.\n *\n * @return this angle's degrees divided by angle's degrees.\n */\n operator fun div(angle: Angle) = this / angle.inDegrees\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param divisor a scalar by which to divide.\n *\n * @return this angle's degrees divided by divisor.\n */\n operator fun div(divisor: Number): Angle {\n require(divisor != 0.0) {\n logMessage(ERROR, \"Angle\", \"div\", \"divideByZero\")\n }\n return fromDegrees(inDegrees / divisor.toDouble())\n }\n\n /**\n * Returns new angle with opposite sign.\n */\n operator fun unaryMinus() = Angle(-inDegrees)\n\n /**\n * Computes the shortest distance between this and angle, as an angle.\n *\n * @param angle the angle to measure angular distance to.\n *\n * @return the angular distance between this and `value`.\n */\n fun distanceTo(angle: Angle): Angle {\n var distance = angle.inDegrees - inDegrees\n if (distance < -180) distance += 360.0 else if (distance > 180) distance -= 360.0\n return abs(distance).degrees\n }\n\n fun normalize180() = if (inDegrees in -180.0..180.0) this else normalizeAngle180(inDegrees).degrees\n\n fun normalize360() = if (inDegrees in 0.0..360.0) this else normalizeAngle360(inDegrees).degrees\n\n fun normalizeLatitude() = if (inDegrees in -90.0..90.0) this else normalizeLatitude(inDegrees).degrees\n\n fun normalizeLongitude() = if (inDegrees in -180.0..180.0) this else normalizeLongitude(inDegrees).degrees\n\n fun clampAngle180() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun clampAngle360() = inDegrees.coerceIn(0.0, 360.0).degrees\n\n fun clampLatitude() = inDegrees.coerceIn(-90.0, 90.0).degrees\n\n fun clampLongitude() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun toDMS(): DoubleArray {\n var angle = inDegrees\n val sign = sign(angle)\n angle *= sign\n var d = floor(angle)\n angle = (angle - d) * 60.0\n var m = floor(angle)\n angle = (angle - m) * 60.0\n var s = round(angle * 100) / 100 // keep two decimals for seconds\n if (s == 60.0) {\n m++\n s = 0.0\n }\n if (m == 60.0) {\n d++\n m = 0.0\n }\n return doubleArrayOf(sign, d, m, s)\n }\n\n /**\n * Forms a decimal degrees [String] representation of this [Angle].\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in decimal degrees as a string with the specified number of digits beyond the\n * decimal point. The string is padded with trailing zeros to fill the number of post-decimal point\n * positions requested.\n */\n fun toDDString(digits: Int = 6): String {\n require(digits in 0..15) {\n logMessage(ERROR, \"Angle\", \"toDecimalDegreesString\", \"outOfRange\")\n }\n return \"%.${digits}f°\".format(inDegrees)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees and decimal minutes.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees and decimal minutes as a string.\n */\n fun toDMString(digits: Int = 3): String {\n val dms = toDMS()\n val mf = if (dms[3] == 0.0) dms[2] else dms[2] + dms[3] / 60.0\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2.${digits}f’\".format(dms[1], mf)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees, minutes and seconds.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees, minutes and seconds as a string.\n */\n fun toDMSString(digits: Int = 1): String {\n val dms = toDMS()\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2d’ %2.${digits}f”\".format(dms[1], dms[2], dms[3])\n }\n\n /**\n * Compares this [Angle] with another. Returns a negative integer if this is the smaller angle, a positive\n * integer if this is the larger, and zero if both angles are equal.\n *\n * @param other the angle to compare against.\n *\n * @return -1 if this angle is smaller, 0 if both are equal and +1 if this angle is larger.\n */\n override operator fun compareTo(other: Angle) = inDegrees.compareTo(other.inDegrees)\n\n override fun toString() = \"$inDegrees°\"\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer\n\nclass GKGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n private val layer = GKGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.OrientationMode\n\nclass LabelsTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Labels\").apply {\n // Create a basic label with the default attributes, including the default text color (white), the default text\n // size (24 pixels), the system default font, and the default alignment (bottom center).\n addRenderable(\n Label(Position.fromDegrees(38.8977, -77.0365, 0.0), \"The White House\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create a label with a black text color, the default text size, the system default font, the default\n // alignment, and a thick white text outline.\n addRenderable(\n Label(Position.fromDegrees(38.881389, -77.036944, 0.0), \"Thomas Jefferson Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply {\n textColor = Color(0f, 0f, 0f, 1f) // black text via r,g,b,a\n outlineColor = Color(1f, 1f, 1f, 1f) // white outline via r,g,b,a\n outlineWidth = 5f // thicken the white outline\n }\n }\n )\n\n // Create a right-aligned label using a bottom-right offset.\n addRenderable(\n Label(Position.fromDegrees(38.8893, -77.050111, 0.0), \"Lincoln Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomRight() }\n }\n )\n\n // Create a left-aligned label using a bottom-left offset.\n addRenderable(\n Label(Position.fromDegrees(38.889803, -77.009114, 0.0), \"United States Capitol\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomLeft() }\n }\n )\n\n // Create a label with a 48 pixel text size and a bold font.\n addRenderable(\n Label(Position.fromDegrees(38.907192, -77.036871, 0.0), \"Washington\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { font = Font(\"arial\", FontWeight.BOLD, 28) }\n }\n )\n\n // Create a label with its orientation fixed relative to the globe.\n addRenderable(\n Label(Position.fromDegrees(38.89, -77.023611, 0.0), \"National Mall\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n rotationMode = OrientationMode.RELATIVE_TO_GLOBE\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 38.89.degrees, (-77.023611).degrees, 10e3,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass LookAtViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setLookAtAction()\n }\n\n private fun setLookAtAction() {\n // Create a view of LAX airport as seen from an aircraft above Santa Monica, CA.\n val aircraft = Position.fromDegrees(34.0158333, -118.4513056, 2500.0)\n // Aircraft above Santa Monica airport, altitude in meters\n val airport = Position.fromDegrees(33.9424368, -118.4081222, 38.7)\n\n // Compute heading and distance from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n\n // Compute camera settings\n val altitude = aircraft.altitude - airport.altitude\n val range = sqrt(altitude * altitude + distanceMeters * distanceMeters)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply new \"look at\" view\n engine.cameraFromLookAt(LookAt(airport, AltitudeMode.ABSOLUTE, range, heading, tilt, roll = Angle.ZERO))\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer\n\nclass MGRSGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = MGRSGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Path\n\nclass PathsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Paths\").apply {\n // Create a basic path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(50.0, -180.0, 1e5),\n Position.fromDegrees(30.0, -100.0, 1e6),\n Position.fromDegrees(50.0, -40.0, 1e5)\n )\n )\n )\n\n // Create a terrain following path with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(40.0, -180.0, 0.0),\n Position.fromDegrees(20.0, -100.0, 0.0),\n Position.fromDegrees(40.0, -40.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the path vertices to the ground\n isFollowTerrain = true // follow the ground between path vertices\n }\n )\n\n // Create an extruded path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(30.0, -180.0, 1e5),\n Position.fromDegrees(10.0, -100.0, 1e6),\n Position.fromDegrees(30.0, -40.0, 1e5)\n )\n ).apply {\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n\n // Create an extruded path with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the path line with.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(20.0, -180.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e6),\n Position.fromDegrees(20.0, -40.0, 1e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-100.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Placemark\nimport earth.worldwind.shape.PlacemarkAttributes\n\nclass PlacemarksTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Placemarks\").apply {\n // Create a simple placemark at downtown Ventura, CA. This placemark is a 20x20 cyan square centered on the\n // geographic position. This placemark demonstrates the creation with a convenient factory method.\n addRenderable(\n Placemark.createWithColorAndSize(\n Position.fromDegrees(34.281, -119.293, 0.0), Color(0f, 1f, 1f, 1f), 20\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create an image-based placemark of an aircraft above the ground with a leader-line to the surface.\n // This placemark demonstrates creation via a constructor and a convenient PlacemarkAttributes factory method.\n // The image is scaled to 1.5 times its original size.\n addRenderable(\n Placemark(Position.fromDegrees(34.260, -119.2, 5000.0)).apply {\n attributes = PlacemarkAttributes.createWithImageAndLeader(ImageSource.fromResource(MR.images.aircraft_fixwing)).apply {\n imageScale = 1.5\n }\n }\n )\n\n // Create an image-based placemark with a label at Oxnard Airport, CA. This placemark demonstrates creation\n // with a constructor and a convenient PlacemarkAttributes factory method. The image is scaled to 2x\n // its original size, with the bottom center of the image anchored at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.200, -119.208, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.airport_terminal)).apply {\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n }\n displayName = \"Oxnard Airport\"\n }\n )\n\n // Create an image-based placemark from a bitmap. This placemark demonstrates creation with a\n // constructor and a convenient PlacemarkAttributes factory method. First, a 64x64 bitmap is loaded,\n // and then it is passed into the placemark attributes. The bottom center of the image anchored\n // at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.300, -119.25, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.ehipcc)).apply {\n imageOffset = Offset.bottomCenter()\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(34.200, -119.208, 0.0),\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 80.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Polygon\n\nclass PolygonsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Polygons\").apply {\n // Create a basic polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -135.0, 5.0e5),\n Position.fromDegrees(45.0, -140.0, 7.0e5),\n Position.fromDegrees(50.0, -130.0, 9.0e5),\n Position.fromDegrees(45.0, -120.0, 7.0e5),\n Position.fromDegrees(40.0, -125.0, 5.0e5)\n )\n )\n )\n\n // Create a terrain following polygon with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -105.0, 0.0),\n Position.fromDegrees(45.0, -110.0, 0.0),\n Position.fromDegrees(50.0, -100.0, 0.0),\n Position.fromDegrees(45.0, -90.0, 0.0),\n Position.fromDegrees(40.0, -95.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the polygon vertices to the ground\n isFollowTerrain = true // follow the ground between polygon vertices\n }\n )\n\n // Create an extruded polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -135.0, 5.0e5),\n Position.fromDegrees(25.0, -140.0, 7.0e5),\n Position.fromDegrees(30.0, -130.0, 9.0e5),\n Position.fromDegrees(25.0, -120.0, 7.0e5),\n Position.fromDegrees(20.0, -125.0, 5.0e5)\n )\n ).apply {\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create an extruded polygon with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -105.0, 5.0e5),\n Position.fromDegrees(25.0, -110.0, 7.0e5),\n Position.fromDegrees(30.0, -100.0, 9.0e5),\n Position.fromDegrees(25.0, -90.0, 7.0e5),\n Position.fromDegrees(20.0, -95.0, 5.0e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create a polygon with an inner hole by specifying multiple polygon boundaries\n addRenderable(\n Polygon().apply {\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -135.0, 5.0e5),\n Position.fromDegrees(5.0, -140.0, 7.0e5),\n Position.fromDegrees(10.0, -130.0, 9.0e5),\n Position.fromDegrees(5.0, -120.0, 7.0e5),\n Position.fromDegrees(0.0, -125.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -130.0, 6.0e5),\n Position.fromDegrees(5.0, -135.0, 7.0e5),\n Position.fromDegrees(7.5, -130.0, 8.0e5),\n Position.fromDegrees(5.0, -125.0, 7.0e5)\n )\n )\n }\n )\n\n // Create an extruded polygon with an inner hole and custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon().apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -105.0, 5.0e5),\n Position.fromDegrees(5.0, -110.0, 7.0e5),\n Position.fromDegrees(10.0, -100.0, 9.0e5),\n Position.fromDegrees(5.0, -90.0, 7.0e5),\n Position.fromDegrees(0.0, -95.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -100.0, 6.0e5),\n Position.fromDegrees(5.0, -105.0, 7.0e5),\n Position.fromDegrees(7.5, -100.0, 8.0e5),\n Position.fromDegrees(5.0, -95.0, 7.0e5)\n )\n )\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-115.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Ellipse\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.Polygon\nimport earth.worldwind.shape.ShapeAttributes\n\nclass ShapesDashAndFillTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Dash and fill\").apply {\n // Thicken all lines used in the tutorial.\n val thickenLine = ShapeAttributes().apply { outlineWidth = 4f }\n\n // Create a path with a simple dashed pattern generated from the ImageSource factory. The\n // ImageSource.fromLineStipple function generates a texture based on the provided factor and pattern, similar to\n // stipple parameters of OpenGL 2. The binary representation of the pattern value will be the pattern displayed,\n // where positions with a 1 appearing as opaque and a 0 as transparent.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -100.0, 1e5),\n Position.fromDegrees(30.0, -120.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e5)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 2, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Modify the factor of the pattern for comparison to first path. Only the factor is modified, not the pattern.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -90.0, 5e4),\n Position.fromDegrees(30.0, -110.0, 5e4),\n Position.fromDegrees(0.0, -90.0, 5e4)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 4, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Create a path conforming to the terrain with a different pattern from the first two Paths.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -80.0, 0.0),\n Position.fromDegrees(30.0, -100.0, 0.0),\n Position.fromDegrees(0.0, -80.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 8, pattern = 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n\n // Create an Ellipse using an image as a repeating fill pattern\n addRenderable(\n Ellipse(Position.fromDegrees(40.0, -70.0, 1e5), 1.5e6, 800e3).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n }\n }\n )\n\n // Create a surface polygon using an image as a repeating fill pattern and a dash pattern for the outline\n // of the polygon.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(25.0, -85.0, 0.0),\n Position.fromDegrees(10.0, -80.0, 0.0),\n Position.fromDegrees(10.0, -60.0, 0.0),\n Position.fromDegrees(25.0, -55.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n outlineImageSource = ImageSource.fromLineStipple(8, 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-85.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.ShowTessellationLayer\n\nclass ShowTessellationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = ShowTessellationLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.OmnidirectionalSightline\nimport earth.worldwind.shape.Placemark\n\nclass SightlineTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Sightline\").apply {\n // Specify the sightline position, which is the origin of the line of sight calculation\n val position = Position.fromDegrees(46.230, -122.190, 2500.0)\n // Create the sightline, specifying the range of the sightline (meters)\n addRenderable(\n OmnidirectionalSightline(position, 10000.0).apply {\n // Create attributes for the visible terrain\n attributes.apply { interiorColor = Color(0f, 1f, 0f, 0.5f) }\n // Create attributes for the occluded terrain\n occludeAttributes.apply { interiorColor = Color(0.1f, 0.1f, 0.1f, 0.8f) }\n }\n )\n // Create a Placemark to visualize the position of the sightline\n addRenderable(\n Placemark(position).apply {\n attributes.apply {\n imageSource = earth.worldwind.render.image.ImageSource.fromResource(MR.images.aircraft_fixwing)\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n isDrawLeader = true\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position(46.230.degrees, (-122.190).degrees, 500.0), altitudeMode = AltitudeMode.ABSOLUTE,\n range = 1.5e4, heading = 45.0.degrees, tilt = 70.0.degrees, roll = 0.0.degrees\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\n\nclass SurfaceImageTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Surface image\").apply {\n // Configure a Surface Image to display an Android resource showing the WorldWindEarth logo.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46, 15.5, 0.5, 0.6),\n ImageSource.fromResource(MR.images.worldwind_logo)\n )\n )\n\n // Configure a Surface Image to display a remote image showing Mount Etna erupting on July 13th, 2001.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46543388598137, 14.60128369746704, 0.45360804083528, 0.75704283995502),\n ImageSource.fromUrlString(\"https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg\")\n )\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 37.46543388598137.degrees, 14.97980511744455.degrees, 4.0e5,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.Wcs100ElevationCoverage\nimport kotlin.math.atan\n\nclass WcsElevationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create an elevation coverage from a version 1.0.0 WCS\n private val wcsElevationCoverage = Wcs100ElevationCoverage(\n // Specify the version 1.0.0 WCS address\n serviceAddress = \"https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer\",\n // Specify the coverage name\n coverageName = \"DEP3Elevation\",\n // Specify the output format\n outputFormat = \"geotiff\",\n // Specify the bounding sector - provided by the WCS\n sector = Sector.fromDegrees(25.0, -125.0, 25.0, 60.0),\n // Specify the data resolution of 10m (1/3 arc-second)\n resolution = Angle.fromSeconds(1.0 / 3.0)\n )\n\n override fun start() {\n super.start()\n engine.globe.elevationModel.apply {\n forEach { coverage -> coverage.isEnabled = false }\n addCoverage(wcsElevationCoverage)\n }\n positionView()\n }\n\n override fun stop() {\n super.stop()\n engine.globe.elevationModel.apply {\n removeCoverage(wcsElevationCoverage)\n forEach { coverage -> coverage.isEnabled = true }\n }\n }\n\n private fun positionView() {\n val mtRainier = Position.fromDegrees(46.852886, -121.760374, 4392.0)\n val eye = Position.fromDegrees(46.912, -121.527, 2000.0)\n\n // Compute heading and distance from peak to eye\n val heading = eye.greatCircleAzimuth(mtRainier)\n val distanceRadians = mtRainier.greatCircleDistance(eye)\n val distance = distanceRadians * engine.globe.getRadiusAt(mtRainier.latitude, mtRainier.longitude)\n\n // Compute camera settings\n val tilt = atan(distance / eye.altitude).radians\n\n // Apply the new view\n engine.camera.set(\n eye.latitude, eye.longitude, eye.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Service (WMS) layer to display the\n // surface temperature layer from NASA's Near Earth Observations WMS.\n WmsLayerFactory.createLayer(\"https://neo.gsfc.nasa.gov/wms/wms\", listOf(\"MOD_LSTD_CLIM_M\")).also {\n if (isActive) {\n wmsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmsLayer?.let { engine.layers.removeLayer(it) }.also { wmsLayer = null }\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmtsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmtsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Tile Service (WMTS) layer to display Global Hillshade based on GMTED2010\n WmtsLayerFactory.createLayer(\"https://tiles.geoservice.dlr.de/service/wmts\", \"hillshade\").also {\n if (isActive) {\n wmtsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMTS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMTS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmtsLayer?.let { engine.layers.removeLayer(it) }.also { wmtsLayer = null }\n }\n\n}","@file:JsExport\n@file:Suppress(\"OPT_IN_USAGE\", \"NON_EXPORTABLE_TYPE\")\n\npackage earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.gesture.SelectDragCallback\nimport earth.worldwind.globe.elevation.coverage.BasicElevationCoverage\nimport earth.worldwind.globe.projection.MercatorProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport earth.worldwind.layer.BackgroundLayer\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.mercator.WebMercatorLayerFactory\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Movable\nimport kotlinx.browser.document\nimport kotlinx.browser.window\nimport org.w3c.dom.*\n\nfun main() {\n // Register an event listener to be called when the page is loaded.\n window.onload = {\n // Create a WorldWindow for the canvas.\n val wwd = WorldWindow(document.getElementById(\"WorldWindow\") as HTMLCanvasElement)\n val tutorialSelect = document.getElementById(\"Tutorials\") as HTMLSelectElement\n val projectionSelect = document.getElementById(\"Projections\") as HTMLSelectElement\n val actionsContainer = document.getElementById(\"Actions\") as HTMLDivElement\n val tutorials = mapOf (\n \"Basic globe\" to BasicTutorial(wwd.engine),\n \"Set camera view\" to CameraViewTutorial(wwd.engine),\n \"Set \\\"look at\\\" view\" to LookAtViewTutorial(wwd.engine),\n \"Placemarks\" to PlacemarksTutorial(wwd.engine),\n \"Paths\" to PathsTutorial(wwd.engine),\n \"Polygons\" to PolygonsTutorial(wwd.engine),\n \"Ellipses\" to EllipsesTutorial(wwd.engine),\n \"Dash and fill\" to ShapesDashAndFillTutorial(wwd.engine),\n \"Labels\" to LabelsTutorial(wwd.engine),\n \"Sight line\" to SightlineTutorial(wwd.engine),\n \"Surface image\" to SurfaceImageTutorial(wwd.engine),\n \"Show tessellation\" to ShowTessellationTutorial(wwd.engine),\n \"MGRS Graticule\" to MGRSGraticuleTutorial(wwd.engine),\n \"Gauss-Kruger Graticule\" to GKGraticuleTutorial(wwd.engine),\n \"WMS Layer\" to WmsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WMTS Layer\" to WmtsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WCS Elevation\" to WcsElevationTutorial(wwd.engine),\n \"Elevation Heatmap\" to ElevationHeatmapTutorial(wwd.engine),\n )\n val projections = mapOf (\n \"WGS84 Projection\" to Wgs84Projection(),\n \"Mercator Projection\" to MercatorProjection()\n )\n var currentTutorial: String? = null\n\n // Add some image layers to the WorldWindow's globe.\n wwd.engine.layers.apply {\n addLayer(BackgroundLayer())\n addLayer(WebMercatorLayerFactory.createLayer(\n urlTemplate = \"https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}\",\n imageFormat = \"image/jpeg\",\n name = \"Google Satellite\"\n ))\n addLayer(StarFieldLayer())\n addLayer(AtmosphereLayer())\n }\n\n // Add elevation coverage source\n wwd.engine.globe.elevationModel.addCoverage(BasicElevationCoverage())\n\n // Allow pick and move any movable object\n wwd.selectDragDetector.callback = object : SelectDragCallback {\n override fun canPickRenderable(renderable: Renderable) = renderable is Movable\n override fun canMoveRenderable(renderable: Renderable) = renderable is Movable\n }\n\n fun callAction(actionName: String) { currentTutorial?.let { tutorials[it]?.runAction(actionName) } }\n\n fun createAction(actionName: String) {\n (document.createElement(\"button\") as HTMLButtonElement).apply {\n innerHTML = actionName\n actionsContainer.append(this)\n onclick = { callAction(actionName) }\n }\n }\n\n fun selectTutorial(tutorial: String) {\n currentTutorial?.let { tutorials[it]?.stop() }\n currentTutorial = tutorial\n tutorials[tutorial]?.run {\n start()\n //TODO actions\n actionsContainer.innerHTML = \"\"\n actions?.forEach { action -> createAction(action) }\n actionsContainer.hidden = actions?.isEmpty() != false\n }\n wwd.requestRedraw()\n }\n\n fun selectProjection(projectionName: String) {\n wwd.engine.globe.projection = projections[projectionName]!!\n wwd.requestRedraw()\n }\n\n tutorials.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n tutorialSelect.append(this)\n }\n }\n projections.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n projectionSelect.append(this)\n }\n }\n tutorialSelect.onchange = { event -> selectTutorial((event.target as HTMLSelectElement).value) }\n projectionSelect.onchange = { event -> selectProjection((event.target as HTMLSelectElement).value)}\n selectTutorial(tutorials.keys.first())\n selectProjection(projections.keys.first())\n }\n}",null,"package earth.worldwind\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"9b24c64f544c9d9ebb21130e2d2e72f5\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val sun_texture: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/sun_texture.png\\\")\") as String, fileName = \"sun_texture.png\")\n\n public actual val dnb_land_ocean_ice_2012: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/dnb_land_ocean_ice_2012.png\\\")\") as String, fileName =\n \"dnb_land_ocean_ice_2012.png\")\n\n public actual val worldwind_worldtopobathy2004053: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_worldtopobathy2004053.png\\\")\") as String, fileName =\n \"worldwind_worldtopobathy2004053.png\")\n\n public actual override fun values(): List = listOf(sun_texture,\n dnb_land_ocean_ice_2012, worldwind_worldtopobathy2004053)\n }\n\n public actual object files : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val stars_json: FileResource = FileResource(fileUrl =\n js(\"require(\\\"files/stars.json\\\")\") as String)\n\n public actual override fun values(): List = listOf(stars_json)\n }\n}\n","package earth.worldwind\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.min\nimport kotlin.math.roundToInt\n\n/**\n * Incrementally and smoothly moves the Camera to a specified position.\n */\nopen class GoToAnimator(\n /**\n * The [WorldWind] engine associated with this animator.\n */\n protected val engine: WorldWind\n) {\n /**\n * The frequency in milliseconds at which to animate the position change.\n */\n var animationFrequency = 20L\n /**\n * The animation's duration, in milliseconds. When the distance is short, less than twice the viewport\n * size, the travel time is reduced proportionally to the distance to travel. It therefore takes less\n * time to move shorter distances.\n */\n var travelTime = 3000\n /**\n * Main scope to launch animation\n */\n protected val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * A temp variable used to hold the current view as a look at during calculations. Using an object level temp\n * property negates the need for ad-hoc allocations and reduces load on the garbage collector.\n */\n protected val lookAt = LookAt()\n protected var animationJob: Job? = null\n protected var completionCallback: ((GoToAnimator) -> Unit)? = null\n protected var targetPosition: Position? = null\n protected var startPosition: Position? = null\n protected var startTime = Instant.DISTANT_PAST\n protected var maxAltitude = 0.0\n protected var maxAltitudeReachedTime = Instant.DISTANT_PAST\n protected var panVelocity = 0.0\n protected var rangeVelocity = 0.0\n\n /**\n * Stop the current animation.\n */\n fun cancel() { animationJob?.cancel() }\n\n /**\n * Moves the camera to a specified look at location or position.\n *\n * @param position The [Location] or [Position] to move the camera to. If this\n * argument contains an \"altitude\" property, as [Position] does, the end point of the navigation is\n * at the specified altitude. Otherwise, the end point is at the current altitude of the camera.\n * @param completionCallback If not null, specifies a function to call when the animation completes.\n * The completion callback is called with a single argument, this animator.\n */\n open fun goTo(position: Location, completionCallback: ((GoToAnimator) -> Unit)? = null) {\n if (engine.viewport.isEmpty) return\n\n this.completionCallback = completionCallback\n\n engine.cameraAsLookAt(lookAt)\n // Capture the target position and determine its altitude.\n val targetPosition = Position(\n position.latitude, position.longitude, if (position is Position) position.altitude else lookAt.range\n ).also { targetPosition = it }\n\n // Capture the start position and start time.\n val startPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range).also { startPosition = it }\n startTime = Clock.System.now()\n\n // Determination of the pan and range velocities requires the distance to be travelled.\n var animationDuration = travelTime\n val panDistance = startPosition.greatCircleDistance(targetPosition)\n\n // Determine how high we need to go to give the user context. The max altitude computed is approximately\n // that needed to fit the start and end positions in the same viewport assuming a 45 degree field of view.\n val pA = engine.globe.geographicToCartesian(startPosition.latitude, startPosition.longitude, 0.0, Vec3())\n val pB = engine.globe.geographicToCartesian(targetPosition.latitude, targetPosition.longitude, 0.0, Vec3())\n maxAltitude = pA.distanceTo(pB)\n\n // Determine an approximate viewport size in radians in order to determine whether we actually change\n // the range as we pan to the new location. We don't want to change the range if the distance between\n // the start and target positions is small relative to the current viewport.\n val viewportSize = engine.pixelSizeAtDistance(startPosition.altitude) *\n engine.viewport.width / engine.globe.equatorialRadius\n\n // Start and target positions are close, so don't back out.\n if (panDistance <= 2 * viewportSize) maxAltitude = startPosition.altitude\n\n // We need to capture the time the max altitude is reached in order to begin decreasing the range\n // midway through the animation. If we're already above the max altitude, then that time is now since\n // we don't back out if the current altitude is above the computed max altitude.\n maxAltitudeReachedTime = if (maxAltitude <= lookAt.range) Clock.System.now() else Instant.DISTANT_PAST\n\n // Compute the total range to travel since we need that to compute the range velocity.\n // Note that the range velocity and pan velocity are computed so that the respective animations, which\n // operate independently, finish at the same time.\n val rangeDistance = if (maxAltitude > startPosition.altitude) {\n max(0.0, maxAltitude - startPosition.altitude) + abs(targetPosition.altitude - maxAltitude)\n } else {\n abs(targetPosition.altitude - startPosition.altitude)\n }\n\n // Determine which distance governs the animation duration.\n val animationDistance = max(panDistance, rangeDistance / engine.globe.equatorialRadius)\n if (animationDistance == 0.0) return // current and target positions are the same\n\n if (animationDistance < 2 * viewportSize) {\n // Start and target positions are close, so reduce the travel time based on the\n // distance to travel relative to the viewport size.\n animationDuration = min(((animationDistance / viewportSize) * travelTime).roundToInt(), travelTime)\n }\n\n // Don't let the animation duration go to 0.\n animationDuration = max(1, animationDuration)\n\n // Determine the pan velocity, in radians per millisecond.\n panVelocity = panDistance / animationDuration\n\n // Determine the range velocity, in meters per millisecond.\n rangeVelocity = rangeDistance / animationDuration // meters per millisecond\n\n // Set up the animation timer.\n setUpAnimationTimer()\n }\n\n protected open fun setUpAnimationTimer() {\n animationJob?.cancel()\n animationJob = mainScope.launch {\n delay(animationFrequency)\n if (!isActive || !update()) completionCallback?.invoke(this@GoToAnimator) else setUpAnimationTimer()\n }\n }\n\n /**\n * This is the timer callback function. It invokes the range animator and the pan animator.\n */\n protected open fun update(): Boolean {\n val currentPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range)\n val continueUpdateRange = updateRange(currentPosition)\n val continueUpdateLocation = updateLocation(currentPosition)\n WorldWind.requestRedraw()\n return continueUpdateRange || continueUpdateLocation\n }\n\n /**\n * This function animates the range.\n */\n protected open fun updateRange(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n\n // If we haven't reached the maximum altitude, then step-wise increase it. Otherwise, step-wise change\n // the range towards the target altitude.\n val continueAnimation = if (maxAltitudeReachedTime == Instant.DISTANT_PAST) {\n val elapsedTime = Clock.System.now() - startTime\n val nextRange = min(startPosition.altitude + rangeVelocity * elapsedTime.inWholeMilliseconds, maxAltitude)\n // We're done if we get withing 1 meter of the desired range.\n if (abs(lookAt.range - nextRange) < 1) maxAltitudeReachedTime = Clock.System.now()\n lookAt.range = nextRange\n true\n } else {\n val elapsedTime = Clock.System.now() - maxAltitudeReachedTime\n val nextRange = if (maxAltitude > targetPosition.altitude) {\n max(maxAltitude - (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n } else {\n min(maxAltitude + (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n }\n lookAt.range = nextRange\n // We're done if we get withing 1 meter of the desired range.\n abs(lookAt.range - targetPosition.altitude) > 1\n }\n\n engine.cameraFromLookAt(lookAt)\n\n return continueAnimation\n }\n\n /**\n * This function animates the pan to the desired location.\n */\n protected open fun updateLocation(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n val elapsedTime = Clock.System.now() - startTime\n val distanceTravelled = startPosition.greatCircleDistance(currentPosition)\n val distanceRemaining = currentPosition.greatCircleDistance(targetPosition)\n val azimuthToTarget = currentPosition.greatCircleAzimuth(targetPosition)\n val distanceForNow = panVelocity * elapsedTime.inWholeMilliseconds\n val nextDistance = min(distanceForNow - distanceTravelled, distanceRemaining)\n val nextLocation = currentPosition.greatCircleLocation(azimuthToTarget, nextDistance, Location())\n var locationReached = false\n\n lookAt.position.latitude = nextLocation.latitude\n lookAt.position.longitude = nextLocation.longitude\n engine.cameraFromLookAt(lookAt)\n\n // We're done if we're within a meter of the desired location.\n if (nextDistance < 1.0 / engine.globe.equatorialRadius) locationReached = true\n\n return !locationReached\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Renderable\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.roundToInt\n\nopen class PickedObject protected constructor(\n val identifier: Int, val userObject: Any, val layer: Layer? = null, val terrainPosition: Position? = null\n) {\n var isOnTop = false\n protected set\n val isTerrain get() = terrainPosition != null\n\n companion object {\n @JvmStatic\n fun fromRenderable(identifier: Int, renderable: Renderable, layer: Layer) =\n PickedObject(identifier, renderable.pickDelegate ?: renderable, layer)\n\n @JvmStatic\n fun fromTerrain(identifier: Int, position: Position): PickedObject {\n val positionCopy = Position(position)\n return PickedObject(identifier, positionCopy, terrainPosition = positionCopy)\n }\n\n @JvmStatic\n fun identifierToUniqueColor(identifier: Int, result: Color): Color {\n val r8 = identifier shr 16 and 0xFF\n val g8 = identifier shr 8 and 0xFF\n val b8 = identifier and 0xFF\n result.red = r8 / 0xFF.toFloat()\n result.green = g8 / 0xFF.toFloat()\n result.blue = b8 / 0xFF.toFloat()\n result.alpha = 1f\n return result\n }\n\n @JvmStatic\n fun uniqueColorToIdentifier(color: Color): Int {\n val r8 = (color.red * 0xFF).roundToInt()\n val g8 = (color.green * 0xFF).roundToInt()\n val b8 = (color.blue * 0xFF).roundToInt()\n return r8 shl 16 or (g8 shl 8) or b8\n }\n }\n\n internal fun markOnTop() { isOnTop = true }\n\n override fun toString() = \"PickedObject(isOnTop=$isOnTop, identifier=$identifier, userObject=$userObject, layer=$layer, terrainPosition=$terrainPosition)\"\n}","package earth.worldwind\n\nopen class PickedObjectList {\n protected val objectsById = mutableMapOf()\n val objects get() = objectsById.values\n val count get() = objectsById.size\n val topPickedObject get() = objects.firstOrNull { po -> po.isOnTop }\n val terrainPickedObject get() = objects.firstOrNull { po -> po.isTerrain }\n val hasNonTerrainObjects get() = objects.firstOrNull { po -> !po.isTerrain } != null\n\n fun offerPickedObject(pickedObject: PickedObject) { objectsById[pickedObject.identifier] = pickedObject }\n\n fun pickedObjectWithId(identifier: Int) = objectsById[identifier]\n\n fun clearPickedObjects() = objectsById.clear()\n\n fun keepTopAndTerrainObjects() = objectsById.entries.removeAll { e -> !e.value.isOnTop && !e.value.isTerrain }\n\n override fun toString() = objects.joinToString(\", \", \"PickedObjectList{\", \"}\") { po -> po.toString() }\n}",null,"package earth.worldwind\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.frame.BasicFrameController\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.frame.FrameController\nimport earth.worldwind.frame.FrameMetrics\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.BasicTessellator\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.kgl.*\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.asSharedFlow\nimport kotlinx.datetime.TimeZone\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Main WorldWind model, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\nopen class WorldWind @JvmOverloads constructor(\n /**\n * Platform-dependent OpenGL implementation\n */\n gl: Kgl,\n /**\n * Platform-dependent GPU resource cache manager.\n */\n var renderResourceCache: RenderResourceCache,\n /**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models.\n */\n var globe: Globe = Globe(),\n /**\n * Terrain model tessellator.\n */\n var tessellator: Tessellator = BasicTessellator(),\n /**\n * Frame rendering and drawing logic implementation.\n */\n var frameController: FrameController = BasicFrameController(),\n /**\n * Helper class implementing [FrameMetrics] to measure performance.\n */\n var frameMetrics: FrameMetrics? = null\n) {\n /**\n * List of renderable object layers to be displayed by this WorldWind.\n */\n var layers = LayerList()\n /**\n * Current user view point parameters: location, altitude, orientation and field of view.\n */\n var camera = Camera()\n /**\n * The [GoToAnimator] used by this WorldWindow to respond to its goTo method.\n */\n val goToAnimator = GoToAnimator(this)\n /**\n * Screen area occupied by this WorldWind.\n */\n val viewport = Viewport()\n /**\n * Keep pixel scale when changing the height of viewport by adapting field of view\n */\n var isKeepScale = true\n /**\n * Scale of logical pixel size to hardware display pixel size. Used to adopt general level of details to screen density.\n */\n var densityFactor = 1f\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setDensityFactor\", \"invalidDensityFactor\"\n )\n }\n field = value\n }\n /**\n * Vertical exaggeration (VE) is a scale that is used to emphasize vertical features, which might be too small\n * to identify relative to the horizontal scale.\n */\n var verticalExaggeration = 1.0\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setVerticalExaggeration\", \"invalidVerticalExaggeration\"\n )\n }\n field = value\n }\n /**\n * Atmosphere altitude above ellipsoid. Used to control when objects are clipped by the far plain behind the globe.\n */\n var atmosphereAltitude = 160000.0\n /**\n * Context related to frame rendering phase\n */\n protected val rc = RenderContext()\n /**\n * Context related to frame drawing phase\n */\n protected val dc = DrawContext(gl)\n /**\n * The number of bits in the depth buffer associated with this WorldWind.\n */\n protected var depthBits = 0\n private val scratchModelview = Matrix4()\n private val scratchProjection = Matrix4()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n init {\n // Initialize default camera location based on user time zone\n val initLocation = Location.fromTimeZone(TimeZone.currentSystemDefault())\n // Fit globe to screen vertically with 10% margin.\n val initAltitude = distanceToViewGlobeExtents * 1.1\n camera.position.set(initLocation.latitude, initLocation.longitude, initAltitude)\n }\n\n /**\n * Reset internal WorldWind state to initial values.\n */\n open fun reset() {\n // Clear the render resource cache; it's entries are now invalid.\n renderResourceCache.clear()\n\n // Invalidate elevation model.\n globe.elevationModel.invalidate()\n\n // Clear the viewport dimensions.\n viewport.setEmpty()\n\n // Reset screen density factor.\n densityFactor = 1f\n }\n\n /**\n * Specify the default WorldWind OpenGL state.\n */\n open fun setupDrawContext() {\n dc.gl.enable(GL_BLEND)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.enableVertexAttribArray(0)\n dc.gl.disable(GL_DITHER)\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.depthFunc(GL_LEQUAL)\n\n // Clear any cached OpenGL resources and state, which are now invalid.\n dc.contextLost()\n\n // Set the WorldWindow's depth bits.\n depthBits = dc.gl.getParameteri(GL_DEPTH_BITS)\n }\n\n /**\n * Apply new viewport dimensions.\n */\n open fun setupViewport(width: Int, height: Int) {\n dc.gl.viewport(0, 0, width, height)\n\n // Keep pixel scale by adapting field of view on view port resize\n if (isKeepScale && viewport.height != 0) {\n try {\n camera.fieldOfView *= height / viewport.height.toDouble()\n } catch (ignore: IllegalArgumentException) {\n // Keep original field of view in case new one does not fit requirements\n }\n }\n\n viewport.set(0, 0, width, height)\n }\n\n /**\n * Get look at orientation and range based on current camera position and specified geographic position\n *\n * @param result Pre-allocated look at object\n * @param lookAtPosition Custom \"look at\" position. Terrain position on viewport center will be used by default.\n * @return Look at orientation and range based on current camera position and specified geographic position\n */\n open fun cameraAsLookAt(result: LookAt, lookAtPosition: Position? = null): LookAt {\n if (lookAtPosition != null) {\n cameraToViewingTransform(scratchModelview)\n globe.geographicToCartesian(lookAtPosition.latitude, lookAtPosition.longitude, lookAtPosition.altitude, scratchPoint)\n result.position.copy(lookAtPosition)\n } else if (viewport.isEmpty || !pickTerrainPosition(viewport.width / 2.0, viewport.height / 2.0, result.position)) {\n // Use point on horizon as a backup\n cameraToViewingTransform(scratchModelview)\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n scratchRay.pointAt(globe.horizonDistance(cameraPosition.altitude), scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result.position)\n }\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n result.range = -scratchModelview.m[11]\n result.heading = scratchModelview.extractHeading(camera.roll) // disambiguate heading and roll\n result.tilt = scratchModelview.extractTilt()\n result.roll = camera.roll // roll passes straight through\n return result\n }\n\n /**\n * Set camera position and orientation, based on look at position, orientation and range\n *\n * @param lookAt Look at position, orientation and range\n */\n open fun cameraFromLookAt(lookAt: LookAt) {\n applyLookAtLimits(lookAt)\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.extractEyePoint(scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, camera.position)\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n camera.altitudeMode = AltitudeMode.ABSOLUTE // Calculated position is absolute\n camera.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n camera.tilt = scratchModelview.extractTilt()\n camera.roll = lookAt.roll // roll passes straight through\n\n // Check if camera altitude is not under the surface\n val position = camera.position\n val elevation = if (globe.is2D) COLLISION_THRESHOLD else globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration + COLLISION_THRESHOLD\n if (elevation > position.altitude) {\n // Set camera altitude above the surface\n position.altitude = elevation\n // Compute new camera point\n globe.geographicToCartesian(position.latitude, position.longitude, position.altitude, scratchPoint)\n // Compute look at point\n globe.geographicToCartesian(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude, scratchRay.origin\n )\n // Compute normal to globe in look at point\n globe.geographicToCartesianNormal(lookAt.position.latitude, lookAt.position.longitude, scratchRay.direction)\n // Calculate tilt angle between new camera point and look at point\n scratchPoint.subtract(scratchRay.origin).normalize()\n val dot = scratchRay.direction.dot(scratchPoint)\n if (dot >= -1 && dot <= 1) camera.tilt = acos(dot).radians\n }\n }\n\n /**\n * More efficient way to determine terrain position at screen point using terrain from last rendered frame.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return true if the screen point could be converted; false if the screen point is not on the terrain\n */\n open fun pickTerrainPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && frameController.lastTerrains.values.any {\n it.intersect(scratchRay, scratchPoint)\n }) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param point the Cartesian point in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun cartesianToScreenPoint(point: Vec3, result: Vec2) = cartesianToScreenPoint(point.x, point.y, point.z, result)\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param x the Cartesian point's x component in meters\n * @param y the Cartesian point's y component in meters\n * @param z the Cartesian point's z component in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun cartesianToScreenPoint(x: Double, y: Double, z: Double, result: Vec2): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the WorldWindow's modelview-projection matrix.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview)\n\n // Transform the Cartesian point to OpenGL screen coordinates. Complete the transformation by converting to\n // viewport coordinates and discarding the screen Z component.\n if (scratchProjection.project(x, y, z, viewport, scratchPoint)) {\n result.x = scratchPoint.x\n result.y = viewport.height - scratchPoint.y\n return true\n }\n return false\n }\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param position the geographic position\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun geographicToScreenPoint(position: Position, result: Vec2) =\n geographicToScreenPoint(position.latitude, position.longitude, position.altitude, result)\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun geographicToScreenPoint(\n latitude: Angle, longitude: Angle, altitude: Double, result: Vec2\n ): Boolean {\n // Convert the position from geographic coordinates to Cartesian coordinates.\n globe.geographicToCartesian(latitude, longitude, altitude, scratchPoint)\n\n // Convert the position from Cartesian coordinates to screen coordinates.\n return cartesianToScreenPoint(scratchPoint, result)\n }\n\n /**\n * Converts a screen point to the geographic coordinates on the globe ellipsoid, ignoring terrain altitude.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result Pre-allocated Position receives the geographic coordinates\n *\n * @return true if the screen point could be converted; false if the screen point is not on the globe\n */\n open fun screenPointToGroundPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && globe.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Computes a Cartesian coordinate ray that passes through a screen point.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated Line in which to return the computed ray\n *\n * @return the result set to the computed ray in Cartesian coordinates\n */\n open fun rayThroughScreenPoint(x: Double, y: Double, result: Line): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the inverse modelview-projection matrix corresponding to the WorldWindow's current Camera state.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview).invert()\n\n // Convert from viewport coordinates to OpenGL screen coordinates by inverting the Y axis.\n // Transform the screen point to Cartesian coordinates at the near and far clip planes, store the result in the\n // ray's origin and direction, respectively. Complete the ray direction by subtracting the near point from the\n // far point and normalizing.\n if (scratchProjection.unProject(x, viewport.height - y, viewport, result.origin, result.direction)) {\n result.direction.subtract(result.origin).normalize()\n return true\n }\n return false\n }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n open fun pixelSizeAtDistance(distance: Double): Double {\n val tanFovY2 = tan(camera.fieldOfView.inRadians * 0.5)\n val frustumHeight = 2 * distance * tanFovY2\n return frustumHeight / viewport.height\n }\n\n /**\n * Returns the minimum distance from the globe's surface necessary to make the globe's extents visible in this World\n * Window.\n */\n val distanceToViewGlobeExtents get(): Double {\n val sinFovY2 = sin(camera.fieldOfView.inRadians * 0.5)\n val radius = globe.equatorialRadius\n return radius / sinFovY2 - radius\n }\n\n open fun renderFrame(frame: Frame): Boolean {\n // Mark the beginning of a frame render.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginRendering(rc)\n\n // Restrict camera tilt and roll in 2D\n if (globe.is2D) {\n camera.tilt = ZERO\n camera.roll = ZERO\n }\n\n // Set up the render context according to the WorldWindow's current state.\n rc.globe = globe\n rc.terrainTessellator = tessellator\n rc.layers = layers\n rc.camera = camera\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n rc.horizonDistance = globe.horizonDistance(cameraPosition.altitude)\n globe.geographicToCartesian(\n cameraPosition.latitude, cameraPosition.longitude, cameraPosition.altitude, rc.cameraPoint\n )\n rc.renderResourceCache = renderResourceCache\n rc.verticalExaggeration = verticalExaggeration\n rc.densityFactor = densityFactor\n rc.atmosphereAltitude = atmosphereAltitude\n rc.globeState = globe.state\n rc.elevationModelTimestamp = globe.elevationModel.timestamp\n\n // Configure the frame's Cartesian modelview matrix and eye coordinate projection matrix.\n computeViewingTransform(frame.projection, frame.modelview)\n frame.viewport.copy(viewport)\n// frame.infiniteProjection.setToInfiniteProjection(viewport.width, viewport.height, camera.fieldOfView, 1.0)\n// frame.infiniteProjection.multiplyByMatrix(frame.modelview)\n rc.viewport.copy(frame.viewport)\n rc.projection.copy(frame.projection)\n rc.modelview.copy(frame.modelview)\n rc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n if (pickMode) rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport, frame.pickViewport!!)\n else rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport)\n\n // Compute viewing distance and pixel size (for 3D view it will be done after terrain tessellation)\n if (globe.is2D) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (globe.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n // Accumulate the Drawables in the frame's drawable queue and drawable terrain data structures.\n rc.drawableQueue = frame.drawableQueue\n rc.drawableTerrain = frame.drawableTerrain\n rc.pickedObjects = frame.pickedObjects\n rc.pickDeferred = frame.pickDeferred\n rc.pickViewport = frame.pickViewport\n rc.pickPoint = frame.pickPoint\n rc.pickRay = frame.pickRay\n rc.isPickMode = frame.isPickMode\n\n // Let the frame controller render the WorldWindow's current state.\n frameController.renderFrame(rc)\n\n // Propagate redraw requests submitted during rendering.\n val isRedrawRequested = !pickMode && rc.isRedrawRequested\n\n // Mark the end of a frame render.\n if (!pickMode) frameMetrics?.endRendering(rc)\n\n // Reset the render context's state in preparation for the next frame.\n rc.reset()\n\n return isRedrawRequested\n }\n\n open fun drawFrame(frame: Frame) {\n // Mark the beginning of a frame draw.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginDrawing(dc)\n\n // Set up the draw context according to the frame's current state.\n dc.eyePoint.copy(frame.modelview.extractEyePoint(dc.eyePoint))\n dc.viewport.copy(frame.viewport)\n dc.projection.copy(frame.projection)\n dc.modelview.copy(frame.modelview)\n dc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n// dc.infiniteProjection.copy(frame.infiniteProjection)\n dc.screenProjection.setToScreenProjection(\n frame.viewport.width.toDouble(), frame.viewport.height.toDouble()\n )\n\n // Process the drawables in the frame's drawable queue and drawable terrain data structures.\n dc.drawableQueue = frame.drawableQueue\n dc.drawableTerrain = frame.drawableTerrain\n dc.pickedObjects = frame.pickedObjects\n dc.pickViewport = frame.pickViewport\n dc.pickPoint = frame.pickPoint\n dc.isPickMode = frame.isPickMode\n\n // Let the frame controller draw the frame.\n frameController.drawFrame(dc)\n\n // Increment render resource cache age on each frame\n renderResourceCache.incAge()\n\n // Release resources evicted during the previous frame.\n renderResourceCache.releaseEvictedResources(dc)\n\n // Mark the end of a frame draw.\n if (!pickMode) frameMetrics?.endDrawing(dc)\n\n // Reset the draw context's state in preparation for the next frame.\n dc.reset()\n }\n\n protected open fun computeViewingTransform(projection: Matrix4, modelview: Matrix4) {\n // Compute the clip plane distances. The near distance is set to a large value that does not clip the globe's\n // surface. The far distance is set to the smallest value that does not clip the atmosphere.\n val eyeAltitude = globe.getAbsolutePosition(camera.position, camera.altitudeMode).altitude\n val eyeHorizon = globe.horizonDistance(eyeAltitude)\n val atmosphereHorizon = globe.horizonDistance(atmosphereAltitude)\n\n // The far distance is set to the smallest value that does not clip the atmosphere.\n var far = eyeHorizon + atmosphereHorizon\n if (far < 1e3) far = 1e3\n\n //The near distance is set to a large value that does not clip the globe's surface.\n val maxDepthValue = (1 shl depthBits) - 1\n val farResolution = 10.0\n var near = far / (maxDepthValue / (1 - farResolution / far) - maxDepthValue + 1)\n\n // Prevent the near clip plane from intersecting the terrain.\n val distanceToSurface = if (globe.is2D) eyeAltitude else eyeAltitude - globe.getElevation(\n camera.position.latitude, camera.position.longitude\n ) * verticalExaggeration\n if (distanceToSurface > 0) {\n val tanHalfFov = tan(0.5 * camera.fieldOfView.inRadians)\n val maxNearDistance = distanceToSurface / (2 * sqrt(2 * tanHalfFov * tanHalfFov + 1))\n if (near > maxNearDistance) near = maxNearDistance\n }\n if (near < 1) near = 1.0\n\n // Compute a perspective projection matrix given the WorldWindow's viewport, field of view, and clip distances.\n projection.setToPerspectiveProjection(viewport.width, viewport.height, camera.fieldOfView, near, far)\n\n // Compute a Cartesian transform matrix from the Camera.\n cameraToViewingTransform(modelview)\n }\n\n protected open fun cameraToViewingTransform(result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the camera's position.\n geographicToCartesianTransform(camera.position, camera.altitudeMode, result)\n\n // Transform by the heading, tilt and roll.\n result.multiplyByRotation(0.0, 0.0, 1.0, -camera.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, camera.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, camera.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun lookAtToViewingTransform(lookAt: LookAt, result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the look-at's position.\n geographicToCartesianTransform(lookAt.position, lookAt.altitudeMode, result)\n\n // Transform by the heading and tilt.\n result.multiplyByRotation(0.0, 0.0, 1.0, -lookAt.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, lookAt.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, lookAt.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Transform by the range.\n result.multiplyByTranslation(0.0, 0.0, lookAt.range)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun geographicToCartesianTransform(position: Position, altitudeMode: AltitudeMode, result: Matrix4): Matrix4 {\n when (altitudeMode) {\n AltitudeMode.ABSOLUTE -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, position.altitude, result\n )\n AltitudeMode.CLAMP_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration, result\n )\n AltitudeMode.RELATIVE_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, (position.altitude + globe.getElevation(\n position.latitude, position.longitude\n )) * verticalExaggeration, result\n )\n }\n return result\n }\n\n protected open fun applyLookAtLimits(lookAt: LookAt) {\n // Clamp latitude to between -90 and +90, and normalize longitude to between -180 and +180.\n lookAt.position.latitude = lookAt.position.latitude.clampLatitude()\n lookAt.position.longitude = lookAt.position.longitude.normalizeLongitude()\n\n // Clamp range to values greater than 1 in order to prevent degenerating to a first-person lookAt when\n // range is zero.\n lookAt.range = lookAt.range.coerceIn(10.0, distanceToViewGlobeExtents * 2)\n\n // Normalize heading to between -180 and +180.\n lookAt.heading = lookAt.heading.normalize180()\n\n // Clamp tilt to between 0 and +90 to prevent the viewer from going upside down.\n lookAt.tilt = lookAt.tilt.inDegrees.coerceIn(0.0, 90.0).degrees\n\n // Normalize heading to between -180 and +180.\n lookAt.roll = lookAt.roll.normalize180()\n\n // Apply 2D limits when the globe is 2D.\n if (globe.is2D) {\n // Clamp range to prevent more than 360 degrees of visible longitude. Assumes a 45 degree horizontal\n // field of view.\n lookAt.range = lookAt.range.coerceIn(1.0, 2.0 * PI * globe.equatorialRadius)\n\n // Force tilt to 0 when in 2D mode to keep the viewer looking straight down.\n lookAt.tilt = ZERO\n lookAt.roll = ZERO\n }\n }\n\n companion object {\n protected const val COLLISION_THRESHOLD = 10.0 // 10m above surface\n\n private val _events = MutableSharedFlow(extraBufferCapacity = 1)\n\n /**\n * Provides a global mechanism for broadcasting notifications within the WorldWind library.\n */\n @JvmStatic\n val events = _events.asSharedFlow()\n\n /**\n * Requests that all WorldWindow instances update their display. Internally, this dispatches a REQUEST_REDRAW\n * message to the WorldWind message center.\n */\n @JvmStatic\n fun requestRedraw() { _events.tryEmit(Event.RequestRedraw) }\n\n /**\n * Requests render resource cache to remove specified resource ID from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n @JvmStatic\n suspend fun unmarkResourceAbsent(resourceId: Int) { _events.emit(Event.UnmarkResourceAbsent(resourceId)) }\n }\n\n sealed interface Event {\n /**\n * Event requesting WorldWindow instances to update their display.\n */\n object RequestRedraw : Event\n /**\n * Event requesting RenderResourceCache to un-mark resource from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n data class UnmarkResourceAbsent(val resourceId: Int) : Event\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport earth.worldwind.util.kgl.GL_UNSIGNED_SHORT\nimport kotlin.jvm.JvmStatic\n\nopen class BasicDrawableTerrain protected constructor(): DrawableTerrain {\n override var offset = Globe.Offset.Center\n override val sector = Sector()\n override val vertexOrigin = Vec3()\n val lineElementRange = Range()\n val triStripElementRange = Range()\n var vertexPoints: FloatBufferObject? = null\n var vertexHeights: FloatBufferObject? = null\n var vertexTexCoords: FloatBufferObject? = null\n var elements: ShortBufferObject? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): BasicDrawableTerrain {\n val instance = pool.acquire() ?: BasicDrawableTerrain()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n vertexPoints = null\n vertexHeights = null\n vertexTexCoords = null\n elements = null\n pool?.release(this)\n pool = null\n }\n\n override fun useVertexPointAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexPoints?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 3, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexHeightsAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexHeights?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 1, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexTexCoordAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexTexCoords?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 2, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun drawLines(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_LINES, lineElementRange.length,\n GL_UNSIGNED_SHORT, lineElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun drawTriangles(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_TRIANGLE_STRIP, triStripElementRange.length,\n GL_UNSIGNED_SHORT, triStripElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun draw(dc: DrawContext) {\n drawTriangles(dc)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Framebuffer\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.BufferPool\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.util.kgl.*\n\nopen class DrawContext(val gl: Kgl) {\n val eyePoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n// val infiniteProjection = Matrix4()\n val screenProjection = Matrix4()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var isPickMode = false\n private var framebuffer = KglFramebuffer.NONE\n private var program = KglProgram.NONE\n private var textureUnit = GL_TEXTURE0\n private val textures = Array(32) { KglTexture.NONE }\n private var arrayBuffer = KglBuffer.NONE\n private var elementArrayBuffer = KglBuffer.NONE\n private var scratchFramebufferCache: Framebuffer? = null\n private var unitSquareBufferCache: FloatBufferObject? = null\n private var rectangleElementsBufferCache: IntBufferObject? = null\n private var scratchBuffer = ByteArray(4)\n private val pixelArray = ByteArray(4)\n private var bufferPool = BufferPool(GL_ARRAY_BUFFER, GL_DYNAMIC_DRAW)\n /**\n * Returns count of terrain drawables in queue\n */\n val drawableTerrainCount get() = drawableTerrain?.count?:0\n /**\n * Returns the name of the OpenGL framebuffer object that is currently active.\n */\n val currentFramebuffer get() = framebuffer\n /**\n * Returns the name of the OpenGL program object that is currently active.\n */\n val currentProgram get() = program\n /**\n * Returns the OpenGL multitexture unit that is currently active. Returns a value from the GL_TEXTUREi enumeration,\n * where i ranges from 0 to 32.\n */\n val currentTextureUnit get() = textureUnit\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the active multitexture unit. The active\n * multitexture unit may be determined by calling currentTextureUnit.\n */\n val currentTexture get() = currentTexture(textureUnit)\n /**\n * Returns an OpenGL framebuffer object suitable for offscreen drawing. The framebuffer has a 32-bit color buffer\n * and a 32-bit depth buffer, both attached as OpenGL texture 2D objects.\n *
\n * The framebuffer may be used by any drawable and for any purpose. However, the draw context makes no guarantees\n * about the framebuffer's contents. Drawables must clear the framebuffer before use, and must assume its contents\n * may be modified by another drawable, either during the current frame or in a subsequent frame.\n *
\n * The OpenGL framebuffer object is created on first use and cached. Subsequent calls to this method return the\n * cached buffer object.\n */\n val scratchFramebuffer get() = scratchFramebufferCache ?: Framebuffer().apply {\n val colorAttachment = Texture(1024, 1024, GL_RGBA, GL_UNSIGNED_BYTE, true)\n val depthAttachment = Texture(1024, 1024, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, true)\n // TODO consider modifying Texture's tex parameter behavior in order to make this unnecessary\n depthAttachment.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n depthAttachment.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n attachTexture(this@DrawContext, colorAttachment, GL_COLOR_ATTACHMENT0)\n attachTexture(this@DrawContext, depthAttachment, GL_DEPTH_ATTACHMENT)\n }.also { scratchFramebufferCache = it }\n /**\n * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and\n * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order\n * required by a triangle strip.\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val unitSquareBuffer get() = unitSquareBufferCache ?: FloatBufferObject(\n GL_ARRAY_BUFFER, floatArrayOf(0f, 1f, 0f, 0f, 1f, 1f, 1f, 0f)\n ).also { unitSquareBufferCache = it }\n /**\n * Returns an OpenGL buffer object containing indices needed to render triangle\n * Expected vertex data layout for this buffer is something like this\n * 1 ---- 0\n * | /|\n * | / |\n * | / |\n * | / |\n * | / |\n * 3 ---- 2\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val rectangleElementsBuffer get() = rectangleElementsBufferCache ?: IntBufferObject(\n GL_ELEMENT_ARRAY_BUFFER, intArrayOf(0, 1, 2, 2, 1, 3)\n ).also { rectangleElementsBufferCache = it }\n /**\n * Returns a scratch list suitable for accumulating entries during drawing. The list is cleared before each frame,\n * otherwise its contents are undefined.\n */\n val scratchList = mutableListOf()\n\n fun reset() {\n eyePoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n screenProjection.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickViewport = null\n pickPoint = null\n isPickMode = false\n scratchBuffer.fill(0)\n scratchList.clear()\n bufferPool.reset()\n }\n\n fun contextLost() {\n // Clear objects and values associated with the current OpenGL context.\n framebuffer = KglFramebuffer.NONE\n program = KglProgram.NONE\n textureUnit = GL_TEXTURE0\n arrayBuffer = KglBuffer.NONE\n elementArrayBuffer = KglBuffer.NONE\n scratchFramebufferCache = null\n unitSquareBufferCache = null\n rectangleElementsBufferCache = null\n textures.fill(KglTexture.NONE)\n bufferPool.contextLost()\n }\n\n fun peekDrawable() = drawableQueue?.peekDrawable()\n\n fun pollDrawable() = drawableQueue?.pollDrawable()\n\n fun rewindDrawables() { drawableQueue?.rewindDrawables() }\n\n fun getDrawableTerrain(index: Int) = drawableTerrain?.getDrawable(index) as DrawableTerrain? ?: error(\"Invalid index\")\n\n /**\n * Makes an OpenGL framebuffer object active. The active framebuffer becomes the target of all OpenGL commands that\n * render to the framebuffer or read from the framebuffer. This has no effect if the specified framebuffer object is\n * already active. The default is framebuffer 0, indicating that the default framebuffer provided by the windowing\n * system is active.\n *\n * @param framebuffer the name of the OpenGL framebuffer object to make active, or 0 to make the default\n * framebuffer provided by the windowing system active\n */\n fun bindFramebuffer(framebuffer: KglFramebuffer) {\n if (this.framebuffer != framebuffer) {\n this.framebuffer = framebuffer\n gl.bindFramebuffer(GL_FRAMEBUFFER, framebuffer)\n }\n }\n\n /**\n * Makes an OpenGL program object active as part of current rendering state. This has no effect if the specified\n * program object is already active. The default is program 0, indicating that no program is active.\n *\n * @param program the name of the OpenGL program object to make active, or 0 to make no program active\n */\n fun useProgram(program: KglProgram) {\n if (this.program != program) {\n this.program = program\n gl.useProgram(program)\n }\n }\n\n /**\n * Specifies the OpenGL multitexture unit to make active. This has no effect if the specified multitexture unit is\n * already active. The default is GL_TEXTURE0.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n */\n fun activeTextureUnit(textureUnit: Int) {\n if (this.textureUnit != textureUnit) {\n this.textureUnit = textureUnit\n gl.activeTexture(textureUnit)\n }\n }\n\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the specified multitexture unit.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n *\n * @return the currently bound texture 2D object, or 0 if no texture object is bound\n */\n fun currentTexture(textureUnit: Int) = textures[textureUnit - GL_TEXTURE0]\n\n /**\n * Makes an OpenGL texture 2D object bound to the current multitexture unit. This has no effect if the specified\n * texture object is already bound. The default is texture 0, indicating that no texture is bound.\n *\n * @param texture the name of the OpenGL texture 2D object to make active, or 0 to make no texture active\n */\n fun bindTexture(texture: KglTexture) {\n val textureUnitIndex = textureUnit - GL_TEXTURE0\n if (textures[textureUnitIndex] != texture) {\n textures[textureUnitIndex] = texture\n gl.bindTexture(GL_TEXTURE_2D, texture)\n }\n }\n\n /**\n * Returns the name of the OpenGL buffer object bound to the specified target buffer.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n *\n * @return the currently bound buffer object, or 0 if no buffer object is bound\n */\n fun currentBuffer(target: Int): KglBuffer {\n return when (target) {\n GL_ARRAY_BUFFER -> arrayBuffer\n GL_ELEMENT_ARRAY_BUFFER -> elementArrayBuffer\n else -> KglBuffer.NONE\n }\n }\n\n /**\n * Makes an OpenGL buffer object bound to a specified target buffer. This has no effect if the specified buffer\n * object is already bound. The default is buffer 0, indicating that no buffer object is bound.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n * @param buffer the name of the OpenGL buffer object to make active\n */\n fun bindBuffer(target: Int, buffer: KglBuffer) {\n if (target == GL_ARRAY_BUFFER && arrayBuffer != buffer) {\n arrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else if (target == GL_ELEMENT_ARRAY_BUFFER && elementArrayBuffer != buffer) {\n elementArrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else {\n gl.bindBuffer(target, buffer)\n }\n }\n\n /**\n * Puts dynamic vertex data into the buffer pool and returns offset.\n *\n * @param vertexData dynamic vertex data to be added in the buffer pool\n * @return offset in the buffer pool\n */\n fun bindBufferPool(vertexData: FloatArray) = bufferPool.bindBuffer(this, vertexData)\n\n /**\n * Reads the fragment color at a screen point in the currently active OpenGL frame buffer. The X and Y components\n * indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param result an optional pre-allocated Color in which to return the fragment color, or null to return a new\n * color\n *\n * @return the result argument set to the fragment color, or a new color if the result is null\n */\n fun readPixelColor(x: Int, y: Int, result: Color): Color {\n // Read the fragment pixel as an RGBA 8888 color.\n gl.readPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelArray)\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelArray[0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelArray[1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelArray[2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelArray[3].toInt() and 0xFF) / 0xFF.toFloat()\n return result\n }\n\n /**\n * Reads the unique fragment colors within a screen rectangle in the currently active OpenGL frame buffer. The\n * components indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen rectangle's X component\n * @param y the screen rectangle's Y component\n * @param width the screen rectangle's width\n * @param height the screen rectangle's height\n *\n * @return a set containing the unique fragment colors\n */\n fun readPixelColors(x: Int, y: Int, width: Int, height: Int): Set {\n // Read the fragment pixels as a tightly packed array of RGBA 8888 colors.\n val pixelCount = width * height\n val pixelBuffer = scratchBuffer(pixelCount * 4)\n val packAlignment = gl.getParameteri(GL_PACK_ALIGNMENT)\n gl.pixelStorei(GL_PACK_ALIGNMENT, 1) // read byte aligned\n gl.readPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBuffer)\n gl.pixelStorei(GL_PACK_ALIGNMENT, packAlignment) // restore the pack alignment\n val resultSet = mutableSetOf()\n var result = Color()\n for (i in 0 until pixelCount) {\n val idx = i * 4\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelBuffer[idx + 0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelBuffer[idx + 1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelBuffer[idx + 2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelBuffer[idx + 3].toInt() and 0xFF) / 0xFF.toFloat()\n\n // Accumulate the unique colors in a set.\n if (resultSet.add(result)) result = Color()\n }\n return resultSet\n }\n\n /**\n * Returns a scratch NIO buffer suitable for use during drawing. The returned buffer has capacity at least equal to\n * the specified capacity. The buffer is cleared before each frame, otherwise its contents, position, limit and mark\n * are undefined.\n *\n * @param capacity the buffer's minimum capacity in bytes\n *\n * @return the draw context's scratch buffer\n */\n fun scratchBuffer(capacity: Int): ByteArray {\n if (scratchBuffer.size < capacity) scratchBuffer = ByteArray(capacity)\n return scratchBuffer\n }\n}","package earth.worldwind.util.kgl\n\nexpect class KglShader {\n companion object{ val NONE: KglShader }\n fun isValid(): Boolean\n}\nexpect class KglProgram {\n companion object{ val NONE: KglProgram }\n fun isValid(): Boolean\n}\nexpect class KglUniformLocation {\n companion object{ val NONE: KglUniformLocation }\n fun isValid(): Boolean\n}\nexpect class KglBuffer {\n companion object{ val NONE: KglBuffer }\n fun isValid(): Boolean\n}\nexpect class KglTexture {\n companion object{ val NONE: KglTexture }\n fun isValid(): Boolean\n}\nexpect class KglFramebuffer {\n companion object{ val NONE: KglFramebuffer }\n fun isValid(): Boolean\n}\n\nconst val GL_ACTIVE_TEXTURE = 0x84E0\nconst val GL_DEPTH_BUFFER_BIT = 0x00000100\nconst val GL_STENCIL_BUFFER_BIT = 0x00000400\nconst val GL_COLOR_BUFFER_BIT = 0x00004000\nconst val GL_FALSE = 0\nconst val GL_TRUE = 1\nconst val GL_POINTS = 0x0000\nconst val GL_LINES = 0x0001\nconst val GL_LINE_LOOP = 0x0002\nconst val GL_LINE_STRIP = 0x0003\nconst val GL_TRIANGLES = 0x0004\nconst val GL_TRIANGLE_STRIP = 0x0005\nconst val GL_TRIANGLE_FAN = 0x0006\nconst val GL_ZERO = 0\nconst val GL_ONE = 1\nconst val GL_SRC_COLOR = 0x0300\nconst val GL_ONE_MINUS_SRC_COLOR = 0x0301\nconst val GL_SRC_ALPHA = 0x0302\nconst val GL_ONE_MINUS_SRC_ALPHA = 0x0303\nconst val GL_DST_ALPHA = 0x0304\nconst val GL_ONE_MINUS_DST_ALPHA = 0x0305\nconst val GL_DST_COLOR = 0x0306\nconst val GL_ONE_MINUS_DST_COLOR = 0x0307\nconst val GL_SRC_ALPHA_SATURATE = 0x0308\nconst val GL_FUNC_ADD = 0x8006\nconst val GL_BLEND_EQUATION = 0x8009\nconst val GL_BLEND_EQUATION_RGB = 0x8009\nconst val GL_BLEND_EQUATION_ALPHA = 0x883D\nconst val GL_FUNC_SUBTRACT = 0x800A\nconst val GL_FUNC_REVERSE_SUBTRACT = 0x800B\nconst val GL_BLEND_DST_RGB = 0x80C8\nconst val GL_BLEND_SRC_RGB = 0x80C9\nconst val GL_BLEND_DST_ALPHA = 0x80CA\nconst val GL_BLEND_SRC_ALPHA = 0x80CB\nconst val GL_CONSTANT_COLOR = 0x8001\nconst val GL_ONE_MINUS_CONSTANT_COLOR = 0x8002\nconst val GL_CONSTANT_ALPHA = 0x8003\nconst val GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004\nconst val GL_BLEND_COLOR = 0x8005\nconst val GL_ARRAY_BUFFER = 0x8892\nconst val GL_ELEMENT_ARRAY_BUFFER = 0x8893\nconst val GL_ARRAY_BUFFER_BINDING = 0x8894\nconst val GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895\nconst val GL_STREAM_DRAW = 0x88E0\nconst val GL_STATIC_DRAW = 0x88E4\nconst val GL_DYNAMIC_DRAW = 0x88E8\nconst val GL_BUFFER_SIZE = 0x8764\nconst val GL_BUFFER_USAGE = 0x8765\nconst val GL_CURRENT_VERTEX_ATTRIB = 0x8626\nconst val GL_FRONT = 0x0404\nconst val GL_BACK = 0x0405\nconst val GL_FRONT_AND_BACK = 0x0408\nconst val GL_TEXTURE_2D = 0x0DE1\nconst val GL_CULL_FACE = 0x0B44\nconst val GL_BLEND = 0x0BE2\nconst val GL_DITHER = 0x0BD0\nconst val GL_STENCIL_TEST = 0x0B90\nconst val GL_DEPTH_TEST = 0x0B71\nconst val GL_SCISSOR_TEST = 0x0C11\nconst val GL_POLYGON_OFFSET_FILL = 0x8037\nconst val GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nconst val GL_SAMPLE_COVERAGE = 0x80A0\nconst val GL_NO_ERROR = 0\nconst val GL_INVALID_ENUM = 0x0500\nconst val GL_INVALID_VALUE = 0x0501\nconst val GL_INVALID_OPERATION = 0x0502\nconst val GL_OUT_OF_MEMORY = 0x0505\nconst val GL_INVALID_FRAMEBUFFER_OPERATION = 0x506\nconst val GL_CW = 0x0900\nconst val GL_CCW = 0x0901\nconst val GL_LINE_WIDTH = 0x0B21\nconst val GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nconst val GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\nconst val GL_CULL_FACE_MODE = 0x0B45\nconst val GL_FRONT_FACE = 0x0B46\nconst val GL_DEPTH_RANGE = 0x0B70\nconst val GL_DEPTH_WRITEMASK = 0x0B72\nconst val GL_DEPTH_CLEAR_VALUE = 0x0B73\nconst val GL_DEPTH_FUNC = 0x0B74\nconst val GL_STENCIL_CLEAR_VALUE = 0x0B91\nconst val GL_STENCIL_FUNC = 0x0B92\nconst val GL_STENCIL_FAIL = 0x0B94\nconst val GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95\nconst val GL_STENCIL_PASS_DEPTH_PASS = 0x0B96\nconst val GL_STENCIL_REF = 0x0B97\nconst val GL_STENCIL_VALUE_MASK = 0x0B93\nconst val GL_STENCIL_WRITEMASK = 0x0B98\nconst val GL_STENCIL_BACK_FUNC = 0x8800\nconst val GL_STENCIL_BACK_FAIL = 0x8801\nconst val GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802\nconst val GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803\nconst val GL_STENCIL_BACK_REF = 0x8CA3\nconst val GL_STENCIL_BACK_VALUE_MASK = 0x8CA4\nconst val GL_STENCIL_BACK_WRITEMASK = 0x8CA5\nconst val GL_VIEWPORT = 0x0BA2\nconst val GL_SCISSOR_BOX = 0x0C10\nconst val GL_COLOR_CLEAR_VALUE = 0x0C22\nconst val GL_COLOR_WRITEMASK = 0x0C23\nconst val GL_UNPACK_ALIGNMENT = 0x0CF5\nconst val GL_PACK_ALIGNMENT = 0x0D05\nconst val GL_MAX_TEXTURE_SIZE = 0x0D33\nconst val GL_MAX_VIEWPORT_DIMS = 0x0D3A\nconst val GL_SUBPIXEL_BITS = 0x0D50\nconst val GL_RED_BITS = 0x0D52\nconst val GL_GREEN_BITS = 0x0D53\nconst val GL_BLUE_BITS = 0x0D54\nconst val GL_ALPHA_BITS = 0x0D55\nconst val GL_DEPTH_BITS = 0x0D56\nconst val GL_STENCIL_BITS = 0x0D57\nconst val GL_POLYGON_OFFSET_UNITS = 0x2A00\nconst val GL_POLYGON_OFFSET_FACTOR = 0x8038\nconst val GL_TEXTURE_BINDING_2D = 0x8069\nconst val GL_SAMPLE_BUFFERS = 0x80A8\nconst val GL_SAMPLES = 0x80A9\nconst val GL_SAMPLE_COVERAGE_VALUE = 0x80AA\nconst val GL_SAMPLE_COVERAGE_INVERT = 0x80AB\nconst val GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2\nconst val GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\nconst val GL_DONT_CARE = 0x1100\nconst val GL_FASTEST = 0x1101\nconst val GL_NICEST = 0x1102\nconst val GL_GENERATE_MIPMAP_HINT = 0x8192\nconst val GL_BYTE = 0x1400\nconst val GL_UNSIGNED_BYTE = 0x1401\nconst val GL_SHORT = 0x1402\nconst val GL_UNSIGNED_SHORT = 0x1403\nconst val GL_INT = 0x1404\nconst val GL_UNSIGNED_INT = 0x1405\nconst val GL_FLOAT = 0x1406\nconst val GL_FIXED = 0x140C\nconst val GL_STENCIL_INDEX = 0x1901\nconst val GL_DEPTH_COMPONENT = 0x1902\nconst val GL_RED = 0x1903\nconst val GL_GREEN = 0x1904\nconst val GL_BLUE = 0x1905\nconst val GL_ALPHA = 0x1906\nconst val GL_RGB = 0x1907\nconst val GL_RGBA = 0x1908\nconst val GL_LUMINANCE = 0x1909\nconst val GL_LUMINANCE_ALPHA = 0x190A\nconst val GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nconst val GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nconst val GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nconst val GL_FRAGMENT_SHADER = 0x8B30\nconst val GL_VERTEX_SHADER = 0x8B31\nconst val GL_MAX_VERTEX_ATTRIBS = 0x8869\nconst val GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nconst val GL_MAX_VARYING_VECTORS = 0x8DFC\nconst val GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nconst val GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nconst val GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nconst val GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nconst val GL_SHADER_TYPE = 0x8B4F\nconst val GL_DELETE_STATUS = 0x8B80\nconst val GL_LINK_STATUS = 0x8B82\nconst val GL_VALIDATE_STATUS = 0x8B83\nconst val GL_ATTACHED_SHADERS = 0x8B85\nconst val GL_ACTIVE_UNIFORMS = 0x8B86\nconst val GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87\nconst val GL_ACTIVE_ATTRIBUTES = 0x8B89\nconst val GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A\nconst val GL_SHADING_LANGUAGE_VERSION = 0x8B8C\nconst val GL_CURRENT_PROGRAM = 0x8B8D\nconst val GL_NEVER = 0x0200\nconst val GL_LESS = 0x0201\nconst val GL_EQUAL = 0x0202\nconst val GL_LEQUAL = 0x0203\nconst val GL_GREATER = 0x0204\nconst val GL_NOTEQUAL = 0x0205\nconst val GL_GEQUAL = 0x0206\nconst val GL_ALWAYS = 0x0207\nconst val GL_KEEP = 0x1E00\nconst val GL_REPLACE = 0x1E01\nconst val GL_INCR = 0x1E02\nconst val GL_DECR = 0x1E03\nconst val GL_INVERT = 0x150A\nconst val GL_INCR_WRAP = 0x8507\nconst val GL_DECR_WRAP = 0x8508\nconst val GL_VENDOR = 0x1F00\nconst val GL_RENDERER = 0x1F01\nconst val GL_VERSION = 0x1F02\nconst val GL_EXTENSIONS = 0x1F03\nconst val GL_NEAREST = 0x2600\nconst val GL_LINEAR = 0x2601\nconst val GL_NEAREST_MIPMAP_NEAREST = 0x2700\nconst val GL_LINEAR_MIPMAP_NEAREST = 0x2701\nconst val GL_NEAREST_MIPMAP_LINEAR = 0x2702\nconst val GL_LINEAR_MIPMAP_LINEAR = 0x2703\nconst val GL_TEXTURE_MAG_FILTER = 0x2800\nconst val GL_TEXTURE_MIN_FILTER = 0x2801\nconst val GL_TEXTURE_WRAP_S = 0x2802\nconst val GL_TEXTURE_WRAP_T = 0x2803\nconst val GL_TEXTURE = 0x1702\nconst val GL_TEXTURE_CUBE_MAP = 0x8513\nconst val GL_TEXTURE_BINDING_CUBE_MAP = 0x8514\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A\nconst val GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nconst val GL_TEXTURE0 = 0x84C0\nconst val GL_TEXTURE1 = 0x84C1\nconst val GL_TEXTURE2 = 0x84C2\nconst val GL_TEXTURE3 = 0x84C3\nconst val GL_TEXTURE4 = 0x84C4\nconst val GL_TEXTURE5 = 0x84C5\nconst val GL_TEXTURE6 = 0x84C6\nconst val GL_TEXTURE7 = 0x84C7\nconst val GL_TEXTURE8 = 0x84C8\nconst val GL_TEXTURE9 = 0x84C9\nconst val GL_TEXTURE10 = 0x84CA\nconst val GL_TEXTURE11 = 0x84CB\nconst val GL_TEXTURE12 = 0x84CC\nconst val GL_TEXTURE13 = 0x84CD\nconst val GL_TEXTURE14 = 0x84CE\nconst val GL_TEXTURE15 = 0x84CF\nconst val GL_TEXTURE16 = 0x84D0\nconst val GL_TEXTURE17 = 0x84D1\nconst val GL_TEXTURE18 = 0x84D2\nconst val GL_TEXTURE19 = 0x84D3\nconst val GL_TEXTURE20 = 0x84D4\nconst val GL_TEXTURE21 = 0x84D5\nconst val GL_TEXTURE22 = 0x84D6\nconst val GL_TEXTURE23 = 0x84D7\nconst val GL_TEXTURE24 = 0x84D8\nconst val GL_TEXTURE25 = 0x84D9\nconst val GL_TEXTURE26 = 0x84DA\nconst val GL_TEXTURE27 = 0x84DB\nconst val GL_TEXTURE28 = 0x84DC\nconst val GL_TEXTURE29 = 0x84DD\nconst val GL_TEXTURE30 = 0x84DE\nconst val GL_TEXTURE31 = 0x84DF\nconst val GL_REPEAT = 0x2901\nconst val GL_CLAMP_TO_EDGE = 0x812F\nconst val GL_MIRRORED_REPEAT = 0x8370\nconst val GL_FLOAT_VEC2 = 0x8B50\nconst val GL_FLOAT_VEC3 = 0x8B51\nconst val GL_FLOAT_VEC4 = 0x8B52\nconst val GL_INT_VEC2 = 0x8B53\nconst val GL_INT_VEC3 = 0x8B54\nconst val GL_INT_VEC4 = 0x8B55\nconst val GL_BOOL = 0x8B56\nconst val GL_BOOL_VEC2 = 0x8B57\nconst val GL_BOOL_VEC3 = 0x8B58\nconst val GL_BOOL_VEC4 = 0x8B59\nconst val GL_FLOAT_MAT2 = 0x8B5A\nconst val GL_FLOAT_MAT3 = 0x8B5B\nconst val GL_FLOAT_MAT4 = 0x8B5C\nconst val GL_SAMPLER_2D = 0x8B5E\nconst val GL_SAMPLER_CUBE = 0x8B60\nconst val GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622\nconst val GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623\nconst val GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624\nconst val GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625\nconst val GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A\nconst val GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645\nconst val GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F\nconst val GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A\nconst val GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B\nconst val GL_COMPILE_STATUS = 0x8B81\nconst val GL_INFO_LOG_LENGTH = 0x8B84\nconst val GL_SHADER_SOURCE_LENGTH = 0x8B88\nconst val GL_SHADER_COMPILER = 0x8DFA\nconst val GL_SHADER_BINARY_FORMATS = 0x8DF8\nconst val GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9\nconst val GL_LOW_FLOAT = 0x8DF0\nconst val GL_MEDIUM_FLOAT = 0x8DF1\nconst val GL_HIGH_FLOAT = 0x8DF2\nconst val GL_LOW_INT = 0x8DF3\nconst val GL_MEDIUM_INT = 0x8DF4\nconst val GL_HIGH_INT = 0x8DF5\nconst val GL_FRAMEBUFFER = 0x8D40\nconst val GL_RENDERBUFFER = 0x8D41\nconst val GL_RGBA4 = 0x8056\nconst val GL_RGBA8 = 0x8058\nconst val GL_BGR = 0x80e0\nconst val GL_BGRA = 0x80e1\nconst val GL_RGB5_A1 = 0x8057\nconst val GL_RGB565 = 0x8D62\nconst val GL_DEPTH_COMPONENT16 = 0x81A5\nconst val GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nconst val GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nconst val GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nconst val GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB\nconst val GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC\nconst val GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\nconst val GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56\nconst val GL_FRAMEBUFFER_UNDEFINED = 0x8219\nconst val GL_COLOR_ATTACHMENT0 = 0x8CE0\nconst val GL_COLOR_ATTACHMENT1 = 0x8CE1\nconst val GL_COLOR_ATTACHMENT2 = 0x8CE2\nconst val GL_COLOR_ATTACHMENT3 = 0x8CE3\nconst val GL_COLOR_ATTACHMENT4 = 0x8CE4\nconst val GL_COLOR_ATTACHMENT5 = 0x8CE5\nconst val GL_COLOR_ATTACHMENT6 = 0x8CE6\nconst val GL_COLOR_ATTACHMENT7 = 0x8CE7\nconst val GL_COLOR_ATTACHMENT8 = 0x8CE8\nconst val GL_COLOR_ATTACHMENT9 = 0x8CE9\nconst val GL_COLOR_ATTACHMENT10 = 0x8CEA\nconst val GL_COLOR_ATTACHMENT11 = 0x8CEB\nconst val GL_COLOR_ATTACHMENT12 = 0x8CEC\nconst val GL_COLOR_ATTACHMENT13 = 0x8CED\nconst val GL_COLOR_ATTACHMENT14 = 0x8CEE\nconst val GL_COLOR_ATTACHMENT15 = 0x8CEF\nconst val GL_COLOR_ATTACHMENT16 = 0x8CF0\nconst val GL_COLOR_ATTACHMENT17 = 0x8CF1\nconst val GL_COLOR_ATTACHMENT18 = 0x8CF2\nconst val GL_COLOR_ATTACHMENT19 = 0x8CF3\nconst val GL_COLOR_ATTACHMENT20 = 0x8CF4\nconst val GL_COLOR_ATTACHMENT21 = 0x8CF5\nconst val GL_COLOR_ATTACHMENT22 = 0x8CF6\nconst val GL_COLOR_ATTACHMENT23 = 0x8CF7\nconst val GL_COLOR_ATTACHMENT24 = 0x8CF8\nconst val GL_COLOR_ATTACHMENT25 = 0x8CF9\nconst val GL_COLOR_ATTACHMENT26 = 0x8CFA\nconst val GL_COLOR_ATTACHMENT27 = 0x8CFB\nconst val GL_COLOR_ATTACHMENT28 = 0x8CFC\nconst val GL_COLOR_ATTACHMENT29 = 0x8CFD\nconst val GL_COLOR_ATTACHMENT30 = 0x8CFE\nconst val GL_COLOR_ATTACHMENT31 = 0x8CFF\nconst val GL_DEPTH_ATTACHMENT = 0x8D00\nconst val GL_STENCIL_ATTACHMENT = 0x8D20\nconst val GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\nconst val GL_R8 = 0x8229\nconst val GL_R16 = 0x822A\nconst val GL_RG8 = 0x822B\nconst val GL_RG16 = 0x822C\nconst val GL_R16F = 0x822D\nconst val GL_R32F = 0x822E\nconst val GL_RG16F = 0x822F\nconst val GL_RG32F = 0x8230\nconst val GL_R8I = 0x8231\nconst val GL_R8UI = 0x8232\nconst val GL_R16I = 0x8233\nconst val GL_R16UI = 0x8234\nconst val GL_R32I = 0x8235\nconst val GL_R32UI = 0x8236\nconst val GL_RG8I = 0x8237\nconst val GL_RG8UI = 0x8238\nconst val GL_RG16I = 0x8239\nconst val GL_RG16UI = 0x823A\nconst val GL_RG32I = 0x823B\nconst val GL_RG32UI = 0x823C\nconst val GL_RG = 0x8227\nconst val GL_COMPRESSED_RED = 0x8225\nconst val GL_COMPRESSED_RG = 0x8226\n\ninterface Kgl {\n abstract val hasMaliOOMBug: Boolean\n \n fun createShader(type: Int): KglShader\n fun shaderSource(shader: KglShader, source: String)\n fun compileShader(shader: KglShader)\n fun deleteShader(shader: KglShader)\n\n fun getShaderParameteri(shader: KglShader, pname: Int): Int\n\n fun getProgramInfoLog(program: KglProgram) : String\n fun getShaderInfoLog(shader: KglShader) : String\n\n fun createProgram(): KglProgram\n fun attachShader(program: KglProgram, shader: KglShader)\n fun linkProgram(program: KglProgram)\n fun useProgram(program: KglProgram)\n fun deleteProgram(program: KglProgram)\n\n fun getProgramParameteri(program: KglProgram, pname: Int): Int\n\n fun getUniformLocation(program: KglProgram, name: String): KglUniformLocation\n fun bindAttribLocation(program: KglProgram, index: Int, name: String)\n\n fun enable(cap: Int)\n fun disable(cap: Int)\n\n fun enableVertexAttribArray(location: Int)\n fun disableVertexAttribArray(location: Int)\n\n fun getParameteri(pname: Int): Int\n fun getParameterf(pname: Int): Float\n fun getParameteriv(pname: Int): IntArray\n fun getParameterfv(pname: Int): FloatArray\n\n fun createBuffer(): KglBuffer\n fun bindBuffer(target: Int, buffer: KglBuffer)\n fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int = 0)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray)\n fun deleteBuffer(buffer: KglBuffer)\n\n fun vertexAttribPointer(location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n\n fun uniform1f(location: KglUniformLocation, f: Float)\n fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform1i(location: KglUniformLocation, i: Int)\n\n fun uniform2f(location: KglUniformLocation, x: Float, y: Float)\n fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform2i(location: KglUniformLocation, x: Int, y: Int)\n\n fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float)\n fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int)\n\n fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int)\n\n fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n\n fun cullFace(mode: Int)\n fun frontFace (mode: Int)\n\n fun polygonOffset(factor: Float, units: Float)\n\n fun depthFunc(func: Int)\n fun depthMask(mask: Boolean)\n\n fun blendFunc(sFactor: Int, dFactor: Int)\n\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n fun clearColor(r: Float, g: Float, b: Float, a: Float)\n fun clear(mask: Int)\n\n fun createTexture(): KglTexture\n fun deleteTexture(texture: KglTexture)\n fun texImage2D(target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?)\n fun activeTexture(texture: Int)\n fun bindTexture(target: Int, texture: KglTexture)\n fun generateMipmap(target: Int)\n fun texParameteri(target: Int, pname: Int, value: Int)\n\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n\n fun getError(): Int\n fun finish()\n\n fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer)\n fun createFramebuffer(): KglFramebuffer\n fun deleteFramebuffer(framebuffer: KglFramebuffer)\n fun checkFramebufferStatus(target: Int): Int\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int)\n\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray)\n fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean)\n fun lineWidth(width: Float)\n fun pixelStorei(pname: Int, param: Int)\n}\n","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.TriangleShaderProgram\n\nopen class DrawShapeState internal constructor() {\n companion object {\n const val MAX_DRAW_ELEMENTS = 4\n }\n\n var program: TriangleShaderProgram? = null\n var vertexBuffer: FloatBufferObject? = null\n var elementBuffer: AbstractBufferObject? = null\n val vertexOrigin = Vec3()\n var vertexStride = 0\n var enableCullFace = true\n var enableDepthTest = true\n var enableDepthWrite = true\n var depthOffset = 0.0\n var isLine = false\n protected val color = Color()\n protected var opacity = 1.0f\n protected var lineWidth = 1f\n protected var texture: Texture? = null\n protected val texCoordMatrix = Matrix3()\n private val texCoordAttrib = VertexAttrib()\n internal var primCount = 0\n internal val prims = Array(MAX_DRAW_ELEMENTS) { DrawElements() }\n\n open fun reset() {\n program = null\n vertexBuffer = null\n elementBuffer = null\n vertexOrigin.set(0.0, 0.0, 0.0)\n vertexStride = 0\n enableCullFace = true\n enableDepthTest = true\n isLine = false\n depthOffset = 0.0\n color.set(1f, 1f, 1f, 1f)\n opacity = 1.0f\n lineWidth = 1f\n texture = null\n texCoordMatrix.setToIdentity()\n texCoordAttrib.size = 0\n texCoordAttrib.offset = 0\n primCount = 0\n for (idx in 0 until MAX_DRAW_ELEMENTS) prims[idx].texture = null\n }\n\n fun color(color: Color) = apply { this.color.copy(color) }\n\n fun opacity(opacity: Float) = apply { this.opacity = opacity }\n\n fun lineWidth(width: Float) = apply { lineWidth = width }\n\n fun texture(texture: Texture?) = apply { this.texture = texture }\n\n fun texCoordMatrix(matrix: Matrix3) = apply { texCoordMatrix.copy(matrix) }\n\n fun texCoordAttrib(size: Int, offset: Int) = apply {\n texCoordAttrib.size = size\n texCoordAttrib.offset = offset\n }\n\n open fun drawElements(mode: Int, count: Int, type: Int, offset: Int) {\n val prim = prims[primCount++]\n prim.mode = mode\n prim.count = count\n prim.type = type\n prim.offset = offset\n prim.color.copy(color)\n prim.opacity = opacity\n prim.lineWidth = lineWidth\n prim.texture = texture\n prim.texCoordMatrix.copy(texCoordMatrix)\n prim.texCoordAttrib.size = texCoordAttrib.size\n prim.texCoordAttrib.offset = texCoordAttrib.offset\n }\n\n internal open class DrawElements {\n var mode = 0\n var count = 0\n var type = 0\n var offset = 0\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 0f\n var texture: Texture? = null\n val texCoordMatrix = Matrix3()\n val texCoordAttrib = VertexAttrib()\n }\n\n internal open class VertexAttrib {\n var size = 0\n var offset = 0\n }\n}","package earth.worldwind.draw\n\n/**\n * Drawable group provides a standard set of group IDs for organizing WorldWindow drawing into four phases:\n * background, surface, shape, and screen.\n * Accepted values are [BACKGROUND], [SURFACE], [SHAPE] and [SCREEN].\n */\nenum class DrawableGroup {\n /**\n * Indicating drawables displayed before everything else. This group is typically\n * used to display atmosphere and stars before all other drawables.\n */\n BACKGROUND,\n /**\n * Indicating drawables displayed on the globe's surface. Surface drawables are\n * displayed beneath shapes and screen drawables.\n */\n SURFACE,\n /**\n * Indicating shape drawables, such as placemarks, polygons and polylines. Shape\n * drawables are displayed on top of surface drawables, but beneath screen drawables.\n */\n SHAPE,\n /**\n * Indicating drawables displayed in the plane of the screen. Screen drawables are\n * displayed on top of everything else.\n */\n SCREEN;\n}","package earth.worldwind.draw\n\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.layer.heatmap.ElevationHeatmapProgram\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableHeatmap protected constructor(): Drawable {\n val heightLimits = FloatArray(2)\n val colors = Array(5) { Color() }\n var opacity = 1.0f\n var offset = Globe.Offset.Center\n var program: ElevationHeatmapProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableHeatmap {\n val instance = pool.acquire() ?: DrawableHeatmap()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n try {\n dc.gl.enableVertexAttribArray(1)\n\n program.setLimits(heightLimits)\n program.setColors(colors)\n program.setOpacity(opacity)\n\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n if (terrain.offset != offset) continue\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexHeightsAttrib(dc, 1 /*vertexHeights*/)\n ) {\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n } else continue // terrain vertex attribute failed to bind\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n dc.gl.disableVertexAttribArray(1)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_UNSIGNED_INT\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableLines protected constructor(): Drawable {\n /**\n * Leader line vertex array. Initially sized to store two xyz points.\n */\n var vertexPoints = FloatArray(40)\n val mvpMatrix = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 1f\n var enableDepthTest = true\n var program: TriangleShaderProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableLines {\n val instance = pool.acquire() ?: DrawableLines()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n /**\n * Performs the actual rendering of the Placemark.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.rectangleElementsBuffer.bindBuffer(dc)) return // element buffer failed to bind\n val offset = dc.bindBufferPool(vertexPoints)\n if (offset < 0) return // vertex buffer unspecified or failed to bind\n\n // Disable texturing.\n program.enableTexture(false)\n\n // Ensure program is in triangles mode\n program.enableOneVertexMode(false)\n\n // Use the leader's color.\n program.loadColor(color)\n\n // Use the leader's opacity.\n program.loadOpacity(opacity)\n\n // Use the leader's modelview-projection matrix.\n program.loadModelviewProjection(mvpMatrix)\n\n // Use render target dimensions\n program.loadScreen(dc.viewport.width.toFloat(), dc.viewport.height.toFloat())\n\n // Use the leader's line width in screen pixels.\n program.loadLineWidth(lineWidth)\n\n // Disable depth testing if requested.\n if (!enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the leader line as the vertex point attribute.\n dc.gl.enableVertexAttribArray(1 /*value*/)\n dc.gl.enableVertexAttribArray(2 /*value*/)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.vertexAttribPointer(0 /*pointA*/, 4, GL_FLOAT, false, 20, offset + 0)\n dc.gl.vertexAttribPointer(1 /*pointB*/, 4, GL_FLOAT, false, 20, offset + 40)\n dc.gl.vertexAttribPointer(2 /*pointC*/, 4, GL_FLOAT, false, 20, offset + 80)\n\n // Draw the leader line.\n dc.gl.drawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0)\n\n // Restore the default WorldWind OpenGL state.\n if (!enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n\n dc.gl.disableVertexAttribArray(1 /*value*/)\n dc.gl.disableVertexAttribArray(2 /*value*/)\n }\n}","package earth.worldwind.draw\n\nimport kotlin.math.max\n\nopen class DrawableQueue internal constructor(){\n protected var size = 0\n protected var position = 0\n protected var entries = arrayOfNulls(size)\n val count get() = size\n /**\n * Sorts drawables by ascending group ID, then ascending order, then by ascending ordinal.\n */\n protected open val sortComparator = Comparator { lhs, rhs ->\n // Comparator accepts only non-null Entries\n var result = lhs!!.groupId.compareTo(rhs!!.groupId)\n if (result == 0) result = lhs.order.compareTo(rhs.order)\n if (result == 0) result = lhs.ordinal.compareTo(rhs.ordinal)\n result\n }\n\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, depth: Double) {\n val capacity = entries.size\n if (capacity == size) {\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries)\n entries = newEntries\n }\n val entry = entries[size] ?: Entry().also { entries[size] = it }\n entry.set(drawable, groupId, depth, size++)\n }\n\n fun getDrawable(index: Int) = if (index < size) entries[index]?.drawable else null\n\n fun peekDrawable() = getDrawable(position)\n\n fun pollDrawable() = getDrawable(position++)\n\n fun rewindDrawables() { position = 0 }\n\n fun sortDrawables() {\n // Limit sort to non-null Entries only\n entries.sortWith(sortComparator, 0, size)\n position = 0\n }\n\n fun clearDrawables() {\n for (idx in 0 until size) {\n entries[idx]?.recycle()\n }\n size = 0\n position = 0\n }\n\n protected open class Entry {\n var drawable: Drawable? = null\n var groupId = DrawableGroup.BACKGROUND\n var order = 0.0\n var ordinal = 0\n\n fun set(drawable: Drawable, groupId: DrawableGroup, order: Double, ordinal: Int) {\n this.drawable = drawable\n this.groupId = groupId\n this.order = order\n this.ordinal = ordinal\n }\n\n fun recycle() {\n drawable?.recycle()\n drawable = null\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableScreenTexture protected constructor(): Drawable {\n val unitSquareTransform = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n var texture: Texture? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableScreenTexture {\n val instance = pool.acquire() ?: DrawableScreenTexture()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n texture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.unitSquareBuffer.bindBuffer(dc)) return // vertex buffer failed to bind\n\n // Use the draw context's pick mode and use the drawable's color.\n program.enablePickMode(dc.isPickMode)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Disable writing to the depth buffer.\n dc.gl.depthMask(false)\n\n // Use a unit square as the vertex point and vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 2, GL_FLOAT, false, 0, 0)\n dc.gl.vertexAttribPointer(1 /*vertexTexCoord*/, 2, GL_FLOAT, false, 0, 0)\n\n // Draw this DrawableScreenTextures.\n doDraw(dc, this)\n\n // Draw all DrawableScreenTextures adjacent in the queue that share the same GLSL program.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n val drawable = dc.pollDrawable() as DrawableScreenTexture // take it off the queue\n doDraw(dc, drawable)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n\n protected open fun doDraw(dc: DrawContext, drawable: DrawableScreenTexture) {\n val program = drawable.program ?: return\n\n // Use the drawable's color.\n program.loadColor(drawable.color)\n program.loadOpacity(drawable.opacity)\n\n // Attempt to bind the drawable's texture, configuring the shader program appropriately if there is no texture\n // or if the texture failed to bind.\n val texture = drawable.texture\n if (texture?.bindTexture(dc) == true) {\n program.enableTexture(true)\n program.loadTexCoordMatrix(texture.coordTransform)\n } else {\n program.enableTexture(false)\n }\n\n // Use a modelview-projection matrix that transforms the unit square to screen coordinates.\n drawable.mvpMatrix.setToMultiply(dc.screenProjection, drawable.unitSquareTransform)\n program.loadModelviewProjection(drawable.mvpMatrix)\n\n // Disable depth testing if requested.\n if (!drawable.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Draw the unit square as triangles.\n dc.gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4)\n\n // Restore the default WorldWind OpenGL state.\n if (!drawable.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableScreenTexture && program === that.program\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_CULL_FACE\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableShape protected constructor(): Drawable {\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableShape {\n val instance = pool.acquire() ?: DrawableShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n // TODO shape batching\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (drawState.vertexBuffer?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n if (drawState.elementBuffer?.bindBuffer(dc) != true) return // element buffer unspecified or failed to bind\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Use the draw context's modelview projection matrix, transformed to shape local coordinates.\n if (drawState.depthOffset != 0.0) {\n mvpMatrix.copy(dc.projection).offsetProjectionDepth(drawState.depthOffset)\n mvpMatrix.multiplyByMatrix(dc.modelview)\n } else {\n mvpMatrix.copy(dc.modelviewProjection)\n }\n mvpMatrix.multiplyByTranslation(\n drawState.vertexOrigin.x,\n drawState.vertexOrigin.y,\n drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable triangle back face culling if requested.\n if (!drawState.enableCullFace) dc.gl.disable(GL_CULL_FACE)\n\n // Disable depth testing if requested.\n if (!drawState.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Disable depth writing if requested.\n if (!drawState.enableDepthWrite) dc.gl.depthMask(false)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(3 /*vertexTexCoord*/)\n\n if (drawState.isLine) {\n program.enableOneVertexMode(false)\n program.loadScreen(dc.viewport.width.toFloat(), dc.viewport.height.toFloat())\n dc.gl.vertexAttribPointer(0 /*pointA*/, 4, GL_FLOAT, false, 20, 0)\n dc.gl.vertexAttribPointer(1 /*pointB*/, 4, GL_FLOAT, false, 20, 40)\n dc.gl.vertexAttribPointer(2 /*pointC*/, 4, GL_FLOAT, false, 20, 80)\n dc.gl.vertexAttribPointer(3 /*texCoord*/, 1, GL_FLOAT, false, 20, 56)\n } else {\n program.enableOneVertexMode(true)\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(1 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(2 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0)\n }\n // Draw the specified primitives.\n for (idx in 0 until drawState.primCount) {\n val prim = drawState.prims[idx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n if (drawState.isLine) {\n program.loadLineWidth(prim.lineWidth)\n } else {\n dc.gl.vertexAttribPointer(\n 3 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n }\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Restore the default WorldWind OpenGL state.\n if (!drawState.enableCullFace) dc.gl.enable(GL_CULL_FACE)\n if (!drawState.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n if (!drawState.enableDepthWrite) dc.gl.depthMask(true)\n dc.gl.lineWidth(1f)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(3 /*vertexTexCoord*/)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSightline protected constructor(): Drawable {\n val centerTransform = Matrix4()\n var range = 0f\n val visibleColor = Color(0f, 0f, 0f, 0f)\n val occludedColor = Color(0f, 0f, 0f, 0f)\n var program: SightlineProgram? = null\n private var pool: Pool? = null\n private val sightlineView = Matrix4()\n private val matrix = Matrix4()\n private val cubeMapProjection = Matrix4()\n private val cubeMapFace = arrayOf(\n Matrix4().setToRotation(0.0, 0.0, 1.0, NEG90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // positive X\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative X\n Matrix4().setToRotation(1.0, 0.0, 0.0, POS90), // positive Y\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS180).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative Y\n /*Matrix4().setToRotation(1.0, 0.0, 0.0, POS180),*/ // positive Z, intentionally omitted as terrain is never visible when looking up\n Matrix4() // negative Z\n )\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSightline {\n val instance = pool.acquire() ?: DrawableSightline()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n visibleColor.set(0f, 0f, 0f, 0f)\n occludedColor.set(0f, 0f, 0f, 0f)\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the drawable's color.\n program.loadRange(range)\n program.loadColor(visibleColor, occludedColor)\n\n // Configure the cube map projection matrix to capture one face of the cube map as far as the sightline's range.\n cubeMapProjection.setToPerspectiveProjection(1, 1, POS90, 1.0, range.toDouble())\n\n // TODO accumulate only the visible terrain, which can be used in both passes\n // TODO give terrain a bounding box, test with a frustum set using depthviewProjection\n for (i in cubeMapFace.indices) {\n sightlineView.copy(centerTransform)\n sightlineView.multiplyByMatrix(cubeMapFace[i])\n sightlineView.invertOrthonormal()\n if (drawSceneDepth(dc)) drawSceneOcclusion(dc)\n }\n }\n\n protected open fun drawSceneDepth(dc: DrawContext): Boolean {\n val program = program ?: return false\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return false // framebuffer failed to bind\n\n // Clear the framebuffer.\n val depthTexture = framebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n dc.gl.viewport(0, 0, depthTexture.width, depthTexture.height)\n dc.gl.clear(GL_DEPTH_BUFFER_BIT)\n\n // Draw only depth values offset slightly away from the viewer.\n dc.gl.colorMask(r = false, g = false, b = false, a = false)\n dc.gl.enable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(4f, 4f)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Draw the terrain onto one face of the cube map, from the sightline's point of view.\n matrix.setToMultiply(cubeMapProjection, sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Restore the default World Wind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.colorMask(r = true, g = true, b = true, a = true)\n dc.gl.disable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(0f, 0f)\n }\n return true\n }\n\n protected open fun drawSceneOcclusion(dc: DrawContext) {\n val program = program ?: return\n try {\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n val depthTexture = dc.scratchFramebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n if (!depthTexture.bindTexture(dc)) return // framebuffer texture failed to bind\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n matrix.copy(dc.modelviewProjection)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Map the terrain into one face of the cube map, from the sightline's point of view.\n matrix.copy(sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadSightlineProjection(cubeMapProjection, matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Unbind depth attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.layer.starfield.StarFieldProgram\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_ALIASED_POINT_SIZE_RANGE\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_POINTS\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableStarField protected constructor(): Drawable {\n val matrix = Matrix4()\n var julianDate = 0.0\n var minMagnitude = 0.0f\n var maxMagnitude = 0.0f\n var numStars = 0\n var isShowSun = false\n var sunSize = 0.0f\n var sunTexture: Texture? = null\n var starsPositionsBuffer: FloatBufferObject? = null\n var sunPositionsBuffer: FloatBufferObject? = null\n var program: StarFieldProgram? = null\n private var pool: Pool? = null\n\n companion object {\n var maxGlPointSize = 0f\n\n @JvmStatic\n fun obtain(pool: Pool): DrawableStarField {\n val instance = pool.acquire() ?: DrawableStarField()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n starsPositionsBuffer = null\n sunPositionsBuffer = null\n sunTexture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n try {\n dc.gl.depthMask(false)\n drawStars(dc, program, starsPositionsBuffer)\n if (isShowSun) drawSun(dc, program, sunPositionsBuffer, sunTexture)\n } finally {\n dc.gl.depthMask(true)\n }\n }\n\n protected open fun drawStars(dc: DrawContext, program: StarFieldProgram, buffer: FloatBufferObject?) {\n if (buffer?.bindBuffer(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n // This subtraction does not work properly on the GPU due to precision loss. It must be done on the CPU.\n program.loadModelviewProjection(matrix)\n program.loadNumDays((julianDate - 2451545.0).toFloat())\n program.loadMagnitudeRange(minMagnitude, maxMagnitude)\n program.loadTextureEnabled(false)\n dc.gl.drawArrays(GL_POINTS, 0, numStars)\n }\n\n protected open fun drawSun(\n dc: DrawContext, program: StarFieldProgram, sunBuffer: FloatBufferObject?, sunTexture: Texture?\n ) {\n if (maxGlPointSize == 0f) maxGlPointSize = dc.gl.getParameterfv(GL_ALIASED_POINT_SIZE_RANGE)[1]\n\n if (sunSize > maxGlPointSize) {\n Logger.log(Logger.WARN, \"StarFieldLayer - sunSize is to big, max size allowed is: $maxGlPointSize\")\n }\n\n if (sunBuffer?.bindBuffer(dc) != true) return\n if (sunTexture?.bindTexture(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadTextureEnabled(true)\n dc.gl.drawArrays(GL_POINTS, 0, 1)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceColor protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceColor {\n val instance = pool.acquire() ?: DrawableSurfaceColor()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceShape protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val sector = Sector()\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val textureMvpMatrix = Matrix4()\n private val identityMatrix3 = Matrix3()\n private val color = Color()\n private var opacity = 1.0f\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceShape {\n val instance = pool.acquire() ?: DrawableSurfaceShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.enableVertexAttribArray(3 /*vertexTexCoord*/)\n\n // Accumulate shapes in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this shape.\n scratchList.add(this)\n\n // Add all shapes that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (next !is DrawableSurfaceShape) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated shapes on each drawable terrain.\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n // Draw the accumulated surface shapes to a texture representing the terrain's sector.\n if (drawShapesToTexture(dc, terrain) > 0) {\n // Draw the texture containing the rasterized shapes onto the terrain geometry.\n drawTextureToTerrain(dc, terrain)\n }\n }\n } finally {\n // Clear the accumulated shapes.\n scratchList.clear()\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(2 /*vertexTexCoord*/)\n dc.gl.disableVertexAttribArray(3 /*vertexTexCoord*/)\n }\n }\n\n protected open fun drawShapesToTexture(dc: DrawContext, terrain: DrawableTerrain): Int {\n // Shapes have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n\n // The terrain's sector defines the geographic region in which to draw.\n val terrainSector = terrain.sector\n\n // Keep track of the number of shapes drawn into the texture.\n var shapeCount = 0\n val program = drawState.program ?: return 0\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return 0 // framebuffer failed to bind\n\n // Clear the framebuffer and disable the depth test.\n val colorAttachment = framebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n dc.gl.viewport(0, 0, colorAttachment.width, colorAttachment.height)\n dc.gl.clear(GL_COLOR_BUFFER_BIT)\n dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Compute the tile common matrix that transforms geographic coordinates to texture fragments appropriate\n // for the terrain sector.\n // TODO capture this in a method on Matrix4\n textureMvpMatrix.setToIdentity()\n textureMvpMatrix.multiplyByTranslation(-1.0, -1.0, 0.0)\n textureMvpMatrix.multiplyByScale(\n 2.0 / terrainSector.deltaLongitude.inDegrees,\n 2.0 / terrainSector.deltaLatitude.inDegrees,\n 0.0\n )\n textureMvpMatrix.multiplyByTranslation(\n -terrainSector.minLongitude.inDegrees,\n -terrainSector.minLatitude.inDegrees,\n 0.0\n )\n for (element in scratchList) {\n // Get the shape.\n val shape = element as DrawableSurfaceShape\n if (shape.offset != terrain.offset || !shape.sector.intersectsOrNextTo(terrainSector)) continue\n if (shape.drawState.vertexBuffer?.bindBuffer(dc) != true) continue // vertex buffer unspecified or failed to bind\n if (shape.drawState.elementBuffer?.bindBuffer(dc) != true) continue // element buffer unspecified or failed to bind\n\n // Transform local shape coordinates to texture fragments appropriate for the terrain sector.\n mvpMatrix.copy(textureMvpMatrix)\n mvpMatrix.multiplyByTranslation(\n shape.drawState.vertexOrigin.x,\n shape.drawState.vertexOrigin.y,\n shape.drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n if (shape.drawState.isLine) {\n program.enableOneVertexMode(false)\n program.loadScreen(colorAttachment.width.toFloat(), colorAttachment.height.toFloat())\n\n dc.gl.vertexAttribPointer(0 /*pointA*/, 4, GL_FLOAT, false, 20, 0)\n dc.gl.vertexAttribPointer(1 /*pointB*/, 4, GL_FLOAT, false, 20, 40)\n dc.gl.vertexAttribPointer(2 /*pointC*/, 4, GL_FLOAT, false, 20, 80)\n dc.gl.vertexAttribPointer(3 /*vertexTexCoord*/, 1, GL_FLOAT, false, 20, 56)\n } else {\n program.enableOneVertexMode(true)\n\n // Use the shape's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(1 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0)\n dc.gl.vertexAttribPointer(2 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0)\n }\n // Draw the specified primitives to the framebuffer texture.\n for (primIdx in 0 until shape.drawState.primCount) {\n val prim = shape.drawState.prims[primIdx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n if (shape.drawState.isLine) {\n program.loadLineWidth(prim.lineWidth)\n } else {\n dc.gl.vertexAttribPointer(\n 3 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n shape.drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n }\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Accumulate the number of shapes drawn into the texture.\n shapeCount++\n }\n } finally {\n // Restore the default WorldWind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.lineWidth(1f)\n }\n return shapeCount\n }\n\n protected open fun drawTextureToTerrain(dc: DrawContext, terrain: DrawableTerrain) {\n val program = drawState.program ?: return\n try {\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexPointAttrib(dc, 1 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexPointAttrib(dc, 2 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexTexCoordAttrib(dc, 3 /*vertexTexCoord*/)) return // terrain vertex attribute failed to bind\n val colorAttachment = dc.scratchFramebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n if (!colorAttachment.bindTexture(dc)) return // framebuffer texture failed to bind\n\n // Configure the program to draw texture fragments unmodified and aligned with the terrain.\n // TODO consolidate pickMode and enableTexture into a single textureMode\n // TODO it's confusing that pickMode must be disabled during surface shape render-to-texture\n program.enableOneVertexMode(true)\n program.enablePickMode(false)\n program.enableTexture(true)\n program.loadTexCoordMatrix(identityMatrix3)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n } finally {\n // Unbind color attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceTexture protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val textureSector = Sector()\n val terrainSector = Sector()\n val color = Color()\n var opacity = 1.0f\n val texCoordMatrix = Matrix3()\n var texture: Texture? = null\n var program: SurfaceTextureProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceTexture {\n val instance = pool.acquire() ?: DrawableSurfaceTexture()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(\n program: SurfaceTextureProgram?, textureSector: Sector, opacity: Float, texture: Texture,\n texCoordMatrix: Matrix3, offset: Globe.Offset, terrainSector: Sector = textureSector\n ) = apply {\n this.offset = offset\n this.textureSector.copy(textureSector)\n this.terrainSector.copy(terrainSector)\n this.color.set(1f, 1f, 1f, 1f)\n this.opacity = opacity\n this.texCoordMatrix.copy(texCoordMatrix)\n this.texture = texture\n this.program = program\n }\n\n override fun recycle() {\n texture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Accumulate surface textures in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this surface texture.\n scratchList.add(this)\n\n // Add all surface textures that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated surface textures.\n drawSurfaceTextures(dc)\n } finally {\n // Clear the accumulated surface textures.\n scratchList.clear()\n }\n }\n\n protected open fun drawSurfaceTextures(dc: DrawContext) {\n val program = program ?: return // program unspecified\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Enable the program to display surface textures from multi-texture unit 0.\n program.enableTexture(true)\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Surface textures have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainSector = terrain.sector\n val terrainOrigin = terrain.vertexOrigin\n var usingTerrainAttrs = false\n for (element in scratchList) {\n // Get the surface texture and its sector.\n val texture = element as DrawableSurfaceTexture\n val textureSector = texture.textureSector\n if (texture.offset != terrain.offset || !texture.terrainSector.intersects(terrainSector)) continue\n if (!texture.bindTexture(dc)) continue // texture failed to bind\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!usingTerrainAttrs &&\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) {\n // Suppress subsequent tile state application until the next terrain.\n usingTerrainAttrs = true\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n }\n if (!usingTerrainAttrs) continue // terrain vertex attribute failed to bind\n\n // Use tex coord matrices that register the surface texture correctly and mask terrain fragments that\n // fall outside the surface texture's sector.\n program.texCoordMatrix[0].copy(texture.texCoordMatrix)\n program.texCoordMatrix[0].multiplyByTileTransform(terrainSector, textureSector)\n program.texCoordMatrix[1].setToTileTransform(terrainSector, textureSector)\n program.loadTexCoordMatrix()\n\n // Use the surface texture's RGBA color.\n program.loadColor(texture.color)\n\n // Use the surface texture's opacity.\n program.loadOpacity(texture.opacity)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableSurfaceTexture && program === that.program\n\n private fun bindTexture(dc: DrawContext) = texture?.bindTexture(dc) == true\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableTessellation protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val offsetMvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableTessellation {\n val instance = pool.acquire() ?: DrawableTessellation()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(program: BasicShaderProgram, color: Color, opacity: Float) = apply {\n this.program = program\n this.color.copy(color)\n this.opacity = opacity\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Suppress writes to the OpenGL depth buffer.\n dc.gl.depthMask(false)\n\n // Compute the portion of the modelview projection matrix that remains constant for each tile.\n offsetMvpMatrix.copy(dc.projection)\n offsetMvpMatrix.offsetProjectionDepth(-1.0e-3) // offset this layer's depth values toward the eye\n offsetMvpMatrix.multiplyByMatrix(dc.modelview)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(offsetMvpMatrix)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as lines.\n terrain.drawLines(dc)\n }\n\n // Restore default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObject.Companion.fromTerrain\nimport earth.worldwind.PickedObject.Companion.identifierToUniqueColor\nimport earth.worldwind.PickedObject.Companion.uniqueColorToIdentifier\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableSurfaceColor\nimport earth.worldwind.draw.DrawableSurfaceColor.Companion.obtain\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_COLOR_BUFFER_BIT\nimport earth.worldwind.util.kgl.GL_DEPTH_BUFFER_BIT\nimport kotlin.math.roundToInt\n\nopen class BasicFrameController: FrameController {\n override val lastTerrains = mutableMapOf()\n private val pickColor = Color()\n private val pickPoint = Vec3()\n private val pickPos = Position()\n private val boundingBox = BoundingBox()\n private val fullSphere = Sector().setFullSphere()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n override fun renderFrame(rc: RenderContext) {\n if (!rc.isPickMode) lastTerrains.clear()\n if (rc.globe.is2D && rc.globe.isContinuous) {\n // Tessellate and render all visible globe offsets of 2D continuous terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n renderGlobeOffset(rc, Globe.Offset.Right)\n renderGlobeOffset(rc, Globe.Offset.Left)\n // Reset globe offset for correct projection calculations after frame rendered\n rc.globe.offset = Globe.Offset.Center\n } else {\n // Tessellate and render single 3D terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n }\n rc.sortDrawables()\n }\n\n protected open fun renderGlobeOffset(rc: RenderContext, globeOffset: Globe.Offset) {\n rc.globe.offset = globeOffset\n\n // Check if 2D globe offset intersects current frustum\n if (rc.globe.is2D && !boundingBox.setToSector(fullSphere, rc.globe, 0f, 0f).intersectsFrustum(rc.frustum)) return\n\n // Prepare terrain for specified globe offset\n rc.terrain = rc.terrainTessellator.tessellate(rc)\n\n // Compute viewing distance and pixel size based on available terrain\n if (!rc.globe.is2D) adjustViewingParameters(rc)\n\n // Render the terrain picked object or remember the last terrain for future intersect operations\n if (rc.isPickMode) renderTerrainPickedObject(rc) else lastTerrains[globeOffset] = rc.terrain\n\n // Render all layers on specified globe offset\n rc.layers.render(rc)\n }\n\n protected open fun adjustViewingParameters(rc: RenderContext) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (rc.terrain.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = rc.globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n protected open fun renderTerrainPickedObject(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to pick\n\n // Acquire a unique picked object ID for terrain.\n val pickedObjectId = rc.nextPickedObjectId()\n\n // Enqueue a drawable for processing on the OpenGL thread that displays terrain in the unique pick color.\n val pool = rc.getDrawablePool()\n val drawable = obtain(pool)\n identifierToUniqueColor(pickedObjectId, drawable.color)\n drawable.opacity = 1.0f // Just to be sure to reset opacity\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n rc.offerSurfaceDrawable(drawable, Double.NEGATIVE_INFINITY)\n\n // If the pick ray intersects the terrain, enqueue a picked object that associates the terrain drawable with its\n // picked object ID and the intersection position.\n val pickRay = rc.pickRay\n if (pickRay != null && rc.terrain.intersect(pickRay, pickPoint)) {\n rc.globe.cartesianToGeographic(pickPoint.x, pickPoint.y, pickPoint.z, pickPos)\n rc.offerPickedObject(fromTerrain(pickedObjectId, pickPos))\n }\n }\n\n override fun drawFrame(dc: DrawContext) {\n clearFrame(dc)\n drawDrawables(dc)\n if (dc.isPickMode) resolvePick(dc)\n }\n\n protected open fun clearFrame(dc: DrawContext) {\n dc.gl.clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)\n }\n\n protected open fun drawDrawables(dc: DrawContext) {\n dc.rewindDrawables()\n while (true) {\n val next = dc.pollDrawable() ?: break\n try {\n next.draw(dc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"BasicFrameController\", \"drawDrawables\",\n \"Exception while drawing '$next'\", e\n )\n // Keep going. Draw the remaining drawables.\n }\n }\n }\n\n protected open fun resolvePick(dc: DrawContext) {\n val pickedObjects = dc.pickedObjects ?: return\n if (pickedObjects.count == 0) return // no eligible objects; avoid expensive calls to glReadPixels\n val pickViewport = dc.pickViewport ?: return\n val pickPointOnly = dc.pickPoint != null && pickViewport.width <= 3 && pickViewport.height <= 3\n var objectFound = false\n\n dc.pickPoint?.let { pickPoint ->\n // Read the fragment color at the pick point.\n dc.readPixelColor(pickPoint.x.roundToInt(), pickPoint.y.roundToInt(), pickColor)\n\n // Convert the fragment color to a picked object ID. It returns zero if the color cannot indicate a picked\n // object ID, in which case no objects have been drawn at the pick point.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject != null) {\n if (!topObject.isTerrain) objectFound = true // Non-terrain object found in pick point\n if (pickPointOnly || objectFound) {\n topObject.markOnTop()\n // Remove picked objects except top and terrain in case of object found or point only mode\n // Using clearPickedObjects and two offerPickedObject is faster than keepTopAndTerrainObjects\n val terrainObject = pickedObjects.terrainPickedObject\n pickedObjects.clearPickedObjects()\n pickedObjects.offerPickedObject(topObject)\n // handles null objects and duplicate objects\n if (terrainObject != null) pickedObjects.offerPickedObject(terrainObject)\n }\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no eligible objects drawn at the pick point\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no objects drawn at the pick point\n }\n\n if (!pickPointOnly && !objectFound) {\n // Read the unique fragment colors in the pick rectangle.\n dc.readPixelColors(pickViewport.x, pickViewport.y, pickViewport.width, pickViewport.height).forEach { pickColor ->\n // Convert the fragment color to a picked object ID. This returns zero if the color cannot indicate a picked\n // object ID.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject?.isTerrain == false) topObject.markOnTop()\n }\n }\n }\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.util.Pool\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.jvm.JvmStatic\n\nopen class Frame {\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n// val infiniteProjection = Matrix4()\n val drawableQueue = DrawableQueue()\n val drawableTerrain = DrawableQueue()\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): Frame {\n val instance = pool.acquire() ?: Frame() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n open fun recycle() {\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue.clearDrawables()\n drawableTerrain.clearDrawables()\n pickedObjects?.let { pickDeferred?.complete(it) } // Complete deferred pick if available\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pool?.release(this) // return this instance to the pool\n pool = null\n }\n}","package earth.worldwind.geom\n\n/**\n * Altitude mode indicates how WorldWind interprets a position's altitude component.\n * Accepted values are [ABSOLUTE], [CLAMP_TO_GROUND] and [RELATIVE_TO_GROUND].\n */\nenum class AltitudeMode {\n /**\n * Indicating an altitude relative to the globe's ellipsoid. Ignores the elevation of\n * the terrain directly beneath the position's latitude and longitude.\n */\n ABSOLUTE,\n /**\n * Indicating an altitude on the terrain. Ignores a position's specified altitude, and\n * always places the position on the terrain.\n */\n CLAMP_TO_GROUND,\n /**\n * Indicating an altitude relative to the terrain. The altitude indicates height above\n * the terrain directly beneath the position's latitude and longitude.\n */\n RELATIVE_TO_GROUND;\n}","package earth.worldwind.geom\n\nimport earth.worldwind.globe.Globe\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * Represents a bounding box in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingBox {\n /**\n * The box's center point.\n */\n internal val center = Vec3(0.0, 0.0, 0.0)\n /**\n * The center point of the box's bottom. (The origin of the R axis.)\n */\n protected val bottomCenter = Vec3(-0.5, 0.0, 0.0)\n /**\n * The center point of the box's top. (The end of the R axis.)\n */\n protected val topCenter = Vec3(0.5, 0.0, 0.0)\n /**\n * The box's R axis, its longest axis.\n */\n protected val r = Vec3(1.0, 0.0, 0.0)\n /**\n * The box's S axis, its mid-length axis.\n */\n protected val s = Vec3(0.0, 1.0, 0.0)\n /**\n * The box's T axis, its shortest axis.\n */\n protected val t = Vec3(0.0, 0.0, 1.0)\n /**\n * The box's radius. (The half-length of its diagonal.)\n */\n protected var radius = sqrt(3.0)\n\n private val endPoint1 = Vec3()\n private val endPoint2 = Vec3()\n private val scratchHeights = FloatArray(NUM_LAT * NUM_LON)\n private val scratchPoints = FloatArray(NUM_LAT * NUM_LON * 3)\n private var coherentPlaneIdx = -1\n\n /**\n * Indicates whether this bounding box is a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return true if this bounding box is a unit box, otherwise false\n */\n val isUnitBox get() = center.x == 0.0 && center.y == 0.0 && center.z == 0.0 && radius == sqrt(3.0)\n\n /**\n * Sets this bounding box to a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return This bounding box set to a unit box\n */\n fun setToUnitBox() = apply {\n center.set(0.0, 0.0, 0.0)\n bottomCenter.set(-0.5, 0.0, 0.0)\n topCenter.set(0.5, 0.0, 0.0)\n\n r.set(1.0, 0.0, 0.0)\n s.set(0.0, 1.0, 0.0)\n t.set(0.0, 0.0, 1.0)\n\n radius = sqrt(3.0)\n }\n\n /**\n * Sets this bounding box such that it minimally encloses a specified array of points.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return This bounding box set to contain the specified array of points.\n */\n fun setToPoints(array: FloatArray, count: Int, stride: Int) = apply {\n // Compute this box's axes by performing a principal component analysis on the array of points.\n val matrix = Matrix4()\n matrix.setToCovarianceOfPoints(array, count, stride)\n matrix.extractEigenvectors(r, s, t)\n r.normalize()\n s.normalize()\n t.normalize()\n\n // Find the extremes along each axis.\n var rMin = Double.POSITIVE_INFINITY\n var rMax = Double.NEGATIVE_INFINITY\n var sMin = Double.POSITIVE_INFINITY\n var sMax = Double.NEGATIVE_INFINITY\n var tMin = Double.POSITIVE_INFINITY\n var tMax = Double.NEGATIVE_INFINITY\n\n val p = Vec3()\n for (idx in 0 until count step stride) {\n p.set(array[idx].toDouble(), array[idx + 1].toDouble(), array[idx + 2].toDouble())\n\n val pdr = p.dot(r)\n if (rMin > pdr) rMin = pdr\n if (rMax < pdr) rMax = pdr\n\n val pds = p.dot(s)\n if (sMin > pds) sMin = pds\n if (sMax < pds) sMax = pds\n\n val pdt = p.dot(t)\n if (tMin > pdt) tMin = pdt\n if (tMax < pdt) tMax = pdt\n }\n\n // Ensure that the extremes along each axis have nonzero separation.\n if (rMax == rMin) rMax = rMin + 1\n if (sMax == sMin) sMax = sMin + 1\n if (tMax == tMin) tMax = tMin + 1\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rMax - rMin\n val sLen = sMax - sMin\n val tLen = tMax - tMin\n\n val rSum = rMax + rMin\n val sSum = sMax + sMin\n val tSum = tMax + tMin\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Sets this bounding box such that it contains a specified sector on a specified globe with min and max terrain\n * height.\n *
\n * To create a bounding box that contains the sector at mean sea level, specify zero for the minimum and maximum\n * height. To create a bounding box that contains the terrain surface in this sector, specify the actual minimum and\n * maximum height values associated with the terrain in the sector, multiplied by the scene's vertical\n * exaggeration.\n *
\n *\n * @param sector the sector for which to create the bounding box\n * @param globe the globe associated with the sector\n * @param minHeight the minimum terrain height within the sector\n * @param maxHeight the maximum terrain height within the sector\n *\n * @return this bounding box set to contain the specified sector\n */\n fun setToSector(sector: Sector, globe: Globe, minHeight: Float, maxHeight: Float) = apply {\n // Compute the cartesian points for a 3x3 geographic grid. This grid captures enough detail to bound the\n // sector. Use minimum elevation at the corners and max elevation everywhere else.\n val heights = scratchHeights\n heights.fill(maxHeight)\n heights[0] = minHeight\n heights[2] = minHeight\n heights[6] = minHeight\n heights[8] = minHeight\n val points = scratchPoints\n globe.geographicToCartesianGrid(sector, NUM_LAT, NUM_LON, heights, 1.0f, null, points)\n\n // Compute the local coordinate axes. Since we know this box is bounding a geographic sector, we use the\n // local coordinate axes at its centroid as the box axes. Using these axes results in a box that has +-10%\n // the volume of a box with axes derived from a principal component analysis, but is faster to compute.\n val centroidLat = sector.centroidLatitude\n val centroidLon = sector.centroidLongitude\n val matrix = globe.geographicToCartesianTransform(centroidLat, centroidLon, 0.0, Matrix4())\n val m = matrix.m\n r.set(m[0], m[4], m[8])\n s.set(m[1], m[5], m[9])\n t.set(m[2], m[6], m[10])\n\n // Find the extremes along each axis.\n val rExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val sExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val tExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n\n val p = Vec3()\n for (idx in points.indices step 3) {\n p.set(points[idx].toDouble(), points[idx + 1].toDouble(), points[idx + 2].toDouble())\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, p)\n }\n\n // If the sector encompasses more than one hemisphere, the 3x3 grid does not capture enough detail to bound\n // the sector. The antipodal points along the parallel through the sector's centroid represent its extremes\n // in longitude. Incorporate those antipodal points into the extremes along each axis.\n if (sector.deltaLongitude.inDegrees > 180.0) {\n val altitude = maxHeight.toDouble()\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.plusDegrees(90.0), altitude, endPoint1)\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.minusDegrees(90.0), altitude, endPoint2)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint1)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint2)\n }\n\n // Sort the axes from most prominent to least prominent. The frustum intersection methods assume that the axes\n // are defined in this way.\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n if (sExtremes[1] - sExtremes[0] < tExtremes[1] - tExtremes[0]) swapAxes(s, sExtremes, t, tExtremes)\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rExtremes[1] - rExtremes[0]\n val sLen = sExtremes[1] - sExtremes[0]\n val tLen = tExtremes[1] - tExtremes[0]\n\n val rSum = rExtremes[1] + rExtremes[0]\n val sSum = sExtremes[1] + sExtremes[0]\n val tSum = tExtremes[1] + tExtremes[0]\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Translates this bounding box by specified components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this bounding box translated by the specified components\n */\n fun translate(x: Double, y: Double, z: Double) = apply {\n center.x += x\n center.y += y\n center.z += z\n\n bottomCenter.x += x\n bottomCenter.y += y\n bottomCenter.z += z\n\n topCenter.x += x\n topCenter.y += y\n topCenter.z += z\n }\n\n fun distanceTo(point: Vec3): Double {\n var minDist2 = Double.POSITIVE_INFINITY\n\n // Start with distance to the center of the box.\n var dist2 = center.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the R axis.\n dist2 = bottomCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the R axis.\n dist2 = topCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the S axis.\n endPoint1.x = center.x - 0.5 * s.x\n endPoint1.y = center.y - 0.5 * s.y\n endPoint1.z = center.z - 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the S axis.\n endPoint1.x = center.x + 0.5 * s.x\n endPoint1.y = center.y + 0.5 * s.y\n endPoint1.z = center.z + 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n return sqrt(minDist2)\n }\n\n /**\n * Indicates whether this bounding box intersects a specified frustum.\n *\n * @param frustum The frustum of interest.\n *\n * @return true if the specified frustum intersects this bounding box, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n endPoint1.copy(bottomCenter)\n endPoint2.copy(topCenter)\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { intersectsAt(it) >= 0 } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || intersectsAt(plane) >= 0).also { if (!it) coherentPlaneIdx = idx }\n }\n }\n\n private fun intersectsAt(plane: Plane): Double {\n val n = plane.normal\n val effectiveRadius = 0.5 * (abs(s.dot(n)) + abs(t.dot(n)))\n\n // Test the distance from the first end-point.\n val dq1 = plane.dot(endPoint1)\n val bq1 = dq1 <= -effectiveRadius\n\n // Test the distance from the second end-point.\n val dq2 = plane.dot(endPoint2)\n val bq2 = dq2 <= -effectiveRadius\n if (bq1 && bq2) return -1.0 // endpoints more distant from plane than effective radius; box is on neg. side of plane\n if (bq1 == bq2) return 0.0 // endpoints less distant from plane than effective radius; can't draw any conclusions\n\n // Compute and return the endpoints of the box on the positive side of the plane\n val dot = n.x * (endPoint1.x - endPoint2.x) + n.y * (endPoint1.y - endPoint2.y) + n.z * (endPoint1.z - endPoint2.z)\n val t = (effectiveRadius + dq1) / dot\n\n // Truncate the line to only that in the positive half-space, e.g., inside the frustum.\n val x = (endPoint2.x - endPoint1.x) * t + endPoint1.x\n val y = (endPoint2.y - endPoint1.y) * t + endPoint1.y\n val z = (endPoint2.z - endPoint1.z) * t + endPoint1.z\n if (bq1) endPoint1.set(x, y, z) else endPoint2.set(x, y, z)\n return t\n }\n\n override fun toString() = \"BoundingBox(center=$center, bottomCenter=$bottomCenter, topCenter=$topCenter, r=$r, s=$s, t=$t, radius=$radius)\"\n\n companion object {\n private const val NUM_LAT = 3\n private const val NUM_LON = 3\n\n private fun adjustExtremes(\n r: Vec3, rExtremes: DoubleArray, s: Vec3, sExtremes: DoubleArray, t: Vec3, tExtremes: DoubleArray, p: Vec3\n ) {\n val pdr = p.dot(r)\n if (rExtremes[0] > pdr) rExtremes[0] = pdr\n if (rExtremes[1] < pdr) rExtremes[1] = pdr\n\n val pds = p.dot(s)\n if (sExtremes[0] > pds) sExtremes[0] = pds\n if (sExtremes[1] < pds) sExtremes[1] = pds\n\n val pdt = p.dot(t)\n if (tExtremes[0] > pdt) tExtremes[0] = pdt\n if (tExtremes[1] < pdt) tExtremes[1] = pdt\n }\n\n private fun swapAxes(a: Vec3, aExtremes: DoubleArray, b: Vec3, bExtremes: DoubleArray) {\n a.swap(b)\n\n var tmp = aExtremes[0]\n aExtremes[0] = bExtremes[0]\n bExtremes[0] = tmp\n\n tmp = aExtremes[1]\n aExtremes[1] = bExtremes[1]\n bExtremes[1] = tmp\n }\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a bounding sphere in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingSphere {\n /**\n * The sphere's center point.\n */\n val center = Vec3()\n /**\n * The sphere's radius.\n */\n var radius = 1.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"BoundingSphere\", \"setRadius\", \"invalidRadius\")\n }\n field = value\n }\n private var coherentPlaneIdx = -1\n\n /**\n * Sets this bounding sphere to the specified center point and radius.\n *\n * @param center the new center point\n * @param radius the new radius\n *\n * @return This bounding sphere with its center point and radius set to the specified values\n */\n fun set(center: Vec3, radius: Double) = apply {\n this.center.copy(center)\n this.radius = radius\n }\n\n /**\n * Indicates whether this bounding sphere intersects a specified frustum.\n *\n * @param frustum the frustum of interest\n *\n * @return true if the specified frustum intersects this bounding sphere, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n // See if the extent's bounding sphere is within or intersects the frustum. The dot product of the extent's\n // center point with each plane's vector provides a distance to each plane. If this distance is less than\n // -radius, the extent is completely clipped by that plane and therefore does not intersect the space enclosed\n // by this Frustum.\n val nr = -radius\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { it.distanceToPoint(center) > nr } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || plane.distanceToPoint(center) > nr).also { if (!it) coherentPlaneIdx = idx }\n }\n\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is BoundingSphere) return false\n return center == other.center && radius == other.radius\n }\n\n override fun hashCode(): Int {\n var result = center.hashCode()\n result = 31 * result + radius.hashCode()\n return result\n }\n\n override fun toString() = \"BoundingSphere(center=$center, radius=$radius)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.AltitudeMode.ABSOLUTE\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class Camera {\n val position = Position()\n var altitudeMode = ABSOLUTE\n var heading = ZERO\n var tilt = ZERO\n var roll = ZERO\n var fieldOfView = 45.0.degrees\n set(value) {\n require(value.inDegrees > 0.0 && value.inDegrees < 180.0) {\n logMessage(ERROR, \"Camera\", \"setFieldOfView\", \"invalidFieldOfView\")\n }\n field = value\n }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle, fieldOfView: Angle\n ) = set(latitude, longitude, altitude, altitudeMode, heading, tilt, roll).apply { this.fieldOfView = fieldOfView }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(camera: Camera) = set(\n camera.position.latitude,\n camera.position.longitude,\n camera.position.altitude,\n camera.altitudeMode,\n camera.heading,\n camera.tilt,\n camera.roll,\n camera.fieldOfView\n )\n\n override fun toString() = \"Camera(position=$position, altitudeMode=$altitudeMode, heading=$heading, tilt=$tilt, roll=$roll, fieldOfView=$fieldOfView)\"\n}","package earth.worldwind.geom\n\nimport kotlin.jvm.JvmStatic\n\n/**\n * Oblate ellipsoid with semi-major axis and inverse flattening.\n */\ndata class Ellipsoid(\n /**\n * One half of the ellipsoid's major axis length in meters, which runs through the center to opposite points on the\n * equator.\n */\n val semiMajorAxis: Double,\n /**\n * Measure of the ellipsoid's compression. Indicates how much the ellipsoid's semi-minor axis is compressed relative\n * to the semi-major axis. Expressed as `1/f`, where `f = (a - b) / a`, given the semi-major axis `a` and the semi-minor axis `b`.\n */\n val inverseFlattening: Double\n) {\n /**\n * Computes this ellipsoid's semi-minor length axis in meters. The semi-minor axis is one half of the ellipsoid's\n * minor axis, which runs through the center to opposite points on the poles.\n */\n val semiMinorAxis: Double get() {\n val f = 1 / inverseFlattening\n return semiMajorAxis * (1 - f)\n }\n /**\n * Computes this ellipsoid's eccentricity squared. The returned value is equivalent to `2*f - f*f`,\n * where `f` is this ellipsoid's flattening.\n */\n val eccentricitySquared: Double get() {\n val f = 1 / inverseFlattening\n return 2 * f - f * f\n }\n\n companion object {\n /**\n * WGS 84 reference ellipsoid for Earth. The ellipsoid's semi-major axis and inverse flattening factor are\n * configured according to the WGS 84 reference system (aka WGS 1984, EPSG:4326). WGS 84 reference values taken from\n * [here](http://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf).\n */\n @JvmStatic val WGS84 = Ellipsoid(6378137.0, 298.257223563)\n /**\n * Krasovsky 1940 reference ellipsoid for Earth.\n */\n @JvmStatic val Krasovsky = Ellipsoid(6378245.0, 298.3)\n }\n}","package earth.worldwind.geom\n\n/**\n * Represents a six-sided view frustum in Cartesian coordinates with a corresponding viewport in screen coordinates.\n */\nopen class Frustum {\n internal val left = Plane(1.0, 0.0, 0.0, 1.0)\n internal val right = Plane(-1.0, 0.0, 0.0, 1.0)\n internal val bottom = Plane(0.0, 1.0, 0.0, 1.0)\n internal val top = Plane(0.0, -1.0, 0.0, 1.0)\n internal val near = Plane(0.0, 0.0, -1.0, 1.0)\n internal val far = Plane(0.0, 0.0, 1.0, 1.0)\n internal val viewport = Viewport(0, 0, 1, 1)\n internal val planes = arrayOf(near, far, left, right, top, bottom)\n private val scratchMatrix = Matrix4()\n\n /**\n * Constructs a new unit frustum with each of its planes 1 meter from the center and a viewport with width and\n * height both 1.\n */\n constructor()\n\n /**\n * Constructs a frustum from planes.\n *\n * @param left the frustum's left plane\n * @param right the frustum's right plane\n * @param bottom the frustum's bottom plane\n * @param top the frustum's top plane\n * @param near the frustum's near plane\n * @param far the frustum's far plane\n * @param viewport the frustum's viewport\n */\n constructor(left: Plane, right: Plane, bottom: Plane, top: Plane, near: Plane, far: Plane, viewport: Viewport): this() {\n this.left.copy(left)\n this.right.copy(right)\n this.bottom.copy(bottom)\n this.top.copy(top)\n this.near.copy(near)\n this.far.copy(far)\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to a unit frustum with each of its planes 1 meter from the center a viewport with width and\n * height both 1.\n *\n * @return this frustum, set to a unit frustum\n */\n fun setToUnitFrustum() = apply {\n left.set(1.0, 0.0, 0.0, 1.0)\n right.set(-1.0, 0.0, 0.0, 1.0)\n bottom.set(0.0, 1.0, 0.0, 1.0)\n top.set(0.0, -1.0, 0.0, 1.0)\n near.set(0.0, 0.0, -1.0, 1.0)\n far.set(0.0, 0.0, 1.0, 1.0)\n viewport.set(0, 0, 1, 1)\n }\n\n /**\n * Sets this frustum to one appropriate for a modelview-projection matrix. A modelview-projection matrix's view\n * frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport) = apply {\n // Compute the transpose of the modelview matrix.\n scratchMatrix.transposeMatrix(modelview)\n\n // Get the components of the projection matrix.\n val m = projection.m\n\n // Left Plane = row 4 + row 1:\n var x = m[12] + m[0]\n var y = m[13] + m[1]\n var z = m[14] + m[2]\n var w = m[15] + m[3]\n left.set(x, y, z, w) // normalizes the plane's coordinates\n left.transformByMatrix(scratchMatrix)\n\n // Right Plane = row 4 - row 1:\n x = m[12] - m[0]\n y = m[13] - m[1]\n z = m[14] - m[2]\n w = m[15] - m[3]\n right.set(x, y, z, w) // normalizes the plane's coordinates\n right.transformByMatrix(scratchMatrix)\n\n // Bottom Plane = row 4 + row 2:\n x = m[12] + m[4]\n y = m[13] + m[5]\n z = m[14] + m[6]\n w = m[15] + m[7]\n bottom.set(x, y, z, w) // normalizes the plane's coordinates\n bottom.transformByMatrix(scratchMatrix)\n\n // Top Plane = row 4 - row 2:\n x = m[12] - m[4]\n y = m[13] - m[5]\n z = m[14] - m[6]\n w = m[15] - m[7]\n top.set(x, y, z, w) // normalizes the plane's coordinates\n top.transformByMatrix(scratchMatrix)\n\n // Near Plane = row 4 + row 3:\n x = m[12] + m[8]\n y = m[13] + m[9]\n z = m[14] + m[10]\n w = m[15] + m[11]\n near.set(x, y, z, w) // normalizes the plane's coordinates\n near.transformByMatrix(scratchMatrix)\n\n // Far Plane = row 4 - row 3:\n x = m[12] - m[8]\n y = m[13] - m[9]\n z = m[14] - m[10]\n w = m[15] - m[11]\n far.set(x, y, z, w) // normalizes the plane's coordinates\n far.transformByMatrix(scratchMatrix)\n\n // Copy the specified viewport.\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to one appropriate for a subset of a modelview-projection matrix. A modelview-projection\n * matrix's view frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix. The subset is defined by the region within the original viewport that the frustum\n * contains.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n * @param subViewport the screen coordinate region the frustum should contain\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport, subViewport: Viewport) = apply {\n // Compute the sub-viewport's four edges in screen coordinates.\n val left = subViewport.x.toDouble()\n val right = (subViewport.x + subViewport.width).toDouble()\n val bottom = subViewport.y.toDouble()\n val top = (subViewport.y + subViewport.height).toDouble()\n\n // Transform the sub-viewport's four edges from screen coordinates to Cartesian coordinates.\n var bln: Vec3\n var blf: Vec3\n var brn: Vec3\n var brf: Vec3\n var tln: Vec3\n var tlf: Vec3\n var trn: Vec3\n var trf: Vec3\n val mvpInv = scratchMatrix.setToMultiply(projection, modelview).invert()\n mvpInv.unProject(left, bottom, viewport, Vec3().also { bln = it }, Vec3().also { blf = it })\n mvpInv.unProject(right, bottom, viewport, Vec3().also { brn = it }, Vec3().also { brf = it })\n mvpInv.unProject(left, top, viewport, Vec3().also { tln = it }, Vec3().also { tlf = it })\n mvpInv.unProject(right, top, viewport, Vec3().also { trn = it }, Vec3().also { trf = it })\n\n val va = Vec3(tlf.x - bln.x, tlf.y - bln.y, tlf.z - bln.z)\n val vb = Vec3(tln.x - blf.x, tln.y - blf.y, tln.z - blf.z)\n\n val nl = va.cross(vb)\n this.left.set(nl.x, nl.y, nl.z, -nl.dot(bln))\n va.set(trn.x - brf.x, trn.y - brf.y, trn.z - brf.z)\n vb.set(trf.x - brn.x, trf.y - brn.y, trf.z - brn.z)\n\n val nr = va.cross(vb)\n this.right.set(nr.x, nr.y, nr.z, -nr.dot(brn))\n va.set(brf.x - bln.x, brf.y - bln.y, brf.z - bln.z)\n vb.set(blf.x - brn.x, blf.y - brn.y, blf.z - brn.z)\n\n val nb = va.cross(vb)\n this.bottom.set(nb.x, nb.y, nb.z, -nb.dot(brn))\n va.set(tlf.x - trn.x, tlf.y - trn.y, tlf.z - trn.z)\n vb.set(trf.x - tln.x, trf.y - tln.y, trf.z - tln.z)\n\n val nt = va.cross(vb)\n this.top.set(nt.x, nt.y, nt.z, -nt.dot(tln))\n va.set(tln.x - brn.x, tln.y - brn.y, tln.z - brn.z)\n vb.set(trn.x - bln.x, trn.y - bln.y, trn.z - bln.z)\n\n val nn = va.cross(vb)\n this.near.set(nn.x, nn.y, nn.z, -nn.dot(bln))\n va.set(trf.x - blf.x, trf.y - blf.y, trf.z - blf.z)\n vb.set(tlf.x - brf.x, tlf.y - brf.y, tlf.z - brf.z)\n\n val nf = va.cross(vb)\n this.far.set(nf.x, nf.y, nf.z, -nf.dot(blf))\n\n // Copy the specified sub-viewport.\n this.viewport.copy(subViewport)\n }\n\n /**\n * See if the point is entirely within the frustum. The dot product of the point with each plane's vector\n * provides a distance to each plane. If this distance is less than 0, the point is clipped by that plane and\n * neither intersects nor is contained by the space enclosed by this Frustum.\n *\n * @param point Vector to check\n *\n * @return true if point contains in frustum\n */\n fun containsPoint(point: Vec3) = far.dot(point) > 0 && left.dot(point) > 0 && right.dot(point) > 0\n && top.dot(point) > 0 && bottom.dot(point) > 0 && near.dot(point) > 0\n\n /**\n * Determines whether a line segment intersects this frustum.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return true if the segment intersects or is contained in this frustum, otherwise false\n */\n fun intersectsSegment(pointA: Vec3, pointB: Vec3): Boolean {\n // First do a trivial accept test.\n if (containsPoint(pointA) || containsPoint(pointB)) return true\n if (pointA == pointB) return false\n for (i in planes.indices) {\n val plane = planes[i]\n // See if both points are behind the plane and therefore not in the frustum.\n if (plane.onSameSide(pointA, pointB) < 0) return false\n // See if the segment intersects the plane.\n if (plane.clip(pointA, pointB) != null) return true\n }\n return false // segment does not intersect frustum\n }\n\n /**\n * Determines whether a screen coordinate viewport intersects this frustum.\n *\n * @param viewport the viewport to test\n *\n * @return true if the viewport intersects or is contained in this frustum, otherwise false\n */\n fun intersectsViewport(viewport: Viewport) = this.viewport.intersects(viewport)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a line in Cartesian coordinates.\n */\nopen class Line {\n /**\n * This line's origin.\n */\n val origin = Vec3()\n /**\n * This line's direction.\n */\n val direction = Vec3()\n\n /**\n * Constructs a line with origin and direction both zero.\n */\n constructor()\n\n /**\n * Constructs a line with a specified origin and direction.\n *\n * @param origin the line's origin\n * @param direction the line's direction\n */\n constructor(origin: Vec3, direction: Vec3): this() { set(origin, direction) }\n\n /**\n * Constructs a line with the origin and direction from a specified line.\n *\n * @param line the line specifying origin and direction\n */\n constructor(line: Line): this(line.origin, line.direction)\n\n /**\n * Sets this line to a specified origin and direction.\n *\n * @param origin the line's new origin\n * @param direction the line's new direction\n *\n * @return this line, set to the new origin and direction\n */\n fun set(origin: Vec3, direction: Vec3) = apply {\n this.origin.copy(origin)\n this.direction.copy(direction)\n }\n\n /**\n * Sets this line to the specified segment. This line has its origin at the first endpoint and its direction\n * extending from the first endpoint to the second.\n *\n * @param pointA the segment's first endpoint\n * @param pointB the segment's second endpoint\n *\n * @return this line, set to the specified segment\n */\n fun setToSegment(pointA: Vec3, pointB: Vec3) = apply {\n origin.copy(pointA)\n direction.set(pointB.x - pointA.x, pointB.y - pointA.y, pointB.z - pointA.z)\n }\n\n /**\n * Computes a Cartesian point a specified distance along this line.\n *\n * @param distance The distance from this line's origin at which to compute the point.\n * @param result A pre-allocated [Vec3] instance in which to return the computed point.\n *\n * @return The specified result argument containing the computed point.\n */\n fun pointAt(distance: Double, result: Vec3): Vec3 {\n result.x = origin.x + direction.x * distance\n result.y = origin.y + direction.y * distance\n result.z = origin.z + direction.z * distance\n return result\n }\n\n /**\n * Computes the first intersection of a triangle strip with this line. This line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *
\n * The triangle strip is specified by a list of vertex points and a list of elements indicating the triangle strip\n * tessellation of those vertices. The triangle strip elements are interpreted in the same manner as OpenGL, where\n * each index indicates a vertex position rather than an actual index into the points array (e.g. a triangle strip\n * index of 1 indicates the XYZ tuple starting at array index 3).\n *\n * @param points an array of points containing XYZ tuples\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n * @param elements an array of indices into the points defining the triangle strip organization\n * @param count the number of indices to consider\n * @param result a pre-allocated Vec3 in which to return the nearest intersection point, if any\n *\n * @return true if this line intersects the triangle strip, otherwise false\n *\n * @throws IllegalArgumentException If array is empty, if the stride is less than 3,\n * if the count is less than 0\n */\n fun triStripIntersection(points: FloatArray, stride: Int, elements: ShortArray, count: Int, result: Vec3): Boolean {\n require(points.size >= stride) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidStride\")\n }\n require(elements.isNotEmpty()) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidCount\")\n }\n\n // Taken from Moller and Trumbore\n // http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf\n\n // Adapted from the original ray-triangle intersection algorithm to optimize for ray-triangle strip\n // intersection. We optimize by reusing constant terms, replacing use of Vec3 with inline primitives, and\n // exploiting the triangle strip organization to reuse computations common to adjacent triangles. These\n // optimizations reduced worst-case terrain picking performance for Web WorldWind by approximately 50% in\n // Chrome on a 2010 iMac and a Nexus 9.\n val vx = direction.x\n val vy = direction.y\n val vz = direction.z\n val sx = origin.x\n val sy = origin.y\n val sz = origin.z\n var tMin = Double.POSITIVE_INFINITY\n val epsilon = 0.00001\n\n // Get the triangle strip's first vertex.\n var vertex = elements[0] * stride\n var vert1x = points[vertex++]\n var vert1y = points[vertex++]\n var vert1z = points[vertex]\n\n // Get the triangle strip's second vertex.\n vertex = elements[1] * stride\n var vert2x = points[vertex++]\n var vert2y = points[vertex++]\n var vert2z = points[vertex]\n\n // Compute the intersection of each triangle with the specified ray.\n for (idx in 2 until count) {\n // Move the last two vertices into the first two vertices. This takes advantage of the triangle strip's\n // structure and avoids redundant reads from points and elements. During the first iteration this places the\n // triangle strip's first three vertices in vert0, vert1 and vert2, respectively.\n val vert0x = vert1x\n val vert0y = vert1y\n val vert0z = vert1z\n vert1x = vert2x\n vert1y = vert2y\n vert1z = vert2z\n\n // Get the triangle strip's next vertex.\n vertex = elements[idx] * stride\n vert2x = points[vertex++]\n vert2y = points[vertex++]\n vert2z = points[vertex]\n\n // find vectors for two edges sharing point a: vert1 - vert0 and vert2 - vert0\n val edge1x = vert1x - vert0x\n val edge1y = vert1y - vert0y\n val edge1z = vert1z - vert0z\n val edge2x = vert2x - vert0x\n val edge2y = vert2y - vert0y\n val edge2z = vert2z - vert0z\n\n // Compute cross product of line direction and edge2\n val px = vy * edge2z - vz * edge2y\n val py = vz * edge2x - vx * edge2z\n val pz = vx * edge2y - vy * edge2x\n\n // Get determinant\n val det = edge1x * px + edge1y * py + edge1z * pz // edge1 dot p\n // if det is near zero then ray lies in plane of triangle\n if (det > -epsilon && det < epsilon) continue\n\n val invDet = 1.0 / det\n\n // Compute distance for vertex A to ray origin: origin - vert0\n val tx = sx - vert0x\n val ty = sy - vert0y\n val tz = sz - vert0z\n\n // Calculate u parameter and test bounds: 1/det * t dot p\n val u = invDet * (tx * px + ty * py + tz * pz)\n if (u < -epsilon || u > 1 + epsilon) continue\n\n // Prepare to test v parameter: tvec cross edge1\n val qx = ty * edge1z - tz * edge1y\n val qy = tz * edge1x - tx * edge1z\n val qz = tx * edge1y - ty * edge1x\n\n // Calculate v parameter and test bounds: 1/det * dir dot q\n val v = invDet * (vx * qx + vy * qy + vz * qz)\n if (v < -epsilon || u + v > 1 + epsilon) continue\n\n // Calculate the point of intersection on the line: t = 1/det * edge2 dot q\n val t = invDet * (edge2x * qx + edge2y * qy + edge2z * qz)\n if (t >= 0 && t < tMin) tMin = t\n }\n if (tMin != Double.POSITIVE_INFINITY) result.set(sx + vx * tMin, sy + vy * tMin, sz + vz * tMin)\n return tMin != Double.POSITIVE_INFINITY\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Line) return false\n return origin == other.origin && direction == other.direction\n }\n\n override fun hashCode(): Int {\n var result = origin.hashCode()\n result = 31 * result + direction.hashCode()\n return result\n }\n\n override fun toString() = \"Line(origin=$origin, direction=$direction)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.normalizeLongitude\nimport earth.worldwind.shape.PathType\nimport earth.worldwind.shape.PathType.GREAT_CIRCLE\nimport earth.worldwind.shape.PathType.RHUMB_LINE\nimport earth.worldwind.util.format.format\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.offsetIn\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographic location with a latitude and longitude.\n */\nopen class Location(\n /**\n * The location's latitude.\n */\n var latitude: Angle,\n /**\n * The location's longitude.\n */\n var longitude: Angle\n) {\n /**\n * Constructs a location with latitude and longitude both 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO)\n\n /**\n * Constructs a location with the latitude and longitude of a specified location.\n *\n * @param location the location specifying the coordinates\n */\n constructor(location: Location): this(location.latitude, location.longitude)\n\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-15\n protected val timeZoneLatitudes = mapOf(\n -12 to -45, // GMT-12\n -11 to -30, // GMT-11\n -10 to 20, // GMT-10\n -9 to 45, // GMT-9\n -8 to 40, // GMT-8\n -7 to 35, // GMT-7\n -6 to 30, // GMT-6\n -5 to 25, // GMT-5\n -4 to -15, // GMT-4\n -3 to 0, // GMT-3\n -2 to 45, // GMT-2\n -1 to 30, // GMT-1\n 0 to 30, // GMT+0\n 1 to 20, // GMT+1\n 2 to 20, // GMT+2\n 3 to 25, // GMT+3\n 4 to 30, // GMT+4\n 5 to 35, // GMT+5\n 6 to 30, // GMT+6\n 7 to 25, // GMT+7\n 8 to -30, // GMT+8\n 9 to -30, // GMT+9\n 10 to -30, // GMT+10\n 11 to -45, // GMT+11\n 12 to -45 // GMT+12\n )\n\n /**\n * Constructs a location with a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n *\n * @return the new location\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n Location(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Constructs a location with a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n *\n * @return the new location\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double) =\n Location(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Constructs an approximate location for a specified time zone. Used when selecting an initial camera position\n * based on the device's current time zone.\n *\n * @param timeZone the time zone in question\n *\n * @return the new location\n */\n @JvmStatic\n fun fromTimeZone(timeZone: TimeZone): Location {\n val secPerHour = 3.6e3\n val offsetSec = Clock.System.now().offsetIn(timeZone).totalSeconds\n val offsetHours = (offsetSec / secPerHour).toInt()\n // use a pre-determined latitude or 0 if none is available\n val latDegrees = (timeZoneLatitudes[offsetHours]?:0).toDouble()\n val lonDegrees = 180.0 * offsetHours / 12 // center on the time zone's average longitude\n return Location(fromDegrees(latDegrees), fromDegrees(lonDegrees))\n }\n\n /**\n * Determines whether a list of locations crosses the antimeridian.\n *\n * @param locations the locations to test\n *\n * @return true if the antimeridian is crossed, false otherwise\n */\n @JvmStatic\n fun locationsCrossAntimeridian(locations: List): Boolean {\n // Check the list's length. A list with fewer than two locations does not cross the antimeridan.\n val len = locations.size\n if (len < 2) return false\n\n // Compute the longitude attributes associated with the first location.\n var lon1 = normalizeLongitude(locations[0].longitude.inDegrees)\n var sig1 = sign(lon1)\n\n // Iterate over the segments in the list. A segment crosses the antimeridian if its endpoint longitudes have\n // different signs and are more than 180 degrees apart (but not 360, which indicates the longitudes are the same).\n for (idx in 1 until len) {\n val lon2 = normalizeLongitude(locations[idx].longitude.inDegrees)\n val sig2 = sign(lon2)\n if (sig1 != sig2) {\n val delta = abs(lon1 - lon2)\n if (delta > 180 && delta < 360) return true\n }\n lon1 = lon2\n sig1 = sig2\n }\n return false\n }\n\n @JvmStatic\n fun fromString(coordinates: String): Location {\n val tokens = coordinates.replace(\"[*'\\\"NSEW;°′″,]\".toRegex(), \" \").trim { it <= ' ' }.split(\"\\\\s+\".toRegex())\n // Lat\n var lat = 0.0\n var exponent = 0\n var i = 0\n while (i < tokens.size / 2) {\n lat += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n // Lon\n var lon = 0.0\n exponent = 0\n while (i < tokens.size) {\n lon += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n return fromDegrees(if (coordinates.contains(\"S\")) -lat else lat, if (coordinates.contains(\"W\")) -lon else lon)\n }\n }\n\n /**\n * Sets this location to a specified latitude and longitude.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle) = apply {\n this.latitude = latitude\n this.longitude = longitude\n }\n\n /**\n * Sets this location to a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n set(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Sets this location to a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double) =\n set(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Sets this location to the latitude and longitude of a specified location.\n *\n * @param location the location specifying the new coordinates\n *\n * @return this location with its latitude and longitude set to that of the specified location\n */\n fun copy(location: Location) = set(location.latitude, location.longitude)\n\n /**\n * Compute a location along a path between two locations. The amount indicates the fraction of the path at which to\n * compute a location. This value is typically between 0 and 1, where 0 indicates the begin location (this location)\n * and 1 indicates the end location.\n *\n * @param endLocation the path's end location\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a location\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun interpolateAlongPath(endLocation: Location, pathType: PathType, amount: Double, result: Location): Location {\n return if (this == endLocation) {\n result.latitude = latitude\n result.longitude = longitude\n result\n } else when (pathType) {\n GREAT_CIRCLE -> {\n val azimuth = greatCircleAzimuth(endLocation)\n val distanceRadians = greatCircleDistance(endLocation) * amount\n greatCircleLocation(azimuth, distanceRadians, result)\n }\n RHUMB_LINE -> {\n val azimuth = rhumbAzimuth(endLocation)\n val distanceRadians = rhumbDistance(endLocation) * amount\n rhumbLocation(azimuth, distanceRadians, result)\n }\n else -> {\n val azimuth = linearAzimuth(endLocation)\n val distanceRadians = linearDistance(endLocation) * amount\n linearLocation(azimuth, distanceRadians, result)\n }\n }\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the great circle path between this location and a specified\n * location. This angle can be used as the starting azimuth for a great circle path beginning at this location, and\n * passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed azimuth\n */\n fun greatCircleAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n if (lon1 == lon2) return if (lat1 > lat2) POS180 else ZERO\n\n // Taken from \"Map Projections - A Working Manual\", page 30, equation 5-4b.\n // The atan2() function is used in place of the traditional atan(y/x) to simplify the case when x == 0.\n val y = cos(lat2) * sin(lon2 - lon1)\n val x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1)\n val azimuthRadians = atan2(y, x)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the great circle path between this location and a specified location. In\n * radians, this angle is the arc length of the segment between the two locations. To compute a distance in meters\n * from this value, multiply the return value by the radius of the globe. This function uses a spherical model, not\n * elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun greatCircleDistance(location: Location): Double {\n val lat1Radians = latitude.inRadians\n val lon1Radians = longitude.inRadians\n val lat2Radians = location.latitude.inRadians\n val lon2Radians = location.longitude.inRadians\n if (lat1Radians == lat2Radians && lon1Radians == lon2Radians) return 0.0\n\n // \"Haversine formula,\" taken from http://en.wikipedia.org/wiki/Great-circle_distance#Formul.C3.A6\n val a = sin((lat2Radians - lat1Radians) / 2.0)\n val b = sin((lon2Radians - lon1Radians) / 2.0)\n val c = a * a + cos(lat1Radians) * cos(lat2Radians) * b * b\n val distanceRadians = 2.0 * asin(sqrt(c))\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the great circle path starting at this location and traversing with the specified\n * azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun greatCircleLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n val cosLat = cos(latRadians)\n val sinLat = sin(latRadians)\n val cosAzimuth = cos(azimuthRadians)\n val sinAzimuth = sin(azimuthRadians)\n val sinDistance = sin(distanceRadians)\n val cosDistance = cos(distanceRadians)\n\n // Taken from \"Map Projections - A Working Manual\", page 31, equation 5-5 and 5-6.\n val endLatRadians = asin(sinLat * cosDistance + cosLat * sinDistance * cosAzimuth)\n val endLonRadians = lonRadians + atan2(\n sinDistance * sinAzimuth, cosLat * cosDistance - sinLat * sinDistance * cosAzimuth\n )\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the rhumb path (line of constant azimuth) between this\n * location and a specified location. This angle can be used as the starting azimuth for a rhumb path beginning at\n * this location, and passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the rhumb path's ending location\n *\n * @return the computed azimuth\n */\n fun rhumbAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the rhumb path (line of constant azimuth) between this location and a specified\n * location. In radians, this angle is the arc length of the segment between the two locations. To compute a\n * distance in meters from this value, multiply the return value by the radius of the globe. This function uses a\n * spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun rhumbDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(lat1)\n else {\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n dLat / dPhi\n }\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + q * q * dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on a rhumb path (line of constant azimuth) starting at this location and traversing with\n * the specified azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun rhumbLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n val dLat = endLatRadians - latRadians\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(latRadians)\n else {\n val dPhi = ln(tan(endLatRadians / 2 + PI / 4) / tan(latRadians / 2 + PI / 4))\n dLat / dPhi\n }\n val dLon = distanceRadians * sin(azimuthRadians) / q\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + dLon + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the linear path between this location and a specified\n * location. This angle can be used as the starting azimuth for a linear path beginning at this location, and\n * passing through the specified location. This function uses a flat-earth approximation proximal to this location.\n *\n * @param location the linear path's ending location\n *\n * @return the computed azimuth\n */\n fun linearAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = lat2 - lat1\n\n // If longitude change is over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the linear path between this location and a specified location. In radians, this\n * angle is the arc length of the segment between the two locations. To compute a distance in meters from this\n * value, multiply the return value by the radius of the globe. This function uses a flat-earth approximation\n * proximal to this location.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun linearDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n\n // If lonChange over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the linear path starting at this location and traversing with the specified azimuth and\n * angular distance. This function uses a flat-earth approximation proximal to this location.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun linearLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + distanceRadians * sin(azimuthRadians) + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n fun equals(other: Location, tolerance: Double): Boolean {\n if (this === other) return true\n return abs(latitude.inDegrees - other.latitude.inDegrees) < tolerance\n && abs(longitude.inDegrees - other.longitude.inDegrees) < tolerance\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Location) return false\n return latitude.inDegrees == other.latitude.inDegrees && longitude.inDegrees == other.longitude.inDegrees\n }\n\n override fun hashCode(): Int {\n var result = latitude.hashCode()\n result = 31 * result + longitude.hashCode()\n return result\n }\n\n override fun toString() = \"Location(latitude=$latitude, longitude=$longitude)\"\n\n fun toDDString() = \"%s%09.6f°, %s%010.6f°\"\n .format(latitude.latitudeLetter, abs(latitude.inDegrees), longitude.longitudeLetter, abs(longitude.inDegrees))\n\n fun toDMString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%06.3f′, %s%03d°%06.3f′\".format(\n latitude.latitudeLetter, lat[1], lat[2] + lat[3] / 60.0,\n longitude.longitudeLetter, lon[1], lon[2] + lon[3] / 60.0\n )\n }\n\n fun toDMSString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%02d′%04.1f″, %s%03d°%02d′%04.1f″\".format(\n latitude.latitudeLetter, lat[1], lat[2], lat[3],\n longitude.longitudeLetter, lon[1], lon[2], lon[3]\n )\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\n\nopen class LookAt(\n val position: Position, var altitudeMode: AltitudeMode, var range: Double, var heading: Angle, var tilt: Angle, var roll: Angle,\n) {\n constructor(): this(\n position = Position(),\n altitudeMode = AltitudeMode.ABSOLUTE,\n range = 0.0,\n heading = ZERO,\n tilt = ZERO,\n roll = ZERO)\n\n constructor(lookAt: LookAt): this(\n Position(lookAt.position),\n lookAt.altitudeMode,\n lookAt.range,\n lookAt.heading,\n lookAt.tilt,\n lookAt.roll\n )\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n range: Double, heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.range = range\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(lookAt: LookAt) = set(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude,\n lookAt.altitudeMode, lookAt.range, lookAt.heading, lookAt.tilt, lookAt.roll\n )\n\n override fun toString() = \"LookAt(position=$position, altitudeMode=$altitudeMode, range=$range, heading=$heading, tilt=$tilt, roll=$roll)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.cos\nimport kotlin.math.sin\n\n/**\n * 3 x 3 matrix in row-major order.\n */\nopen class Matrix3 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n /**\n * The components for the 3 x 3 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n )\n }\n\n /**\n * Constructs a 3 x 3 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 3 x 3 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n */\n constructor(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ): this(doubleArrayOf(m11, m12, m13, m21, m22, m23, m31, m32, m33))\n\n /**\n * Constructs a 3 x 3 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix3): this(matrix.m.copyOf())\n\n /**\n * Sets this 3 x 3 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m21\n m[4] = m22\n m[5] = m23\n m[6] = m31\n m[7] = m32\n m[8] = m33\n }\n\n /**\n * Sets this 3 x 3 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix3) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double) = apply {\n m[2] = x\n m[5] = y\n }\n\n /**\n * Sets the rotation components of this matrix to a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[3] = s\n m[4] = c\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[4] = yScale\n }\n\n /**\n * Sets this matrix to the 3 x 3 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = x\n m[3] = 0.0\n m[4] = 1.0\n m[5] = y\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[2] = 0.0\n m[3] = s\n m[4] = c\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = yScale\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that flips and shifts the y-axis. The resultant matrix maps Y=0 to Y=1 and Y=1 to Y=0.\n * All existing values are overwritten. This matrix is usually used to change the coordinate origin from an upper\n * left coordinate origin to a lower left coordinate origin.\n *
\n * This matrix is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix set to values described above\n */\n fun setToVerticalFlip() = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = -1.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that transforms normalized coordinates from a source sector to a destination sector.\n * Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner and (1, 1)\n * indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its corresponding\n * normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix set to values described above\n */\n fun setToTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n m[0] = xs\n m[1] = 0.0\n m[2] = xt\n m[3] = 0.0\n m[4] = ys\n m[5] = yt\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix3, b: Matrix3) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[3] + ma[2] * mb[6]\n m[1] = ma[0] * mb[1] + ma[1] * mb[4] + ma[2] * mb[7]\n m[2] = ma[0] * mb[2] + ma[1] * mb[5] + ma[2] * mb[8]\n m[3] = ma[3] * mb[0] + ma[4] * mb[3] + ma[5] * mb[6]\n m[4] = ma[3] * mb[1] + ma[4] * mb[4] + ma[5] * mb[7]\n m[5] = ma[3] * mb[2] + ma[4] * mb[5] + ma[5] * mb[8]\n m[6] = ma[6] * mb[0] + ma[7] * mb[3] + ma[8] * mb[6]\n m[7] = ma[6] * mb[1] + ma[7] * mb[4] + ma[8] * mb[7]\n m[8] = ma[6] * mb[2] + ma[7] * mb[5] + ma[8] * mb[8]\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double) = apply {\n multiplyByMatrix(1.0, 0.0, x, 0.0, 1.0, y, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(c, -s, 0.0, s, c, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double) = apply {\n multiplyByMatrix(xScale, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a matrix that flips and shifts the y-axis. The vertical flip matrix maps Y=0 to Y=1 and\n * Y=1 to Y=0. This matrix is usually used to change the coordinate origin from an upper left coordinate origin to a\n * lower left coordinate origin.\n *
\n * This is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix multiplied by a vertical flip matrix implied by values described above\n */\n fun multiplyByVerticalFlip() = apply {\n m[2] += m[1]\n m[5] += m[4]\n m[8] += m[7]\n m[1] = -m[1]\n m[4] = -m[4]\n m[7] = -m[7]\n }\n\n /**\n * Multiplies this matrix by a matrix that transforms normalized coordinates from a source sector to a destination\n * sector. Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner\n * and (1, 1) indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its\n * corresponding normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix multiplied by the transform matrix implied by values described above\n */\n fun multiplyByTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n\n m[2] += m[0] * xt + m[1] * yt\n m[5] += m[3] * xt + m[4] * yt\n m[8] += m[6] * xt + m[6] * yt\n m[0] *= xs\n m[1] *= ys\n m[3] *= xs\n m[4] *= ys\n m[6] *= xs\n m[7] *= ys\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n ma[0] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[1] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[2] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[3]\n ma1 = ma[4]\n ma2 = ma[5]\n ma[3] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[4] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[5] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[6]\n ma1 = ma[7]\n ma2 = ma[8]\n ma[6] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[7] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[8] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[3]\n mr2 = m[4]\n mr3 = m[5]\n m[3] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[4] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[5] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[6]\n mr2 = m[7]\n mr3 = m[8]\n m[6] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[7] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[8] = mr1 * m13 + mr2 * m23 + mr3 * m33\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[3]\n m[3] = tmp\n\n tmp = m[2]\n m[2] = m[6]\n m[6] = tmp\n\n tmp = m[5]\n m[5] = m[7]\n m[7] = tmp\n }\n\n /**\n * Transposes the specified matrix and stores the result in this matrix.\n *\n * @param matrix the matrix whose transpose is computed\n *\n * @return this matrix set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix3) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[3]\n m[2] = matrix.m[6]\n m[3] = matrix.m[1]\n m[4] = matrix.m[4]\n m[5] = matrix.m[7]\n m[6] = matrix.m[2]\n m[7] = matrix.m[5]\n m[8] = matrix.m[8]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix3fv.\n *\n * @param result a pre-allocated array of length 9 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 9) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[5].toFloat()\n result[o] = m[8].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert(): Matrix3 {\n throw UnsupportedOperationException(\"Matrix3.invert is not implemented\") // TODO\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun invertMatrix(matrix: Matrix3): Matrix3 {\n TODO(\"Matrix3.invertMatrix is not implemented\")\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix3) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix3([${m[0]}, ${m[1]}, ${m[2]}], [${m[3]}, ${m[4]}, ${m[5]}], [${m[6]}, ${m[7]}, ${m[8]}])\"\n}",null,"package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/**\n * 4 x 4 matrix in row-major order.\n */\nopen class Matrix4 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1.0e-8\n protected const val TINY = 1.0e-20\n protected const val EPSILON = 1.0e-10\n protected const val MAX_SWEEPS = 32\n\n /**\n * The components for the 4 x 4 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0\n )\n\n /**\n * Inverts a 4 x 4 matrix, storing the result in a destination argument. The source and destination arguments\n * represent a 4 x 4 matrix with a one-dimensional array in row-major order. The source and destination may\n * reference the same array.\n *\n * @param src the matrix components to invert in row-major order\n * @param dst the inverted components in row-major order\n *\n * @return true if the matrix was successfully inverted, false otherwise\n */\n protected fun invert(src: DoubleArray, dst: DoubleArray): Boolean {\n // Copy the specified matrix into a mutable two-dimensional array.\n val a = Array(4) { DoubleArray(4) }\n a[0][0] = src[0]\n a[0][1] = src[1]\n a[0][2] = src[2]\n a[0][3] = src[3]\n a[1][0] = src[4]\n a[1][1] = src[5]\n a[1][2] = src[6]\n a[1][3] = src[7]\n a[2][0] = src[8]\n a[2][1] = src[9]\n a[2][2] = src[10]\n a[2][3] = src[11]\n a[3][0] = src[12]\n a[3][1] = src[13]\n a[3][2] = src[14]\n a[3][3] = src[15]\n\n val index = IntArray(4)\n var d = ludcmp(a, index)\n\n // Compute the matrix's determinant.\n for (i in 0..3) d *= a[i][i]\n\n // The matrix is singular if its determinant is zero or very close to zero.\n if (abs(d) < NEAR_ZERO_THRESHOLD) return false\n\n val y = Array(4) { DoubleArray(4) }\n val col = DoubleArray(4)\n for (j in 0..3) {\n for (i in 0..3) col[i] = 0.0\n col[j] = 1.0\n lubksb(a, index, col)\n for (i in 0..3) y[i][j] = col[i]\n }\n dst[0] = y[0][0]\n dst[1] = y[0][1]\n dst[2] = y[0][2]\n dst[3] = y[0][3]\n dst[4] = y[1][0]\n dst[5] = y[1][1]\n dst[6] = y[1][2]\n dst[7] = y[1][3]\n dst[8] = y[2][0]\n dst[9] = y[2][1]\n dst[10] = y[2][2]\n dst[11] = y[2][3]\n dst[12] = y[3][0]\n dst[13] = y[3][1]\n dst[14] = y[3][2]\n dst[15] = y[3][3]\n return true\n }\n\n /**\n * Utility method to perform an LU factorization of a matrix. Algorithm derived from \"Numerical Recipes in C\", Press\n * et al., 1988.\n *\n * @param A matrix to be factored\n * @param index permutation vector\n *\n * @return condition number of matrix\n */\n protected fun ludcmp(A: Array, index: IntArray): Double {\n val vv = DoubleArray(4)\n var d = 1.0\n var temp: Double\n for (i in 0..3) {\n var big = 0.0\n for (j in 0..3) if (abs(A[i][j]).also { temp = it } > big) big = temp\n if (big == 0.0) return 0.0 // Matrix is singular if the entire row contains zero.\n else vv[i] = 1 / big\n }\n for (j in 0..3) {\n for (i in 0 until j) {\n var sum = A[i][j]\n for (k in 0 until i) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n }\n var big = 0.0\n var imax = -1\n var dum: Double\n for (i in j..3) {\n var sum = A[i][j]\n for (k in 0 until j) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n if (vv[i] * abs(sum).also { dum = it } >= big) {\n big = dum\n imax = i\n }\n }\n if (j != imax) {\n for (k in 0..3) {\n dum = A[imax][k]\n A[imax][k] = A[j][k]\n A[j][k] = dum\n }\n d = -d\n vv[imax] = vv[j]\n }\n index[j] = imax\n if (A[j][j] == 0.0) A[j][j] = TINY\n if (j != 3) {\n dum = 1.0 / A[j][j]\n for (i in (j + 1)..3) {\n A[i][j] *= dum\n }\n }\n }\n return d\n }\n\n /**\n * Utility method to solve a linear system with an LU factorization of a matrix. Solves Ax=b, where A is in LU\n * factorized form. Algorithm derived from \"Numerical Recipes in C\", Press et al., 1988\n *\n * @param A an LU factorization of a matrix\n * @param index permutation vector of that LU factorization\n * @param b vector to be solved\n */\n protected fun lubksb(A: Array, index: IntArray, b: DoubleArray) {\n var ii = -1\n for (i in 0..3) {\n val ip = index[i]\n var sum = b[ip]\n b[ip] = b[i]\n if (ii != -1) for (j in ii until i) sum -= A[i][j] * b[j]\n else if (sum != 0.0) ii = i\n b[i] = sum\n }\n for (i in 3 downTo 0) {\n var sum = b[i]\n for (j in (i + 1)..3) sum -= A[i][j] * b[j]\n b[i] = sum / A[i][i]\n }\n }\n }\n\n /**\n * Constructs a 4 x 4 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 4 x 4 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n */\n constructor(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ): this(doubleArrayOf(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))\n\n /**\n * Constructs a 4 x 4 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix4): this(matrix.m.copyOf())\n\n /**\n * Sets this 4 x 4 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m14\n m[4] = m21\n m[5] = m22\n m[6] = m23\n m[7] = m24\n m[8] = m31\n m[9] = m32\n m[10] = m33\n m[11] = m34\n m[12] = m41\n m[13] = m42\n m[14] = m43\n m[15] = m44\n }\n\n /**\n * Sets this 4 x 4 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix4) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] = x\n m[7] = y\n m[11] = z\n }\n\n /**\n * Sets the rotation components of this matrix to a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[5] = yScale\n m[10] = zScale\n }\n\n /**\n * Sets this matrix to the 4 x 4 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double, z: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = x\n m[4] = 0.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = y\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 1.0\n m[11] = z\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[3] = 0.0\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[7] = 0.0\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = yScale\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = zScale\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix4, b: Matrix4) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[4] + ma[2] * mb[8] + ma[3] * mb[12]\n m[1] = ma[0] * mb[1] + ma[1] * mb[5] + ma[2] * mb[9] + ma[3] * mb[13]\n m[2] = ma[0] * mb[2] + ma[1] * mb[6] + ma[2] * mb[10] + ma[3] * mb[14]\n m[3] = ma[0] * mb[3] + ma[1] * mb[7] + ma[2] * mb[11] + ma[3] * mb[15]\n m[4] = ma[4] * mb[0] + ma[5] * mb[4] + ma[6] * mb[8] + ma[7] * mb[12]\n m[5] = ma[4] * mb[1] + ma[5] * mb[5] + ma[6] * mb[9] + ma[7] * mb[13]\n m[6] = ma[4] * mb[2] + ma[5] * mb[6] + ma[6] * mb[10] + ma[7] * mb[14]\n m[7] = ma[4] * mb[3] + ma[5] * mb[7] + ma[6] * mb[11] + ma[7] * mb[15]\n m[8] = ma[8] * mb[0] + ma[9] * mb[4] + ma[10] * mb[8] + ma[11] * mb[12]\n m[9] = ma[8] * mb[1] + ma[9] * mb[5] + ma[10] * mb[9] + ma[11] * mb[13]\n m[10] = ma[8] * mb[2] + ma[9] * mb[6] + ma[10] * mb[10] + ma[11] * mb[14]\n m[11] = ma[8] * mb[3] + ma[9] * mb[7] + ma[10] * mb[11] + ma[11] * mb[15]\n m[12] = ma[12] * mb[0] + ma[13] * mb[4] + ma[14] * mb[8] + ma[15] * mb[12]\n m[13] = ma[12] * mb[1] + ma[13] * mb[5] + ma[14] * mb[9] + ma[15] * mb[13]\n m[14] = ma[12] * mb[2] + ma[13] * mb[6] + ma[14] * mb[10] + ma[15] * mb[14]\n m[15] = ma[12] * mb[3] + ma[13] * mb[7] + ma[14] * mb[11] + ma[15] * mb[15]\n }\n\n /**\n * Sets this matrix to an infinite perspective projection matrix for the specified viewport dimensions, vertical\n * field of view and near clip distance.\n *
\n * An infinite perspective projection matrix maps points in a manner similar to a standard projection matrix, but is\n * not bounded by depth. Objects at any depth greater than or equal to the near distance may be rendered. In\n * addition, this matrix interprets vertices with a w-coordinate of 0 as infinitely far from the camera in the\n * direction indicated by the point's coordinates.\n *
\n * The field of view must be positive and less than 180. The near distance must be positive.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near distance is\n * less than or equal to zero\n */\n fun setToInfiniteProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -1.0\n m[11] = -2 * nearDistance\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a perspective projection matrix for the specified viewport dimensions, vertical field of view\n * and clip distances.\n *
\n * A perspective projection matrix maps points in eye coordinates into clip coordinates in a way that causes distant\n * objects to appear smaller, and preserves the appropriate depth information for each point. In model coordinates,\n * a perspective projection is defined by frustum originating at the eye position and extending outward in the\n * viewer's direction. The near distance and the far distance identify the minimum and maximum distance,\n * respectively, at which an object in the scene is visible.\n *
\n * The field of view must be positive and less than 180. Near and far distances must be positive and must not be\n * equal to one another.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n * @param farDistance the far clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near and far\n * distances are equal, or if either the near or far distance are less than or\n * equal to zero\n */\n fun setToPerspectiveProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double, farDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance != farDistance) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n require(nearDistance > 0 && farDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -(farDistance + nearDistance) / (farDistance - nearDistance)\n m[11] = -(2 * nearDistance * farDistance) / (farDistance - nearDistance)\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a screen projection matrix for the specified viewport dimensions.\n *
\n * A screen projection matrix is an orthographic projection that interprets points in model coordinates as\n * representing a screen XY and a Z depth. Screen projection matrices therefore map coordinates directly into screen\n * coordinates without modification. A point's XY coordinates are interpreted as literal screen coordinates and must\n * be in the viewport to be visible. A point's Z coordinate is interpreted as a depth value that ranges from 0 to 1.\n * Additionally, the screen projection matrix preserves the depth value returned by\n * `RenderContext.project`.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero\n */\n fun setToScreenProjection(viewportWidth: Double, viewportHeight: Double) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidHeight\")\n }\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.57.\n // Simplified to assume that the viewport origin is (0, 0).\n //\n // The third row of this projection matrix is configured so that points with z coordinates representing\n // depth values ranging from 0 to 1 are not modified after transformation into window coordinates. This\n // projection matrix maps z values in the range [0, 1] to the range [-1, 1] by applying the following\n // function to incoming z coordinates:\n //\n // zp = z0 * 2 - 1\n //\n // Where 'z0' is the point's z coordinate and 'zp' is the projected z coordinate. The GPU then maps the\n // projected z coordinate into window coordinates in the range [0, 1] by applying the following function:\n //\n // zw = zp * 0.5 + 0.5\n //\n // The result is that a point's z coordinate is effectively passed to the GPU without modification.\n m[0] = 2 / viewportWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = -1.0\n m[4] = 0.0\n m[5] = 2 / viewportHeight\n m[6] = 0.0\n m[7] = -1.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 2.0\n m[11] = -1.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the symmetric covariance Matrix computed from an array of points.\n *
\n * The computed covariance matrix represents the correlation between each pair of x-, y-, and z-coordinates as\n * they're distributed about the point array's arithmetic mean. Its layout is as follows:\n *
\n * ` C(x, x) C(x, y) C(x, z)
C(x, y) C(y, y) C(y, z)
C(x, z) C(y, z) C(z, z) `\n *
\n * C(i, j) is the covariance of coordinates i and j, where i or j are a coordinate's dispersion about its mean\n * value. If any entry is zero, then there's no correlation between the two coordinates defining that entry. If the\n * returned matrix is diagonal, then all three coordinates are uncorrelated, and the specified point is distributed\n * evenly about its mean point.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return this matrix set to the covariance matrix for the specified array of points\n *\n * @throws IllegalArgumentException If the array is null or empty, if the count is less than 0, or if the stride is\n * less than 3\n */\n fun setToCovarianceOfPoints(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidCount\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidStride\")\n }\n\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var c11 = 0.0\n var c22 = 0.0\n var c33 = 0.0\n var c12 = 0.0\n var c13 = 0.0\n var c23 = 0.0\n var numPoints = 0.0\n for (idx in 0 until count step stride) {\n mx += array[idx]\n my += array[idx + 1]\n mz += array[idx + 2]\n numPoints++\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n for (idx in 0 until count step stride) {\n val dx = array[idx] - mx\n val dy = array[idx + 1] - my\n val dz = array[idx + 2] - mz\n c11 += dx * dx\n c22 += dy * dy\n c33 += dz * dz\n c12 += dx * dy // c12 = c21\n c13 += dx * dz // c13 = c31\n c23 += dy * dz // c23 = c32\n }\n m[0] = c11 / numPoints\n m[1] = c12 / numPoints\n m[2] = c13 / numPoints\n m[3] = 0.0\n m[4] = c12 / numPoints\n m[5] = c22 / numPoints\n m[6] = c23 / numPoints\n m[7] = 0.0\n m[8] = c13 / numPoints\n m[9] = c23 / numPoints\n m[10] = c33 / numPoints\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 0.0\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] += m[0] * x + m[1] * y + m[2] * z\n m[7] += m[4] * x + m[5] * y + m[6] * z\n m[11] += m[8] * x + m[9] * y + m[10] * z\n m[15] += m[12] * x + m[13] * y + m[14] * z\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis.\n *\n * @param x the X component of the rotation axis\n * @param y the Y component of the rotation axis\n * @param z the Z component of the rotation axis\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(\n c + (1 - c) * x * x,\n (1 - c) * x * y - s * z,\n (1 - c) * x * z + s * y,\n 0.0,\n (1 - c) * x * y + s * z,\n c + (1 - c) * y * y,\n (1 - c) * y * z - s * x,\n 0.0,\n (1 - c) * x * z - s * y,\n (1 - c) * y * z + s * x,\n c + (1 - c) * z * z,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n )\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] *= xScale\n m[4] *= xScale\n m[8] *= xScale\n m[12] *= xScale\n m[1] *= yScale\n m[5] *= yScale\n m[9] *= yScale\n m[13] *= yScale\n m[2] *= zScale\n m[6] *= zScale\n m[10] *= zScale\n m[14] *= zScale\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n var ma3 = ma[3]\n ma[0] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[1] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[2] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[3] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[4]\n ma1 = ma[5]\n ma2 = ma[6]\n ma3 = ma[7]\n ma[4] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[5] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[6] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[7] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[8]\n ma1 = ma[9]\n ma2 = ma[10]\n ma3 = ma[11]\n ma[8] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[9] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[10] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[11] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[12]\n ma1 = ma[13]\n ma2 = ma[14]\n ma3 = ma[15]\n ma[12] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[13] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[14] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[15] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n var mr4 = m[3]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[3] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[4]\n mr2 = m[5]\n mr3 = m[6]\n mr4 = m[7]\n m[4] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[5] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[6] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[7] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[8]\n mr2 = m[9]\n mr3 = m[10]\n mr4 = m[11]\n m[8] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[9] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[10] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[11] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[12]\n mr2 = m[13]\n mr3 = m[14]\n mr4 = m[15]\n m[12] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[13] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[14] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[15] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[3]\n m[3] = m[12]\n m[12] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n tmp = m[7]\n m[7] = m[13]\n m[13] = tmp\n\n tmp = m[11]\n m[11] = m[14]\n m[14] = tmp\n }\n\n /**\n * Sets this matrix to the transpose of a specified matrix.\n *\n * @param matrix the matrix whose transpose is to be computed\n *\n * @return this matrix with its values set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix4) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = matrix.m[12]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = matrix.m[13]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = matrix.m[14]\n m[12] = matrix.m[3]\n m[13] = matrix.m[7]\n m[14] = matrix.m[11]\n m[15] = matrix.m[15]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix4fv.\n *\n * @param result a pre-allocated array of length 16 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 16) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[8].toFloat()\n result[o++] = m[12].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[5].toFloat()\n result[o++] = m[9].toFloat()\n result[o++] = m[13].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[10].toFloat()\n result[o++] = m[14].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[11].toFloat()\n result[o] = m[15].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert() = apply {\n val success = invert(m, m) // passing the same array as src and dst is supported\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the specified matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n *\n * @throws IllegalArgumentException If the matrix cannot be inverted\n */\n fun invertMatrix(matrix: Matrix4) = apply {\n val success = invert(matrix.m, m) // store inverse of matrix in this matrix\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts this orthonormal transform matrix in place. This matrix's upper 3x3 is transposed, then its fourth column\n * is transformed by the transposed upper 3x3 and negated.\n *
\n * The result of this method is undefined if this matrix's values are not consistent with those of an orthonormal\n * transform.\n *\n * @return this matrix, inverted\n */\n fun invertOrthonormal() = apply {\n // This is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n val x = m[3]\n val y = m[7]\n val z = m[11]\n\n m[3] = -(m[0] * x) - m[1] * y - m[2] * z\n m[7] = -(m[4] * x) - m[5] * y - m[6] * z\n m[11] = -(m[8] * x) - m[9] * y - m[10] * z\n\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Inverts the specified orthonormal transform matrix and stores the result in 'this' matrix. The specified matrix's\n * upper 3x3 is transposed, then its fourth column is transformed by the transposed upper 3x3 and negated. The\n * result is stored in 'this' matrix.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert, or if the matrix's\n * values are not consistent with those of an orthonormal transform.\n *\n * @param matrix the matrix whose inverse is computed. The matrix is assumed to represent an orthonormal transform\n * matrix.\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertOrthonormalMatrix(matrix: Matrix4) = apply {\n // The matrix is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = -(matrix.m[0] * matrix.m[3]) - matrix.m[4] * matrix.m[7] - matrix.m[8] * matrix.m[11]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = -(matrix.m[1] * matrix.m[3]) - matrix.m[5] * matrix.m[7] - matrix.m[9] * matrix.m[11]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = -(matrix.m[2] * matrix.m[3]) - matrix.m[6] * matrix.m[7] - matrix.m[10] * matrix.m[11]\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Applies a specified depth offset to this projection matrix. The depth offset may be any real number and is\n * typically used to draw geometry slightly closer to the user's eye in order to give those shapes visual priority\n * over nearby or geometry. An offset of zero has no effect. An offset less than zero brings depth values closer to\n * the eye, while an offset greater than zero pushes depth values away from the eye.\n *
\n * The result of this method is undefined if this matrix is not a projection matrix. Projection matrices can be\n * created by calling `setToPerspectiveProjection` or `setToScreenProjection`\n *
\n * Depth offset may be applied to both perspective and screen projection matrices. The effect on each type is\n * outlined here:\n *
\n * **Perspective Projection**\n *
\n * The effect of depth offset on a perspective projection increases exponentially with distance from the eye. This\n * has the effect of adjusting the offset for the loss in depth precision with geometry drawn further from the eye.\n * Distant geometry requires a greater offset to differentiate itself from nearby geometry, while close geometry\n * does not.\n *
\n * **Screen Projection**\n *
\n * The effect of depth offset on an screen projection increases linearly with distance from the eye. While it is\n * reasonable to apply a depth offset to an screen projection, the effect is most appropriate when applied to the\n * projection used to draw the scene. For example, when an object's coordinates are projected by a perspective\n * projection into screen coordinates then drawn using a screen projection, it is best to apply the offset to the\n * original perspective projection. The method `RenderContext.project` performs the correct behavior for\n * the projection type used to draw the scene.\n *\n * @param depthOffset the amount of offset to apply\n *\n * @return this matrix with its components adjusted to account for the specified depth offset\n */\n fun offsetProjectionDepth(depthOffset: Double) = apply { m[10] *= 1 + depthOffset }\n\n /**\n * Returns this viewing matrix's eye point. In model coordinates, a viewing matrix's eye point is the point the\n * viewer is looking from and maps to the center of the screen.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's eye point\n */\n fun extractEyePoint(result: Vec3): Vec3 {\n // The eye point of a modelview matrix is computed by transforming the origin (0, 0, 0, 1) by the matrix's\n // inverse. This is equivalent to transforming the inverse of this matrix's translation components in the\n // rightmost column by the transpose of its upper 3x3 components.\n result.x = -(m[0] * m[3]) - m[4] * m[7] - m[8] * m[11]\n result.y = -(m[1] * m[3]) - m[5] * m[7] - m[9] * m[11]\n result.z = -(m[2] * m[3]) - m[6] * m[7] - m[10] * m[11]\n return result\n }\n\n /**\n * Returns this viewing matrix's forward vector.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's forward vector\n */\n fun extractForwardVector(result: Vec3): Vec3 {\n // The forward vector of a modelview matrix is computed by transforming the negative Z axis (0, 0, -1, 0) by the\n // matrix's inverse. We have pre-computed the result inline here to simplify this computation.\n result.x = -m[8]\n result.y = -m[9]\n result.z = -m[10]\n return result\n }\n\n /**\n * Returns this viewing matrix's heading angle. The roll argument enables the caller to disambiguate\n * heading and roll when the two rotation axes for heading and roll are parallel, causing gimbal lock.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param roll the viewing matrix's roll angle, or 0 if the roll angle is unknown\n *\n * @return the extracted heading angle\n */\n fun extractHeading(roll: Angle): Angle {\n val cr = cos(roll.inRadians)\n val sr = sin(roll.inRadians)\n val ch = cr * m[0] - sr * m[4]\n val sh = sr * m[5] - cr * m[1]\n return atan2(sh, ch).radians\n }\n\n /**\n * Returns this viewing matrix's tilt angle.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @return the extracted heading angle\n */\n fun extractTilt(): Angle {\n val ct = m[10]\n val st = sqrt(m[2] * m[2] + m[6] * m[6])\n return atan2(st, ct).radians\n }\n\n /**\n * Returns this symmetric matrix's eigenvectors. The eigenvectors are returned in the specified result arguments in\n * order of descending magnitude (most prominent to least prominent). Each eigenvector has length equal to its\n * corresponding eigenvalue.\n *
\n * This method returns false if this matrix is not a symmetric matrix.\n *\n * @param result1 a pre-allocated Vec3 in which to return the most prominent eigenvector\n * @param result2 a pre-allocated Vec3 in which to return the second most prominent eigenvector\n * @param result3 a pre-allocated Vec3 in which to return the least prominent eigenvector\n *\n * @return true if this matrix is symmetric and its eigenvectors can be determined, otherwise false\n */\n fun extractEigenvectors(result1: Vec3, result2: Vec3, result3: Vec3): Boolean {\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition,\n // listing 14.6.\n if (m[1] != m[4] || m[2] != m[8] || m[6] != m[9]) return false // matrix is not symmetric\n\n // Since the matrix is symmetric m12=m21, m13=m31 and m23=m32, therefore we can ignore the values m21,\n // m32 and m32.\n var m11 = m[0]\n var m12 = m[1]\n var m13 = m[2]\n var m22 = m[5]\n var m23 = m[6]\n var m33 = m[10]\n val r = Array(3) { DoubleArray(3) }\n r[2][2] = 1.0\n r[1][1] = r[2][2]\n r[0][0] = r[1][1]\n for (a in 0 until MAX_SWEEPS) {\n // Exit if off-diagonal entries small enough\n if (abs(m12) < EPSILON && abs(m13) < EPSILON && abs(m23) < EPSILON) break\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n val u = (m22 - m11) * 0.5 / m12\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m12\n m22 += t * m12\n m12 = 0.0\n var temp = c * m13 - s * m23\n m23 = s * m13 + c * m23\n m13 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][1]\n r[i][1] = s * r[i][0] + c * r[i][1]\n r[i][0] = temp\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n val u = (m33 - m11) * 0.5 / m13\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m13\n m33 += t * m13\n m13 = 0.0\n var temp = c * m12 - s * m23\n m23 = s * m12 + c * m23\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][2]\n r[i][2] = s * r[i][0] + c * r[i][2]\n r[i][0] = temp\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n val u = (m33 - m22) * 0.5 / m23\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m22 -= t * m23\n m33 += t * m23\n m23 = 0.0\n var temp = c * m12 - s * m13\n m13 = s * m12 + c * m13\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][1] - s * r[i][2]\n r[i][2] = s * r[i][1] + c * r[i][2]\n r[i][1] = temp\n }\n }\n }\n\n // Sort the eigenvectors by descending magnitude.\n var i1 = 0\n var i2 = 1\n var i3 = 2\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n if (m22 < m33) {\n val temp = m22\n m22 = m33\n m33 = temp\n val itemp = i2\n i2 = i3\n i3 = itemp\n }\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n result1.set(r[0][i1], r[1][i1], r[2][i1])\n result2.set(r[0][i2], r[1][i2], r[2][i2])\n result3.set(r[0][i3], r[1][i3], r[2][i3])\n result1.normalize()\n result2.normalize()\n result3.normalize()\n result1.multiply(m11)\n result2.multiply(m22)\n result3.multiply(m33)\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. This method assumes this matrix represents an inverse\n * modelview-projection matrix. The result of this method is undefined if this matrix is not an inverse\n * modelview-projection matrix.\n *
\n * The resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes\n * that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's y component\n * @param z the Cartesian point's z component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(x: Double, y: Double, z: Double, viewport: Viewport, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This inverts\n // the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n var sx = m[0] * x + m[1] * y + m[2] * z + m[3]\n var sy = m[4] * x + m[5] * y + m[6] * z + m[7]\n var sz = m[8] * x + m[9] * y + m[10] * z + m[11]\n val sw = m[12] * x + m[13] * y + m[14] * z + m[15]\n if (sw == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n sx /= sw\n sy /= sw\n sz /= sw\n\n // Clip the point against the near and far clip planes.\n if (sz < -1 || sz > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n sx = sx * 0.5 + 0.5\n sy = sy * 0.5 + 0.5\n sz = sz * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n sx = sx * viewport.width + viewport.x\n sy = sy * viewport.height + viewport.y\n result.x = sx\n result.y = sy\n result.z = sz\n return true\n }\n\n /**\n * Un-projects a screen coordinate point to Cartesian coordinates at the near clip plane and the far clip plane.\n * This method assumes this matrix represents an inverse modelview-projection matrix. The result of this method is\n * undefined if this matrix is not an inverse modelview-projection matrix.\n *
\n * The screen point is understood to be in OpenGL screen coordinates, with the origin in the bottom-left corner and\n * axes that extend up and to the right from the origin.\n *
\n * This function stores the un-projected points in the result argument, and a boolean value indicating whether the\n * un-projection is successful.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param nearResult a pre-allocated [Vec3] in which to return the un-projected near clip plane point\n * @param farResult a pre-allocated [Vec3] in which to return the un-projected far clip plane point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun unProject(x: Double, y: Double, viewport: Viewport, nearResult: Vec3, farResult: Vec3): Boolean {\n // Convert the XY screen coordinates to coordinates in the range [0, 1]. This enables the XY coordinates to\n // be converted to clip coordinates.\n var sx = (x - viewport.x) / viewport.width\n var sy = (y - viewport.y) / viewport.height\n\n // Convert from coordinates in the range [0, 1] to clip coordinates in the range [-1, 1].\n sx = sx * 2 - 1\n sy = sy * 2 - 1\n\n // Transform the screen point from clip coordinates to model coordinates. This is a partial transformation that\n // factors out the contribution from the screen point's X and Y components. The contribution from the Z\n // component, which is both -1 and +1, is included next.\n val mx = m[0] * sx + m[1] * sy + m[3]\n val my = m[4] * sx + m[5] * sy + m[7]\n val mz = m[8] * sx + m[9] * sy + m[11]\n val mw = m[12] * sx + m[13] * sy + m[15]\n\n // Transform the screen point at the near clip plane (z = -1) to model coordinates.\n val nx = mx - m[2]\n val ny = my - m[6]\n val nz = mz - m[10]\n val nw = mw - m[14]\n\n // Transform the screen point at the far clip plane (z = +1) to model coordinates.\n val fx = mx + m[2]\n val fy = my + m[6]\n val fz = mz + m[10]\n val fw = mw + m[14]\n if (nw == 0.0 || fw == 0.0) return false\n\n // Complete the conversion from near clip coordinates to model coordinates by dividing by the W component.\n nearResult.x = nx / nw\n nearResult.y = ny / nw\n nearResult.z = nz / nw\n\n // Complete the conversion from far clip coordinates to model coordinates by dividing by the W component.\n farResult.x = fx / fw\n farResult.y = fy / fw\n farResult.z = fz / fw\n return true\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix4) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix4([${m[0]}, ${m[1]}, ${m[2]}, ${m[3]}], [${m[4]}, ${m[5]}, ${m[6]}, ${m[7]}], [${m[8]}, ${m[9]}, ${m[10]}, ${m[11]}], [${m[12]}, ${m[13]}, ${m[14]}, ${m[15]}])\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.OffsetMode.FRACTION\nimport earth.worldwind.geom.OffsetMode.INSET_PIXELS\nimport kotlin.jvm.JvmStatic\n\n/**\n * Specifies an offset relative to a rectangle. Used by renderable shapes.\n */\ndata class Offset(\n /**\n * The units of this instance's X offset. See this class' constructor description for a list of the possible\n * values.\n */\n var xUnits: OffsetMode,\n /**\n * The offset in the X dimension, interpreted according to this instance's xUnits argument.\n */\n var x: Double,\n /**\n * The units of this instance's Y offset. See this class' constructor description for a list of the possible\n * values.\n */\n var yUnits: OffsetMode,\n /**\n * The offset in the Y dimension, interpreted according to this instance's yUnits argument.\n */\n var y: Double\n) {\n /**\n * Creates a new offset of this offset with identical property values.\n */\n constructor(offset: Offset): this(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n companion object {\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its center.\n */\n @JvmStatic fun center() = Offset(FRACTION, 0.5, FRACTION, 0.5)\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its bottom-left corner.\n */\n @JvmStatic fun bottomLeft() = Offset(FRACTION, 0.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its center of its bottom edge.\n */\n @JvmStatic fun bottomCenter() = Offset(FRACTION, 0.5, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its bottom-right corner.\n */\n @JvmStatic fun bottomRight() = Offset(FRACTION, 1.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle its top-left corner.\n */\n @JvmStatic fun topLeft() = Offset(FRACTION, 0.0, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to the center of its top edge.\n */\n @JvmStatic fun topCenter() = Offset(FRACTION, 0.5, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its top-right corner.\n */\n @JvmStatic fun topRight() = Offset(FRACTION, 1.0, FRACTION, 1.0)\n }\n\n /**\n * Sets this offset to specified property values.\n */\n fun set(xUnits: OffsetMode, x: Double, yUnits: OffsetMode, y: Double) = apply {\n this.xUnits = xUnits\n this.x = x\n this.yUnits = yUnits\n this.y = y\n }\n\n /**\n * Sets this offset to identical property values of the specified offset.\n */\n fun copy(offset: Offset) = set(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n /**\n * Returns this offset's absolute X and Y coordinates in pixels for a rectangle of a specified size in pixels. The\n * returned offset is in pixels relative to the rectangle's origin, and is defined in the coordinate system used by\n * the caller.\n *\n * @param width the rectangle's width in pixels\n * @param height the rectangles height in pixels\n * @param result a pre-allocated Vec2 in which to return the computed offset relative to the rectangle's origin\n *\n * @return the result argument set to the computed offset\n */\n fun offsetForSize(width: Double, height: Double, result: Vec2): Vec2 {\n val x = when (xUnits) {\n FRACTION -> width * x\n INSET_PIXELS -> width - x\n else -> x // default to OFFSET_PIXELS\n }\n val y = when (yUnits) {\n FRACTION -> height * y\n INSET_PIXELS -> height - y\n else -> y // default to OFFSET_PIXELS\n }\n return result.set(x, y)\n }\n}","package earth.worldwind.geom\n\n/**\n * Offset mode indicates how WorldWind interprets an offset's x and y values.\n * Accepted values are [FRACTION], [INSET_PIXELS] and [PIXELS].\n */\nenum class OffsetMode {\n /**\n * Indicating that the associated parameters are fractional values of the virtual\n * rectangle's width or height in the range [0, 1], where 0 indicates the rectangle's origin and 1 indicates the\n * corner opposite its origin.\n */\n FRACTION,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's corner opposite its origin corner.\n */\n INSET_PIXELS,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's origin.\n */\n PIXELS;\n}","package earth.worldwind.geom\n\n/**\n * Represents a plane in Cartesian coordinates. The plane's X, Y and Z components indicate the plane's normal vector.\n * The distance component indicates the plane's distance from the origin relative to its unit normal.\n */\nopen class Plane {\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-10\n }\n\n /**\n * The normal vector to the plane.\n */\n val normal = Vec3(0.0, 0.0, 1.0)\n /**\n * The plane's distance from the origin.\n */\n var distance = 0.0\n\n /**\n * Constructs a plane in the X-Y plane with its unit normal pointing along the Z axis.\n */\n constructor()\n\n /**\n * Constructs a plane with specified normal vector components and distance from the origin.\n * This constructor normalizes the components, ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n */\n constructor(x: Double, y: Double, z: Double, distance: Double) { set(x, y, z, distance) }\n\n /**\n * Constructs a plane with the normal vector and distance from a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n */\n constructor(plane: Plane): this() { copy(plane) }\n\n /**\n * Computes the distance between this plane and a point.\n *\n * @param point the point whose distance to compute\n *\n * @return the computed distance\n */\n fun distanceToPoint(point: Vec3) = dot(point)\n\n /**\n * Sets this plane's specified normal vector and distance to specified values. This normalizes the components,\n * ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n *\n * @return this plane with its normal vector and distance set to specified values\n */\n fun set(x: Double, y: Double, z: Double, distance: Double) = apply {\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Sets this plane's normal vector and distance to that of a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n *\n * @return this plane with its normal vector and distance set to those of the specified plane\n */\n fun copy(plane: Plane) = apply {\n // Assumes the specified plane's parameters are normalized.\n normal.copy(plane.normal)\n distance = plane.distance\n }\n\n /**\n * Transforms this plane by a specified matrix.\n *\n * @param matrix the matrix to apply to this plane\n *\n * @return this plane transformed by the specified matrix\n */\n fun transformByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * normal.x + m[1] * normal.y + m[2] * normal.z + m[3] * distance\n val y = m[4] * normal.x + m[5] * normal.y + m[6] * normal.z + m[7] * distance\n val z = m[8] * normal.x + m[9] * normal.y + m[10] * normal.z + m[11] * distance\n val distance = m[12] * normal.x + m[13] * normal.y + m[14] * normal.z + m[15] * distance\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Computes the dot product of this plane's components with a specified vector. Since the plane was defined with a\n * unit normal vector, this function returns the distance of the vector from the plane.\n *\n * @param vector the vector to dot with this plane's components\n *\n * @return the computed dot product\n */\n fun dot(vector: Vec3) = normal.dot(vector) + distance\n\n /**\n * Determines whether a specified line segment intersects this plane.\n *\n * @param endPoint1 the line segment's first end point\n * @param endPoint2 the line segment's second end point\n *\n * @return true if the line segment intersects this plane, otherwise false\n */\n fun intersectsSegment(endPoint1: Vec3, endPoint2: Vec3): Boolean {\n val distance1 = dot(endPoint1)\n val distance2 = dot(endPoint2)\n return distance1 * distance2 <= 0\n }\n\n /**\n * Determines whether two points are on the same side of this plane.\n *\n * @param pointA the first point\n * @param pointB the second point\n *\n * @return -1 if both points are on the negative side of this plane, +1 if both points are on the positive side of\n * this plane, 0 if the points are on opposite sides of this plane\n */\n fun onSameSide(pointA: Vec3, pointB: Vec3): Int {\n val da = distanceToPoint(pointA)\n val db = distanceToPoint(pointB)\n if (da < 0 && db < 0) return -1\n return if (da > 0 && db > 0) 1 else 0\n }\n\n /**\n * Clips a line segment to this plane, returning an two-point array indicating the clipped segment. If the direction\n * of the line formed by the two points is positive with respect to this plane's normal vector, the first point in\n * the array will be the intersection point on the plane, and the second point will be the original segment end\n * point. If the direction of the line is negative with respect to this plane's normal vector, the first point in\n * the array will be the original segment's begin point, and the second point will be the intersection point on the\n * plane. If the segment does not intersect the plane, null is returned. If the segment is coincident with the\n * plane, the input points are returned, in their input order.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return an array of two points both on the positive side of the plane, or null if the segment does not intersect\n * this plane\n */\n fun clip(pointA: Vec3, pointB: Vec3): Array? {\n if (pointA == pointB) return null\n\n // Get the projection of the segment onto the plane.\n val line = Line().setToSegment(pointA, pointB)\n val lDotV = normal.dot(line.direction)\n\n // Are the line and plane parallel?\n if (lDotV == 0.0) { // line and plane are parallel and may be coincident.\n val lDotS = dot(line.origin)\n return if (lDotS == 0.0) arrayOf(pointA, pointB) // line is coincident with the plane\n else null // line is not coincident with the plane.\n }\n\n // Not parallel so the line intersects. But does the segment intersect?\n val t = -dot(line.origin) / lDotV // lDotS / lDotV\n if (t < 0 || t > 1) return null // segment does not intersect\n val p = line.pointAt(t, Vec3())\n return if (lDotV > 0) arrayOf(p, pointB) else arrayOf(pointA, p)\n }\n\n protected open fun normalizeIfNeeded() {\n // Compute the plane normal's magnitude in order to determine whether or not the plane needs normalization.\n val magnitude = normal.magnitude\n\n // Don't normalize a zero vector; the result is NaN when it should be 0.0.\n if (magnitude == 0.0) return\n\n // Don't normalize a unit vector, this indicates that the caller has already normalized the vector, but floating\n // point round-off results in a length not exactly 1.0. Since we're normalizing on the caller's behalf, we want\n // to avoid unnecessary any normalization that modifies the specified values.\n if (magnitude >= 1 - NEAR_ZERO_THRESHOLD && magnitude <= 1 + NEAR_ZERO_THRESHOLD) return\n\n // Normalize the caller-specified plane coordinates.\n normal.x /= magnitude\n normal.y /= magnitude\n normal.z /= magnitude\n distance /= magnitude\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Plane) return false\n return normal == other.normal && distance == other.distance\n }\n\n override fun hashCode(): Int {\n var result = normal.hashCode()\n result = 31 * result + distance.hashCode()\n return result\n }\n\n override fun toString() = \"Plane(normal=$normal, distance=$distance)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.shape.PathType\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic position with a latitude and longitude and altitude in meters.\n */\nopen class Position(\n /**\n * The position's latitude.\n */\n latitude: Angle,\n /**\n * The position's longitude.\n */\n longitude: Angle,\n /**\n * The position's altitude in meters.\n */\n var altitude: Double\n): Location(latitude, longitude) {\n /**\n * Constructs a position with latitude, longitude and altitude all 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO, altitude = 0.0)\n\n /**\n * Constructs a position with the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the coordinates\n */\n constructor(position: Position): this(position.latitude, position.longitude, position.altitude)\n\n companion object {\n /**\n * Constructs a position with a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) =\n Position(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees), altitude)\n\n /**\n * Constructs a position with a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) =\n Position(fromRadians(latitudeRadians), fromRadians(longitudeRadians), altitude)\n }\n\n /**\n * Sets this position to a specified latitude and longitude and altitude in meters.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle, altitude: Double) = apply {\n set(latitude, longitude)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) = apply {\n setDegrees(latitudeDegrees, longitudeDegrees)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) = apply {\n setRadians(latitudeRadians, longitudeRadians)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the new coordinates\n *\n * @return this position with its latitude, longitude and altitude set to that of the specified position\n */\n fun copy(position: Position) = set(position.latitude, position.longitude, position.altitude)\n\n /**\n * Compute a position along a path between two positions. The amount indicates the fraction of the path at which to\n * compute a position. This value is typically between 0 and 1, where 0 indicates the begin position (this position)\n * and 1 indicates the end position.\n *\n * @param endPosition the path's end position\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a position\n * @param result a pre-allocated Position in which to return the computed result\n *\n * @return the result argument set to the computed position\n */\n fun interpolateAlongPath(endPosition: Position, pathType: PathType, amount: Double, result: Position): Position {\n // Interpolate latitude and longitude.\n super.interpolateAlongPath(endPosition, pathType, amount, result)\n // Interpolate altitude.\n result.altitude = (1 - amount) * altitude + amount * endPosition.altitude\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Position) return false\n if (!super.equals(other)) return false\n return altitude == other.altitude\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + altitude.hashCode()\n return result\n }\n\n override fun toString() = \"Position(latitude=$latitude, longitude=$longitude, altitude=$altitude)\"\n}","package earth.worldwind.geom\n\n/**\n * Continuous interval in a one-dimensional coordinate system expressed as a lower bound an an upper bound, inclusive.\n */\nopen class Range(\n /**\n * The range's lower bound, inclusive.\n */\n var lower: Int,\n /**\n * The range's upper bound, inclusive.\n */\n var upper: Int\n) {\n /**\n * Constructs an empty range with lower and upper both zero.\n */\n constructor(): this(lower = 0, upper = 0)\n\n /**\n * Constructs a range with the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the values\n */\n constructor(range: Range) : this(range.lower, range.upper)\n\n /**\n * Returns the length of the interval between this range's lower bound and upper bound, or 0 if this range is empty.\n */\n val length get() = if (upper > lower) upper - lower else 0\n\n /**\n * Indicates whether or not this range is empty. An range is empty when its lower bound is greater than or equal to\n * its upper bound.\n *\n * @return true if this range is empty, false otherwise\n */\n val isEmpty get() = lower >= upper\n\n /**\n * Sets this range to an empty range.\n *\n * @return this range with its lower bound and upper bound both set to zero\n */\n fun setEmpty() = set(0, 0)\n\n /**\n * Sets this range to the specified lower bound and upper bound.\n *\n * @param lower the new lower bound, inclusive\n * @param upper the new upper bound, inclusive\n *\n * @return this range set to the specified values\n */\n fun set(lower: Int, upper: Int) = apply {\n this.lower = lower\n this.upper = upper\n }\n\n /**\n * Sets this range to the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the new values\n *\n * @return this range with its lower bound and upper bound set to that of the specified range\n */\n fun copy(range: Range) = set(range.lower, range.upper)\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Range) return false\n return lower == other.lower && upper == other.upper\n }\n\n override fun hashCode(): Int {\n var result = lower\n result = 31 * result + upper\n return result\n }\n\n override fun toString() = \"Range(lower=$lower, upper=$upper)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.geom.Angle.Companion.clampLatitude\nimport earth.worldwind.geom.Angle.Companion.clampLongitude\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.max\nimport earth.worldwind.geom.Angle.Companion.min\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Geographic rectangular region.\n */\nopen class Sector(\n /**\n * The sector's minimum latitude.\n */\n var minLatitude: Angle,\n /**\n * The sector's maximum latitude.\n */\n var maxLatitude: Angle,\n /**\n * The sector's minimum longitude.\n */\n var minLongitude: Angle,\n /**\n * The sector's maximum longitude.\n */\n var maxLongitude: Angle\n) {\n /**\n * Indicates whether this sector has no dimensions.\n */\n val isEmpty get() = minLatitude == ZERO && maxLatitude == ZERO && minLongitude == ZERO && maxLongitude == ZERO\n /**\n * Indicates whether this sector contains the full range of latitude [90 to +90] and longitude [-180 to +180].\n */\n val isFullSphere get() = minLatitude == NEG90 && maxLatitude == POS90 && minLongitude == NEG180 && maxLongitude == POS180\n /**\n * Returns the angle between this sector's minimum and maximum latitudes.\n */\n val deltaLatitude get() = maxLatitude - minLatitude\n /**\n * Returns the angle between this sector's minimum and maximum longitudes.\n */\n val deltaLongitude get() = maxLongitude - minLongitude\n /**\n * Returns the angle midway between this sector's minimum and maximum latitudes.\n */\n val centroidLatitude get() = average(minLatitude, maxLatitude)\n /**\n * Returns the angle midway between this sector's minimum and maximum longitudes.\n */\n val centroidLongitude get() = average(minLongitude, maxLongitude)\n\n /**\n * Constructs an empty sector with minimum and maximum latitudes and longitudes all 0.\n */\n constructor(): this(minLatitude = ZERO, maxLatitude = ZERO, minLongitude = ZERO, maxLongitude = ZERO)\n\n /**\n * Constructs a sector with the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the coordinates\n */\n constructor(sector: Sector): this(sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude)\n\n companion object {\n @JvmStatic\n fun fromDegrees(minLatDegrees: Double, minLonDegrees: Double, deltaLatDegrees: Double, deltaLonDegrees: Double): Sector {\n val maxLatDegrees = if (deltaLatDegrees > 0)\n clampLatitude(minLatDegrees + deltaLatDegrees) else minLatDegrees\n val maxLonDegrees = if (deltaLonDegrees > 0)\n clampLongitude(minLonDegrees + deltaLonDegrees) else minLonDegrees\n return Sector(\n fromDegrees(minLatDegrees), fromDegrees(maxLatDegrees),\n fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n }\n\n @JvmStatic\n fun fromRadians(minLatRadians: Double, minLonRadians: Double, deltaLatRadians: Double, deltaLonRadians: Double): Sector {\n val maxLatRadians = if (deltaLatRadians > 0)\n clampLatitude(minLatRadians + deltaLatRadians) else minLatRadians\n val maxLonRadians = if (deltaLonRadians > 0)\n clampLongitude(minLonRadians + deltaLonRadians) else minLonRadians\n return Sector(\n fromRadians(minLatRadians), fromRadians(maxLatRadians),\n fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n }\n }\n\n /**\n * Computes the location of the angular center of this sector, which is the mid-angle of each of this sector's\n * latitude and longitude dimensions.\n *\n * @param result a pre-allocated [Location] in which to return the computed centroid\n *\n * @return the specified result argument containing the computed centroid\n */\n fun centroid(result: Location): Location {\n result.latitude = centroidLatitude\n result.longitude = centroidLongitude\n return result\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension.\n *\n * @param minLatitude the minimum latitude, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun set(minLatitude: Angle, minLongitude: Angle, deltaLatitude: Angle, deltaLongitude: Angle) = apply {\n this.minLatitude = minLatitude\n this.minLongitude = minLongitude\n maxLatitude = if (deltaLatitude.inDegrees > 0.0) (minLatitude + deltaLatitude).clampLatitude() else minLatitude\n maxLongitude = if (deltaLongitude.inDegrees > 0.0) (minLongitude + deltaLongitude).clampLongitude() else minLongitude\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in degrees.\n *\n * @param minLatitude the minimum latitude in degrees, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in degrees, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in degrees; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in degrees; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setDegrees(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromDegrees(minLatitude), fromDegrees(minLongitude),\n fromDegrees(deltaLatitude), fromDegrees(deltaLongitude),\n )\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in radians.\n *\n * @param minLatitude the minimum latitude in radians, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in radians, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in radians; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in radians; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setRadians(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromRadians(minLatitude), fromRadians(minLongitude),\n fromRadians(deltaLatitude), fromRadians(deltaLongitude),\n )\n\n /**\n * Sets this sector to the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the new coordinates\n *\n * @return this sector with its coordinates set to that of the specified sector\n */\n fun copy(sector: Sector) = apply {\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n\n /**\n * Sets this sector to an empty sector.\n *\n * @return this sector with its coordinates set to an empty sector\n */\n fun setEmpty() = apply {\n minLatitude = ZERO\n maxLatitude = ZERO\n minLongitude = ZERO\n maxLongitude = ZERO\n }\n\n /**\n * Sets this sector to the full range of latitude [90 to +90] and longitude [-180 to +180].\n *\n * @return this sector with its coordinates set to the full range of latitude and longitude\n */\n fun setFullSphere() = apply {\n minLatitude = NEG90\n maxLatitude = POS90\n minLongitude = NEG180\n maxLongitude = POS180\n }\n\n /**\n * Indicates whether this sector intersects a specified sector. Two sectors intersect when both the latitude\n * boundaries and the longitude boundaries overlap by a non-zero amount. An empty sector never intersects another\n * sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersections this sector, false otherwise\n */\n fun intersects(sector: Sector) = minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n\n /**\n * Indicates if this sector is next to, or intersects, a specified sector. Two sectors intersect when the conditions\n * of the [Sector.intersects] methods have been met, and if the boundary or corner is shared with the\n * specified sector. This is a temporary implementation and will be deprecated in future releases.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersects or is next to this sector, false otherwise\n */\n fun intersectsOrNextTo(sector: Sector) = minLatitude.inDegrees <= sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.minLatitude.inDegrees\n && minLongitude.inDegrees <= sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.minLongitude.inDegrees\n\n /**\n * Computes the intersection of this sector and a specified sector, storing the result in this sector and returning\n * whether or not the sectors intersect. Two sectors intersect when both the latitude boundaries and the longitude\n * boundaries overlap by a non-zero amount. An empty sector never intersects another sector. When there is no\n * intersection, this returns false and leaves this sector unchanged.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to intersect with\n *\n * @return this true if this sector intersects the specified sector, false otherwise\n */\n fun intersect(sector: Sector): Boolean {\n if (minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n ) {\n if (minLatitude.inDegrees < sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees > sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees < sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees > sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n return true\n }\n return false // the two sectors do not intersect\n }\n\n /**\n * Indicates whether this sector contains a specified geographic location.\n * An empty sector never contains a location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(latitude: Angle, longitude: Angle) = latitude.inDegrees in minLatitude.inDegrees..maxLatitude.inDegrees\n && longitude.inDegrees in minLongitude.inDegrees..maxLongitude.inDegrees\n\n /**\n * Indicates whether this sector contains a specified geographic location. An empty sector never contains a\n * location.\n *\n * @param location the location\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(location: Location) = contains(location.latitude, location.longitude)\n\n /**\n * Indicates whether this sector fully contains a specified sector. This sector contains the specified sector when\n * the specified sector's boundaries are completely contained within this sector's boundaries, or are equal to this\n * sector's boundaries. An empty sector never contains another sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test containment with\n *\n * @return true if the specified sector contains this sector, false otherwise\n */\n fun contains(sector: Sector) = minLatitude.inDegrees <= sector.minLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.maxLatitude.inDegrees\n && minLongitude.inDegrees <= sector.minLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.maxLongitude.inDegrees\n\n /**\n * Sets this sector to the union of itself and a specified location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(latitude: Angle, longitude: Angle) = apply {\n if (!isEmpty) {\n minLatitude = min(minLatitude, latitude)\n maxLatitude = max(maxLatitude, latitude)\n minLongitude = min(minLongitude, longitude)\n maxLongitude = max(maxLongitude, longitude)\n } else {\n minLatitude = latitude\n maxLatitude = latitude\n minLongitude = longitude\n maxLongitude = longitude\n }\n }\n\n /**\n * Sets this sector to the union of itself and a specified location.\n *\n * @param location the location\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(location: Location) = union(location.latitude, location.longitude)\n\n /**\n * Sets this sector to the union of itself and an array of specified locations. If this sector is empty, it bounds\n * the specified locations. The array is understood to contain location of at least two coordinates organized as\n * (longitude, latitude, ...), where stride indicates the number of coordinates between longitude values.\n *\n * @param array the array of locations to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent locations - must be at least 2\n *\n * @return This bounding box set to contain the specified array of locations.\n *\n * @throws IllegalArgumentException If the array is empty, if the count is less than 0, or if the stride is\n * less than 2\n */\n fun union(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Sector\", \"union\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidCount\")\n }\n require(stride >= 2) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidStride\")\n }\n val empty = isEmpty\n var minLat = if (empty) Double.MAX_VALUE else minLatitude.inDegrees\n var maxLat = if (empty) -Double.MAX_VALUE else maxLatitude.inDegrees\n var minLon = if (empty) Double.MAX_VALUE else minLongitude.inDegrees\n var maxLon = if (empty) -Double.MAX_VALUE else maxLongitude.inDegrees\n for (idx in 0 until count step stride) {\n val lon = array[idx].toDouble()\n val lat = array[idx + 1].toDouble()\n if (maxLat < lat) maxLat = lat\n if (minLat > lat) minLat = lat\n if (maxLon < lon) maxLon = lon\n if (minLon > lon) minLon = lon\n }\n if (minLat < Double.MAX_VALUE) minLatitude = fromDegrees(minLat)\n if (maxLat > -Double.MAX_VALUE) maxLatitude = fromDegrees(maxLat)\n if (minLon < Double.MAX_VALUE) minLongitude = fromDegrees(minLon)\n if (maxLon > -Double.MAX_VALUE) maxLongitude = fromDegrees(maxLon)\n }\n\n /**\n * Sets this sector to the union of itself and a specified sector.\n * This has no effect if the specified sector is empty.\n * If this sector is empty, it is set to the specified sector.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param sector the sector to union with\n *\n * @return this sector, set to its union with the specified sector\n */\n fun union(sector: Sector) = apply {\n if (!sector.isEmpty) {\n // specified sector not empty\n if (!isEmpty) {\n // this sector not empty, make a union\n if (minLatitude.inDegrees > sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees < sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees > sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees < sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n } else {\n // this sector is empty, set to the specified sector\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n }\n }\n\n /**\n * Translates this sector by a specified geographic increment.\n *
\n * The translated sector is assumed to have normalized angles (angles within the range [-90, +90] latitude and\n * [-180, +180] longitude).\n *\n * @param deltaLatitudeDegrees the translation's latitude increment in degrees\n * @param deltaLongitudeDegrees the translation's longitude increment in degrees\n *\n * @return this sector, translated by the specified increment\n */\n fun translate(deltaLatitudeDegrees: Double, deltaLongitudeDegrees: Double) = apply {\n minLatitude = minLatitude.plusDegrees(deltaLatitudeDegrees)\n maxLatitude = maxLatitude.plusDegrees(deltaLatitudeDegrees)\n minLongitude = minLongitude.plusDegrees(deltaLongitudeDegrees)\n maxLongitude = maxLongitude.plusDegrees(deltaLongitudeDegrees)\n }\n\n /**\n * Determines minimal level number relevant for sector of the specified size\n * @param maxLevelNumber Maximum available level number\n * @return Minimal relevant level number for sector\n */\n fun minLevelNumber(maxLevelNumber: Int): Int {\n val relWidth = abs(maxLongitude.relativeLongitude - minLongitude.relativeLongitude)\n val relHeight = abs(maxLatitude.relativeLatitude - minLatitude.relativeLatitude)\n val delta = 0.00001\n\n for (minLevelNumber in 0 until maxLevelNumber) {\n val tileSize = 1.0 / (1 shl (minLevelNumber + 1))\n if (relWidth - delta > tileSize && relHeight - delta > tileSize) return minLevelNumber\n }\n\n return maxLevelNumber\n }\n\n fun equals(other: Sector, tolerance: Double): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return abs(minLatitude.inDegrees - other.minLatitude.inDegrees) < tolerance\n && abs(maxLatitude.inDegrees - other.maxLatitude.inDegrees) < tolerance\n && abs(minLongitude.inDegrees - other.minLongitude.inDegrees) < tolerance\n && abs(maxLongitude.inDegrees - other.maxLongitude.inDegrees) < tolerance\n }\n\n /**\n * Computes a row number for a tile within a level given the tile's latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's minimum latitude\n *\n * @return the computed row number\n */\n open fun computeRow(tileDelta: Angle, latitude: Angle): Int {\n var row = floor((latitude.inDegrees - minLatitude.inDegrees) / tileDelta.inDegrees).toInt()\n // if latitude is at the end of the grid, subtract 1 from the computed row to return the last row\n if (latitude.inDegrees - minLatitude.inDegrees == 180.0) row -= 1\n return row\n }\n\n /**\n * Computes a column number for a tile within a level given the tile's longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's minimum longitude\n *\n * @return The computed column number\n */\n open fun computeColumn(tileDelta: Angle, longitude: Angle): Int {\n var col = floor((longitude.inDegrees - minLongitude.inDegrees) / tileDelta.inDegrees).toInt()\n // if longitude is at the end of the grid, subtract 1 from the computed column to return the last column\n if (longitude.inDegrees - minLongitude.inDegrees == 360.0) col -= 1\n return col\n }\n\n /**\n * Computes the last row number for a tile within a level given the tile's maximum latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's maximum latitude\n *\n * @return the computed row number\n */\n open fun computeLastRow(tileDelta: Angle, latitude: Angle): Int {\n var row = ceil((latitude.inDegrees - minLatitude.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max latitude is in the first row, set the max row to 0\n if (latitude.inDegrees - minLatitude.inDegrees < tileDelta.inDegrees) row = 0\n return row\n }\n\n /**\n * Computes the last column number for a tile within a level given the tile's maximum longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's maximum longitude\n *\n * @return The computed column number\n */\n open fun computeLastColumn(tileDelta: Angle, longitude: Angle): Int {\n var col = ceil((longitude.inDegrees - minLongitude.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max longitude is in the first column, set the max column to 0\n if (longitude.inDegrees - minLongitude.inDegrees < tileDelta.inDegrees) col = 0\n return col\n }\n\n override fun equals(other: Any?): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (other !is Sector) return false\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return minLatitude == other.minLatitude && maxLatitude == other.maxLatitude\n && minLongitude == other.minLongitude && maxLongitude == other.maxLongitude\n }\n\n override fun hashCode(): Int {\n var result = minLatitude.hashCode()\n result = 31 * result + maxLatitude.hashCode()\n result = 31 * result + minLongitude.hashCode()\n result = 31 * result + maxLongitude.hashCode()\n return result\n }\n\n override fun toString() = \"Sector(minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\n\nopen class TileMatrix internal constructor(\n val sector: Sector, val ordinal: Int, val matrixWidth: Int, val matrixHeight: Int, val tileWidth: Int, val tileHeight: Int\n) {\n val resolution get() = sector.deltaLatitude.div(matrixHeight * tileHeight)\n\n fun tileKey(row: Int, column: Int): Long {\n val lOrd = (ordinal and 0xFF).toLong() // 8 bits\n val lRow = (row and 0xFFFFFFF).toLong() // 28 bits\n val lCol = (column and 0xFFFFFFF).toLong() // 28 bits\n return lOrd.shl(56) or lRow.shl(28) or lCol\n }\n\n fun tileSector(row: Int, column: Int): Sector {\n val deltaLat = sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = sector.deltaLongitude.inDegrees / matrixWidth\n val minLat = sector.maxLatitude.inDegrees - deltaLat * (row + 1)\n val minLon = sector.minLongitude.inDegrees + deltaLon * column\n return fromDegrees(minLat, minLon, deltaLat, deltaLon)\n }\n\n /**\n * Calculates number of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector) = with(this.sector) {\n val deltaLat = deltaLatitude / matrixHeight\n val deltaLon = deltaLongitude / matrixWidth\n val firstRow = computeRow(deltaLat, sector.minLatitude)\n val lastRow = computeLastRow(deltaLat, sector.maxLatitude)\n val firstCol = computeColumn(deltaLon, sector.minLongitude)\n val lastCol = computeLastColumn(deltaLon, sector.maxLongitude)\n (lastRow - firstRow + 1).toLong() * (lastCol - firstCol + 1).toLong()\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.makeMessage\nimport kotlin.jvm.JvmStatic\n\nopen class TileMatrixSet(val sector: Sector, val entries: List) {\n /**\n * Construct empty tile matrix set.\n */\n constructor(): this(Sector(), emptyList())\n\n companion object {\n @JvmStatic\n fun fromTilePyramid(\n sector: Sector, matrixWidth: Int, matrixHeight: Int, tileWidth: Int, tileHeight: Int, resolution: Angle\n ): TileMatrixSet {\n require(resolution.inDegrees > 0.0) {\n makeMessage(\"TileMatrixSet\", \"fromTilePyramid\", \"invalidResolution\")\n }\n var idx = 0\n var width = matrixWidth\n var height = matrixHeight\n val tileMatrices = mutableListOf()\n do {\n val matrix = TileMatrix(sector, idx++, width, height, tileWidth, tileHeight)\n tileMatrices.add(matrix)\n width *= 2\n height *= 2\n } while (matrix.resolution.inDegrees > resolution.inDegrees)\n return TileMatrixSet(sector, tileMatrices)\n }\n }\n\n val maxResolution get() = entries[entries.size - 1].resolution // entries.maxOf { it.resolution }\n\n fun indexOfMatrixNearest(resolution: Angle): Int {\n var nearestIdx = -1\n var nearestDelta2 = Double.POSITIVE_INFINITY\n for (idx in entries.indices) {\n val delta = entries[idx].resolution - resolution\n val delta2 = delta.inDegrees * delta.inDegrees\n if (nearestDelta2 > delta2) {\n nearestDelta2 = delta2\n nearestIdx = idx\n }\n }\n return nearestIdx\n }\n\n /**\n * Determine the min relevant index of matrix for the sector of this matrix set\n *\n * @param maxIndex Maximum available index\n * @return Minimum relevant index\n */\n fun minRelevantIndexOfMatrix(maxIndex: Int = entries.size - 1) = sector.minLevelNumber(maxIndex)\n\n /**\n * Calculates approximate count of tiles in specified sector within specified resolution range\n *\n * @param sector co calculate tiles amount\n * @param minIdx minimal required index of matrix\n * @param maxIdx maximal required index of matrix\n * @return tiles count\n */\n fun tileCount(sector: Sector, minIdx: Int, maxIdx: Int): Long {\n var tileCount = 0L\n for (i in minIdx..maxIdx) tileCount += entries[i].tilesInSector(sector)\n return tileCount\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Two-component vector with X and Y coordinates.\n */\nopen class Vec2(\n /**\n * The vector's X component.\n */\n var x: Double,\n /**\n * The vector's Y component.\n */\n var y: Double\n) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n *\n * @return the squared magnitude of this vector\n */\n open val magnitudeSquared get() = x * x + y * y\n /**\n * Computes the magnitude of this vector.\n *\n * @return the magnitude of this vector\n */\n val magnitude get() = sqrt(magnitudeSquared)\n\n /**\n * Constructs a two-component vector with X and Y both 0.\n */\n constructor(): this(x = 0.0, y = 0.0)\n\n /**\n * Constructs a two-component vector with the X and Y of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec2): this(vector.x, vector.y)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform2fv.\n *\n * @param result a pre-allocated array of length 2 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n open fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 2) {\n logMessage(ERROR, \"Vec2\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o] = y.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec2) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec2): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n return dx * dx + dy * dy\n }\n\n /**\n * Sets this vector to the specified X and Y.\n *\n * @param x the new X component\n * @param y the new Y component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double) = apply {\n this.x = x\n this.y = y\n }\n\n /**\n * Sets this vector to the X and Y of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X and Y set to that of the specified vector\n */\n fun copy(vector: Vec2) = set(vector.x, vector.y)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec2) = apply {\n var tmp = x\n x = vector.x\n vector.x = tmp\n\n tmp = y\n y = vector.y\n vector.y = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec2) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec2) = Vec2(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec2) {\n x += vector.x\n y += vector.y\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec2) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec2) = Vec2(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec2) {\n x -= vector.x\n y -= vector.y\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n open fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n open operator fun times(scalar: Double) = Vec2(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n open operator fun timesAssign(scalar: Double) {\n x *= scalar\n y *= scalar\n }\n\n /**\n * Multiplies this vector by a 3x3 matrix. The multiplication is performed with an implicit Z component of 1. The\n * resultant Z component of the product is then divided through the X and Y components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2]\n val y = m[3] * this.x + m[4] * y + m[5]\n val z = m[6] * this.x + m[7] * this.y + m[8]\n this.x = x / z\n this.y = y / z\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n open fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n open operator fun div(divisor: Double) = Vec2(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n open operator fun divAssign(divisor: Double) {\n x /= divisor\n y /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n open operator fun unaryMinus() = Vec2(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n open fun negate() = apply {\n x = -x\n y = -y\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n open fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec2) = x * vector.x + y * vector.y\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec2, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec2) return false\n return x == other.x && y == other.y\n }\n\n override fun hashCode(): Int {\n var result = x.hashCode()\n result = 31 * result + y.hashCode()\n return result\n }\n\n override fun toString() = \"Vec2(x=$x, y=$y)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Three-component vector with X, Y and Z coordinates.\n */\nopen class Vec3(\n /**\n * The vector's X component.\n */\n x: Double,\n /**\n * The vector's Y component.\n */\n y: Double,\n /**\n * The vector's Z component.\n */\n var z: Double\n): Vec2(x, y) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n */\n override val magnitudeSquared get() = super.magnitudeSquared + z * z\n\n /**\n * Constructs a three-component vector with X, Y and Z all 0.\n */\n constructor(): this(x = 0.0, y = 0.0, z = 0.0)\n\n /**\n * Constructs a three-component vector with the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec3): this(vector.x, vector.y, vector.z)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform3fv.\n *\n * @param result a pre-allocated array of length 3 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n override fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 3) {\n logMessage(ERROR, \"Vec3\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o++] = y.toFloat()\n result[o] = z.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector The vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec3) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec3): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n val dz = z - vector.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Sets this vector to the specified X, Y and Z.\n *\n * @param x the new X component\n * @param y the new Y component\n * @param z the new Z component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double, z: Double) = apply {\n set(x, y)\n this.z = z\n }\n\n /**\n * Sets this vector to the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X, Y and Z set to that of the specified vector\n */\n fun copy(vector: Vec3) = set(vector.x, vector.y, vector.z)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec3) = apply {\n super.swap(vector)\n val tmp = z\n z = vector.z\n vector.z = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec3) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec3) = Vec3(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec3) {\n super.plusAssign(vector)\n z += vector.z\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec3) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec3) = Vec3(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec3) {\n super.minusAssign(vector)\n z -= vector.z\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n override fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n override fun times(scalar: Double) = Vec3(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n override fun timesAssign(scalar: Double) {\n super.timesAssign(scalar)\n z *= scalar\n }\n\n /**\n * Multiplies this vector by a 4x4 matrix. The multiplication is performed with an implicit W component of 1. The\n * resultant W component of the product is then divided through the X, Y, and Z components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2] * z + m[3]\n val y = m[4] * this.x + m[5] * y + m[6] * z + m[7]\n val z = m[8] * this.x + m[9] * this.y + m[10] * z + m[11]\n val w = m[12] * this.x + m[13] * this.y + m[14] * this.z + m[15]\n this.x = x / w\n this.y = y / w\n this.z = z / w\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n override fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n override fun div(divisor: Double) = Vec3(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n override fun divAssign(divisor: Double) {\n super.divAssign(divisor)\n z /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n override fun unaryMinus() = Vec3(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n override fun negate() = apply {\n super.negate()\n z = -z\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n override fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n z /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec3) = super.dot(vector) + z * vector.z\n\n /**\n * Computes the cross product of this vector and a specified vector, modifying this vector.\n *\n * @param vector the vector to cross with this vector\n *\n * @return this vector set to the cross product of itself and the specified vector\n */\n fun cross(vector: Vec3) = apply {\n val x = y * vector.z - z * vector.y\n val y = z * vector.x - this.x * vector.z\n val z = this.x * vector.y - this.y * vector.x\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Computes the cross product of two vectors, setting this vector to the result.\n *\n * @param a the first vector\n * @param b the second vector\n *\n * @return this vector set to the cross product of the two specified vectors\n */\n fun cross(a: Vec3, b: Vec3) = apply {\n x = a.y * b.z - a.z * b.y\n y = a.z * b.x - a.x * b.z\n z = a.x * b.y - a.y * b.x\n }\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec3, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n z = z * w0 + vector.z * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec3) return false\n if (!super.equals(other)) return false\n return z == other.z\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + z.hashCode()\n return result\n }\n\n override fun toString() = \"Vec3(x=$x, y=$y, z=$z)\"\n}","package earth.worldwind.geom\n\n/**\n * Rectangular region in a two-dimensional coordinate system expressed as an origin and dimensions extending from the\n * origin.\n */\nopen class Viewport(\n /**\n * The X component of the viewport's origin.\n */\n var x: Int,\n /**\n * The Y component of the viewport's origin.\n */\n var y: Int,\n /**\n * The viewport's width.\n */\n var width: Int,\n /**\n * The viewport's height.\n */\n var height: Int\n) {\n /**\n * Constructs an empty viewport width X, Y, width and height all zero.\n */\n constructor(): this(x = 0, y = 0, width = 0, height = 0)\n\n /**\n * Constructs a viewport with the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the values\n */\n constructor(viewport: Viewport): this(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport is empty. A viewport is empty when either its width or its height are\n * zero (or negative).\n *\n * @return true if this viewport is empty, false otherwise\n */\n val isEmpty get() = width <= 0 || height <= 0\n\n /**\n * Sets this viewport to an empty viewport.\n *\n * @return this viewport with its width and height both set to zero\n */\n fun setEmpty() = apply {\n width = 0\n height = 0\n }\n\n /**\n * Sets this viewport to the specified origin and dimensions.\n *\n * @param x the new X component of the viewport's lower left corner\n * @param y the new Y component of the viewport's lower left corner\n * @param width the viewport's new width\n * @param height the viewport's new height\n *\n * @return this viewport set to the specified values\n */\n fun set(x: Int, y: Int, width: Int, height: Int) = apply {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n /**\n * Sets this viewport to the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the new values\n *\n * @return this viewport with its origin and dimensions set to that of the specified viewport\n */\n fun copy(viewport: Viewport) = set(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param x the X component of the viewport to test intersection with\n * @param y the Y component of the viewport to test intersection with\n * @param width the viewport width to test intersection with\n * @param height the viewport height to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(x: Int, y: Int, width: Int, height: Int) =\n this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param viewport the viewport to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(viewport: Viewport) =\n width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param x the X component of the viewport to intersect with\n * @param y the Y component of the viewport to intersect with\n * @param width the viewport width to intersect with\n * @param height the viewport height to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(x: Int, y: Int, width: Int, height: Int): Boolean {\n if (this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height) {\n if (this.x < x) {\n this.width -= x - this.x\n this.x = x\n }\n if (this.y < y) {\n this.height -= y - this.y\n this.y = y\n }\n if (this.x + this.width > x + width) this.width = x + width - this.x\n if (this.y + this.height > y + height) this.height = y + height - this.y\n return true\n }\n return false\n }\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param viewport the viewport to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(viewport: Viewport): Boolean {\n if (width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height) {\n if (x < viewport.x) {\n width -= viewport.x - x\n x = viewport.x\n }\n if (y < viewport.y) {\n height -= viewport.y - y\n y = viewport.y\n }\n if (x + width > viewport.x + viewport.width) width = viewport.x + viewport.width - x\n if (y + height > viewport.y + viewport.height) height = viewport.y + viewport.height - y\n return true\n }\n return false\n }\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param point the point\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(point: Vec2) = contains(point.x, point.y)\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param x the point's X component\n * @param y the point's Y component\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(x: Number, y: Number) = x.toDouble() >= this.x && x.toDouble() < this.x + width\n && y.toDouble() >= this.y && y.toDouble() < this.y + height\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Viewport) return false\n return x == other.x && y == other.y && width == other.width && height == other.height\n }\n\n override fun hashCode(): Int {\n var result = x\n result = 31 * result + y\n result = 31 * result + width\n result = 31 * result + height\n return result\n }\n\n override fun toString() = \"Viewport(x=$x, y=$y, width=$width, height=$height)\"\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.roundToInt\n\nclass GKCoord private constructor(val latitude: Angle, val longitude: Angle, val x: Double, val y: Double) {\n companion object {\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 0)\n\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n * @param zone optional zone to force coordinates conversion in it.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle, zone: Int): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGeodeticToGK(latitude.inRadians, longitude.inRadians, zone)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(latitude, longitude, converter.northing, converter.easting)\n }\n\n /**\n * Create a set of Gauss-Kruger coordinates.\n *\n * @param x the northing distance (X) in meters.\n * @param y the easting distance (Y) in meters\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to Gauss-Kruger coordinates fails.\n */\n @JvmStatic\n fun fromXY(x: Double, y: Double): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGKToGeodetic(y, x)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(converter.latitude.radians, converter.longitude.radians, x, y)\n }\n\n /**\n * Create a Gauss-Kruger rectangular coordinate from a standard XY coordinate text string.\n *\n * @param xyString the XY coordinate text string.\n * @return the corresponding [GKCoord].\n * @throws IllegalArgumentException if the [xyString] is empty or the conversion to geodetic coordinates fails.\n */\n @JvmStatic\n fun fromString(xyString: String): GKCoord {\n val tokens = xyString.replace(\"[-.,;]\".toRegex(), \"\").trim { it <= ' ' }.split(\"\\\\s+\".toRegex())\n require(tokens.size >= 2 && tokens[1].length > 6) { \"Gauss-Kruger Conversion Error\" }\n val x = tokens[0].toDouble()\n val y = tokens[1].toDouble()\n val north = xyString.count { it == '-' }.mod(2) == 0\n return fromXY(if (north) x else -x, y)\n }\n }\n\n fun toLocation() = Location(latitude, longitude)\n\n override fun toString(): String {\n val x = x.roundToInt()\n val y = y.roundToInt()\n val suffix = 100000\n return \"%02d-%05d, %02d-%05d\".format(x / suffix, abs(x % suffix), y / suffix, abs(y % suffix))\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.math.*\n\n/**\n * Converter used to translate Gauss-Kruger rectangular coordinates to and from geodetic latitude and longitude.\n */\ninternal class GKCoordConverter {\n companion object {\n const val NO_ERROR = 0x0000\n }\n\n private val ellipsoid = Ellipsoid.Krasovsky\n\n /** Easting (Y) in meters */\n var easting = 0.0\n private set\n /** Northing (X) in meters */\n var northing = 0.0\n private set\n /** Latitude in radians. */\n var latitude = 0.0\n private set\n /** Longitude in radians.*/\n var longitude = 0.0\n private set\n\n /**\n * The function Convert_Geodetic_To_GK converts geodetic (latitude and longitude) coordinates to Gauss-Kruger\n * projection (easting and northing) coordinates according to the Krasovsky ellipsoid.\n *\n * @param lat Latitude in radians\n * @param lon Longitude in radians\n * @param zone optional zone to force coordinates conversion in it\n *\n * @return error code\n */\n @Suppress(\"NAME_SHADOWING\")\n fun convertGeodeticToGK(lat: Double, lon: Double, zone: Int = 0): Int {\n val lon = if (lon < 0.0) lon + 2.0 * PI else lon\n val zone = if (zone != 0) zone else (lon * 180.0 / PI).toInt() / 6 + 1\n val a = ellipsoid.semiMajorAxis\n val b = ellipsoid.semiMinorAxis\n val e2 = (a * a - b * b) / (a * a)\n val n = (a - b) / (a + b)\n val nPow2 = n * n\n val nPow3 = n * n * n\n\n val f = 1.0\n val lat0 = 0.0\n val lon0 = (zone * 6 - 3) * PI / 180.0\n val n0 = 0.0\n val e0 = zone * 1e6 + 500000.0\n\n val dLon = lon - lon0\n val dLat = lat - lat0\n val pLat = lat + lat0\n\n val sinLat = sin(lat)\n val sinLatPow2 = sinLat * sinLat\n val cosLat = cos(lat)\n val cosLatPow3 = cosLat * cosLat * cosLat\n val cosLatPow5 = cosLat * cosLat * cosLat * cosLat * cosLat\n val tanLat = tan(lat)\n val tanLatPow2 = tanLat * tanLat\n val tanLatPow4 = tanLatPow2 * tanLatPow2\n\n val v = a * f * (1.0 - e2 * sinLatPow2).pow(-0.5)\n val p = a * f * (1.0 - e2) * (1 - e2 * sinLatPow2).pow(-1.5)\n val n2 = v / p - 1.0\n val m1 = (1.0 + n + 5.0 / 4.0 * nPow2 + 5.0 / 4.0 * nPow3) * dLat\n val m2 = (3.0 * n + 3.0 * nPow2 + 21.0 / 8.0 * nPow3) * sin(dLat) * cos(pLat)\n val m3 = (15.0 / 8.0 * nPow2 + 15.0 / 8.0 * nPow3) * sin(2.0 * dLat) * cos(2 * pLat)\n val m4 = 35.0 / 24.0 * nPow3 * sin(3 * dLat) * cos(3.0 * pLat)\n val m = b * f * (m1 - m2 + m3 - m4)\n val i = m + n0\n val ii = v / 2.0 * sinLat * cosLat\n val iii = v / 24.0 * sinLat * cosLatPow3 * (5.0 - tanLatPow2 + 9.0 * n2)\n val iiia = v / 720.0 * sinLat * cosLatPow5 * (61.0 - 58.0 * tanLatPow2 + tanLatPow4)\n val iv = v * cosLat\n val V = v / 6.0 * cosLatPow3 * (v / p - tanLatPow2)\n val VI = v / 120.0 * cosLatPow5 * (5.0 - 18.0 * tanLatPow2 + tanLatPow4 + 14 * n2 - 58 * tanLatPow2 * n2)\n\n easting = e0 + iv * dLon + V * dLon * dLon * dLon + VI * dLon * dLon * dLon * dLon * dLon\n northing = i + ii * dLon * dLon + iii * dLon * dLon * dLon * dLon + iiia * dLon * dLon * dLon * dLon * dLon * dLon\n\n return NO_ERROR\n }\n\n fun convertGKToGeodetic(easting: Double, northing: Double): Int {\n val zone = (easting / 1e6).toInt()\n val l0 = (6 * (if (zone <= 30) zone else zone - 60) - 3) * PI / 180.0\n val x = northing\n val y = easting - (zone * 1e6 + 500000.0)\n val beta = x / 6367558.497\n val cosBeta = cos(beta)\n val cos2beta = cosBeta * cosBeta\n val bx = ((2382 * cos2beta + 293609) * cos2beta + 50221747) * sin(beta) * cos(beta) * 1e-10 + beta\n val cosBx = cos(bx)\n val cos2Bx = cosBx * cosBx\n val sinBx = sin(bx)\n val sin2Bx = sinBx * sinBx\n val a22 = (0.003369263 * cos2Bx + 0.5) * sinBx * cosBx\n val a24 = ((0.0056154 - 0.0000151 * cos2Bx) * cos2Bx + 0.1616128) * cos2Bx + 0.25\n val a26 = ((0.00389 * cos2Bx + 0.04310) * cos2Bx - 0.00168) * cos2Bx + 0.125\n val a28 = ((0.013 * cos2Bx + 0.008) * cos2Bx - 0.031) * cos2Bx + 0.078\n val b13 = (1 / 6.0 - 0.00112309 * cos2Bx) * cos2Bx - 1 / 3.0\n val b15 = ((0.008783 - 0.000112 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 0.2\n val b17 = (1 / 6.0 - 0.0361 * cos2Bx) * cos2Bx - 0.1429\n val b19 = ((0.064 - 0.004 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 1 / 9.0\n val nx = ((0.605 * sin2Bx + 107.155) * sin2Bx + 21346.142) * sin2Bx + ellipsoid.semiMajorAxis\n val z = y / (nx * cosBx)\n\n latitude = bx + (((a28 * z * z - a26) * z * z + a24) * z * z - 1) * z * z * a22\n longitude = l0 + ((((b19 * z * z + b17) * z * z + b15) * z * z + b13) * z * z + 1) * z\n\n return NO_ERROR\n }\n\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.jvm.JvmStatic\n\ndata class HelmertParameters(\n // Linear transformation elements, in metres\n val dX: Double,\n val dY: Double,\n val dZ: Double,\n\n // Angular transformation elements, in arc-seconds\n val omegaX: Double,\n val omegaY: Double,\n val omegaZ: Double,\n\n // Scale differential\n val m: Double,\n\n // Ellipsoid\n val fromEllipsoid: Ellipsoid,\n val toEllipsoid: Ellipsoid\n) {\n companion object {\n @JvmStatic val UCS2000_WGS84 = HelmertParameters(\n 24.3234, -121.3708, -75.8275,\n 0.0, 0.0, 0.0,\n -1.74e-9, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_UCS2000 = HelmertParameters(\n -24.3234, 121.3708, 75.8275,\n 0.0, 0.0, 0.0,\n 1.74e-9, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n @JvmStatic val SK42_WGS84 = HelmertParameters(\n 23.92, -141.27, -80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_SK42 = HelmertParameters(\n -23.92, 141.27, 80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.projection.Wgs84Projection\n\nobject HelmertTransformation {\n\n fun transform(position: Position, parameters: HelmertParameters, result: Position = Position()) =\n transform(position.latitude, position.longitude, position.altitude, parameters, result)\n\n fun transform(latitude: Angle, longitude: Angle, altitude: Double, parameters: HelmertParameters, result: Position = Position()): Position {\n val projection = Wgs84Projection()\n val fromGlobe = Globe(parameters.fromEllipsoid, projection)\n val toGlobe = Globe(parameters.toEllipsoid, projection)\n val fromCartesian = fromGlobe.geographicToCartesian(latitude, longitude, altitude, Vec3())\n val toCartesian = transform(fromCartesian, parameters)\n return toGlobe.cartesianToGeographic(toCartesian.x, toCartesian.y, toCartesian.z, result)\n }\n\n fun transform(point: Vec3, parameters: HelmertParameters, result: Vec3 = Vec3()) =\n transform(point.x, point.y, point.z, parameters, result)\n\n fun transform(x: Double, y: Double, z: Double, parameters: HelmertParameters, result: Vec3 = Vec3()) = result.set(\n x + -parameters.omegaZ * z + parameters.m * x + parameters.omegaX * y + parameters.dY,\n y + parameters.omegaY * z + -parameters.omegaX * x + parameters.m * y + parameters.dZ,\n z + parameters.m * z + parameters.omegaZ * x + -parameters.omegaY * y + parameters.dX\n )\n\n}","package earth.worldwind.geom.coords\n\nenum class Hemisphere { N, S; }","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds an immutable MGRS coordinate string along with\r\n * the corresponding latitude and longitude.\r\n */\r\nclass MGRSCoord private constructor(val latitude: Angle, val longitude: Angle, private val MGRSString: String) {\r\n companion object {\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the maximum precision of five digits (one meter).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 5)\r\n\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the given precision or number of digits (1 to 5).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @param precision the number of digits used for easting and northing (1 to 5).\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle, precision: Int): MGRSCoord {\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertGeodeticToMGRS(latitude.inRadians, longitude.inRadians, precision)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(latitude, longitude, converter.mgrsString)\r\n }\r\n\r\n /**\r\n * Create a MGRS coordinate from a standard MGRS coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * Valid examples:
\r\n * 32TLP5626635418
\r\n * 32 T LP 56266 35418
\r\n * 11S KU 528 111
\r\n *\r\n * @param MGRSString the MGRS coordinate text string.\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the [MGRSString] is empty,\r\n * the [Globe] is null, or the conversion to geodetic coordinates fails (invalid coordinate string).\r\n */\r\n @JvmStatic\r\n fun fromString(MGRSString: String): MGRSCoord {\r\n var str = MGRSString\r\n str = str.uppercase().replace(\" \", \"\")\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertMGRSToGeodetic(str)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(converter.latitude.radians, converter.longitude.radians, str)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = MGRSString\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.util.format.format\r\nimport kotlin.math.PI\r\nimport kotlin.math.floor\r\nimport kotlin.math.pow\r\n\r\n/*\r\n * Converter used to translate MGRS coordinate strings to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans mgrs.c and mgrs.h code. Contains routines to convert from Geodetic to MGRS and\r\n * the other direction.\r\n */\r\ninternal class MGRSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val STRING_ERROR = 0x0004\r\n const val PRECISION_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0040\r\n const val NORTHING_ERROR = 0x0080\r\n const val HEMISPHERE_ERROR = 0x0200\r\n const val LAT_WARNING = 0x0400\r\n const val UTM_ERROR = 0x1000\r\n const val UPS_ERROR = 0x2000\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val MAX_PRECISION = 5\r\n private const val MIN_UTM_LAT = -80 * PI / 180.0 // -80 degrees in radians\r\n private const val MAX_UTM_LAT = 84 * PI / 180.0 // 84 degrees in radians\r\n private const val DEG_TO_RAD = 0.017453292519943295 // PI/180\r\n private const val RAD_TO_DEG = 57.29577951308232 // 180/PI\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n private const val TWO_MIL = 2000000.0\r\n private const val ONE_HT = 100000.0\r\n private const val CLARKE_1866 = \"CC\"\r\n private const val CLARKE_1880 = \"CD\"\r\n private const val BESSEL_1841 = \"BR\"\r\n private const val BESSEL_1841_NAMIBIA = \"BN\"\r\n private const val LETTER_A = 0 /* ARRAY INDEX FOR LETTER A */\r\n private const val LETTER_B = 1 /* ARRAY INDEX FOR LETTER B */\r\n private const val LETTER_C = 2 /* ARRAY INDEX FOR LETTER C */\r\n private const val LETTER_D = 3 /* ARRAY INDEX FOR LETTER D */\r\n private const val LETTER_E = 4 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_F = 5 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_G = 6 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_H = 7 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_I = 8 /* ARRAY INDEX FOR LETTER I */\r\n private const val LETTER_J = 9 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_K = 10 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_L = 11 /* ARRAY INDEX FOR LETTER L */\r\n private const val LETTER_M = 12 /* ARRAY INDEX FOR LETTER M */\r\n private const val LETTER_N = 13 /* ARRAY INDEX FOR LETTER N */\r\n private const val LETTER_O = 14 /* ARRAY INDEX FOR LETTER O */\r\n private const val LETTER_P = 15 /* ARRAY INDEX FOR LETTER P */\r\n private const val LETTER_Q = 16 /* ARRAY INDEX FOR LETTER Q */\r\n private const val LETTER_R = 17 /* ARRAY INDEX FOR LETTER R */\r\n private const val LETTER_S = 18 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_T = 19 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_U = 20 /* ARRAY INDEX FOR LETTER U */\r\n private const val LETTER_V = 21 /* ARRAY INDEX FOR LETTER V */\r\n private const val LETTER_W = 22 /* ARRAY INDEX FOR LETTER W */\r\n private const val LETTER_X = 23 /* ARRAY INDEX FOR LETTER X */\r\n private const val LETTER_Y = 24 /* ARRAY INDEX FOR LETTER Y */\r\n private const val LETTER_Z = 25 /* ARRAY INDEX FOR LETTER Z */\r\n private const val MGRS_LETTERS = 3 /* NUMBER OF LETTERS IN MGRS */\r\n private const val alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\r\n\r\n // UPS Constants are in the following order:\r\n // letter representing latitude band\r\n // 2nd letter range - high number\r\n // 2nd letter range - low number\r\n // 3rd letter range - high number (UPS)\r\n // False easting based on 2nd letter\r\n // False northing based on 3rd letter\r\n private val upsConstants = arrayOf(\r\n intArrayOf(LETTER_A, LETTER_J, LETTER_Z, LETTER_Z, 800000, 800000),\r\n intArrayOf(LETTER_B, LETTER_A, LETTER_R, LETTER_Z, 2000000, 800000),\r\n intArrayOf(LETTER_Y, LETTER_J, LETTER_Z, LETTER_P, 800000, 1300000),\r\n intArrayOf(LETTER_Z, LETTER_A, LETTER_J, LETTER_P, 2000000, 1300000)\r\n )\r\n\r\n // Latitude Band Constants are in the following order:\r\n // letter representing latitude band\r\n // minimum northing for latitude band\r\n // upper latitude for latitude band\r\n // lower latitude for latitude band\r\n private val latitudeBandConstants = arrayOf(\r\n doubleArrayOf(LETTER_C.toDouble(), 1100000.0, -72.0, -80.5, 0.0),\r\n doubleArrayOf(LETTER_D.toDouble(), 2000000.0, -64.0, -72.0, 2000000.0),\r\n doubleArrayOf(LETTER_E.toDouble(), 2800000.0, -56.0, -64.0, 2000000.0),\r\n doubleArrayOf(LETTER_F.toDouble(), 3700000.0, -48.0, -56.0, 2000000.0),\r\n doubleArrayOf(LETTER_G.toDouble(), 4600000.0, -40.0, -48.0, 4000000.0),\r\n doubleArrayOf(LETTER_H.toDouble(), 5500000.0, -32.0, -40.0, 4000000.0),\r\n doubleArrayOf(LETTER_J.toDouble(), 6400000.0, -24.0, -32.0, 6000000.0),\r\n doubleArrayOf(LETTER_K.toDouble(), 7300000.0, -16.0, -24.0, 6000000.0),\r\n doubleArrayOf(LETTER_L.toDouble(), 8200000.0, -8.0, -16.0, 8000000.0),\r\n doubleArrayOf(LETTER_M.toDouble(), 9100000.0, 0.0, -8.0, 8000000.0),\r\n doubleArrayOf(LETTER_N.toDouble(), 0.0, 8.0, 0.0, 0.0),\r\n doubleArrayOf(LETTER_P.toDouble(), 800000.0, 16.0, 8.0, 0.0),\r\n doubleArrayOf(LETTER_Q.toDouble(), 1700000.0, 24.0, 16.0, 0.0),\r\n doubleArrayOf(LETTER_R.toDouble(), 2600000.0, 32.0, 24.0, 2000000.0),\r\n doubleArrayOf(LETTER_S.toDouble(), 3500000.0, 40.0, 32.0, 2000000.0),\r\n doubleArrayOf(LETTER_T.toDouble(), 4400000.0, 48.0, 40.0, 4000000.0),\r\n doubleArrayOf(LETTER_U.toDouble(), 5300000.0, 56.0, 48.0, 4000000.0),\r\n doubleArrayOf(LETTER_V.toDouble(), 6200000.0, 64.0, 56.0, 6000000.0),\r\n doubleArrayOf(LETTER_W.toDouble(), 7000000.0, 72.0, 64.0, 6000000.0),\r\n doubleArrayOf(LETTER_X.toDouble(), 7900000.0, 84.5, 72.0, 6000000.0)\r\n )\r\n }\r\n\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n var mgrsString = \"\"\r\n private set\r\n private var ltr2LowValue = 0\r\n private var ltr2HighValue = 0 // this is only used for doing MGRS to xxx conversions.\r\n private var falseNorthing = 0.0\r\n private var lastLetter = 0\r\n private var lastError = NO_ERROR\r\n private var north = 0.0\r\n private var south = 0.0\r\n private var minNorthing = 0.0\r\n private var northingOffset = 0.0\r\n private val mgrsEllipsoidCode = \"WE\"\r\n\r\n private class MGRSComponents(\r\n val zone: Int, val latitudeBand: Int, val squareLetter1: Int, val squareLetter2: Int,\r\n val easting: Double, val northing: Double, val precision: Int\r\n ) {\r\n override fun toString() = \"MGRS: \" + zone + \" \" + alphabet[latitudeBand] + \" \" +\r\n alphabet[squareLetter1] + alphabet[squareLetter2] + \" \" +\r\n easting + \" \" + northing + \" \" + \"(\" + precision + \")\"\r\n }\r\n\r\n /**\r\n * The function ConvertMGRSToGeodetic converts an MGRS coordinate string to Geodetic (latitude and longitude)\r\n * coordinates according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param MGRSString MGRS coordinate string.\r\n *\r\n * @return the error code.\r\n */\r\n fun convertMGRSToGeodetic(MGRSString: String): Int {\r\n latitude = 0.0\r\n longitude = 0.0\r\n val mgrs = breakMGRSString(MGRSString) ?: return lastError\r\n var errorCode = NO_ERROR\r\n if (mgrs.zone != 0) {\r\n val utm = convertMGRSToUTM(MGRSString)\r\n if (utm != null) {\r\n latitude = utm.latitude.inRadians\r\n longitude = utm.longitude.inRadians\r\n } else errorCode = UTM_ERROR\r\n } else {\r\n val ups = convertMGRSToUPS(MGRSString)\r\n if (ups != null) {\r\n latitude = ups.latitude.inRadians\r\n longitude = ups.longitude.inRadians\r\n } else errorCode = UPS_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Break_MGRS_String breaks down an MGRS coordinate string into its component parts. Updates\r\n * last_error.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [MGRSComponents] or null.\r\n */\r\n private fun breakMGRSString(MGRSString: String): MGRSComponents? {\r\n var str = MGRSString\r\n var i = 0\r\n var errorCode = NO_ERROR\r\n var zone = 0\r\n val letters = IntArray(3)\r\n var easting = 0L\r\n var northing = 0L\r\n var precision = 0\r\n str = str.uppercase().replace(\"\\\\s\", \"\")\r\n var j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n var numDigits = i - j\r\n if (numDigits <= 2) {\r\n if (numDigits > 0) {\r\n /* get zone */\r\n zone = str.substring(j, i).toInt()\r\n if (zone < 1 || zone > 60) errorCode = errorCode or STRING_ERROR\r\n }\r\n }\r\n j = i\r\n while (i < str.length && str[i].isLetter()) i++\r\n val numLetters = i - j\r\n if (numLetters == 3) {\r\n /* get letters */\r\n letters[0] = alphabet.indexOf(str[j].uppercaseChar())\r\n if (letters[0] == LETTER_I || letters[0] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[1] = alphabet.indexOf(str[j + 1].uppercaseChar())\r\n if (letters[1] == LETTER_I || letters[1] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[2] = alphabet.indexOf(str[j + 2].uppercaseChar())\r\n if (letters[2] == LETTER_I || letters[2] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n } else errorCode = errorCode or STRING_ERROR\r\n j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n numDigits = i - j\r\n if (numDigits <= 10 && numDigits % 2 == 0) {\r\n /* get easting, northing and precision */\r\n /* get easting & northing */\r\n val n = numDigits / 2\r\n precision = n\r\n if (n > 0) {\r\n easting = str.substring(j, j + n).toLong()\r\n northing = str.substring(j + n, j + n + n).toLong()\r\n val multiplier = 10.0.pow(5 - n).toLong()\r\n easting *= multiplier\r\n northing *= multiplier\r\n } else {\r\n easting = 0\r\n northing = 0\r\n }\r\n } else errorCode = errorCode or STRING_ERROR\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR) MGRSComponents(\r\n zone, letters[0], letters[1], letters[2],\r\n easting.toDouble(), northing.toDouble(), precision\r\n ) else null\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Band_Min_Northing receives a latitude band letter and uses the Latitude_Band_Table to\r\n * determine the minimum northing for that latitude band letter. Updates min_northing.\r\n *\r\n * @param letter Latitude band letter.\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeBandMinNorthing(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n minNorthing = latitudeBandConstants[letter - 2][1]\r\n northingOffset = latitudeBandConstants[letter - 2][4]\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n minNorthing = latitudeBandConstants[letter - 3][1]\r\n northingOffset = latitudeBandConstants[letter - 3][4]\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n minNorthing = latitudeBandConstants[letter - 4][1]\r\n northingOffset = latitudeBandConstants[letter - 4][4]\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Range receives a latitude band letter and uses the Latitude_Band_Table to determine the\r\n * latitude band boundaries for that latitude band letter. Updates north and south.\r\n *\r\n * @param letter the Latitude band letter\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeRange(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n north = latitudeBandConstants[letter - 2][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 2][3] * DEG_TO_RAD\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n north = latitudeBandConstants[letter - 3][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 3][3] * DEG_TO_RAD\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n north = latitudeBandConstants[letter - 4][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 4][3] * DEG_TO_RAD\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function convertMGRSToUTM converts an MGRS coordinate string to UTM projection (zone, hemisphere, easting and\r\n * northing) coordinates according to the current ellipsoid parameters. Updates last_error if any errors occurred.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [UTMCoord] or null.\r\n */\r\n private fun convertMGRSToUTM(MGRSString: String): UTMCoord? {\r\n var errorCode = NO_ERROR\r\n var utm: UTMCoord? = null\r\n val mgrs = breakMGRSString(MGRSString)\r\n if (mgrs == null) errorCode = errorCode or STRING_ERROR else {\r\n if (mgrs.latitudeBand == LETTER_X && (mgrs.zone == 32 || mgrs.zone == 34 || mgrs.zone == 36))\r\n errorCode = errorCode or STRING_ERROR\r\n else {\r\n val hemisphere = if (mgrs.latitudeBand < LETTER_N) Hemisphere.S else Hemisphere.N\r\n getGridValues(mgrs.zone)\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter2 > LETTER_V) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n var gridNorthing = mgrs.squareLetter2 * ONE_HT\r\n var gridEasting = (mgrs.squareLetter1 - ltr2LowValue + 1) * ONE_HT\r\n if (ltr2LowValue == LETTER_J && mgrs.squareLetter1 > LETTER_O) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n errorCode = getLatitudeBandMinNorthing(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing -= falseNorthing\r\n if (gridNorthing < 0.0) gridNorthing += TWO_MIL\r\n gridNorthing += northingOffset\r\n if (gridNorthing < minNorthing) gridNorthing += TWO_MIL\r\n val easting = gridEasting + mgrs.easting\r\n val northing = gridNorthing + mgrs.northing\r\n try {\r\n utm = UTMCoord.fromUTM(mgrs.zone, hemisphere, easting, northing)\r\n latitude = utm.latitude.inRadians\r\n val divisor = 10.0.pow(mgrs.precision)\r\n errorCode = getLatitudeRange(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n if (!(south - DEG_TO_RAD / divisor <= latitude\r\n && latitude <= north + DEG_TO_RAD / divisor)\r\n ) errorCode = errorCode or LAT_WARNING\r\n }\r\n } catch (e: Exception) {\r\n errorCode = UTM_ERROR\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR || errorCode == LAT_WARNING) utm else null\r\n }\r\n\r\n /**\r\n * The function convertGeodeticToMGRS converts Geodetic (latitude and longitude) coordinates to an MGRS coordinate\r\n * string, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned by\r\n * the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radian\r\n * @param precision Precision level of MGRS string\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToMGRS(latitude: Double, longitude: Double, precision: Int): Int {\r\n mgrsString = \"\"\r\n var errorCode = NO_ERROR\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = LAT_ERROR\r\n if (longitude < -PI || longitude > 2 * PI) errorCode = LON_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n errorCode = if (latitude < MIN_UTM_LAT || latitude > MAX_UTM_LAT) {\r\n try {\r\n val ups = UPSCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUPSToMGRS(ups.hemisphere, ups.easting, ups.northing, precision)\r\n } catch (e: Exception) {\r\n UPS_ERROR\r\n }\r\n } else {\r\n try {\r\n val utm = UTMCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUTMToMGRS(utm.zone, latitude, utm.easting, utm.northing, precision)\r\n } catch (e: Exception) {\r\n UTM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, and northing) coordinates to an MGRS\r\n * coordinate string according to the current ellipsoid parameters. If any errors occur, the error code(s) are\r\n * returned by the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n * @param precision precision level of MGRS string\r\n *\r\n * @return error value\r\n */\r\n private fun convertUPSToMGRS(hemisphere: Hemisphere, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* northing used to derive 3rd letter of MGRS */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (east < MIN_EAST_NORTH || east > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (north < MIN_EAST_NORTH || north > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = errorCode or PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n if (Hemisphere.N == hemisphere) {\r\n if (east >= TWO_MIL) letters[0] = LETTER_Z else letters[0] = LETTER_Y\r\n val index = letters[0] - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n if (east >= TWO_MIL) letters[0] = LETTER_B else letters[0] = LETTER_A\r\n ltr2LowValue = upsConstants[letters[0]][1]\r\n falseEasting = upsConstants[letters[0]][4].toDouble()\r\n falseNorthing = upsConstants[letters[0]][5].toDouble()\r\n }\r\n gridNorthing = north\r\n gridNorthing -= falseNorthing\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n gridEasting -= falseEasting\r\n letters[1] = ltr2LowValue + (gridEasting / ONE_HT).toInt()\r\n if (east < TWO_MIL) {\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n if (letters[1] > LETTER_U) letters[1] = letters[1] + 2\r\n } else {\r\n if (letters[1] > LETTER_C) letters[1] = letters[1] + 2\r\n if (letters[1] > LETTER_H) letters[1] = letters[1] + 1\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n }\r\n makeMGRSString(0, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function UTM_To_MGRS calculates an MGRS coordinate string based on the zone, latitude, easting and northing.\r\n *\r\n * @param zone Zone number\r\n * @param latitude Latitude in radians\r\n * @param easting Easting\r\n * @param northing Northing\r\n * @param precision Precision\r\n *\r\n * @return error code\r\n */\r\n private fun convertUTMToMGRS(zone: Int, latitude: Double, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n var gridEasting: Double /* Easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* Northing used to derive 3rd letter of MGRS */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n\r\n /* Round easting and northing values */\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n getGridValues(zone)\r\n val errorCode = getLatitudeLetter(latitude)\r\n letters[0] = lastLetter\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = north\r\n if (gridNorthing == 1e7) gridNorthing -= 1.0\r\n while (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n gridNorthing += falseNorthing\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n if (letters[0] == LETTER_V && zone == 31 && gridEasting == 500000.0) gridEasting -= 1.0 /* SUBTRACT 1 METER */\r\n letters[1] = ltr2LowValue + ((gridEasting / ONE_HT).toInt() - 1)\r\n if (ltr2LowValue == LETTER_J && letters[1] > LETTER_N) letters[1] = letters[1] + 1\r\n makeMGRSString(zone, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Grid_Values sets the letter range used for the 2nd letter in the MGRS coordinate string, based\r\n * on the set number of the utm zone. It also sets the false northing using a value of A for the second letter of\r\n * the grid square, based on the grid pattern and set number of the utm zone.\r\n *
\r\n * Key values that are set in this function include: ltr2_low_value, ltr2_high_value, and false_northing.\r\n *\r\n * @param zone Zone number\r\n */\r\n private fun getGridValues(zone: Int) {\r\n var setNumber = zone % 6 /* Set number (1-6) based on UTM zone number */\r\n if (setNumber == 0) setNumber = 6\r\n val aaPattern = if (mgrsEllipsoidCode.compareTo(CLARKE_1866) == 0\r\n || mgrsEllipsoidCode.compareTo(CLARKE_1880) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841_NAMIBIA) == 0\r\n ) 0 else 1 /* Pattern based on ellipsoid code */\r\n if (setNumber == 1 || setNumber == 4) {\r\n ltr2LowValue = LETTER_A\r\n ltr2HighValue = LETTER_H\r\n } else if (setNumber == 2 || setNumber == 5) {\r\n ltr2LowValue = LETTER_J\r\n ltr2HighValue = LETTER_R\r\n } else if (setNumber == 3 || setNumber == 6) {\r\n ltr2LowValue = LETTER_S\r\n ltr2HighValue = LETTER_Z\r\n }\r\n\r\n /* False northing at A for second letter of grid square */\r\n falseNorthing = if (aaPattern == 1) {\r\n if (setNumber % 2 == 0) 500000.0\r\n else 0.0\r\n } else {\r\n if (setNumber % 2 == 0) 1500000.0\r\n else 1000000.00\r\n }\r\n }\r\n\r\n /**\r\n * The function receives a latitude value and uses the Latitude_Band_Table to determine the\r\n * latitude band letter for that latitude.\r\n *\r\n * @param latitude latitude to turn into code\r\n *\r\n * @return error code\r\n */\r\n private fun getLatitudeLetter(latitude: Double): Int {\r\n var errorCode = NO_ERROR\r\n val latDeg = latitude * RAD_TO_DEG\r\n if (latDeg >= 72 && latDeg < 84.5) lastLetter = LETTER_X\r\n else if (latDeg > -80.5 && latDeg < 72) {\r\n val temp = (latitude + 80.0 * DEG_TO_RAD) / (8.0 * DEG_TO_RAD) + 1.0e-12\r\n lastLetter = latitudeBandConstants[temp.toInt()][0].toInt()\r\n } else errorCode = errorCode or LAT_ERROR\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Round_MGRS rounds the input value to the nearest integer, using the standard engineering rule. The\r\n * rounded integer value is then returned.\r\n *\r\n * @param value Value to be rounded\r\n *\r\n * @return rounded double value\r\n */\r\n private fun roundMGRS(value: Double): Double {\r\n val floorValue = floor(value)\r\n val fraction = value - floorValue\r\n var intValue = floorValue.toLong()\r\n if (fraction > 0.5 || fraction == 0.5 && intValue % 2 == 1L) intValue++\r\n return intValue.toDouble()\r\n }\r\n\r\n /**\r\n * The function Make_MGRS_String constructs an MGRS string from its component parts.\r\n *\r\n * @param zone UTM Zone\r\n * @param letters MGRS coordinate string letters\r\n * @param easting Easting value\r\n * @param northing Northing value\r\n * @param precision Precision level of MGRS string\r\n */\r\n private fun makeMGRSString(zone: Int, letters: IntArray, easting: Double, northing: Double, precision: Int) {\r\n var east = easting\r\n var north = northing\r\n mgrsString = if (zone != 0) \"%02d\".format(zone) else \" \"\r\n for (j in 0..2) {\r\n if (letters[j] < 0 || letters[j] > 26) return\r\n mgrsString += alphabet[letters[j]]\r\n }\r\n val divisor = 10.0.pow(5 - precision)\r\n east %= 100000.0\r\n if (east >= 99999.5) east = 99999.0\r\n\r\n // Here we need to only use the number requesting in the precision\r\n val iEast = (east / divisor).toInt()\r\n var sEast = StringBuilder(iEast.toString())\r\n if (sEast.length > precision) sEast = StringBuilder(sEast.substring(0, precision - 1))\r\n else for (i in 0 until precision - sEast.length) sEast.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sEast\"\r\n north %= 100000.0\r\n if (north >= 99999.5) north = 99999.0\r\n val iNorth = (north / divisor).toInt()\r\n var sNorth = StringBuilder(iNorth.toString())\r\n if (sNorth.length > precision) sNorth = StringBuilder(sNorth.substring(0, precision - 1))\r\n else for (i in 0 until precision - sNorth.length) sNorth.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sNorth\"\r\n }\r\n\r\n /**\r\n * The function Convert_MGRS_To_UPS converts an MGRS coordinate string to UPS (hemisphere, easting, and northing)\r\n * coordinates, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param MGRS the MGRS coordinate string.\r\n *\r\n * @return a corresponding [UPSCoord] instance.\r\n */\r\n private fun convertMGRSToUPS(MGRS: String): UPSCoord? {\r\n val ltr2HighValue: Int /* 2nd letter range - high number */\r\n val ltr3HighValue: Int /* 3rd letter range - high number (UPS) */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting for 100,000 meter grid square */\r\n var gridNorthing: Double /* northing for 100,000 meter grid square */\r\n var errorCode = NO_ERROR\r\n val hemisphere: Hemisphere\r\n var easting: Double\r\n var northing: Double\r\n val mgrs = breakMGRSString(MGRS)\r\n if (mgrs != null) {\r\n if (mgrs.zone > 0) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n easting = mgrs.easting\r\n northing = mgrs.northing\r\n if (mgrs.latitudeBand >= LETTER_Y) {\r\n hemisphere = Hemisphere.N\r\n val index = mgrs.latitudeBand - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n ltr2HighValue = upsConstants[index][2]\r\n ltr3HighValue = upsConstants[index][3]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n hemisphere = Hemisphere.S\r\n ltr2LowValue = upsConstants[mgrs.latitudeBand][1]\r\n ltr2HighValue = upsConstants[mgrs.latitudeBand][2]\r\n ltr3HighValue = upsConstants[mgrs.latitudeBand][3]\r\n falseEasting = upsConstants[mgrs.latitudeBand][4].toDouble()\r\n falseNorthing = upsConstants[mgrs.latitudeBand][5].toDouble()\r\n }\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter1 == LETTER_D || mgrs.squareLetter1 == LETTER_E ||\r\n mgrs.squareLetter1 == LETTER_M || mgrs.squareLetter1 == LETTER_N ||\r\n mgrs.squareLetter1 == LETTER_V || mgrs.squareLetter1 == LETTER_W ||\r\n mgrs.squareLetter2 > ltr3HighValue) errorCode = STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = mgrs.squareLetter2 * ONE_HT + falseNorthing\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n gridEasting = (mgrs.squareLetter1 - ltr2LowValue) * ONE_HT + falseEasting\r\n if (ltr2LowValue != LETTER_A) {\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n if (mgrs.squareLetter1 > LETTER_U) gridEasting -= 200000.0\r\n } else {\r\n if (mgrs.squareLetter1 > LETTER_C) gridEasting -= 200000.0\r\n if (mgrs.squareLetter1 > LETTER_I) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n }\r\n easting += gridEasting\r\n northing += gridNorthing\r\n return UPSCoord.fromUPS(hemisphere, easting, northing)\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans polarst.c and polarst.h code.\r\n */\r\ninternal class PolarCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val ORIGIN_LAT_ERROR = 0x0004\r\n const val ORIGIN_LON_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0010\r\n const val NORTHING_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val RADIUS_ERROR = 0x0100\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val PI_Over_4 = PI / 4.0\r\n private const val TWO_PI = 2.0 * PI\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private var es = 0.08181919084262188000 /* Eccentricity of ellipsoid */\r\n private var esOver2 = .040909595421311 /* es / 2.0 */\r\n private var southernHemisphere = 0.0 /* Flag variable */\r\n private var mc = 1.0\r\n private var tc = 1.0\r\n private var e4 = 1.0033565552493\r\n private var amc = 6378137.0 /* Polar_a * mc */\r\n private var twoA = 12756274.0 /* 2.0 * Polar_a */\r\n\r\n /* Polar Stereographic projection Parameters */\r\n private var originLat = PI * 90.0 / 180.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 12713601.0\r\n private var deltaNorthing = 12713601.0\r\n\r\n var easting = 0.0\r\n private set\r\n var northing = 0.0\r\n private set\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function setPolarStereographicParameters receives the ellipsoid parameters and Polar Stereographic projection\r\n * parameters as inputs, and sets the corresponding state variables. If any errors occur, error code(s) are\r\n * returned by the function, otherwise POLAR_NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude of true scale, in radians\r\n * @param longitude Longitude down from pole, in radians\r\n * @param easting Easting (X) at center of projection, in meters\r\n * @param northing Northing (Y) at center of projection, in meters\r\n * @return error code\r\n */\r\n fun setPolarStereographicParameters(\r\n a: Double, f: Double, latitude: Double, longitude: Double, easting: Double, northing: Double\r\n ): Int {\r\n var lon = longitude\r\n val invF = 1 / f\r\n val epsilon = 1.0e-2\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* Origin Latitude out of range */\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* Origin Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or ORIGIN_LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n twoA = 2.0 * this.a\r\n this.f = f\r\n if (lon > PI) lon -= TWO_PI\r\n if (latitude < 0) {\r\n southernHemisphere = 1.0\r\n originLat = -latitude\r\n originLong = -lon\r\n } else {\r\n southernHemisphere = 0.0\r\n originLat = latitude\r\n originLong = lon\r\n }\r\n falseEasting = easting\r\n falseNorthing = northing\r\n val es2 = 2 * this.f - this.f * this.f\r\n es = sqrt(es2)\r\n esOver2 = es / 2.0\r\n if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) {\r\n val sLat = sin(originLat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val cLat = cos(originLat)\r\n mc = cLat / sqrt(1.0 - esSin * esSin)\r\n amc = this.a * mc\r\n tc = tan(PI_Over_4 - originLat / 2.0) / powEs\r\n } else {\r\n val onePlusEs = 1.0 + es\r\n val oneMinusEs = 1.0 - es\r\n e4 = sqrt(onePlusEs.pow(onePlusEs) * oneMinusEs.pow(oneMinusEs))\r\n }\r\n }\r\n\r\n /* Calculate Radius */\r\n convertGeodeticToPolarStereographic(0.0, originLong)\r\n deltaNorthing = this.northing * 2 // Increased range for accepted easting and northing values\r\n deltaNorthing = abs(deltaNorthing) + epsilon\r\n deltaEasting = deltaNorthing\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic coordinates (latitude and longitude) to\r\n * Polar Stereographic coordinates (easting and northing), according to the current ellipsoid and Polar\r\n * Stereographic projection parameters. If any errors occur, error code(s) are returned by the function, otherwise\r\n * POLAR_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude, in radians\r\n * @param longitude Longitude, in radians\r\n * @return error code\r\n */\r\n fun convertGeodeticToPolarStereographic(latitude: Double, longitude: Double): Int {\r\n var lat = latitude\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (lat < -PI_OVER_2 || lat > PI_OVER_2) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat < 0 && southernHemisphere == 0.0) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat > 0 && southernHemisphere == 1.0) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (abs(abs(lat) - PI_OVER_2) < 1.0e-10) {\r\n easting = 0.0\r\n northing = 0.0\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n lon *= -1.0\r\n lat *= -1.0\r\n }\r\n var dLam = lon - originLong\r\n if (dLam > PI) dLam -= TWO_PI\r\n if (dLam < -PI) dLam += TWO_PI\r\n val sLat = sin(lat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val t = tan(PI_Over_4 - lat / 2.0) / powEs\r\n val rho = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) amc * t / tc else twoA * t / e4\r\n if (southernHemisphere != 0.0) {\r\n easting = -(rho * sin(dLam) - falseEasting)\r\n northing = rho * cos(dLam) + falseNorthing\r\n } else easting = rho * sin(dLam) + falseEasting\r\n northing = -rho * cos(dLam) + falseNorthing\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Polar_Stereographic_To_Geodetic converts Polar\r\n * Stereographic coordinates (easting and northing) to geodetic\r\n * coordinates (latitude and longitude) according to the current ellipsoid\r\n * and Polar Stereographic projection Parameters. If any errors occur, the\r\n * code(s) are returned by the function, otherwise POLAR_NO_ERROR\r\n * is returned.\r\n *\r\n * @param Easting Easting (X), in meters\r\n * @param Northing Northing (Y), in meters\r\n * @return error code\r\n */\r\n fun convertPolarStereographicToGeodetic(Easting: Double, Northing: Double): Int {\r\n var dy = 0.0\r\n var dx = 0.0\r\n var rho = 0.0\r\n var tempPhi = 0.0\r\n var errorCode = NO_ERROR\r\n val minEasting = falseEasting - deltaEasting\r\n val maxEasting = falseEasting + deltaEasting\r\n val minNorthing = falseNorthing - deltaNorthing\r\n val maxNorthing = falseNorthing + deltaNorthing\r\n /* Easting out of range */\r\n if (Easting > maxEasting || Easting < minEasting) errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (Northing > maxNorthing || Northing < minNorthing) errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n dy = Northing - falseNorthing\r\n dx = Easting - falseEasting\r\n /* Radius of point with origin of false easting, false northing */\r\n rho = sqrt(dx * dx + dy * dy)\r\n val deltaRadius = sqrt(deltaEasting * deltaEasting + deltaNorthing * deltaNorthing)\r\n /* Point is outside of projection area */\r\n if (rho > deltaRadius) errorCode = errorCode or RADIUS_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (dy == 0.0 && dx == 0.0) {\r\n latitude = PI_OVER_2\r\n longitude = originLong\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n dy *= -1.0\r\n dx *= -1.0\r\n }\r\n val t = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) rho * tc / amc else rho * e4 / twoA\r\n var phi = PI_OVER_2 - 2.0 * atan(t)\r\n while (abs(phi - tempPhi) > 1.0e-10) {\r\n tempPhi = phi\r\n val sinPhi = sin(phi)\r\n val esSin = es * sinPhi\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n phi = PI_OVER_2 - 2.0 * atan(t * powEs)\r\n }\r\n latitude = phi\r\n longitude = originLong + atan2(dx, -dy)\r\n if (longitude > PI) longitude -= TWO_PI\r\n else if (longitude < -PI) longitude += TWO_PI\r\n /* force distorted values to 90, -90 degrees */\r\n if (latitude > PI_OVER_2) latitude = PI_OVER_2\r\n else if (latitude < -PI_OVER_2) latitude = -PI_OVER_2\r\n /* force distorted values to 180, -180 degrees */\r\n if (longitude > PI) longitude = PI else if (longitude < -PI) longitude = -PI\r\n }\r\n if (southernHemisphere != 0.0) {\r\n latitude *= -1.0\r\n longitude *= -1.0\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds a set of Transverse Mercator coordinates along with the\r\n * corresponding latitude and longitude.\r\n */\r\nclass TMCoord private constructor(val latitude: Angle, val longitude: Angle, val easting: Double, val northing: Double) {\r\n companion object {\r\n /**\r\n * Create a set of Transverse Mercator coordinates from a pair of latitude and longitude,\r\n * for the given [Globe] and projection parameters.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n * @param aOrNull semi-major ellipsoid radius. If this and argument f are non-null and globe is null, will use the specified a and f.\r\n * @param fOrNull ellipsoid flattening. If this and argument a are non-null and globe is null, will use the specified a and f.\r\n * @param originLatitude the origin latitude.\r\n * @param centralMeridian the central meridian longitude.\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * or the conversion to TM coordinates fails. If the globe is null conversion will default\r\n * to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(\r\n latitude: Angle, longitude: Angle, aOrNull: Double?, fOrNull: Double?,\r\n originLatitude: Angle, centralMeridian: Angle, falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n var a = aOrNull\r\n var f = fOrNull\r\n val converter = TMCoordConverter()\r\n if (a == null || f == null) {\r\n a = converter.a\r\n f = converter.f\r\n }\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertGeodeticToTransverseMercator(latitude.inRadians, longitude.inRadians)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(latitude, longitude, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of Transverse Mercator coordinates for the given [Globe],\r\n * easting, northing and projection parameters.\r\n *\r\n * @param easting the easting distance value in meters.\r\n * @param northing the northing distance value in meters.\r\n * @param originLatitude the origin latitude [Angle].\r\n * @param centralMeridian the central meridian longitude [Angle].\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * @throws IllegalArgumentException if the conversion to geodetic coordinates fails.\r\n * If the globe is null conversion will default to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromTM(\r\n easting: Double, northing: Double, originLatitude: Angle, centralMeridian: Angle,\r\n falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n val converter = TMCoordConverter()\r\n val a = converter.a\r\n val f = converter.f\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertTransverseMercatorToGeodetic(easting, northing)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(converter.latitude.radians, converter.longitude.radians, easting, northing)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/*\r\n * Converter used to translate Transverse Mercator coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans code tranmerc.c and tranmerc.h\r\n */\r\ninternal class TMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ORIGIN_LAT_ERROR = 0x0010\r\n const val CENT_MER_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val SCALE_FACTOR_ERROR = 0x0100\r\n const val LON_WARNING = 0x0200\r\n private const val MAX_LAT = PI * 89.99 / 180.0 /* 90 degrees in radians */\r\n private const val MAX_DELTA_LONG = PI * 90 / 180.0 /* 90 degrees in radians */\r\n private const val MIN_SCALE_FACTOR = 0.3\r\n private const val MAX_SCALE_FACTOR = 3.0\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid i meters */\r\n private set\r\n var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private set\r\n private var es = 0.0066943799901413800 /* Eccentricity (0.08181919084262188000) squared */\r\n private var ebs = 0.0067394967565869 /* Second Eccentricity squared */\r\n\r\n /* Transverse_Mercator projection Parameters */\r\n private var originLat = 0.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var scaleFactor = 1.0 /* Scale factor */\r\n\r\n /* Isometric to geodetic latitude parameters, default to WGS 84 */\r\n private var ap = 6367449.1458008\r\n private var bp = 16038.508696861\r\n private var cp = 16.832613334334\r\n private var dp = 0.021984404273757\r\n private var ep = 3.1148371319283e-005\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 40000000.0\r\n private var deltaNorthing = 40000000.0\r\n\r\n /** Easting/X at the center of the projection */\r\n var easting = 0.0\r\n private set\r\n /** Northing/Y at the center of the projection */\r\n var northing = 0.0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians. */\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function receives the ellipsoid parameters and Transverse Mercator\r\n * projection parameters as inputs, and sets the corresponding state variables. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude in radians at the origin of the projection\r\n * @param centralMeridian Longitude in radians at the center of the projection\r\n * @param easting Easting/X at the center of the projection\r\n * @param northing Northing/Y at the center of the projection\r\n * @param scaleFactor Projection scale factor\r\n *\r\n * @return error code\r\n */\r\n fun setTransverseMercatorParameters(\r\n a: Double, f: Double, latitude: Double, centralMeridian: Double, easting: Double, northing: Double, scaleFactor: Double\r\n ): Int {\r\n var cm = centralMeridian\r\n val invF = 1 / f\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* origin latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* origin longitude out of range */\r\n if (cm < -PI || cm > 2 * PI) errorCode = errorCode or CENT_MER_ERROR\r\n if (scaleFactor < MIN_SCALE_FACTOR || scaleFactor > MAX_SCALE_FACTOR) {\r\n errorCode = errorCode or SCALE_FACTOR_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n this.f = f\r\n originLat = 0.0\r\n originLong = 0.0\r\n falseNorthing = 0.0\r\n falseEasting = 0.0\r\n this.scaleFactor = 1.0\r\n\r\n /* Eccentricity Squared */\r\n es = 2 * this.f - this.f * this.f\r\n /* Second Eccentricity Squared */\r\n ebs = 1 / (1 - es) - 1\r\n val b = this.a * (1 - this.f)\r\n /*True meridional constants */\r\n val tn = (this.a - b) / (this.a + b)\r\n val tn2 = tn * tn\r\n val tn3 = tn2 * tn\r\n val tn4 = tn3 * tn\r\n val tn5 = tn4 * tn\r\n ap = this.a * (1e0 - tn + 5e0 * (tn2 - tn3) / 4e0 + 81e0 * (tn4 - tn5) / 64e0)\r\n bp = 3e0 * this.a * (tn - tn2 + (7e0 * (tn3 - tn4) / 8e0) + 55e0 * tn5 / 64e0) / 2e0\r\n cp = 15e0 * this.a * (tn2 - tn3 + 3e0 * (tn4 - tn5) / 4e0) / 16.0\r\n dp = 35e0 * this.a * (tn3 - tn4 + 11e0 * tn5 / 16e0) / 48e0\r\n ep = 315e0 * this.a * (tn4 - tn5) / 512e0\r\n convertGeodeticToTransverseMercator(MAX_LAT, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n deltaNorthing = this.northing\r\n convertGeodeticToTransverseMercator(0.0, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n originLat = latitude\r\n if (cm > PI) cm -= 2 * PI\r\n originLong = cm\r\n falseNorthing = northing\r\n falseEasting = easting\r\n this.scaleFactor = scaleFactor\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Transverse_Mercator converts geodetic (latitude and longitude) coordinates to\r\n * Transverse Mercator projection (easting and northing) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection coordinates. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToTransverseMercator(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n if (lon > PI) lon -= 2 * PI\r\n if (lon < originLong - MAX_DELTA_LONG || lon > originLong + MAX_DELTA_LONG) {\r\n val tempLong = if (lon < 0) lon + 2 * PI else lon\r\n val tempOrigin = if (originLong < 0) originLong + 2 * PI else originLong\r\n if (tempLong < tempOrigin - MAX_DELTA_LONG || tempLong > tempOrigin + MAX_DELTA_LONG)\r\n errorCode = errorCode or LON_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n /*\r\n * Delta Longitude\r\n */\r\n var dLam = lon - originLong\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian */\r\n if (abs(dLam) > 9.0 * PI / 180) errorCode = errorCode or LON_WARNING\r\n if (dLam > PI) dLam -= 2 * PI\r\n if (dLam < -PI) dLam += 2 * PI\r\n if (abs(dLam) < 2e-10) dLam = 0.0\r\n val s = sin(latitude)\r\n val c = cos(latitude)\r\n val c2 = c * c\r\n val c3 = c2 * c\r\n val c5 = c3 * c2\r\n val c7 = c5 * c2\r\n val t = tan(latitude)\r\n val tan2 = t * t\r\n val tan3 = tan2 * t\r\n val tan4 = tan3 * t\r\n val tan5 = tan4 * t\r\n val tan6 = tan5 * t\r\n val eta = ebs * c2\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n\r\n /* radius of curvature in prime vertical */\r\n val sn = a / sqrt(1 - es * sin(latitude).pow(2))\r\n\r\n /* True Meridional Distances */\r\n val tmd = (ap * latitude\r\n - bp * sin(2.0 * latitude)\r\n + cp * sin(4.0 * latitude)\r\n - dp * sin(6.0 * latitude)\r\n + ep * sin(8.0 * latitude))\r\n\r\n /* Origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* northing */\r\n val t1 = (tmd - tmdO) * scaleFactor\r\n val t2 = sn * s * c * scaleFactor / 2e0\r\n val t3 = sn * s * c3 * scaleFactor * (5e0 - tan2 + 9e0 * eta + 4e0 * eta2) / 24e0\r\n val t4 = sn * s * c5 * scaleFactor * (61e0 - 58e0 * tan2 + tan4 + 270e0 * eta - 330e0 * tan2 * eta + 445e0 * eta2 + 324e0 * eta3 - 680e0 * tan2 * eta2 + 88e0 * eta4 - 600e0 * tan2 * eta3 - 192e0 * tan2 * eta4) / 720e0\r\n val t5 = sn * s * c7 * scaleFactor * (1385e0 - 3111e0 * tan2 + 543e0 * tan4 - tan6) / 40320e0\r\n northing = falseNorthing + t1 + dLam.pow(2e0) * t2 + dLam.pow(4e0) * t3 + dLam.pow(6e0) * t4 + dLam.pow(8e0) * t5\r\n\r\n /* Easting */\r\n val t6 = sn * c * scaleFactor\r\n val t7 = sn * c3 * scaleFactor * (1e0 - tan2 + eta) / 6e0\r\n val t8 = sn * c5 * scaleFactor * ((5e0 - 18e0 * tan2 + tan4 + 14e0 * eta) - 58e0 * tan2 * eta + 13e0 * eta2 + 4e0 * eta3 - 64e0 * tan2 * eta2 - 24e0 * tan2 * eta3) / 120e0\r\n val t9 = sn * c7 * scaleFactor * (61e0 - 479e0 * tan2 + 179e0 * tan4 - tan6) / 5040e0\r\n easting = falseEasting + dLam * t6 + dLam.pow(3e0) * t7 + dLam.pow(5e0) * t8 + dLam.pow(7e0) * t9\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Transverse_Mercator_To_Geodetic converts Transverse Mercator projection (easting and\r\n * northing) coordinates to geodetic (latitude and longitude) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection parameters. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param easting Easting/X in meters\r\n * @param northing Northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertTransverseMercatorToGeodetic(easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n /* Easting out of range */\r\n if (easting < falseEasting - deltaEasting || easting > falseEasting + deltaEasting)\r\n errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (northing < falseNorthing - deltaNorthing || northing > falseNorthing + deltaNorthing)\r\n errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n /* True Meridional Distances for latitude of origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* Origin */\r\n val tmd = tmdO + (northing - falseNorthing) / scaleFactor\r\n\r\n /* First Estimate */\r\n var sr = a * (1e0 - es) / sqrt(1e0 - es * sin(0e0).pow(2)).pow(3)\r\n var ftphi = tmd / sr\r\n for (i in 0..4) {\r\n val t10 = (ap * ftphi\r\n - bp * sin(2.0 * ftphi)\r\n + cp * sin(4.0 * ftphi)\r\n - dp * sin(6.0 * ftphi)\r\n + ep * sin(8.0 * ftphi))\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n ftphi += (tmd - t10) / sr\r\n }\r\n\r\n /* Radius of Curvature in the meridian */\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n\r\n /* Radius of Curvature in the meridian */\r\n val sn = a / sqrt(1e0 - es * sin(ftphi).pow(2))\r\n\r\n /* Sine Cosine terms */\r\n val c = cos(ftphi)\r\n\r\n /* Tangent Value */\r\n val t = tan(ftphi)\r\n val tan2 = t * t\r\n val tan4 = tan2 * tan2\r\n val eta = ebs * c.pow(2)\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n var de = easting - falseEasting\r\n if (abs(de) < 0.0001) de = 0.0\r\n\r\n /* Latitude */\r\n val t10 = t / (2e0 * sr * sn * scaleFactor.pow(2))\r\n val t11 = t * (5e0 + 3e0 * tan2 + eta - 4e0 * eta.pow(2) - 9e0 * tan2 * eta) / (24e0 * sr * sn.pow(3) * scaleFactor.pow(4))\r\n val t12 = (t * ((61e0 + 90e0 * tan2 + 46e0 * eta + 45e0 * tan4 - 252e0 * tan2 * eta - 3e0 * eta2 + 100e0\r\n * eta3) - 66e0 * tan2 * eta2 - (90e0 * tan4\r\n * eta) + 88e0 * eta4 + 225e0 * tan4 * eta2 + 84e0 * tan2 * eta3 - 192e0 * tan2 * eta4)\r\n / (720e0 * sr * sn.pow(5) * scaleFactor.pow(6)))\r\n val t13 = t * (1385e0 + 3633e0 * tan2 + 4095e0 * tan4 + (1575e0 * t.pow(6))) / (40320e0 * sr * sn.pow(7) * scaleFactor.pow(8))\r\n latitude = (ftphi - de.pow(2) * t10 + de.pow(4) * t11 - de.pow(6) * t12 + de.pow(8) * t13)\r\n val t14 = 1e0 / (sn * c * scaleFactor)\r\n val t15 = (1e0 + 2e0 * tan2 + eta) / (6e0 * sn.pow(3) * c * scaleFactor.pow(3))\r\n val t16 = ((5e0 + 6e0 * eta + 28e0 * tan2 - 3e0 * eta2 + 8e0 * tan2 * eta + 24e0 * tan4 - 4e0\r\n * eta3) + 4e0 * tan2 * eta2 + (24e0 * tan2 * eta3)) / (120e0 * sn.pow(5) * c * scaleFactor.pow(5))\r\n val t17 = (61e0 + 662e0 * tan2 + 1320e0 * tan4 + (720e0 * t.pow(6))) / (5040e0 * sn.pow(7) * c * scaleFactor.pow(7))\r\n\r\n /* Difference in Longitude */\r\n val dLam = de * t14 - de.pow(3) * t15 + de.pow(5) * t16 - de.pow(7) * t17\r\n\r\n /* Longitude */\r\n longitude = originLong + dLam\r\n if (abs(latitude) > 90.0 * PI / 180.0) errorCode = errorCode or NORTHING_ERROR\r\n if (longitude > PI) {\r\n longitude -= 2 * PI\r\n if (abs(longitude) > PI) errorCode = errorCode or EASTING_ERROR\r\n }\r\n if (abs(dLam) > 9.0 * PI / 180 * cos(latitude)) {\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian at the equator */\r\n /* and decreases to 0 degrees at the poles */\r\n /* As you move towards the poles, distortion will become more significant */\r\n errorCode = errorCode or LON_WARNING\r\n }\r\n if (latitude > 1.0e10) errorCode = errorCode or LON_WARNING\r\n }\r\n return errorCode\r\n }\r\n}\r\n","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This immutable class holds a set of UPS coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UPSCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UPS coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertGeodeticToUPS(latitude.inRadians, longitude.inRadians)\r\n require(err == UPSCoordConverter.NO_ERROR) { \"UPS Conversion Error\" }\r\n return UPSCoord(latitude, longitude, converter.hemisphere, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of UPS coordinates for the given [Globe].\r\n *\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertUPSToGeodetic(hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UPSCoord(\r\n converter.latitude.radians, converter.longitude.radians, hemisphere, easting, northing\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = hemisphere.toString() + \" \" + easting + \"E\" + \" \" + northing + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans ups.c and ups.h code\r\n */\r\ninternal class UPSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val HEMISPHERE_ERROR = 0x0004\r\n const val EASTING_ERROR = 0x0008\r\n const val NORTHING_ERROR = 0x0010\r\n private const val MAX_LAT = PI * 90 / 180.0 // 90 degrees in radians\r\n\r\n // Min and max latitude values accepted\r\n private const val MIN_NORTH_LAT = 72 * PI / 180.0 // 83.5\r\n private const val MIN_SOUTH_LAT = -72 * PI / 180.0 // -79.5\r\n private const val MAX_ORIGIN_LAT = 81.114528 * PI / 180.0\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n }\r\n\r\n private var originLatitude = MAX_ORIGIN_LAT /*set default = North hemisphere */\r\n private val originLongitude = 0.0\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val falseEasting = 2000000.0\r\n private val falseNorthing = 2000000.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** easting/X in meters */\r\n var easting = 0.0\r\n private set\r\n /** northing/Y in meters */\r\n var northing = 0.0\r\n private set\r\n /** latitude in radians.*/\r\n var latitude = 0.0\r\n private set\r\n /** longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n private val polarConverter = PolarCoordConverter()\r\n\r\n /**\r\n * The function convertGeodeticToUPS converts geodetic (latitude and longitude) coordinates to UPS (hemisphere,\r\n * easting, and northing) coordinates, according to the current ellipsoid parameters. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude in radians\r\n * @param longitude longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUPS(latitude: Double, longitude: Double): Int {\r\n /* latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) return LAT_ERROR\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) return LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) return LAT_ERROR\r\n /* slam out of range */\r\n if (longitude < -PI || longitude > 2 * PI) return LON_ERROR\r\n if (latitude < 0) {\r\n originLatitude = -MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.S\r\n } else {\r\n originLatitude = MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.N\r\n }\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, 0.0, 0.0)\r\n polarConverter.convertGeodeticToPolarStereographic(latitude, longitude)\r\n easting = falseEasting + polarConverter.easting\r\n northing = falseNorthing + if (Hemisphere.S == hemisphere) - polarConverter.northing else polarConverter.northing\r\n return NO_ERROR\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_Geodetic converts UPS (hemisphere, easting, and northing) coordinates to geodetic\r\n * (latitude and longitude) coordinates according to the current ellipsoid parameters. If any errors occur, the\r\n * error code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertUPSToGeodetic(hemisphere: Hemisphere?, easting: Double, northing: Double): Int{\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (easting < MIN_EAST_NORTH || easting > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (northing < MIN_EAST_NORTH || northing > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (Hemisphere.N == hemisphere) originLatitude = MAX_ORIGIN_LAT\r\n if (Hemisphere.S == hemisphere) originLatitude = -MAX_ORIGIN_LAT\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, falseEasting, falseNorthing)\r\n polarConverter.convertPolarStereographicToGeodetic(easting, northing)\r\n latitude = polarConverter.latitude\r\n longitude = polarConverter.longitude\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) errorCode = errorCode or LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) errorCode = errorCode or LAT_ERROR\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\nimport kotlin.math.roundToInt\r\n\r\n/**\r\n * This immutable class holds a set of UTM coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UTMCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val zone: Int, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UTM coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertGeodeticToUTM(latitude.inRadians, longitude.inRadians)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n latitude, longitude, converter.zone, converter.hemisphere, converter.easting, converter.northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a set of UTM coordinates for the given [Globe].\r\n *\r\n * @param zone the UTM zone - 1 to 60.\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUTM(\r\n zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double\r\n ): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertUTMToGeodetic(zone, hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n converter.latitude.radians, converter.longitude.radians, zone, hemisphere, easting, northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a UTM coordinate from a standard UTM coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * @param UTMString the UTM coordinate text string.\r\n * @return the corresponding [UTMCoord].\r\n * @throws IllegalArgumentException if the [UTMString] is empty, or the conversion to geodetic coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromString(UTMString: String): UTMCoord {\r\n val separated = UTMString.trim { it <= ' ' }.replace(\" +\".toRegex(), \" \").split(\" \")\r\n return fromUTM(\r\n separated[0].toInt(),\r\n if (separated[1] == \"S\") Hemisphere.S else Hemisphere.N, //Hemisphere.valueOf(separated[1]),\r\n separated[2].substring(0, separated[2].length - 1).toDouble(),\r\n separated[3].substring(0, separated[3].length - 1).toDouble()\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = zone.toString() + \" \" + hemisphere + \" \" + easting.roundToInt() + \"E\" + \" \" + northing.roundToInt() + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/*\r\n * Converter used to translate UTM coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans utm.c and utm.h\r\n */\r\ninternal class UTMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ZONE_ERROR = 0x0010\r\n const val HEMISPHERE_ERROR = 0x0020\r\n const val ZONE_OVERRIDE_ERROR = 0x0040\r\n const val TM_ERROR = 0x0200\r\n private const val MIN_LAT = -82 * PI / 180.0 /* -82 degrees in radians */\r\n private const val MAX_LAT = 86 * PI / 180.0 /* 86 degrees in radians */\r\n private const val MIN_EASTING = 100000\r\n private const val MAX_EASTING = 900000\r\n private const val MIN_NORTHING = 0\r\n private const val MAX_NORTHING = 10000000\r\n }\r\n\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val override = 0 /* Zone override flag */\r\n private var centralMeridian = 0.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** Easting (X) in meters */\r\n var easting = 0.0\r\n private set\r\n /** Northing (Y) in meters */\r\n var northing = 0.0\r\n private set\r\n /** UTM zone */\r\n var zone = 0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function Convert_Geodetic_To_UTM converts geodetic (latitude and longitude) coordinates to UTM projection\r\n * (zone, hemisphere, easting and northing) coordinates according to the current ellipsoid and UTM zone override\r\n * parameters. If any errors occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is\r\n * returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUTM(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > 2 * PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (lon < 0) lon += 2 * PI + 1.0e-10\r\n val latDegrees = (latitude * 180.0 / PI).toInt()\r\n val lonDegrees = (lon * 180.0 / PI).toInt()\r\n var tempZone = (if (lon < PI) 31 + lon * 180.0 / PI / 6.0 else lon * 180.0 / PI / 6.0 - 29).toInt()\r\n if (tempZone > 60) tempZone = 1\r\n /* UTM special cases */\r\n if (latDegrees in 56..63 && lonDegrees > -1 && lonDegrees < 3) tempZone = 31\r\n if (latDegrees in 56..63 && lonDegrees > 2 && lonDegrees < 12) tempZone = 32\r\n if (latDegrees > 71 && lonDegrees > -1 && lonDegrees < 9) tempZone = 31\r\n if (latDegrees > 71 && lonDegrees > 8 && lonDegrees < 21) tempZone = 33\r\n if (latDegrees > 71 && lonDegrees > 20 && lonDegrees < 33) tempZone = 35\r\n if (latDegrees > 71 && lonDegrees > 32 && lonDegrees < 42) tempZone = 37\r\n if (override != 0) {\r\n if (tempZone == 1 && override == 60) tempZone = override\r\n else if (tempZone == 60 && override == 1) tempZone = override\r\n else if (tempZone - 1 <= override && override <= tempZone + 1) tempZone = override\r\n else errorCode = ZONE_OVERRIDE_ERROR\r\n }\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (tempZone >= 31) (6 * tempZone - 183) * PI / 180.0 else (6 * tempZone + 177) * PI / 180.0\r\n zone = tempZone\r\n if (latitude < 0) {\r\n falseNorthing = 10000000.0\r\n hemisphere = Hemisphere.S\r\n } else hemisphere = Hemisphere.N\r\n try {\r\n val tm = TMCoord.fromLatLon(\r\n latitude.radians, lon.radians, a, f, originLatitude.radians,\r\n centralMeridian.radians, falseEasting, falseNorthing, scale\r\n )\r\n easting = tm.easting\r\n northing = tm.northing\r\n if (easting < MIN_EASTING || easting > MAX_EASTING) errorCode = EASTING_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UTM_To_Geodetic converts UTM projection (zone, hemisphere, easting and northing) coordinates\r\n * to geodetic(latitude and longitude) coordinates, according to the current ellipsoid parameters. If any errors\r\n * occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param zone UTM zone.\r\n * @param hemisphere The coordinate hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting (X) in meters.\r\n * @param northing Northing (Y) in meters.\r\n *\r\n * @return error code.\r\n */\r\n fun convertUTMToGeodetic(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n if (zone < 1 || zone > 60) errorCode = errorCode or ZONE_ERROR\r\n if (hemisphere != Hemisphere.S && hemisphere != Hemisphere.N) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (zone >= 31) (6 * zone - 183) * PI / 180.0 else (6 * zone + 177) * PI / 180.0\r\n if (hemisphere == Hemisphere.S) falseNorthing = 10000000.0\r\n try {\r\n val tm = TMCoord.fromTM(\r\n easting, northing,\r\n originLatitude.radians, centralMeridian.radians,\r\n falseEasting, falseNorthing, scale\r\n )\r\n latitude = tm.latitude.inRadians\r\n longitude = tm.longitude.inRadians\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.gesture\n\n/**\n * Gesture state indicates a GestureRecognizer's current state.\n * Accepted values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN], [CHANGED], [CANCELLED], and [ENDED].\n */\nenum class GestureState {\n /**\n * POSSIBLE gesture recognizer state. Gesture recognizers in this state are\n * idle when there is no input event to evaluate, or are evaluating input events to determine whether or not to\n * transition into another state.\n */\n POSSIBLE,\n /**\n * FAILED gesture recognizer state. Gesture recognizers transition to this\n * state from the POSSIBLE state when the gesture cannot be recognized given the current input.\n */\n FAILED,\n /**\n * RECOGNIZED gesture recognizer state. Discrete gesture recognizers\n * transition to this state from the POSSIBLE state when the gesture is recognized.\n */\n RECOGNIZED,\n /**\n * BEGAN gesture recognizer state. Continuous gesture recognizers transition\n * to this state from the POSSIBLE state when the gesture is first recognized.\n */\n BEGAN,\n /**\n * CHANGED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from the BEGAN state or the CHANGED state, whenever an input event indicates a change in\n * the gesture.\n */\n CHANGED,\n /**\n * CANCELLED gesture recognizer state. Continuous gesture recognizers may\n * transition to this state from the BEGAN state or the CHANGED state when the touch events are cancelled.\n */\n CANCELLED,\n /**\n * ENDED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from either the BEGAN state or the CHANGED state when the current input no longer\n * represents the gesture.\n */\n ENDED;\n}","package earth.worldwind.globe\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.elevation.ElevationModel\nimport earth.worldwind.globe.projection.GeographicProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport kotlin.math.PI\nimport kotlin.math.sin\nimport kotlin.math.sqrt\n\n/**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models. Globe expresses its\n * ellipsoidal parameters and elevation values in meters.\n */\nopen class Globe(\n /**\n * The globe's reference ellipsoid defining the globe's equatorial radius and polar radius.\n */\n var ellipsoid: Ellipsoid = Ellipsoid.WGS84,\n /**\n * Indicates the geographic projection used by this globe. The projection specifies this globe's Cartesian\n * coordinate system.\n */\n var projection: GeographicProjection = Wgs84Projection()\n) {\n /**\n * Represents the elevations for an area, often but not necessarily the whole globe.\n */\n var elevationModel = ElevationModel()\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the equator.\n */\n val equatorialRadius get() = ellipsoid.semiMajorAxis\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the poles.\n */\n val polarRadius get() = ellipsoid.semiMinorAxis\n /**\n * Indicates the eccentricity squared parameter of the globe's ellipsoid. This is equivalent to `2*f -\n * f*f`, where `f` is the ellipsoid's flattening parameter.\n */\n val eccentricitySquared get() = ellipsoid.eccentricitySquared\n /**\n * Indicates whether this is a 2D globe.\n */\n val is2D get() = projection.is2D\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous get() = projection.isContinuous\n /**\n * Indicates the geographic limits of this projection.\n */\n val projectionLimits get() = projection.projectionLimits\n /**\n * Current globe state.\n */\n val state get() = State(ellipsoid, projection.displayName)\n /**\n * The globe offset in 2D continuous projection. Center is the default for 3D.\n */\n var offset = Offset.Center\n set (value) {\n field = value\n // Calculate horizontal projection offset in meters\n offsetValue = when (value) {\n Offset.Center -> 0.0\n Offset.Right -> 2.0 * PI * equatorialRadius\n Offset.Left -> -2.0 * PI * equatorialRadius\n }\n }\n protected var offsetValue = 0.0\n\n /**\n * An offset to apply to this globe when translating between Geographic positions and Cartesian points.\n * Used during scrolling to position points appropriately.\n */\n enum class Offset { Center, Right, Left }\n\n /**\n * Used to compare states during rendering to determine whether globe-state dependent cached values must be updated.\n */\n data class State(private val ellipsoid: Ellipsoid, private val projectionName: String)\n\n /**\n * Indicates the radius in meters of the globe's ellipsoid at a specified location.\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return the radius in meters of the globe's ellipsoid at the specified location\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun getRadiusAt(latitude: Angle, longitude: Angle): Double {\n // The radius for an ellipsoidal globe is a function of its latitude. The following solution was derived by\n // observing that the length of the ellipsoidal point at the specified latitude and longitude indicates the\n // radius at that location. The formula for the length of the ellipsoidal point was then converted into the\n // simplified form below.\n val sinLat = sin(latitude.inRadians)\n val ec2 = ellipsoid.eccentricitySquared\n val rpm = ellipsoid.semiMajorAxis / sqrt(1 - ec2 * sinLat * sinLat)\n return rpm * sqrt(1 + (ec2 * ec2 - 2 * ec2) * sinLat * sinLat)\n }\n\n /**\n * Converts a geographic position to Cartesian coordinates. This globe's projection specifies the Cartesian\n * coordinate system.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(latitude: Angle, longitude: Angle, altitude: Double, result: Vec3) =\n projection.geographicToCartesian(this, latitude, longitude, altitude, offsetValue, result)\n\n fun geographicToCartesianNormal(latitude: Angle, longitude: Angle, result: Vec3) =\n projection.geographicToCartesianNormal(this, latitude, longitude, result)\n\n fun geographicToCartesianTransform(latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4) =\n projection.geographicToCartesianTransform(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianGrid(\n sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, rowOffset: Int = 0, rowStride: Int = 0\n ) = projection.geographicToCartesianGrid(\n this, sector, numLat, numLon, height, verticalExaggeration,\n origin, offsetValue, result, rowOffset, rowStride\n )\n\n fun geographicToCartesianBorder(\n sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3, result: FloatArray\n ) = projection.geographicToCartesianBorder(this, sector, numLat, numLon, height, origin, offsetValue, result)\n\n /**\n * Converts a Cartesian point to a geographic position. This globe's projection specifies the Cartesian coordinate\n * system.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(x: Double, y: Double, z: Double, result: Position) =\n projection.cartesianToGeographic(this, x, y, z, offsetValue, result).also {\n if (is2D) result.longitude = result.longitude.normalize180()\n }\n\n fun cartesianToLocalTransform(x: Double, y: Double, z: Double, result: Matrix4) =\n projection.cartesianToLocalTransform(this, x, y, z, result)\n\n /**\n * Indicates the distance to the globe's horizon from a specified height above the globe's ellipsoid. The result of\n * this method is undefined if the height is negative.\n *\n * @param height the viewer's height above the globe's ellipsoid in meters\n *\n * @return the horizon distance in meters\n */\n fun horizonDistance(height: Double) = if (height > 0.0) sqrt(height * (2 * ellipsoid.semiMajorAxis + height)) else 0.0\n\n /**\n * Computes the first intersection of this globe with a specified line. The line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *\n * @param line the line to intersect with this globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(line: Line, result: Vec3) = projection.intersect(this, line, result)\n\n /**\n * Determine terrain altitude in specified geographic point from elevation model\n *\n * @param latitude location latitude\n * @param longitude location longitude\n * @param retrieve retrieve the most detailed elevation data instead of using first available cached value\n *\n * @return Elevation in meters in specified location\n */\n fun getElevation(latitude: Angle, longitude: Angle, retrieve: Boolean = false) =\n elevationModel.getHeight(latitude, longitude, retrieve).toDouble()\n\n /**\n * Get absolute position with terrain elevation at specified coordinates\n *\n * @param latitude Specified latitude\n * @param longitude Specified longitude\n *\n * @return Absolute position with terrain elevation\n */\n fun getAbsolutePosition(latitude: Angle, longitude: Angle) =\n Position(latitude, longitude, getElevation(latitude, longitude, retrieve = true))\n\n /**\n * Get absolute position for specified position and specified altitude mode\n *\n * @param position Specified position\n * @param altitudeMode Specified altitude mode\n *\n * @return Absolute position for specified altitude mode\n */\n fun getAbsolutePosition(position: Position, altitudeMode: AltitudeMode) = when (altitudeMode) {\n AltitudeMode.CLAMP_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude)\n AltitudeMode.RELATIVE_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude).apply {\n altitude += position.altitude\n }\n else -> Position(position)\n }\n\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.elevation.coverage.ElevationCoverage\n\nopen class ElevationModel(): Iterable {\n protected val coverages = mutableListOf()\n val timestamp: Long get() {\n var maxTimestamp = 0L\n for (i in coverages.indices) {\n val timestamp = coverages[i].timestamp\n if (maxTimestamp < timestamp) maxTimestamp = timestamp\n }\n return maxTimestamp\n }\n val count get() = coverages.size\n\n constructor(model: ElevationModel): this() { addAllCoverages(model) }\n\n constructor(iterable: Iterable): this() { for (coverage in iterable) addCoverage(coverage) }\n\n fun invalidate() = coverages.forEach { coverage -> coverage.clear() }\n\n fun getCoverageNamed(name: String) = coverages.firstOrNull { coverage -> coverage.displayName == name }\n\n fun getCoverageWithProperty(key: Any, value: Any) = coverages.firstOrNull { coverage ->\n coverage.hasUserProperty(key) && coverage.getUserProperty(key) == value\n }\n\n fun addCoverage(coverage: ElevationCoverage) = !coverages.contains(coverage) && coverages.add(coverage)\n\n fun addAllCoverages(model: ElevationModel): Boolean {\n val thatList = model.coverages\n //coverages.ensureCapacity(thatList.size)\n var changed = false\n for (thatCoverage in thatList) changed = changed or addCoverage(thatCoverage)\n return changed\n }\n\n fun removeCoverage(coverage: ElevationCoverage) = coverages.remove(coverage)\n\n fun removeAllCoverages(model: ElevationModel) = coverages.removeAll(model.coverages)\n\n fun clearCoverages() = coverages.clear()\n\n override fun iterator() = coverages.iterator()\n\n fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float {\n // coverages composite from fine to coarse\n for (i in coverages.indices.reversed()) {\n val height = coverages[i].getHeight(latitude, longitude, retrieve)\n if (height != null) return height\n }\n return 0f\n }\n\n fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n // coverages composite from coarse to fine\n for (i in coverages.indices) coverages[i].getHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n fun getHeightLimits(sector: Sector, result: FloatArray) {\n // coverage order is irrelevant\n for (i in coverages.indices) coverages[i].getHeightLimits(sector, result)\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.LruMemoryCache\nimport kotlinx.datetime.Clock\n\nabstract class AbstractElevationCoverage: ElevationCoverage {\n final override val sector = Sector().setFullSphere() // Real data availability sector can be smaller than TMS sector\n override var displayName: String? = null\n override var isEnabled = true\n set(value) {\n field = value\n updateTimestamp()\n }\n override var timestamp = Clock.System.now().toEpochMilliseconds()\n protected set\n private var userProperties: MutableMap? = null\n private val heightCache = LruMemoryCache(50000)\n\n protected fun updateTimestamp() {\n timestamp = Clock.System.now().toEpochMilliseconds()\n heightCache.clear() // Invalidate cache if elevation coverage changed\n }\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n return if (isEnabled) {\n val key = 31 * latitude.inDegrees.hashCode() + longitude.inDegrees.hashCode()\n heightCache[key] ?: doGetHeight(latitude, longitude, retrieve)?.also {\n heightCache.put(key, it, 1)\n }\n } else null\n }\n\n override fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (isEnabled) doGetHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n override fun getHeightLimits(sector: Sector, result: FloatArray) {\n if (isEnabled) doGetHeightLimits(sector, result)\n }\n\n protected abstract fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float?\n\n protected abstract fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray)\n\n protected abstract fun doGetHeightLimits(sector: Sector, result: FloatArray)\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.*\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.format.format\nimport earth.worldwind.util.math.fract\nimport earth.worldwind.util.math.mod\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.time.Duration.Companion.seconds\n\nabstract class AbstractTiledElevationCoverage(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): AbstractElevationCoverage() {\n companion object {\n protected const val GET_HEIGHT_LIMIT_SAMPLES = 32\n protected const val NO_DATA = Short.MIN_VALUE\n }\n\n var tileMatrixSet = tileMatrixSet\n set(value) {\n field = value\n sector.copy(value.sector) // Use TMS sector as bounding sector by default\n clear()\n }\n var elevationSourceFactory = elevationSourceFactory\n set(value) {\n field = value\n clear()\n }\n /**\n * Unique identifier of the coverage type, defined by elevation source factory content type\n */\n val type get() = elevationSourceFactory.contentType\n /**\n * Controls how many concurrent tile requests are allowed for this coverage.\n */\n var retrievalQueueSize = 4\n /**\n * The list of elevation retrievals in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n protected var coverageCache = LruMemoryCache(1024 * 1024 * 64)\n protected var isRetrievalEnabled = false\n protected val absentResourceList = AbsentResourceList(3, 5.seconds)\n protected val mainScope = MainScope()\n\n init {\n sector.copy(tileMatrixSet.sector) // Use TMS sector as bounding sector by default\n log(INFO, \"Coverage cache initialized %.0f KB\".format(coverageCache.capacity / 1024.0))\n }\n\n /**\n * Setup custom coverage cache size according to device capabilities and user needs.\n */\n fun setupCoverageCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n coverageCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun clear() {\n mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n currentRetrievals.clear()\n coverageCache.clear()\n absentResourceList.clear()\n updateTimestamp()\n }\n\n override fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n if (!tileMatrixSet.sector.contains(latitude, longitude)) return null // no coverage in the specified location\n val targetIdx = tileMatrixSet.entries.size - 1 // retrieve height from last available matrix\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the last and the first matrix\n isRetrievalEnabled = retrieve && (idx == targetIdx || idx == 0)\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val row = floor((tileMatrix.sector.maxLatitude.inDegrees - latitude.inDegrees) / deltaLat).toInt()\n val col = floor((longitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n fetchTileArray(tileMatrix, row, col)?.let {\n val maxLat = tileMatrix.sector.maxLatitude.inDegrees - deltaLat * row\n val minLon = tileMatrix.sector.minLongitude.inDegrees + deltaLon * col\n val maxX = tileMatrix.tileWidth - 1\n val maxY = tileMatrix.tileHeight - 1\n val x = (maxX * (longitude.inDegrees - minLon) / deltaLon).toFloat()\n val y = (maxY * (maxLat - latitude.inDegrees) / deltaLat).toFloat()\n val x0 = floor(x).toInt().coerceIn(0, maxX)\n val x1 = (x0 + 1).coerceIn(0, maxX)\n val y0 = floor(y).toInt().coerceIn(0, maxY)\n val y1 = (y0 + 1).coerceIn(0, maxY)\n val x0y0 = it[x0 + y0 * tileMatrix.tileWidth]\n val x1y0 = it[x1 + y0 * tileMatrix.tileWidth]\n val x0y1 = it[x0 + y1 * tileMatrix.tileWidth]\n val x1y1 = it[x1 + y1 * tileMatrix.tileWidth]\n if (x0y0 == NO_DATA || x1y0 == NO_DATA || x0y1 == NO_DATA || x1y1 == NO_DATA) return null\n val xf = x - x0\n val yf = y - y0\n return (1 - xf) * (1 - yf) * x0y0 + xf * (1 - yf) * x1y0 + (1 - xf) * yf * x0y1 + xf * yf * x1y1\n }\n }\n return null // did not find a tile\n }\n\n override fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(gridSector)) return // no coverage in the specified sector\n val targetPixelSpan = gridSector.deltaLatitude.div(gridHeight)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(gridSector, gridWidth, gridHeight, tileMatrix, tileBlock)) {\n readHeightGrid(gridSector, gridWidth, gridHeight, tileBlock, result)\n return\n }\n }\n }\n\n override fun doGetHeightLimits(sector: Sector, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(sector)) return // no coverage in the specified sector\n val targetPixelSpan = sector.deltaLatitude.div(GET_HEIGHT_LIMIT_SAMPLES)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(sector, tileMatrix, tileBlock)) {\n scanHeightLimits(sector, tileBlock, result)\n return\n }\n }\n }\n\n protected open fun fetchTileBlock(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileMatrix: TileMatrix, result: TileBlock\n ): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n result.tileMatrix = tileMatrix\n result.clear()\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var uIdx = 0\n while (uIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (uIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n if (lon in matrixMinLon..matrixMaxLon) {\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n result.cols[col0] = 0\n result.cols[col1] = 0\n }\n uIdx++\n lon += deltaLon\n }\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var vIdx = 0\n while (vIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (vIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n if (lat in matrixMinLat..matrixMaxLat) {\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n result.rows[row0] = 0\n result.rows[row1] = 0\n }\n vIdx++\n lat += deltaLat\n }\n for (row in result.rows.keys) {\n for (col in result.cols.keys) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) result.putTileArray(row, col, tileArray) else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileBlock(sector: Sector, tileMatrix: TileMatrix, result: TileBlock): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val colMin = iMin / tileWidth\n val colMax = iMax / tileWidth\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n val rowMin = jMin / tileHeight\n val rowMax = jMax / tileHeight\n result.tileMatrix = tileMatrix\n result.clear()\n for (row in rowMin..rowMax) {\n for (col in colMin..colMax) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) {\n result.rows[row] = 0\n result.cols[col] = 0\n result.putTileArray(row, col, tileArray)\n } else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileArray(tileMatrix: TileMatrix, row: Int, column: Int): ShortArray? {\n val key = tileMatrix.tileKey(row, column)\n return coverageCache[key] ?: run {\n // Ignore retrieval of already requested or marked as absent tiles\n if (isRetrievalEnabled && currentRetrievals.size < retrievalQueueSize && !currentRetrievals.contains(key)\n && !absentResourceList.isResourceAbsent(key)) {\n currentRetrievals += key\n mainScope.launch { retrieveTileArray(key, tileMatrix, row, column) }\n }\n null\n }\n }\n\n protected abstract suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int)\n\n protected fun retrievalSucceeded(key: Long, value: ShortArray) {\n coverageCache.put(key, value, value.size * 2)\n absentResourceList.unmarkResourceAbsent(key)\n currentRetrievals -= key\n updateTimestamp()\n WorldWind.requestRedraw()\n }\n\n protected fun retrievalFailed(key: Long) {\n absentResourceList.markResourceAbsent(key)\n currentRetrievals -= key\n }\n\n protected open fun readHeightGrid(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileBlock: TileBlock, result: FloatArray\n ) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileBlock.tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileBlock.tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n var rIdx = 0\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var hIdx = 0\n while (hIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (hIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val b = fract(v - 0.5).toFloat()\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var wIdx = 0\n while (wIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (wIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileBlock.tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val a = fract(u - 0.5).toFloat()\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n if (lat in matrixMinLat..matrixMaxLat && lon in matrixMinLon..matrixMaxLon) {\n val i0j0 = tileBlock.readTexel(row0, col0, i0 % tileWidth, j0 % tileHeight)\n val i1j0 = tileBlock.readTexel(row0, col1, i1 % tileWidth, j0 % tileHeight)\n val i0j1 = tileBlock.readTexel(row1, col0, i0 % tileWidth, j1 % tileHeight)\n val i1j1 = tileBlock.readTexel(row1, col1, i1 % tileWidth, j1 % tileHeight)\n if (i0j0 != NO_DATA && i1j0 != NO_DATA && i0j1 != NO_DATA && i1j1 != NO_DATA) {\n result[rIdx] = (1 - a) * (1 - b) * i0j0 + a * (1 - b) * i1j0 + (1 - a) * b * i0j1 + a * b * i1j1\n }\n }\n rIdx++\n wIdx++\n lon += deltaLon\n }\n hIdx++\n lat += deltaLat\n }\n }\n\n protected open fun scanHeightLimits(sector: Sector, tileBlock: TileBlock, result: FloatArray) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileBlock.tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n for (row in tileBlock.rows.keys) {\n val rowJMin = row * tileHeight\n val rowJMax = rowJMin + tileHeight - 1\n val j0 = jMin.coerceIn(rowJMin, rowJMax) % tileHeight\n val j1 = jMax.coerceIn(rowJMin, rowJMax) % tileHeight\n for (col in tileBlock.cols.keys) {\n val colIMin = col * tileWidth\n val colIMax = colIMin + tileWidth - 1\n val i0 = iMin.coerceIn(colIMin, colIMax) % tileWidth\n val i1 = iMax.coerceIn(colIMin, colIMax) % tileWidth\n tileBlock.getTileArray(row, col)?.let { tileArray ->\n // TODO how often do we read all of tileArray?\n for (j in j0..j1) for (i in i0..i1) {\n val pos = i + j * tileWidth\n val texel = tileArray[pos]\n if (texel != NO_DATA) {\n if (result[0] > texel) result[0] = texel.toFloat()\n if (result[1] < texel) result[1] = texel.toFloat()\n }\n }\n }\n }\n }\n }\n\n protected open suspend fun processTiles(sector: Sector, minIdx: Int, maxIdx: Int, process: suspend (Tile) -> Unit) {\n for (idx in minIdx..maxIdx) {\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val minRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.maxLatitude.inDegrees) / deltaLat).toInt()\n val maxRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.minLatitude.inDegrees) / deltaLat).toInt()\n val minCol = floor((sector.minLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n val maxCol = floor((sector.maxLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n for (row in minRow..maxRow) for (col in minCol..maxCol) process(Tile(tileMatrix, row, col))\n }\n }\n\n protected data class Tile(val tileMatrix: TileMatrix, val row: Int, val col: Int)\n\n protected open class TileBlock {\n lateinit var tileMatrix: TileMatrix\n val rows = mutableMapOf()\n val cols = mutableMapOf()\n private val arrays = mutableMapOf()\n private var texelRow = -1\n private var texelCol = -1\n private var texelArray: ShortArray? = null\n\n open fun clear() {\n rows.clear()\n cols.clear()\n arrays.clear()\n texelRow = -1\n texelCol = -1\n texelArray = null\n }\n\n fun putTileArray(row: Int, column: Int, array: ShortArray) {\n val key = tileMatrix.tileKey(row, column)\n arrays[key] = array\n }\n\n fun getTileArray(row: Int, column: Int): ShortArray? {\n if (texelRow != row || texelCol != column) {\n texelRow = row\n texelCol = column\n texelArray = arrays[tileMatrix.tileKey(row, column)]\n }\n return texelArray\n }\n\n fun readTexel(row: Int, column: Int, i: Int, j: Int) =\n getTileArray(row, column)?.get(i + j * tileMatrix.tileWidth) ?: NO_DATA\n }\n}",null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Map Service (WMS) version 1.3.0.\n */\nopen class WmsElevationCoverage private constructor(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): TiledElevationCoverage(tileMatrixSet, elevationSourceFactory), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n /**\n * @param serviceAddress OGC Web Map Service (WMS) server address\n * @param coverageName comma-separated coverage names\n * @param outputFormat required image format\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n constructor(\n serviceAddress: String, coverageName: String, outputFormat: String, sector: Sector, resolution: Angle\n ) : this(\n serviceAddress, coverageName, outputFormat,\n buildTileMatrixSet(sector, resolution), buildElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n )\n\n override fun clone() = WmsElevationCoverage(\n serviceAddress, coverageName, outputFormat, tileMatrixSet, elevationSourceFactory\n ).also {\n it.displayName = displayName\n it.sector.copy(sector)\n }\n\n companion object {\n const val SERVICE_TYPE = \"WMS\"\n\n /**\n * 4x2 top level matrix equivalent to 90 degree top level tiles\n *\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n private fun buildTileMatrixSet(sector: Sector, resolution: Angle) = TileMatrixSet.fromTilePyramid(\n sector, 4, 2, 256, 256, resolution\n )\n\n private fun buildElevationSourceFactory(serviceAddress: String, coverage: String, imageFormat: String): ElevationSourceFactory {\n val layerConfig = WmsLayerConfig(serviceAddress, coverage).apply { this.imageFormat = imageFormat }\n val wmsTileFactory = WmsTileFactory(layerConfig)\n return object : ElevationSourceFactory {\n override val contentType = \"WMS 1.3.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val tileSector = tileMatrix.tileSector(row, column)\n val urlString = wmsTileFactory.urlForTile(tileSector, tileMatrix.tileWidth, tileMatrix.tileHeight)\n return ElevationSource.fromUrlString(urlString)\n }\n }\n }\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.WmsElevationCoverage\n\n/**\n * Displays NASA's global elevation coverage at 30m (1 arc-second) resolution.\n * By default, BasicElevationCoverage is configured to retrieve elevation coverage from the WMS at\n * [&https://wms.worldwind.earth/elev](https://wms.worldwind.earth/elev?SERVICE=WMS&REQUEST=GetCapabilities).\n */\nclass BasicElevationCoverage : WmsElevationCoverage(\n \"https://wms.worldwind.earth/elev\", \"NASADEM\", \"application/bil16\",\n Sector().setFullSphere(), Angle.fromSeconds(1.0)\n)","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger\nimport kotlin.math.*\n\nopen class MercatorProjection : GeographicProjection {\n override val displayName = \"Mercator\"\n override val is2D = true\n override val isContinuous = true\n override val projectionLimits = fromDegrees(-78.0, -180.0, 156.0, 360.0)\n private val scratchVec = Vec3()\n\n override fun geographicToCartesian(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3\n ): Vec3 {\n val lat = latitude.coerceIn(projectionLimits.minLatitude, projectionLimits.maxLatitude)\n val lon = longitude.coerceIn(projectionLimits.minLongitude, projectionLimits.maxLongitude)\n\n // See \"Map Projections: A Working Manual\", page 44 for the source of the below formulas.\n val ecc = sqrt(globe.eccentricitySquared)\n val sinPhi = sin(lat.inRadians)\n val s = (1 + sinPhi) / (1 - sinPhi) * ((1 - ecc * sinPhi) / (1 + ecc * sinPhi)).pow(ecc)\n result.x = globe.equatorialRadius * lon.inRadians + offset\n result.y = 0.5 * globe.equatorialRadius * ln(s)\n result.z = altitude\n return result\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n return result.set(0.0, 0.0, 1.0)\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val vec = geographicToCartesian(globe, latitude, longitude, altitude, 0.0, scratchVec)\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return cartesianToLocalTransform(globe, vec.x, vec.y, vec.z, result)\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n Logger.logMessage(\n Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n Logger.logMessage(Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = (1 + sinLat) / (1 - sinLat) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lon = minLon\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n result[colIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[colIndex++] = y.toFloat()\n result[colIndex++] = if (height != null) (height[elevIndex++] * verticalExaggeration - zOffset).toFloat() else 0f\n lon += deltaLon\n }\n rowIndex += stride\n lat += deltaLat\n }\n\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float,\n origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / (if (numLat > 1) numLat - 3 else 1)\n val deltaLon = (maxLon - minLon) / (if (numLon > 1) numLon - 3 else 1)\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var resultIndex = 0\n var lat = minLat\n var lon = minLon\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = ((1 + sinLat) / (1 - sinLat)) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon\n }\n result[resultIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[resultIndex++] = y.toFloat()\n result[resultIndex++] = height - zOffset.toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n\n return result\n }\n\n override fun cartesianToGeographic(\n globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position\n ): Position {\n // See \"Map Projections: A Working Manual\", pages 44-45 for the source of the below formulas.\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val t = exp(-y / globe.equatorialRadius) // eq (7-10)\n\n // Inverse projection requires converging series\n var phi = PI / 2 - 2 * atan(t) // eq (7-11) [first trial]\n var phiLast = 0.0\n while (abs(phi - phiLast) > CONVERGENCE_FACTOR) {\n phiLast = phi\n phi = PI / 2.0 - 2.0 * atan(t * ((1 - ecc * sin(phi)) / (1 + ecc * sin(phi))).pow(ecc / 2.0)) // eq (7-9)\n }\n\n val lambda = (x - offset) / eqr // eq (7-12)\n\n return result.setRadians(phi, lambda, z)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4) = result.set(\n 1.0, 0.0, 0.0, x,\n 0.0, 1.0, 0.0, y,\n 0.0, 0.0, 1.0, z,\n 0.0, 0.0, 0.0, 1.0\n )\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n\n if (vz == 0.0 && sz != 0.0) return false // ray is parallel to and not coincident with the XY plane\n\n val t = -sz / vz // intersection distance, simplified for the XY plane\n if (t < 0) return false // intersection is behind the ray's origin\n\n result.x = sx + vx * t\n result.y = sy + vy * t\n result.z = sz + vz * t\n\n return true\n }\n\n companion object {\n private const val CONVERGENCE_FACTOR = 0.000001\n }\n}","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/*\n * GeographicProjection implementing coordinate transformations based on the WGS-84 reference system (aka WGS 1984,\n * EPSG:4326).\n *\n * The WGS 84 projection defines a Cartesian coordinate system whose origin is at the globe's center. It's Y axis points\n * to the North Pole, the Z axis points to the intersection of the prime meridian and the equator, and the X axis\n * completes a right-handed coordinate system, is in the equatorial plane and 90 degrees East of the Z axis.\n */\nopen class Wgs84Projection: GeographicProjection {\n override val displayName = \"WGS84\"\n private val scratchPos = Position()\n\n override fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n return result.set(\n (altitude + rpm) * cosLat * sinLon,\n (altitude + rpm * (1.0 - ec2)) * sinLat,\n (altitude + rpm) * cosLat * cosLon\n )\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n return result.set(\n cosLat * sinLon / eqr2,\n (1 - globe.eccentricitySquared) * sinLat / pol2,\n cosLat * cosLon / eqr2\n ).normalize()\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Convert the geographic position to Cartesian coordinates. This is equivalent to calling geographicToCartesian\n // but is much more efficient as an inline computation, as the results of cosLat/sinLat/etc. can be computed\n // once and reused.\n val px = (rpm + altitude) * cosLat * sinLon\n val py = (rpm * (1.0 - ec2) + altitude) * sinLat\n val pz = (rpm + altitude) * cosLat * cosLon\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, px,\n ey, ny, uy, py,\n ez, nz, uz, pz,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n logMessage(ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val cosLon = DoubleArray(numLon)\n val sinLon = DoubleArray(numLon)\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Compute and save values that are a function of each unique longitude value in the specified sector. This\n // eliminates the need to re-compute these values for each column of constant longitude.\n var lon = minLon\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n cosLon[lonIndex] = cos(lon)\n sinLon[lonIndex] = sin(lon)\n lon += deltaLon\n }\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian\n // point corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n val hgt = if (height != null) (height[elevIndex++] * verticalExaggeration).toDouble() else 0.0\n result[colIndex++] = ((hgt + rpm) * cosLat * sinLon[lonIndex] - xOffset).toFloat()\n result[colIndex++] = ((hgt + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[colIndex++] = ((hgt + rpm) * cosLat * cosLon[lonIndex] - zOffset).toFloat()\n }\n rowIndex += stride\n lat += deltaLat\n }\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianBorder\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 3 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 3 else 1\n var lat = minLat\n var lon = minLon\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n var resultIndex = 0\n\n // Iterate over the edges of the specified sector, computing the Cartesian point at designated latitude and\n // longitude around the border.\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon // explicitly set the first lon to the min longitude to ensure alignment\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n }\n val cosLon = cos(lon)\n val sinLon = sin(lon)\n result[resultIndex++] = ((height + rpm) * cosLat * sinLon - xOffset).toFloat()\n result[resultIndex++] = ((height + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[resultIndex++] = ((height + rpm) * cosLat * cosLon - zOffset).toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n return result\n }\n\n override fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position {\n // According to H. Vermeille,\n // \"An analytical method to transform geocentric into geodetic coordinates\"\n // http://www.springerlink.com/content/3t6837t27t351227/fulltext.pdf\n // Journal of Geodesy, accepted 10/2010, not yet published\n val zpx = z * z + x * x\n val zpxSqrt = sqrt(zpx)\n val a = globe.equatorialRadius\n val ra2 = 1 / (a * a)\n val e2 = globe.eccentricitySquared\n val e4 = e2 * e2\n\n // Step 1\n val p = zpx * ra2\n val q = y * y * (1 - e2) * ra2\n val r = (p + q - e4) / 6\n val h: Double\n val phi: Double\n val evoluteBorderTest = 8 * r * r * r + e4 * p * q\n if (evoluteBorderTest > 0 || q != 0.0) {\n val u: Double\n if (evoluteBorderTest > 0) {\n // Step 2: general case\n val rad1 = sqrt(evoluteBorderTest)\n val rad2 = sqrt(e4 * p * q)\n\n // 10*e2 is my arbitrary decision of what Vermeille means by \"near... the cusps of the evolute\".\n val rad = ((rad1 + rad2) * (rad1 + rad2)).pow(1/3.0)\n u = if (evoluteBorderTest > 10 * e2) r + 0.5 * rad + 2 * r * r / rad\n else r + 0.5 * rad + 0.5 * ((rad1 - rad2) * (rad1 - rad2)).pow(1/3.0)\n } else {\n // Step 3: near evolute\n val rad1 = sqrt(-evoluteBorderTest)\n val rad2 = sqrt(-8 * r * r * r)\n val rad3 = sqrt(e4 * p * q)\n val aTan = 2 * atan2(rad3, rad1 + rad2) / 3\n u = -4 * r * sin(aTan) * cos(PI / 6 + aTan)\n }\n val v = sqrt(u * u + e4 * q)\n val w = e2 * (u + v - q) / (2 * v)\n val k = (u + v) / (sqrt(w * w + u + v) + w)\n val d = k * zpxSqrt / (k + e2)\n val dpySqrt = sqrt(d * d + y * y)\n h = (k + e2 - 1) * dpySqrt / k\n phi = 2 * atan2(y, dpySqrt + d)\n } else {\n // Step 4: singular disk\n val rad1 = sqrt(1 - e2)\n val rad2 = sqrt(e2 - p)\n val e = sqrt(e2)\n h = -a * rad1 * rad2 / e\n phi = rad2 / (e * rad2 + rad1 * sqrt(p))\n }\n\n // Compute lambda\n val s2 = sqrt(2.0)\n val lambda = when {\n (s2 - 1) * x < zpxSqrt + z -> 2 * atan2(x, zpxSqrt + z) // case 1 - -135deg < lambda < 135deg\n zpxSqrt + x < (s2 + 1) * z -> -PI * 0.5 + 2 * atan2(z, zpxSqrt - x) // case 2 - -225deg < lambda < 45deg\n else -> PI * 0.5 - 2 * atan2(z, zpxSqrt + x) // case 3: - -45deg < lambda < 225deg\n }\n return result.setRadians(phi, lambda, h)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4 {\n val pos = cartesianToGeographic(globe, x, y, z, 0.0, scratchPos)\n val cosLat = cos(pos.latitude.inRadians)\n val sinLat = sin(pos.latitude.inRadians)\n val cosLon = cos(pos.longitude.inRadians)\n val sinLon = sin(pos.longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, x,\n ey, ny, uy, y,\n ez, nz, uz, z,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n val eqr = globe.equatorialRadius\n val eqr2 = eqr * eqr // nominal radius squared\n val m = eqr / globe.polarRadius // ratio of the x semi-axis length to the y semi-axis length\n val m2 = m * m\n val a = vx * vx + m2 * vy * vy + vz * vz\n val b = 2 * (sx * vx + m2 * sy * vy + sz * vz)\n val c = sx * sx + m2 * sy * sy + sz * sz - eqr2\n val d = b * b - 4 * a * c // discriminant\n if (d < 0) return false\n var t = (-b - sqrt(d)) / (2 * a)\n // check if the nearest intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n t = (-b + sqrt(d)) / (2 * a)\n // check if the second intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n\n // the intersection points were behind the origin of the provided line\n return false\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.util.math.fract\nimport kotlin.math.max\nimport kotlin.math.min\n\nopen class BasicTerrain(\n tiles: List, sector: Sector, protected val triStripElements: ShortArray?\n): Terrain {\n protected val tiles = tiles.toList()\n override val sector = Sector(sector)\n private val intersectPoint = Vec3()\n\n override fun intersect(line: Line, result: Vec3): Boolean {\n var found = false\n val triStripElements = triStripElements ?: return found\n\n // Tiles considered as sorted by L1 distance on cylinder from camera\n for (i in tiles.indices) {\n val tile = tiles[i]\n // Translate the line to the terrain tile's local coordinate system.\n line.origin.subtract(tile.origin)\n\n // Compute the first intersection of the terrain tile with the line. The line is interpreted as a ray;\n // intersection points behind the line's origin are ignored. Store the nearest intersection found so far\n // in the result argument.\n if (line.triStripIntersection(tile.points, 3, triStripElements, triStripElements.size, intersectPoint)) {\n result.copy(intersectPoint).add(tile.origin)\n found = true\n }\n\n // Restore the line's origin to its previous coordinate system.\n line.origin.add(tile.origin)\n\n // Do not analyze other tiles as they are sorted by distance from camera\n if (found) break\n }\n return found\n }\n\n override fun surfacePoint(latitude: Angle, longitude: Angle, result: Vec3): Boolean {\n for (i in tiles.indices) {\n val tile = tiles[i]\n val sector = tile.sector\n\n // Find the first tile that contains the specified location.\n if (sector.contains(latitude, longitude)) {\n // Compute the location's parameterized coordinates (s, t) within the tile grid, along with the\n // fractional component (sf, tf) and integral component (si, ti).\n val tileWidth = tile.level.tileWidth\n val tileHeight = tile.level.tileHeight\n val s = (longitude.inDegrees - sector.minLongitude.inDegrees) / sector.deltaLongitude.inDegrees * (tileWidth - 1)\n val t = (latitude.inDegrees - sector.minLatitude.inDegrees) / sector.deltaLatitude.inDegrees * (tileHeight - 1)\n val sf = if (s < tileWidth - 1) fract(s) else 1.0\n val tf = if (t < tileHeight - 1) fract(t) else 1.0\n val si = if (s < tileWidth - 1) (s + 1).toInt() else tileWidth - 1\n val ti = if (t < tileHeight - 1) (t + 1).toInt() else tileHeight - 1\n\n // Compute the location in the tile's local coordinate system. Perform a bilinear interpolation of\n // the cell's four points based on the fractional portion of the location's parameterized coordinates.\n // Tile coordinates are organized in the points array in row major order, starting at the tile's\n // Southwest corner. Account for the tile's border vertices, which are embedded in the points array but\n // must be ignored for this computation.\n val tileRowStride = tileWidth + 2\n val i00 = (si + ti * tileRowStride) * 3 // lower left coordinate\n val i10 = i00 + 3 // lower right coordinate\n val i01 = (si + (ti + 1) * tileRowStride) * 3 // upper left coordinate\n val i11 = i01 + 3 // upper right coordinate\n val f00 = (1 - sf) * (1 - tf)\n val f10 = sf * (1 - tf)\n val f01 = (1 - sf) * tf\n val f11 = sf * tf\n val points = tile.points\n result.x = points[i00] * f00 + points[i10] * f10 + points[i01] * f01 + points[i11] * f11\n result.y = points[i00 + 1] * f00 + points[i10 + 1] * f10 + points[i01 + 1] * f01 + points[i11 + 1] * f11\n result.z = points[i00 + 2] * f00 + points[i10 + 2] * f10 + points[i01 + 2] * f01 + points[i11 + 2] * f11\n\n // Translate the surface point from the tile's local coordinate system to Cartesian coordinates.\n result.x += tile.origin.x\n result.y += tile.origin.y\n result.z += tile.origin.z\n return true\n }\n }\n\n // No tile was found that contains the location.\n return false\n }\n\n override fun heightLimits(levelNumberDepth: Int, result: FloatArray) {\n result[0] = Float.MAX_VALUE\n result[1] = -Float.MAX_VALUE\n val maxLevelNumber = tiles.maxOf { it.level.levelNumber }\n val minLevelNumber = maxLevelNumber - levelNumberDepth\n for (tile in tiles) if (tile.level.levelNumber >= minLevelNumber) {\n result[0] = min(result[0], tile.heightLimits[0])\n result[1] = max(result[1], tile.heightLimits[1])\n }\n if (result[0] > result[1]) result.fill(0f)\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.draw.BasicDrawableTerrain\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.*\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\n\nopen class BasicTessellator: Tessellator, TileFactory {\n override val contentType = \"Tessellator\"\n /**\n * Default level set is configured to ~0.6 meter resolution\n */\n var levelSet = LevelSet(Sector().setFullSphere(), Sector().setFullSphere(), Location(POS90, POS90), 20, 32, 32)\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Detail control determines how much times terrain texel is greater than screen pixel.\n */\n var detailControl = 20.0\n /**\n * Memory cache for this tessellator's subdivision tiles. Each entry contains an array of four terrain tiles\n * corresponding to the subdivision of the group's common parent tile. The cache is configured to hold 300 groups, a\n * number tuned to store the tiles needed to navigate a small region, given the tessellator's first level tile delta\n * of 90 degrees, tile dimensions of 32x32 and detail control of 20.\n */\n protected var tileCache = LruMemoryCache>(300)\n protected val topLevelTiles = mutableListOf()\n protected val currentTiles = mutableListOf()\n protected val currentSector = Sector()\n protected var levelSetVertexTexCoords: FloatArray? = null\n protected var levelSetLineElements: ShortArray? = null\n protected var levelSetTriStripElements: ShortArray? = null\n protected val levelSetLineElementRange = Range()\n protected val levelSetTriStripElementRange = Range()\n protected var levelSetVertexTexCoordBuffer: FloatBufferObject? = null\n protected var levelSetElementBuffer: ShortBufferObject? = null\n protected var lastGlobeState: Globe.State? = null\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun tessellate(rc: RenderContext): Terrain {\n checkGlobeState(rc)\n return assembleTerrain(rc)\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = TerrainTile(sector, level, row, column)\n\n protected open fun assembleTerrain(rc: RenderContext): Terrain {\n // Clear previous terrain tiles\n currentTiles.clear()\n currentSector.setEmpty()\n\n // Assemble the terrain buffers and OpenGL buffer objects associated with the level set.\n assembleLevelSetBuffers(rc)\n\n // Assemble the tessellator's top level terrain tiles, which we keep permanent references to.\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n\n // Subdivide the top level tiles until the desired resolution is achieved in each part of the scene.\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as TerrainTile)\n\n // Sort terrain tiles by L1 distance on cylinder from camera\n currentTiles.sortBy { it.sortOrder }\n\n // Release references to render resources acquired while assembling tiles.\n levelSetVertexTexCoordBuffer = null\n levelSetElementBuffer = null\n\n return BasicTerrain(currentTiles, currentSector, levelSetTriStripElements)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, this, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: TerrainTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsFrustum(rc)) return\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val childs = tile.subdivideToCache(this, tileCache, 4) // each tile has a cached size of 1\n for (i in childs.indices) addTileOrDescendants(rc, childs[i] as TerrainTile) // recursively process the tile's children\n }\n\n protected open fun addTile(rc: RenderContext, tile: TerrainTile) {\n // Prepare the terrain tile and add it.\n tile.prepare(rc)\n currentTiles.add(tile)\n currentSector.union(tile.sector)\n\n // Prepare a drawable for the terrain tile for processing on the OpenGL thread.\n val pool = rc.getDrawablePool()\n val drawable = BasicDrawableTerrain.obtain(pool)\n prepareDrawableTerrain(rc, tile, drawable)\n rc.offerDrawableTerrain(drawable, tile.sortOrder)\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n currentTiles.clear()\n currentSector.setEmpty()\n tileCache.clear()\n levelSetVertexTexCoords = null\n levelSetLineElements = null\n levelSetTriStripElements = null\n }\n\n protected open fun prepareDrawableTerrain(rc: RenderContext, tile: TerrainTile, drawable: BasicDrawableTerrain) {\n // Remember globe offset to be able to identify own surface drawables.\n drawable.offset = rc.globe.offset\n\n // Assemble the drawable's geographic sector and Cartesian vertex origin.\n drawable.sector.copy(tile.sector)\n drawable.vertexOrigin.copy(tile.origin)\n\n // Assemble the drawable's element buffer ranges.\n drawable.lineElementRange.copy(levelSetLineElementRange)\n drawable.triStripElementRange.copy(levelSetTriStripElementRange)\n\n // Assemble the drawable's OpenGL buffer objects.\n drawable.vertexPoints = tile.getPointBuffer(rc)\n drawable.vertexHeights = tile.getHeightBuffer(rc)\n drawable.vertexTexCoords = levelSetVertexTexCoordBuffer\n drawable.elements = levelSetElementBuffer\n }\n\n protected open fun assembleLevelSetBuffers(rc: RenderContext) {\n val numLat = levelSet.tileHeight + 2\n val numLon = levelSet.tileWidth + 2\n\n // Assemble the level set's vertex tex coords.\n val vertexTexCoords = levelSetVertexTexCoords ?: FloatArray(numLat * numLon * 2).also {\n levelSetVertexTexCoords = it\n assembleVertexTexCoords(numLat, numLon, it)\n }\n\n // Assemble the level set's line elements.\n val lineElements = levelSetLineElements ?: assembleLineElements(numLat, numLon).also { levelSetLineElements = it }\n\n // Assemble the level set's triangle strip elements.\n val triStripElements = levelSetTriStripElements ?: assembleTriStripElements(numLat, numLon).also { levelSetTriStripElements = it }\n\n // Retrieve or create the level set's OpenGL vertex tex coord buffer object.\n levelSetVertexTexCoordBuffer = rc.getBufferObject(LEVEL_SET_VERTEX_TEX_COORD_KEY) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexTexCoords)\n }\n\n // Retrieve or create the level set's OpenGL element buffer object.\n levelSetElementBuffer = rc.getBufferObject(LEVEL_SET_ELEMENT_KEY) {\n ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, lineElements + triStripElements).also {\n levelSetLineElementRange.upper = lineElements.size\n levelSetTriStripElementRange.lower = lineElements.size\n levelSetTriStripElementRange.upper = lineElements.size + triStripElements.size\n }\n }\n }\n\n protected open fun assembleVertexTexCoords(numLat: Int, numLon: Int, result: FloatArray): FloatArray {\n val ds = 1f / if (numLon > 1) numLon - 3 else 1\n val dt = 1f / if (numLat > 1) numLat - 3 else 1\n var s = 0f\n var t = 0f\n var rIdx = 0\n\n // Iterate over the number of latitude and longitude vertices, computing the parameterized S and T coordinates\n // corresponding to each vertex.\n for (tIdx in 0 until numLat) {\n when {\n tIdx < 2 -> t = 0f // explicitly set the first T coordinate to 0 to ensure alignment\n tIdx < numLat - 2 -> t += dt\n else -> t = 1f // explicitly set the last T coordinate to 1 to ensure alignment\n }\n for (sIdx in 0 until numLon) {\n when {\n sIdx < 2 -> s = 0f // explicitly set the first S coordinate to 0 to ensure alignment\n sIdx < numLon - 2 -> s += ds\n else -> s = 1f // explicitly set the last S coordinate to 1 to ensure alignment\n }\n result[rIdx++] = s\n result[rIdx++] = t\n }\n }\n return result\n }\n\n protected open fun assembleLineElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = (numLat * (numLon - 1) + numLon * (numLat - 1)) * 2\n val result = ShortArray(count)\n var pos = 0\n\n // Add a line between each row to define the horizontal cell outlines.\n for (latIndex in 1 until numLat-1) {\n for (lonIndex in 1 until numLon - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + 1).toShort()\n }\n }\n\n // Add a line between each column to define the vertical cell outlines.\n for (lonIndex in 1 until numLon - 1) {\n for (latIndex in 1 until numLat - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + numLon).toShort()\n }\n }\n return result\n }\n\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val result = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n result[pos++] = (vertex + numLon).toShort()\n result[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n result[pos++] = vertex.toShort()\n result[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return result\n }\n\n companion object {\n private val LEVEL_SET_VERTEX_TEX_COORD_KEY = BasicTessellator::class.simpleName + \".vertexTexCoordKey\"\n private val LEVEL_SET_ELEMENT_KEY = BasicTessellator::class.simpleName + \".elementKey\"\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\n\n/**\n * Represents a portion of a globe's terrain. Applications typically do not interact directly with this class.\n */\nopen class TerrainTile(sector: Sector, level: Level, row: Int, column: Int): Tile(sector, level, row, column) {\n val origin = Vec3()\n val points by lazy { FloatArray((level.tileWidth + 2) * (level.tileHeight + 2) * 3) }\n protected val heights by lazy { FloatArray( (level.tileWidth + 2) * (level.tileHeight + 2)) }\n protected val heightGrid by lazy { FloatArray( level.tileWidth * level.tileHeight) }\n /**\n * Minimum elevation value used by the BasicTessellator to determine the terrain mesh edge extension depth (skirt).\n * This value is scaled by the vertical exaggeration when the terrain is generated.\n */\n protected val minTerrainElevation = -Short.MAX_VALUE.toFloat()\n protected var heightTimestamp = 0L\n protected var verticalExaggeration = 0.0f\n protected var globeState: Globe.State? = null\n protected var globeOffset: Globe.Offset? = null\n var sortOrder = 0.0\n protected set\n private var pointBufferKey = \"TerrainTile.points.default\" // This key will be replaced on prepare of each tile\n private var heightBufferKey = \"TerrainTile.heights.default\" // Use the same height buffer for all tiles by default\n\n public override val heightLimits get() = super.heightLimits\n\n open fun prepare(rc: RenderContext) {\n val globe = rc.globe\n val tileWidth = level.tileWidth\n val tileHeight = level.tileHeight\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightTimestamp) {\n heightGrid.fill(0f)\n globe.elevationModel.getHeightGrid(sector, tileWidth, tileHeight, heightGrid)\n // Calculate height vertex buffer from height grid\n for (r in 0 until level.tileHeight) for (c in 0 until level.tileWidth) {\n heights[(r + 1) * (level.tileWidth + 2) + c + 1] = heightGrid[r * level.tileWidth + c]\n }\n if (rc.globe.is2D) {\n heightGrid.fill(0f) // Do not show terrain in 2D, but keep height values in vertex for heatmap\n calcHeightLimits(globe) // Force calculate height limits for heatmap\n }\n updateHeightBufferKey()\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightTimestamp || ve != verticalExaggeration || state != globeState || offset != globeOffset) {\n val borderHeight = minTerrainElevation * ve\n val rowStride = (tileWidth + 2) * 3\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude, 0.0, origin)\n globe.geographicToCartesianGrid(\n sector, tileWidth, tileHeight, heightGrid, ve, origin, points, rowStride + 3, rowStride\n )\n globe.geographicToCartesianBorder(\n sector, tileWidth + 2, tileHeight + 2, borderHeight, origin, points\n )\n updatePointBufferKey()\n }\n heightTimestamp = timestamp\n verticalExaggeration = ve\n globeState = state\n globeOffset = offset\n sortOrder = drawSortOrder(rc)\n }\n\n fun getHeightBuffer(rc: RenderContext) = rc.getBufferObject(heightBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, heights)\n }\n\n fun getPointBuffer(rc: RenderContext) = rc.getBufferObject(pointBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n protected fun updateHeightBufferKey() {\n heightBufferKey = \"TerrainTile.heights.$tileKey.${bufferSequence++}\"\n }\n\n protected fun updatePointBufferKey() {\n pointBufferKey = \"TerrainTile.points.$tileKey.${bufferSequence++}\"\n }\n\n companion object {\n private var bufferSequence = 0L // Must be static to avoid cache collisions when a tile instance is re-created\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractLayer @JvmOverloads constructor(override var displayName: String? = null): Layer {\n override var isEnabled = true\n override var isPickEnabled = true\n override var opacity = 1f\n override var minActiveAltitude = Double.NEGATIVE_INFINITY\n override var maxActiveAltitude = Double.POSITIVE_INFINITY\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) {\n if (isEnabled && (isPickEnabled || !rc.isPickMode) && isWithinActiveAltitudes(rc)) doRender(rc)\n }\n\n override fun isWithinActiveAltitudes(rc: RenderContext) = rc.camera.position.altitude in minActiveAltitude..maxActiveAltitude\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nabstract class AbstractTiledImageLayer(name: String?, tiledSurfaceImage: TiledSurfaceImage?): RenderableLayer(name) {\n override var isPickEnabled = false // Image layer is not pick able\n\n var tiledSurfaceImage = tiledSurfaceImage?.also { addRenderable(it) }\n protected set(value) {\n field?.let { removeRenderable(it) }\n value?.let { addRenderable(it) }\n field = value\n }\n\n /**\n * Unique identifier of the layer type, defined by tiled surface image tile factory content type\n */\n val type get() = tiledSurfaceImage?.tileFactory?.contentType\n}","package earth.worldwind.layer\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays a single image spanning the globe. By default, BackgroundLayer is configured to display NASA's Blue Marble\n * next generation image at 40km resolution from the built-in WorldWind library resource\n * res/drawable/worldwind_worldtopobathy2004053.\n */\nclass BackgroundLayer @JvmOverloads constructor(\n imageSource: ImageSource = ImageSource.fromResource(MR.images.worldwind_worldtopobathy2004053),\n imageOptions: ImageOptions = ImageOptions(ImageConfig.RGB_565)\n) : RenderableLayer(\"Background\") {\n // Disable picking for the layer because it covers the full sphere and will override a terrain pick.\n override var isPickEnabled = false\n\n init {\n // Delegate display to the SurfaceImage shape.\n val surfaceImage = SurfaceImage(Sector().setFullSphere(), imageSource)\n surfaceImage.imageOptions = imageOptions\n addRenderable(surfaceImage)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class LayerList() : Iterable {\n protected val layers = mutableListOf()\n\n constructor(layerList: LayerList): this() { addAllLayers(layerList) }\n\n constructor(layers: Iterable): this() { addAllLayers(layers) }\n\n fun getLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"getLayer\", \"invalidIndex\")\n }\n return layers[index]\n }\n\n fun setLayer(index: Int, layer: Layer): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"setLayer\", \"invalidIndex\")\n }\n return layers.set(index, layer)\n }\n\n fun indexOfLayer(layer: Layer) = layers.indexOf(layer)\n\n fun indexOfLayerNamed(name: String): Int {\n for (idx in layers.indices) if ( name == layers[idx].displayName) return idx\n return -1\n }\n\n fun indexOfLayerWithProperty(key: Any, value: Any): Int {\n for (idx in layers.indices) {\n val layer = layers[idx]\n if (layer.hasUserProperty(key) && value == layer.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addLayer(layer: Layer) { layers.add(layer) }\n\n fun addLayer(index: Int, layer: Layer) {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"addLayer\", \"invalidIndex\")\n }\n layers.add(index, layer)\n }\n\n fun addAllLayers(list: LayerList) {\n //layers.ensureCapacity(list.layers.size)\n for (layer in list.layers) layers.add(layer) // we know the contents of layerList.layers is valid\n }\n\n fun addAllLayers(iterable: Iterable) { for (layer in iterable) layers.add(layer) }\n\n fun removeLayer(layer: Layer): Boolean { return layers.remove(layer) }\n\n fun removeLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"removeLayer\", \"invalidIndex\")\n }\n return layers.removeAt(index)\n }\n\n fun removeAllLayers(layers: Iterable): Boolean {\n var removed = false\n for (layer in layers) removed = removed or this.layers.remove(layer)\n return removed\n }\n\n fun clearLayers() { layers.clear() }\n\n override fun iterator() = layers.iterator()\n\n fun render(rc: RenderContext) {\n for (i in layers.indices) {\n val layer = layers[i]\n rc.currentLayer = layer\n try {\n layer.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"LayerList\", \"render\",\n \"Exception while rendering layer '${layer.displayName}'\", e\n )\n // Keep going. Draw the remaining layers.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class RenderableLayer @JvmOverloads constructor(displayName: String? = null): AbstractLayer(displayName), Iterable {\n protected val renderables = mutableListOf()\n val count get() = renderables.size\n\n constructor(layer: RenderableLayer): this(layer.displayName) { addAllRenderables(layer) }\n\n constructor(renderables: Iterable): this() { addAllRenderables(renderables) }\n\n fun isEmpty() = renderables.isEmpty()\n\n fun getRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"getRenderable\", \"invalidIndex\")\n }\n return renderables[index]\n }\n\n fun setRenderable(index: Int, renderable: Renderable): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"setRenderable\", \"invalidIndex\")\n }\n return renderables.set(index, renderable)\n }\n\n fun indexOfRenderable(renderable: Renderable) = renderables.indexOf(renderable)\n\n fun indexOfRenderableNamed(name: String): Int {\n for (idx in renderables.indices) if (name == renderables[idx].displayName) return idx\n return -1\n }\n\n fun indexOfRenderableWithProperty(key: Any, value: Any): Int {\n for (idx in renderables.indices) {\n val renderable = renderables[idx]\n if (renderable.hasUserProperty(key) && value == renderable.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addRenderable(renderable: Renderable) { renderables.add(renderable) }\n\n fun addRenderable(index: Int, renderable: Renderable) {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"addRenderable\", \"invalidIndex\")\n }\n renderables.add(index, renderable)\n }\n\n fun addAllRenderables(layer: RenderableLayer) {\n //renderables.ensureCapacity(layer.renderables.size)\n for (renderable in layer.renderables) renderables.add(renderable) // we know the contents of layer.renderables is valid\n }\n\n fun addAllRenderables(iterable: Iterable) { for (renderable in iterable) renderables.add(renderable) }\n\n fun removeRenderable(renderable: Renderable) = renderables.remove(renderable)\n\n fun removeRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"removeRenderable\", \"invalidIndex\")\n }\n return renderables.removeAt(index)\n }\n\n fun removeAllRenderables(renderables: Iterable): Boolean {\n var removed = false\n for (renderable in renderables) removed = removed or this.renderables.remove(renderable)\n return removed\n }\n\n fun clearRenderables() { renderables.clear() }\n\n override fun iterator() = renderables.iterator()\n\n override fun doRender(rc: RenderContext) {\n for (i in renderables.indices) {\n val renderable = renderables[i]\n try {\n renderable.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"RenderableLayer\", \"doRender\",\n \"Exception while rendering shape '${renderable.displayName}'\", e\n )\n // Keep going. Draw the remaining renderables.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.draw.DrawableTessellation\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\n\nclass ShowTessellationLayer: AbstractLayer(\"Terrain Tessellation\") {\n override var isPickEnabled = false\n var color = Color()\n set(value) {\n field.copy(value)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to render\n\n // Use WorldWind's basic GLSL program.\n val program = rc.getShaderProgram { BasicShaderProgram() }\n val pool = rc.getDrawablePool()\n val drawable = DrawableTessellation.obtain(pool).set(program, color, opacity)\n rc.offerSurfaceDrawable(drawable, 1.0 /*z-order after surface textures*/)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\nimport kotlin.math.PI\nimport kotlin.math.pow\n\n// TODO Correctly compute the atmosphere color for eye positions beneath the atmosphere\n// TODO Test the effect of working in local coordinates (reference point) on the GLSL atmosphere programs\nabstract class AbstractAtmosphereProgram: AbstractShaderProgram() {\n protected var fragModeId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var vertexOriginId = KglUniformLocation.NONE\n protected var eyePointId = KglUniformLocation.NONE\n protected var eyeMagnitudeId = KglUniformLocation.NONE\n protected var eyeMagnitude2Id = KglUniformLocation.NONE\n protected var lightDirectionId = KglUniformLocation.NONE\n protected var invWavelengthId = KglUniformLocation.NONE\n protected var atmosphereRadiusId = KglUniformLocation.NONE\n protected var atmosphereRadius2Id = KglUniformLocation.NONE\n protected var globeRadiusId = KglUniformLocation.NONE\n protected var krESunId = KglUniformLocation.NONE\n protected var kmESunId = KglUniformLocation.NONE\n protected var kr4PIId = KglUniformLocation.NONE\n protected var km4PIId = KglUniformLocation.NONE\n protected var scaleId = KglUniformLocation.NONE\n protected var scaleDepthId = KglUniformLocation.NONE\n protected var scaleOverScaleDepthId = KglUniformLocation.NONE\n protected var gId = KglUniformLocation.NONE\n protected var g2Id = KglUniformLocation.NONE\n protected var exposureId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n /**\n * Frag color indicates the atmospheric scattering color components written to the fragment color. Accepted values\n * are [FRAGMODE_PRIMARY], [FRAGMODE_SECONDARY] and [FRAGMODE_PRIMARY_TEX_BLEND].\n */\n enum class FragMode(val asInt : Int) {\n PRIMARY(1),\n SECONDARY(2),\n PRIMARY_TEX_BLEND(3)\n }\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n val invWavelength = Vec3(\n 1 / 0.650.pow(4.0), // 650 nm for red\n 1 / 0.570.pow(4.0), // 570 nm for green\n 1 / 0.475.pow(4.0) // 475 nm for blue\n )\n val kr = 0.0025 // Rayleigh scattering constant\n val km = 0.0010 // Mie scattering constant\n val eSun = 20.0 // Sun brightness constant\n val g = -0.990 // The Mie phase asymmetry factor\n val exposure = 2.0\n fragModeId = gl.getUniformLocation(program, \"fragMode\")\n gl.uniform1i(fragModeId, FragMode.PRIMARY.asInt)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n vertexOriginId = gl.getUniformLocation(program, \"vertexOrigin\")\n array.fill(0f)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n eyePointId = gl.getUniformLocation(program, \"eyePoint\")\n array.fill(0f)\n gl.uniform3fv(eyePointId, 1, array, 0)\n eyeMagnitudeId = gl.getUniformLocation(program, \"eyeMagnitude\")\n gl.uniform1f(eyeMagnitudeId, 0f)\n eyeMagnitude2Id = gl.getUniformLocation(program, \"eyeMagnitude2\")\n gl.uniform1f(eyeMagnitude2Id, 0f)\n lightDirectionId = gl.getUniformLocation(program, \"lightDirection\")\n array.fill(0f)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n invWavelengthId = gl.getUniformLocation(program, \"invWavelength\")\n invWavelength.toArray(array, 0)\n gl.uniform3fv(invWavelengthId, 1, array, 0)\n atmosphereRadiusId = gl.getUniformLocation(program, \"atmosphereRadius\")\n atmosphereRadius2Id = gl.getUniformLocation(program, \"atmosphereRadius2\")\n globeRadiusId = gl.getUniformLocation(program, \"globeRadius\")\n krESunId = gl.getUniformLocation(program, \"KrESun\")\n gl.uniform1f(krESunId, (kr * eSun).toFloat())\n kmESunId = gl.getUniformLocation(program, \"KmESun\")\n gl.uniform1f(kmESunId, (km * eSun).toFloat())\n kr4PIId = gl.getUniformLocation(program, \"Kr4PI\")\n gl.uniform1f(kr4PIId, (kr * 4 * PI).toFloat())\n km4PIId = gl.getUniformLocation(program, \"Km4PI\")\n gl.uniform1f(km4PIId, (km * 4 * PI).toFloat())\n scaleId = gl.getUniformLocation(program, \"scale\")\n scaleDepthId = gl.getUniformLocation(program, \"scaleDepth\")\n scaleOverScaleDepthId = gl.getUniformLocation(program, \"scaleOverScaleDepth\")\n gId = gl.getUniformLocation(program, \"g\")\n gl.uniform1f(gId, g.toFloat())\n g2Id = gl.getUniformLocation(program, \"g2\")\n gl.uniform1f(g2Id, (g * g).toFloat())\n exposureId = gl.getUniformLocation(program, \"exposure\")\n gl.uniform1f(exposureId, exposure.toFloat())\n }\n\n fun loadFragMode(fragMode: FragMode) { gl.uniform1i(fragModeId, fragMode.asInt) }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n\n fun loadVertexOrigin(origin: Vec3) {\n origin.toArray(array, 0)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n }\n\n fun loadVertexOrigin(x: Double, y: Double, z: Double) {\n gl.uniform3f(vertexOriginId, x.toFloat(), y.toFloat(), z.toFloat())\n }\n\n fun loadLightDirection(direction: Vec3) {\n direction.toArray(array, 0)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n }\n\n fun loadEyePoint(eyePoint: Vec3) {\n eyePoint.toArray(array, 0)\n gl.uniform3fv(eyePointId, 1, array, 0)\n gl.uniform1f(eyeMagnitudeId, eyePoint.magnitude.toFloat())\n gl.uniform1f(eyeMagnitude2Id, eyePoint.magnitudeSquared.toFloat())\n }\n\n fun loadAtmosphereParams(equatorialRadius: Double, atmosphereAltitude: Double) {\n val rayleighScaleDepth = 0.25\n val ar = equatorialRadius + atmosphereAltitude\n gl.uniform1f(globeRadiusId, equatorialRadius.toFloat())\n gl.uniform1f(atmosphereRadiusId, ar.toFloat())\n gl.uniform1f(atmosphereRadius2Id, (ar * ar).toFloat())\n gl.uniform1f(scaleId, (1 / atmosphereAltitude).toFloat())\n gl.uniform1f(scaleDepthId, rayleighScaleDepth.toFloat())\n gl.uniform1f(scaleOverScaleDepthId, (1 / atmosphereAltitude / rayleighScaleDepth).toFloat())\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource.Companion.fromResource\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\nimport kotlinx.datetime.Instant\n\nopen class AtmosphereLayer: AbstractLayer(\"Atmosphere\") {\n override var isPickEnabled = false\n var nightImageSource = fromResource(MR.images.dnb_land_ocean_ice_2012)\n var nightImageOptions = ImageOptions(ImageConfig.RGB_565)\n /**\n * Display light location on a specified time point. If null, then light is located at camera position.\n */\n var time : Instant? = null\n protected val activeLightDirection = Vec3()\n private val fullSphereSector = Sector().setFullSphere()\n\n companion object {\n private val VERTEX_POINTS_KEY = AtmosphereLayer::class.simpleName + \".points\"\n private val TRI_STRIP_ELEMENTS_KEY = AtmosphereLayer::class.simpleName + \".triStripElements\"\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Atmosphere layer is not applicable for 2D globe\n\n // Compute the currently active light direction.\n determineLightDirection(rc)\n\n // Render the sky portion of the atmosphere.\n renderSky(rc)\n\n // Render the ground portion of the atmosphere.\n renderGround(rc)\n }\n\n protected open fun determineLightDirection(rc: RenderContext) {\n // TODO Make light/sun direction an optional property of the WorldWindow and attach it to the RenderContext each frame\n // TODO RenderContext property defaults to the eye lat/lon like we have below\n time?.let {\n val lightLocation = SunPosition.getAsGeographicLocation(it)\n rc.globe.geographicToCartesianNormal(\n lightLocation.latitude, lightLocation.longitude, activeLightDirection\n )\n } ?: rc.globe.geographicToCartesianNormal(\n rc.camera.position.latitude, rc.camera.position.longitude, activeLightDirection\n )\n }\n\n protected open fun renderSky(rc: RenderContext) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableSkyAtmosphere.obtain(pool)\n val size = 128\n drawable.program = rc.getShaderProgram { SkyProgram() }\n drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY) {\n assembleVertexPoints(rc, size, size, rc.atmosphereAltitude.toFloat())\n }\n drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY) { assembleTriStripElements(size, size) }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun renderGround(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n val pool = rc.getDrawablePool()\n val drawable = DrawableGroundAtmosphere.obtain(pool)\n drawable.program = rc.getShaderProgram { GroundProgram() }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n\n // Use this layer's night image when the light location is different from the eye location.\n drawable.nightTexture = time?.run { rc.getTexture(nightImageSource, nightImageOptions) }\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun assembleVertexPoints(rc: RenderContext, numLat: Int, numLon: Int, altitude: Float): FloatBufferObject {\n val count = numLat * numLon\n val altitudes = FloatArray(count)\n altitudes.fill(altitude)\n val points = FloatArray(count * 3)\n rc.globe.geographicToCartesianGrid(\n fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points\n )\n return FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n // TODO move this into a basic tessellator implementation in WorldWind\n // TODO tessellator and atmosphere needs the TriStripIndices - could we add these to BasicGlobe (needs to be on a static context)\n // TODO may need to switch the tessellation method anyway - geographic grid may produce artifacts at the poles\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortBufferObject {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val elements = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n elements[pos++] = (vertex + numLon).toShort()\n elements[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n elements[pos++] = vertex.toShort()\n elements[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.atmosphere.AbstractAtmosphereProgram.FragMode.*\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableGroundAtmosphere : Drawable {\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: GroundProgram? = null\n var nightTexture: Texture? = null\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val fullSphereSector = Sector().setFullSphere()\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableGroundAtmosphere {\n val instance = pool.acquire() ?: DrawableGroundAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n nightTexture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Set up to use the shared tile tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Attempt to bind the night side texture to multi-texture unit 0.\n dc.activeTextureUnit(GL_TEXTURE0)\n val nightTexture = nightTexture\n val textureBound = nightTexture?.bindTexture(dc) == true\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) ||\n !terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) continue // vertex buffer failed to bind\n\n // Use the vertex origin for the terrain.\n val terrainOrigin = terrain.vertexOrigin\n program.loadVertexOrigin(terrainOrigin)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Use a tex coord matrix that registers the night texture correctly on each terrain.\n if (textureBound && nightTexture != null) {\n texCoordMatrix.copy(nightTexture.coordTransform)\n texCoordMatrix.multiplyByTileTransform(terrain.sector, fullSphereSector)\n program.loadTexCoordMatrix(texCoordMatrix)\n }\n\n // Draw the terrain as triangles, multiplying the current fragment color by the program's secondary color.\n program.loadFragMode(SECONDARY)\n dc.gl.blendFunc(GL_DST_COLOR, GL_ZERO)\n terrain.drawTriangles(dc)\n\n // Draw the terrain as triangles, adding the current fragment color to the program's primary color.\n program.loadFragMode(if (textureBound) PRIMARY_TEX_BLEND else PRIMARY)\n dc.gl.blendFunc(GL_ONE, GL_ONE)\n terrain.drawTriangles(dc)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.disableVertexAttribArray(1)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nclass DrawableSkyAtmosphere : Drawable {\n var vertexPoints: FloatBufferObject? = null\n var triStripElements: ShortBufferObject? = null\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: SkyProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSkyAtmosphere {\n val instance = pool.acquire() ?: DrawableSkyAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n triStripElements = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n val triStripElements = triStripElements ?: return // element buffer unspecified\n if (!triStripElements.bindBuffer(dc)) return // element buffer failed to bind\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Use the vertex origin for the sky ellipsoid.\n program.loadVertexOrigin(0.0, 0.0, 0.0)\n\n // Use the draw context's modelview projection matrix.\n program.loadModelviewProjection(dc.modelviewProjection)\n\n // Use the sky's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the inside of the sky without writing to the depth buffer.\n dc.gl.depthMask(false)\n dc.gl.frontFace(GL_CW)\n dc.gl.drawElements(GL_TRIANGLE_STRIP, triStripElements.byteCount / 2, GL_UNSIGNED_SHORT, 0)\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.frontFace(GL_CCW)\n }\n}","package earth.worldwind.layer.atmosphere\n\nopen class GroundProgram: AbstractAtmosphereProgram() {\n override var programSources = arrayOf(\n \"\"\"\n precision mediump int; /* fragMode is used in both shaders, so we must use a common precision */\n\n const int FRAGMODE_PRIMARY = 1;\n const int FRAGMODE_SECONDARY = 2;\n const int FRAGMODE_PRIMARY_TEX_BLEND = 3;\n\n const int SAMPLE_COUNT = 2;\n const float SAMPLES = 2.0;\n\n uniform int fragMode;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n uniform vec3 vertexOrigin;\n uniform vec3 eyePoint;\n uniform float eyeMagnitude;\t /* The eye point's magnitude */\n uniform float eyeMagnitude2;\t /* eyeMagnitude^2 */\n uniform vec3 lightDirection;\t /* The direction vector to the light source */\n uniform vec3 invWavelength;\t /* 1 / pow(wavelength, 4) for the red, green, and blue channels */\n uniform float atmosphereRadius; /* The outer (atmosphere) radius */\n uniform float atmosphereRadius2; /* atmosphereRadius^2 */\n uniform float globeRadius;\t\t /* The inner (planetary) radius */\n uniform float KrESun;\t\t\t /* Kr * ESun */\n uniform float KmESun;\t\t\t /* Km * ESun */\n uniform float Kr4PI;\t\t\t /* Kr * 4 * PI */\n uniform float Km4PI;\t\t\t /* Km * 4 * PI */\n uniform float scale;\t\t\t /* 1 / (atmosphereRadius - globeRadius) */\n uniform float scaleDepth;\t\t /* The scale depth (i.e. the altitude at which the atmosphere's average density is found) */\n uniform float scaleOverScaleDepth;\t/* fScale / fScaleDepth */\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec3 primaryColor;\n varying vec3 secondaryColor;\n varying vec3 direction;\n varying vec2 texCoord;\n\n float scaleFunc(float cos) {\n float x = 1.0 - cos;\n return scaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n }\n\n void main() {\n /* Get the ray from the camera to the vertex and its length (which is the far point of the ray passing through the\n atmosphere) */\n vec3 point = vertexPoint.xyz + vertexOrigin;\n vec3 ray = point - eyePoint;\n float far = length(ray);\n ray /= far;\n\n vec3 start;\n if (eyeMagnitude < atmosphereRadius) {\n start = eyePoint;\n } else {\n /* Calculate the closest intersection of the ray with the outer atmosphere (which is the near point of the ray\n passing through the atmosphere) */\n float B = 2.0 * dot(eyePoint, ray);\n float C = eyeMagnitude2 - atmosphereRadius2;\n float det = max(0.0, B*B - 4.0 * C);\n float near = 0.5 * (-B - sqrt(det));\n\n /* Calculate the ray's starting point, then calculate its scattering offset */\n start = eyePoint + ray * near;\n far -= near;\n }\n\n float depth = exp((globeRadius - atmosphereRadius) / scaleDepth);\n float eyeAngle = dot(-ray, point) / length(point);\n float lightAngle = dot(lightDirection, point) / length(point);\n float eyeScale = scaleFunc(eyeAngle);\n float lightScale = scaleFunc(lightAngle);\n float eyeOffset = depth*eyeScale;\n float temp = (lightScale + eyeScale);\n\n /* Initialize the scattering loop variables */\n float sampleLength = far / SAMPLES;\n float scaledLength = sampleLength * scale;\n vec3 sampleRay = ray * sampleLength;\n vec3 samplePoint = start + sampleRay * 0.5;\n\n /* Now loop through the sample rays */\n vec3 frontColor = vec3(0.0, 0.0, 0.0);\n vec3 attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i\n abstract fun getTypeFor(resolution: Double): String\n\n /**\n * Determines whether the grid should be updated. It returns true if: * the eye has moved more than 1% of its\n * altitude above ground * the view FOV, heading or pitch have changed more than 1 degree * vertical\n * exaggeration has changed `RenderContext`.\n *\n * @return true if the graticule should be updated.\n */\n private fun needsToUpdate(rc: RenderContext): Boolean {\n if (lastVerticalExaggeration != rc.verticalExaggeration) return true\n if (abs(lastCameraHeading - rc.camera.heading.inDegrees) > 1) return true\n if (abs(lastCameraTilt - rc.camera.tilt.inDegrees) > 1) return true\n if (abs(lastFOV - rc.camera.fieldOfView.inDegrees) > 1) return true\n if (rc.cameraPoint.distanceTo(lastCameraPoint) > computeAltitudeAboveGround(rc) / 100) return true\n if (rc.globeState != lastGlobeState) return true\n return false\n }\n\n protected open fun clear(rc: RenderContext) {\n removeAllRenderables()\n lastCameraPoint.copy(rc.cameraPoint)\n lastFOV = rc.camera.fieldOfView.inDegrees\n lastCameraHeading = rc.camera.heading.inDegrees\n lastCameraTilt = rc.camera.tilt.inDegrees\n lastVerticalExaggeration = rc.verticalExaggeration\n lastGlobeState = rc.globeState\n }\n\n fun computeLabelOffset(rc: RenderContext): Location {\n return rc.lookAtPosition?.let {\n val labelOffset = toDegrees(rc.pixelSize / rc.globe.equatorialRadius * rc.viewport.width / 4)\n Location(\n it.latitude.minusDegrees(labelOffset).normalizeLatitude().coerceIn(MIN_LAT, MAX_LAT),\n it.longitude.minusDegrees(labelOffset).normalizeLongitude()\n )\n } ?: rc.camera.position\n }\n\n fun createLineRenderable(positions: List, pathType: PathType) = Path(positions).apply {\n this.pathType = pathType\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun createTextRenderable(position: Position, label: String, resolution: Double) = Label(position, label).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n // priority = resolution * 1e6 // TODO Implement priority\n }\n\n fun getSurfacePoint(rc: RenderContext, latitude: Angle, longitude: Angle): Vec3 {\n if (!rc.terrain.surfacePoint(latitude, longitude, surfacePoint))\n rc.globe.geographicToCartesian(\n latitude, longitude, rc.globe.getElevation(latitude, longitude)\n * rc.verticalExaggeration, surfacePoint\n )\n return surfacePoint\n }\n\n fun computeAltitudeAboveGround(rc: RenderContext): Double {\n val surfacePoint = getSurfacePoint(rc, rc.camera.position.latitude, rc.camera.position.longitude)\n return rc.cameraPoint.distanceTo(surfacePoint)\n }\n\n fun computeTruncatedSegment(p1: Position, p2: Position, sector: Sector, positions: MutableList) {\n val p1In = sector.contains(p1.latitude, p1.longitude)\n val p2In = sector.contains(p2.latitude, p2.longitude)\n if (!p1In && !p2In) return // the whole segment is (likely) outside\n if (p1In && p2In) {\n // the whole segment is (likely) inside\n positions.add(p1)\n positions.add(p2)\n } else {\n // segment does cross the boundary\n var outPoint = if (!p1In) p1 else p2\n val inPoint = if (p1In) p1 else p2\n for (i in 1..2) {\n // there may be two intersections\n var intersection: Location? = null\n if (outPoint.longitude.inDegrees > sector.maxLongitude.inDegrees\n || sector.maxLongitude.inDegrees == 180.0 && outPoint.longitude.inDegrees < 0.0) {\n // intersect with east meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.maxLongitude\n )\n } else if (outPoint.longitude.inDegrees < sector.minLongitude.inDegrees\n || sector.minLongitude.inDegrees == -180.0 && outPoint.longitude.inDegrees > 0.0) {\n // intersect with west meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.minLongitude\n )\n } else if (outPoint.latitude.inDegrees > sector.maxLatitude.inDegrees) {\n // intersect with top parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.maxLatitude\n )\n } else if (outPoint.latitude.inDegrees < sector.minLatitude.inDegrees) {\n // intersect with bottom parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.minLatitude\n )\n }\n outPoint = if (intersection != null) Position(\n intersection.latitude,\n intersection.longitude,\n outPoint.altitude\n ) else break\n }\n positions.add(inPoint)\n positions.add(outPoint)\n }\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a meridian.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param longitude the meridian longitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLongitude(p1: Location, p2: Location, longitude: Angle): Location? {\n if (p1.longitude == longitude) return p1\n if (p2.longitude == longitude) return p2\n var pos: Location? = null\n val deltaLon = getDeltaLongitude(p1, p2.longitude)\n if (getDeltaLongitude(p1, longitude) < deltaLon && getDeltaLongitude(p2, longitude) < deltaLon) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (toRadians(getDeltaLongitude(midPoint, longitude)) > precision && count <= 20) {\n count++\n if (getDeltaLongitude(a, longitude) < getDeltaLongitude(b, longitude)) b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final longitude for an exact match\n if (pos != null) pos = Location(pos.latitude, longitude)\n return pos\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a parallel.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param latitude the parallel latitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLatitude(p1: Location, p2: Location, latitude: Angle): Location? {\n var pos: Location? = null\n if (sign(p1.latitude.inDegrees - latitude.inDegrees) != sign(p2.latitude.inDegrees - latitude.inDegrees)) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (abs(midPoint.latitude.inRadians - latitude.inRadians) > precision && count <= 20) {\n count++\n if (sign(a.latitude.inDegrees - latitude.inDegrees) != sign(midPoint.latitude.inDegrees - latitude.inDegrees))\n b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final latitude for an exact match\n if (pos != null) pos = Location(latitude, pos.longitude)\n return pos\n }\n\n private fun greatCircleMidPoint(p1: Location, p2: Location): Location {\n val azimuth = p1.greatCircleAzimuth(p2)\n val distance = p1.greatCircleDistance(p2)\n return p1.greatCircleLocation(azimuth, distance / 2, Location())\n }\n\n private fun getDeltaLongitude(p1: Location, longitude: Angle): Double {\n val deltaLon = abs(p1.longitude.inDegrees - longitude.inDegrees)\n return if (deltaLon < 180) deltaLon else 360 - deltaLon\n }\n\n companion object {\n private val MIN_LAT = (-70.0).degrees\n private val MAX_LAT = 70.0.degrees\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.AbstractTile\n\nabstract class AbstractGraticuleTile(open val layer: AbstractGraticuleLayer, sector: Sector) : AbstractTile(sector) {\n val gridElements = mutableListOf()\n /**\n * Flag to avoid recursive renderables creation if tile should not have elements by design\n */\n private var shouldCreateRenderables = true\n private val scratchVector = Vec3()\n\n open fun isInView(rc: RenderContext) = rc.globe.projectionLimits?.let { intersectsSector(it) } != false &&\n intersectsSector(rc.terrain.sector) && intersectsFrustum(rc) && isFacingCamera(rc)\n\n open fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, sector.centroidLatitude, sector.centroidLongitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n val tileSizeMeter = sector.deltaLatitude.inRadians * rc.globe.equatorialRadius\n return tileSizeMeter / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n open fun selectRenderables(rc: RenderContext) {\n if (shouldCreateRenderables && gridElements.isEmpty()) createRenderables()\n }\n\n open fun clearRenderables() {\n gridElements.clear()\n shouldCreateRenderables = true\n }\n\n open fun createRenderables() {\n shouldCreateRenderables = false\n }\n\n fun subdivide(div: Int, sector: Sector = this.sector): List {\n val dLat = sector.deltaLatitude.inDegrees / div\n val dLon = sector.deltaLongitude.inDegrees / div\n val sectors = mutableListOf()\n for (row in 0 until div) {\n for (col in 0 until div) {\n sectors += fromDegrees(\n sector.minLatitude.inDegrees + dLat * row,\n sector.minLongitude.inDegrees + dLon * col, dLat, dLon\n )\n }\n }\n return sectors\n }\n\n protected open fun isFacingCamera(rc: RenderContext) = if (rc.globe.is2D) true else {\n val viewingVector = nearestPoint(rc).subtract(rc.cameraPoint)\n val normalVector = rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n dot / (viewingVector.magnitude * normalVector.magnitude) < 0.0\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\nclass GraticuleRenderingParams: MutableMap by HashMap() {\n var isDrawLines: Boolean\n get() = get(KEY_DRAW_LINES) as? Boolean ?: false\n set(drawLines) { put(KEY_DRAW_LINES, drawLines) }\n var lineColor: Color?\n get() = get(KEY_LINE_COLOR) as? Color\n set(color) { put(KEY_LINE_COLOR, color) }\n var lineWidth: Float\n get() = get(KEY_LINE_WIDTH) as? Float ?: 0.0f\n set(lineWidth) { put(KEY_LINE_WIDTH, lineWidth) }\n var lineStyle: LineStyle\n get() = get(KEY_LINE_STYLE) as? LineStyle ?: LineStyle.SOLID\n set(lineStyle) { put(KEY_LINE_STYLE, lineStyle) }\n var isDrawLabels: Boolean\n get() = get(KEY_DRAW_LABELS) as? Boolean ?: false\n set(drawLabels) { put(KEY_DRAW_LABELS, drawLabels) }\n var labelColor: Color?\n get() = get(KEY_LABEL_COLOR) as? Color\n set(color) { put(KEY_LABEL_COLOR, color) }\n var labelFont: Font?\n get() = get(KEY_LABEL_FONT) as? Font\n set(font) { put(KEY_LABEL_FONT, font) }\n\n companion object {\n const val KEY_DRAW_LINES = \"DrawGraticule\"\n const val KEY_LINE_COLOR = \"GraticuleLineColor\"\n const val KEY_LINE_WIDTH = \"GraticuleLineWidth\"\n const val KEY_LINE_STYLE = \"GraticuleLineStyle\";\n const val KEY_DRAW_LABELS = \"DrawLabels\"\n const val KEY_LABEL_COLOR = \"LabelColor\"\n const val KEY_LABEL_FONT = \"LabelFont\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LINES\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_STYLE\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_WIDTH\nimport earth.worldwind.render.*\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.ShapeAttributes\nimport kotlin.jvm.JvmOverloads\n\ninternal class GraticuleSupport {\n private val renderables = mutableMapOf()\n private val namedParams = mutableMapOf()\n private val namedShapeAttributes = mutableMapOf()\n var defaultParams: GraticuleRenderingParams? = null\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { renderables[renderable] = paramsKey }\n\n fun removeAllRenderables() { renderables.clear() }\n\n @JvmOverloads\n fun render(rc: RenderContext, opacity: Float = 1f) {\n namedShapeAttributes.clear()\n\n // Render lines and collect text labels\n for ((renderable, paramsKey) in renderables) {\n val renderingParams = namedParams[paramsKey]\n if (renderable is Path) {\n if (renderingParams?.isDrawLines != false) {\n applyRenderingParams(paramsKey, renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n } else if (renderable is Label) {\n if (renderingParams?.isDrawLabels != false) {\n applyRenderingParams(renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n }\n }\n }\n\n fun getRenderingParams(key: String): GraticuleRenderingParams {\n return namedParams[key] ?: GraticuleRenderingParams().also { params ->\n initRenderingParams(params)\n defaultParams?.let { params.putAll(it) }\n namedParams[key] = params\n }\n }\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n initRenderingParams(renderingParams)\n namedParams[key] = renderingParams\n }\n\n private fun initRenderingParams(params: GraticuleRenderingParams) {\n if (params[KEY_DRAW_LINES] == null) params[KEY_DRAW_LINES] = true\n if (params[KEY_LINE_COLOR] == null) params[KEY_LINE_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LINE_WIDTH] == null) params[KEY_LINE_WIDTH] = .5f\n if (params[KEY_LINE_STYLE] == null) params[KEY_LINE_STYLE] = LineStyle.SOLID\n if (params[KEY_DRAW_LABELS] == null) params[KEY_DRAW_LABELS] = true\n if (params[KEY_LABEL_COLOR] == null) params[KEY_LABEL_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LABEL_FONT] == null) params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 12)\n }\n\n private fun applyRenderingParams(params: GraticuleRenderingParams?, text: Label, opacity: Float) {\n if (params != null) {\n // Apply \"label\" properties to the Label.\n var o = params[KEY_LABEL_COLOR]\n if (o is Color) {\n val color = applyOpacity(o, opacity)\n val compArray = FloatArray(3)\n color.toHSV(compArray)\n val colorValue = if (compArray[2] < .5f) 1f else 0f\n text.attributes.textColor = color\n text.attributes.outlineColor = Color(colorValue, colorValue, colorValue, color.alpha)\n }\n o = params[KEY_LABEL_FONT]\n if (o is Font) text.attributes.font = o\n }\n }\n\n private fun applyRenderingParams(key: String, params: GraticuleRenderingParams?, path: Path, opacity: Float) {\n if (params != null) {\n path.attributes = getLineShapeAttributes(key, params, opacity)\n }\n }\n\n private fun getLineShapeAttributes(key: String, params: GraticuleRenderingParams, opacity: Float) =\n namedShapeAttributes[key] ?: createLineShapeAttributes(params, opacity).also { namedShapeAttributes[key] = it }\n\n private fun createLineShapeAttributes(params: GraticuleRenderingParams, opacity: Float): ShapeAttributes {\n val attrs = ShapeAttributes()\n attrs.isDrawInterior = false\n attrs.isDrawOutline = true\n\n // Apply \"line\" properties.\n val color = params[KEY_LINE_COLOR]\n if (color is Color) attrs.outlineColor = applyOpacity(color, opacity)\n val lineWidth = params[KEY_LINE_WIDTH]\n if (lineWidth is Float) attrs.outlineWidth = lineWidth\n val style = params[KEY_LINE_STYLE]\n if (style is LineStyle && style.factor > 0) {\n attrs.outlineImageSource = ImageSource.fromLineStipple(style.factor, style.pattern)\n }\n return attrs\n }\n\n private fun applyOpacity(color: Color, opacity: Float) =\n if (opacity >= 1) color else Color(color.red, color.green, color.blue, color.alpha * opacity)\n}","package earth.worldwind.layer.graticule\n\n/**\n * A line stipple pattern.\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either zero or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n */\nenum class LineStyle(val factor: Int, val pattern: Short) {\n SOLID(0, 0x0000),\n DASHED(1, 0xFFE0.toShort()),\n DOTTED(2, 0xCCCC.toShort()),\n DASH_DOTTED(2, 0xFFCC.toShort())\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\n\nclass GridElement(val sector: Sector, val renderable: Renderable, val type: String, val value: Angle) {\n constructor(sector: Sector, renderable: Renderable, type: String): this(sector, renderable, type, ZERO)\n\n fun isInView(rc: RenderContext) = sector.intersectsOrNextTo(rc.terrain.sector)\n\n companion object {\n const val TYPE_LINE = \"GridElement_Line\"\n const val TYPE_LINE_NORTH = \"GridElement_LineNorth\"\n const val TYPE_LINE_SOUTH = \"GridElement_LineSouth\"\n const val TYPE_LINE_WEST = \"GridElement_LineWest\"\n const val TYPE_LINE_EAST = \"GridElement_LineEast\"\n const val TYPE_LINE_NORTHING = \"GridElement_LineNorthing\"\n const val TYPE_LINE_EASTING = \"GridElement_LineEasting\"\n const val TYPE_GRIDZONE_LABEL = \"GridElement_GridZoneLabel\"\n const val TYPE_LONGITUDE_LABEL = \"GridElement_LongitudeLabel\"\n const val TYPE_LATITUDE_LABEL = \"GridElement_LatitudeLabel\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.RenderContext\n\ninternal class GridTilesSupport(private val callback: Callback, private val rows: Int, private val cols: Int) {\n internal interface Callback {\n fun createGridTile(sector: Sector): AbstractGraticuleTile\n fun getGridSector(row: Int, col: Int): Sector\n fun getGridColumn(longitude: Angle): Int\n fun getGridRow(latitude: Angle): Int\n fun getProjectedSector(sector: Sector) = sector\n }\n\n private val gridTiles = Array(rows) { arrayOfNulls(cols) }\n\n fun clearTiles() {\n for (row in 0 until rows) for (col in 0 until cols) {\n gridTiles[row][col]?.clearRenderables()\n gridTiles[row][col] = null\n }\n }\n\n /**\n * Select the visible grid elements\n *\n * @param rc the current `RenderContext`.\n */\n fun selectRenderables(rc: RenderContext) {\n val tileList = getVisibleTiles(rc)\n // Select tile visible elements\n for (gt in tileList) gt.selectRenderables(rc)\n }\n\n private fun getVisibleTiles(rc: RenderContext): List {\n val tileList = mutableListOf()\n val vs = callback.getProjectedSector(rc.terrain.sector)\n val gridRectangle = getGridRectangleForSector(vs)\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n val tile = gridTiles[row][col] ?: callback.createGridTile(callback.getGridSector(row, col)).also {\n gridTiles[row][col] = it\n }\n if (tile.isInView(rc)) tileList.add(tile) else tile.clearRenderables()\n }\n }\n return tileList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport {\n val x1 = callback.getGridColumn(sector.minLongitude)\n val x2 = callback.getGridColumn(sector.maxLongitude)\n val y1 = callback.getGridRow(sector.minLatitude)\n val y2 = callback.getGridRow(sector.maxLatitude)\n return Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.HelmertParameters\nimport earth.worldwind.geom.coords.HelmertTransformation\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GridTilesSupport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport kotlin.math.floor\n\nclass GKGraticuleLayer(\n private val toWgsParameters: HelmertParameters = HelmertParameters.SK42_WGS84,\n private val fromWgsParameters: HelmertParameters = HelmertParameters.WGS84_SK42\n) : AbstractGraticuleLayer(\"Gauss-Kruger Graticule\"), GridTilesSupport.Callback {\n /**\n * Show 25k and 10k sheets when metric graticule becomes visible\n */\n var showDetailedSheets = false\n /**\n * Maximal visibility distance for 1km grid labels\n */\n var thresholdFor1kLabels = GK_MAX_RESOLUTION_25_000 * 2.0\n /**\n * Maximal visibility distance for 2km grid labels\n */\n var thresholdFor2kLabels = GK_MAX_RESOLUTION_50_000 * 2.0\n\n private val gridTilesSupport = GridTilesSupport(this, 46, 60)\n private val overview = GKOverview(this)\n private val metricLabels = GKMetricLabels(this )\n private var metricLabelScale = 0\n\n override val orderedTypes = listOf(\n GRATICULE_GK_OVERVIEW,\n GRATICULE_GK_1_000_000,\n GRATICULE_GK_500_000,\n GRATICULE_GK_200_000,\n GRATICULE_GK_100_000,\n GRATICULE_GK_50_000,\n GRATICULE_GK_25_000,\n GRATICULE_GK_10_000\n )\n\n override fun initRenderingParams() {\n var params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 11)\n setRenderingParams(GK_METRIC_GRID_2000, params)\n setRenderingParams(GK_METRIC_GRID_1000, params)\n\n params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 13)\n setRenderingParams(GRATICULE_GK_OVERVIEW, params)\n setRenderingParams(GRATICULE_GK_1_000_000, params)\n setRenderingParams(GRATICULE_GK_500_000, params)\n setRenderingParams(GRATICULE_GK_200_000, params)\n setRenderingParams(GRATICULE_GK_100_000, params)\n setRenderingParams(GRATICULE_GK_50_000, params)\n setRenderingParams(GRATICULE_GK_25_000, params)\n setRenderingParams(GRATICULE_GK_10_000, params)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n metricLabelScale = 0\n if (rc.camera.position.altitude < GK_MAX_RESOLUTION_OVERVIEW) {\n gridTilesSupport.selectRenderables(rc)\n metricLabels.selectRenderables(rc, metricLabelScale)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n override fun getGridSector(row: Int, col: Int): Sector {\n var minLat = -92.0 + row * 4\n var maxLat = minLat + 4\n if (row == 0) {\n minLat = -90.0\n maxLat = -88.0\n } else if (row == 45) {\n maxLat = 90.0\n minLat = 88.0\n }\n val minLon = -180.0 + col * 6\n val maxLon = minLon + 6\n return Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n }\n\n override fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n override fun getProjectedSector(sector: Sector) = Sector().apply {\n union(transformFromWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun getUnprojectedSector(sector: Sector) = Sector().apply {\n union(transformToWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun transformFromWGS(position: Position, result: Position = Position()) : Position {\n //TODO Fix the the problem with coordinates conversion around the end of WGS84 coordinate system\n position.latitude.inDegrees.coerceIn(-88.0, 88.0).also { position.latitude = it.degrees }\n position.longitude.inDegrees.coerceAtLeast(-179.8).also { position.longitude = it.degrees }\n return HelmertTransformation.transform(position, fromWgsParameters, result)\n }\n\n fun transformToWGS(position: Position, result: Position = Position()) =\n HelmertTransformation.transform(position, toWgsParameters, result)\n\n override fun getGridRow(latitude: Angle) = when {\n latitude.inDegrees < - 88.0 -> 0\n latitude.inDegrees > 88.0 -> 45\n else -> floor(((latitude.inDegrees + 88.0) / 4.0) + 1.0).toInt().coerceAtMost(45)\n }\n\n override fun getTypeFor(resolution: Double) = when {\n resolution >= GK_MAX_RESOLUTION_1_000_000 -> GRATICULE_GK_1_000_000\n resolution >= GK_MAX_RESOLUTION_500_000 -> GRATICULE_GK_500_000\n resolution >= GK_MAX_RESOLUTION_200_000 -> GRATICULE_GK_200_000\n resolution >= GK_MAX_RESOLUTION_100_000 -> GRATICULE_GK_100_000\n resolution >= GK_MAX_RESOLUTION_50_000 -> GRATICULE_GK_50_000\n resolution >= GK_MAX_RESOLUTION_25_000 -> GRATICULE_GK_25_000\n else -> GRATICULE_GK_10_000\n }\n\n fun getDistanceFor(type: String) = when(type) {\n GRATICULE_GK_1_000_000 -> GK_MAX_RESOLUTION_1_000_000\n GRATICULE_GK_500_000 -> GK_MAX_RESOLUTION_500_000\n GRATICULE_GK_200_000 -> GK_MAX_RESOLUTION_200_000\n GRATICULE_GK_100_000 -> GK_MAX_RESOLUTION_100_000\n GRATICULE_GK_50_000 -> GK_MAX_RESOLUTION_50_000\n GRATICULE_GK_25_000 -> GK_MAX_RESOLUTION_25_000\n else -> GK_MAX_RESOLUTION_10_000\n }\n\n override fun createGridTile(sector: Sector) = GKGraticuleTile(this, sector, GRATICULE_GK_1_000_000)\n\n fun addMetricLabel(label: Label) = metricLabels.addLabel(label)\n\n fun setMetricLabelScale(value: Int) {\n if (isZeroOrMinimalValue(value)) metricLabelScale = value\n }\n\n private fun isZeroOrMinimalValue(value: Int) =\n value == 0 || (value > 0 && metricLabelScale == 0) || (metricLabelScale != 0 && value < metricLabelScale)\n\n companion object {\n const val GRATICULE_GK_OVERVIEW = \"Graticule.GK.Overview\"\n const val GK_MAX_RESOLUTION_OVERVIEW = 15e5\n const val GRATICULE_GK_1_000_000 = \"Graticule.GK.1_000_000\"\n const val GK_MAX_RESOLUTION_1_000_000 = 1e6\n const val GRATICULE_GK_500_000 = \"Graticule.GK.500_000\"\n const val GK_MAX_RESOLUTION_500_000 = 5e5\n const val GRATICULE_GK_200_000 = \"Graticule.GK.200_000\"\n const val GK_MAX_RESOLUTION_200_000 = 2e5\n const val GRATICULE_GK_100_000 = \"Graticule.GK.100_000\"\n const val GK_MAX_RESOLUTION_100_000 = 1e5\n const val GRATICULE_GK_50_000 = \"Graticule.GK.50_000\"\n const val GK_MAX_RESOLUTION_50_000 = 35e3\n const val GRATICULE_GK_25_000 = \"Graticule.GK.25_000\"\n const val GK_MAX_RESOLUTION_25_000 = 15e3\n const val GRATICULE_GK_10_000 = \"Graticule.GK.10_000\"\n const val GK_MAX_RESOLUTION_10_000 = 8e3\n const val GK_METRIC_GRID_1000 = \"GK.Metric.Grid.1000x1000\"\n const val GK_METRIC_GRID_2000 = \"GK.Metric.Grid.2000x2000\"\n\n val MILLION_COOL_NAME = arrayOf(\"SZ\", \"SV\", \"SU\", \"ST\", \"SS\", \"SR\", \"SQ\", \"SP\", \"SO\", \"SN\",\n \"SM\", \"SL\", \"SK\", \"SJ\", \"SI\", \"SH\", \"SG\", \"SF\", \"SE\", \"SD\", \"SC\", \"SB\", \"SA\",\"A\", \"B\", \"C\", \"D\",\n \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"Z\")\n\n val ENDING_200_000_MAP = arrayOf(\"І\", \"ІІ\", \"ІІІ\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\", \"X\",\n \"XI\", \"XII\", \"XIII\", \"XIV\", \"XV\", \"XVI\", \"XVII\", \"XVIII\", \"XIX\", \"XX\",\n \"XXI\", \"XXII\", \"XXIII\", \"XXIV\", \"XXV\", \"XXVI\", \"XXVII\", \"XXVIII\", \"XXIX\", \"XXX\",\n \"XXXI\", \"XXXII\", \"XXXIII\", \"XXXIV\", \"XXXV\", \"XXXVI\")\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_10_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport earth.worldwind.layer.graticule.gk.GKLayerHelper.getNameByCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\nprivate const val POINTS_IN_LINE = 3\n\nclass GKGraticuleTile(\n layer: GKGraticuleLayer, private val gkSector: Sector, private val tileType: String, previousName: String = \"\",\n private val countInParent: Int = 0, private val childNumber: Int = 0\n) : AbstractGraticuleTile(layer, layer.getUnprojectedSector(gkSector)) {\n private val name = getNameByCoord(gkSector.centroidLatitude, gkSector.centroidLongitude, tileType, previousName)\n private var subTiles: List? = null\n private var metricSquares: GKMetricGrid? = null\n private var renderWithNeighbors = true\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n override fun selectRenderables(rc: RenderContext) {\n // TODO Remove workaround and add logic for 30th zone after fix of Path drawing at -179 to +179 longitude\n if (GKLayerHelper.getZone(gkSector.centroidLongitude) == 30) return\n\n super.selectRenderables(rc)\n val distanceToTile = if (rc.globe.is2D) rc.viewingDistance else nearestPoint(rc).distanceTo(rc.cameraPoint)\n val appropriateType = layer.getTypeFor(distanceToTile)\n enableRenderingForChildTile(appropriateType, distanceToTile)\n for (ge in gridElements) {\n if (ge.type == GridElement.TYPE_GRIDZONE_LABEL) renderLabel(appropriateType, rc, ge)\n else if (ge.isInView(rc)) layer.addRenderable(ge.renderable, tileType)\n }\n renderMetricGraticule()\n if (shouldCreateSubTile(distanceToTile)) {\n val subTiles = subTiles ?: createSubTiles().also { subTiles = it }\n for (subTile in subTiles) {\n if (subTile.isInView(rc)) subTile.selectRenderables(rc) //else subTile.clearRenderables()\n }\n }\n }\n\n private fun renderLabel(appropriateType: String, rc: RenderContext, label: GridElement) {\n if (shouldRenderLabel(appropriateType, rc)) layer.addRenderable(label.renderable, tileType)\n }\n\n private fun shouldRenderLabel(type: String, rc: RenderContext) =\n (((type == tileType || renderWithNeighbors) && shouldRenderSmallScale()) || shouldRenderMinimalScale()) && isInView(rc)\n\n private fun shouldRenderMinimalScale() = !layer.showDetailedSheets && tileType == GRATICULE_GK_50_000\n\n private fun shouldRenderSmallScale() =\n !(!layer.showDetailedSheets && (tileType == GRATICULE_GK_25_000 || tileType == GRATICULE_GK_10_000))\n\n private fun renderMetricGraticule() {\n if (tileType == GRATICULE_GK_25_000) {\n layer.setMetricLabelScale(2000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_2000)\n } else if (tileType == GRATICULE_GK_10_000) {\n layer.setMetricLabelScale(1000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_1000)\n }\n }\n\n private fun enableRenderingForChildTile(type: String, distanceToTile: Double) {\n val typeWithBiggerScale = getTypeWithBiggerScale()\n if (type == typeWithBiggerScale) {\n renderWithNeighbors = false\n subTiles?.forEach { it.renderWithNeighbors = true }\n } else if ( distanceToTile < layer.getDistanceFor(typeWithBiggerScale)) {\n renderWithNeighbors = false\n }\n }\n\n private fun shouldCreateSubTile(distanceToTile: Double) =\n distanceToTile <= layer.getDistanceFor(tileType) && tileType != GRATICULE_GK_10_000\n\n override fun clearRenderables() {\n super.clearRenderables()\n metricSquares?.clearRenderables()\n subTiles?.forEach { it.clearRenderables() }.also { subTiles = null }\n }\n\n private fun createSubTiles(): List {\n val newType = getTypeWithBiggerScale()\n val div = if (tileType == GRATICULE_GK_500_000) 3 else 2\n var count = 1\n return subdivide(div, gkSector).map { GKGraticuleTile(layer, it, newType, name, div*div, count++) }\n }\n\n private fun getTypeWithBiggerScale() = layer.getTypeFor(layer.getDistanceFor(tileType) * 0.8)\n\n override fun createRenderables() {\n super.createRenderables()\n\n if (!name.startsWith(\"Z\") && !name.startsWith(\"SZ\")) {\n // TODO Fix problem with Z zone and add logic for maps under 60 parallels\n // TODO Fix problem related with transformation near the end of graticule zones\n if (shouldRenderSmallScale()) {\n generateMeridiansAndParallels()\n createLabels()\n }\n createMetricGraticule()\n }\n }\n\n private fun generateMeridiansAndParallels() {\n if (shouldGenerateMeridian()) generateWestMeridian()\n if (shouldGenerateParallel()) generateNorthParallel()\n }\n\n private fun shouldGenerateMeridian() = countInParent == 0 ||\n countInParent == 4 && (childNumber == 2 || childNumber == 4) ||\n countInParent == 9 && (childNumber == 2 || childNumber == 3 ||\n childNumber == 5 || childNumber == 6 || childNumber == 8 || childNumber == 9)\n\n private fun shouldGenerateParallel() =\n countInParent == 0 || countInParent == 4 && childNumber >= 3 || countInParent == 9 && childNumber >= 4\n\n private fun generateWestMeridian() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val latStep = gkSector.deltaLatitude.inDegrees / POINTS_IN_LINE\n val positions = mutableListOf()\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat.plusDegrees(i * latStep), minLon, 0.0)))\n val westLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, westLine, GridElement.TYPE_LINE_WEST, minLon))\n }\n\n private fun generateNorthParallel() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val positions = mutableListOf()\n val lonStep = gkSector.deltaLongitude.inDegrees / POINTS_IN_LINE\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat, minLon.plusDegrees(i * lonStep), 0.0)))\n val northLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, northLine, GridElement.TYPE_LINE_NORTH, minLat))\n }\n\n private fun createLabels() {\n val labelPos = Position(sector.centroidLatitude, sector.centroidLongitude, 0.0)\n val text = layer.createTextRenderable(labelPos, name, layer.getDistanceFor(tileType))\n text.attributes.isOutlineEnabled = false\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createMetricGraticule() {\n when (tileType) {\n GRATICULE_GK_25_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 2000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n GRATICULE_GK_10_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 1000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n }\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_100_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_1_000_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_200_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport kotlin.jvm.JvmStatic\n\nobject GKLayerHelper {\n private const val Z_ZONE_LATITUDE = 88\n private const val MAX_LONGITUDE = 180\n private const val LATITUDE_1M_MAP = 4\n private const val LONGITUDE_1M_MAP = 6\n private const val LATITUDE_200K_MAP = 0.4 / 60.0 * 100.0 // 40 minutes\n private const val LATITUDE_100K_MAP = 0.2 / 60.0 * 100.0 // 20 minutes\n private const val LATITUDE_50K_MAP = 0.1 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_25K_MAP = 0.05 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_10K_MAP = 0.025 / 60.0 * 100.0 // 10 minutes\n\n /**\n * Get zone number by Gauss-Kruger longitude\n *\n * @param longitude Gauss-Kruger longitude\n * @return Corresponding zone number\n */\n @JvmStatic\n fun getZone(longitude: Angle) = if (longitude.inDegrees >= 0) longitude.inDegrees.toInt() / 6 + 1\n else (longitude.inDegrees + 180.0).toInt() / 6 + 31\n\n /**\n * The method returns coordinates of intersection lines.\n * The method doesn't check that the lines have an intersection\n * and will work incorrectly if the intersection is absent.\n *\n * The method returns GKCoordinate of intersection the lines or if\n * lines are parallel the method returns null\n */\n @JvmStatic\n fun intersect(\n x1: Double, y1: Double, x2: Double, y2: Double, x3: Double, y3: Double, x4: Double, y4: Double\n ): GKCoord? {\n val a1 = y2 - y1\n val b1 = x1 - x2\n val c1 = a1 * x1 + b1 * y1\n\n val a2 = y4 - y3\n val b2 = x3 - x4\n val c2 = a2 * x3 + b2 * y3\n\n val determinant = a1 * b2 - a2 * b1\n\n return if (determinant != 0.0) {\n val x = (b2 * c1 - b1 * c2) / determinant\n val y = (a1 * c2 - a2 * c1) / determinant\n GKCoord.fromXY(x, y)\n } else null // The lines are parallel.\n }\n\n @JvmStatic\n fun getNameByCoord(\n latitude: Angle, longitude: Angle, type: String = GRATICULE_GK_1_000_000, previousScaleName: String = \"\"\n ): String = when(type) {\n GRATICULE_GK_1_000_000 -> getMillionNameByCoord(latitude, longitude)\n GRATICULE_GK_500_000 -> previousScaleName.ifEmpty { getMillionNameByCoord (latitude, longitude) } +\n get500kPrefix(latitude, longitude)\n GRATICULE_GK_200_000 -> getMillionNameByCoord(latitude, longitude) + get200kPrefix(latitude, longitude)\n GRATICULE_GK_100_000 -> getMillionNameByCoord(latitude, longitude) + get100kPrefix(latitude, longitude)\n GRATICULE_GK_50_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_100_000) } +\n get50kPrefix(latitude, longitude)\n GRATICULE_GK_25_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_50_000) } +\n get25kPrefix(latitude, longitude)\n else -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_25_000) } +\n get10kPrefix(latitude, longitude)\n }\n\n @JvmStatic\n private fun get500kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / 2).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP / 3 ).toInt()\n val num = rowFromTop * 2 + col\n return when (num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get200kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 5 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_200K_MAP).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP).toInt()\n val num = rowFromTop * LONGITUDE_1M_MAP + col\n val romaNumber = GKGraticuleLayer.ENDING_200_000_MAP[num]\n return \"-$romaNumber\"\n }\n\n @JvmStatic\n private fun get100kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 11 - ((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_100K_MAP).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP) / 0.5).toInt() + 1\n val num = rowFromTop * 12 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun get50kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf100Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_100K_MAP).toInt()\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE - countOf100Maps * LATITUDE_100K_MAP)/ LATITUDE_50K_MAP).toInt()\n countOf100Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.5).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf100Maps * 0.5) / 0.25).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get25kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_50K_MAP).toInt()\n val rowFromTop = 1 -(((latitude.inDegrees + Z_ZONE_LATITUDE) - countOf50Maps * LATITUDE_50K_MAP)/ LATITUDE_25K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.25).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf50Maps * 0.25) / 0.125).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-a\"\n 1 -> \"-б\"\n 2 -> \"-в\"\n else -> \"-г\"\n }\n }\n\n @JvmStatic\n private fun get10kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_25K_MAP).toInt()\n val rowFromTop = 1 - ((latitude.inDegrees + Z_ZONE_LATITUDE - countOf50Maps * LATITUDE_25K_MAP) / LATITUDE_10K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.125).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE - countOf50Maps * 0.125) / 0.0625).toInt() + 1\n val num = rowFromTop * 2 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun getMillionNameByCoord(latitude: Angle, longitude: Angle): String {\n if (latitude.inDegrees >= Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[45]\n if (latitude.inDegrees < -Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[0]\n //TODO Add for 12 and 24 grade zone.\n val col = getMillionColumnIndex(longitude.inDegrees)\n return GKGraticuleLayer.MILLION_COOL_NAME[getMillionRowIndex(latitude.inDegrees)] + \"-\" +\n if (col< 9) \"0\" + (col + 1) else (col + 1)\n }\n\n @JvmStatic\n fun getMillionRowIndex(latitude: Double) = ((latitude + Z_ZONE_LATITUDE + LATITUDE_1M_MAP) / LATITUDE_1M_MAP).toInt()\n\n @JvmStatic\n fun getMillionColumnIndex(longitude: Double) =\n ((longitude + MAX_LONGITUDE) / LONGITUDE_1M_MAP).toInt().coerceAtMost(59)\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_SCALE_TYPE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_X_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_Y_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_X_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_Y_KEY\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\nimport kotlin.math.abs\n\nprivate const val SMALL_VALUE_TO_BEE_IN_ZONE = 0.000000000001\n\nclass GKMetricGrid(\n layer: GKGraticuleLayer, sector: Sector, gkSector: Sector, private val scale: Double\n): AbstractGraticuleTile(layer, sector) {\n private val zone = GKLayerHelper.getZone(gkSector.centroidLongitude)\n private var zoneExtremes = ZoneExtremes(\n GKCoord.fromLatLon(gkSector.minLatitude, gkSector.minLongitude, zone),\n GKCoord.fromLatLon(gkSector.minLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, gkSector.minLongitude, zone)\n )\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n fun selectRenderables(lineType :String) = gridElements.forEach {\n if (it.type == lineType) {\n layer.addRenderable(it.renderable, lineType)\n } else if (it.type == METRIC_LABEL && it.renderable is Label) {\n layer.addMetricLabel(it.renderable)\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val xMinZone = minOf(zoneExtremes.minXMinY.x, zoneExtremes.minXMaxY.x)\n val xMaxZone = maxOf(zoneExtremes.maxXMinY.x, zoneExtremes.maxXMaxY.x)\n val yMinZone = maxOf(zoneExtremes.minXMinY.y, zoneExtremes.maxXMinY.y)\n val yMaxZone = minOf(zoneExtremes.maxXMaxY.y, zoneExtremes.minXMaxY.y)\n\n val firstRow = (xMinZone / scale).toInt()\n val lastRow = (xMaxZone / scale).toInt()\n val firstCol = (yMinZone / scale).toInt()\n val lastCol = (yMaxZone / scale).toInt()\n\n createLinesAndLabels(firstRow, lastRow, firstCol, lastCol)\n createYLineThatIntersectCorners(firstCol, firstRow, lastRow, lastCol)\n }\n\n private fun createLinesAndLabels(firstRow: Int, lastRow: Int, firstCol: Int, lastCol: Int) {\n for (row in firstRow..lastRow) {\n val startX = row.toDouble() * scale\n val nextX = row.toDouble() * scale + scale\n\n for (col in firstCol..lastCol) {\n val startY = col * scale\n val startPoint = getWGSPositionFromXY(startX, startY)\n\n if (row != firstRow) {\n // Creat x line\n val nextY = col * scale + scale\n val movedByYPoint = getWGSPositionFromXY(startX, nextY)\n when (col) {\n firstCol -> {\n // Create correct intersection with west map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, movedByYPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_X_VALUE)\n }\n lastCol -> {\n // Create correct intersection with east map\n val intersectPoint = intersect(\n zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByYPoint) // Main x lines (x lines in center of square)\n }\n }\n if (col != firstCol) {\n // Create y line\n val movedByXPoint = getWGSPositionFromXY(nextX, startY)\n when (row) {\n firstRow -> {\n // Create correct intersection with south map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, movedByXPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_Y_VALUE)\n }\n lastRow -> {\n // Create correct intersection with north map\n val intersectPoint = intersect(\n zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByXPoint) // Main y lines (lines in center of square)\n }\n }\n }\n }\n }\n\n private fun createYLineThatIntersectCorners(firstCol: Int, firstRow: Int, lastRow: Int, lastCol: Int) {\n val firstY = firstCol * scale\n if (zoneExtremes.minXMinY.y < zoneExtremes.maxXMinY.y && zoneExtremes.minXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectSouth, intersectWest)\n } else if (zoneExtremes.maxXMinY.y < zoneExtremes.minXMinY.y && zoneExtremes.maxXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectNorth = intersect( zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectWest, intersectNorth)\n }\n val lastY = lastCol * scale + scale\n if (zoneExtremes.maxXMaxY.y < zoneExtremes.minXMaxY.y && zoneExtremes.minXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectSouth,intersectEast)\n } else if (zoneExtremes.minXMaxY.y < zoneExtremes.maxXMaxY.y && zoneExtremes.maxXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectNorth = intersect(zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectNorth, intersectEast)\n }\n }\n\n private fun addLabel(point: Position, col: Int, row:Int, labelType: String) {\n val label = if (labelType == LABEL_TYPE_Y_VALUE) labelBy(col) else labelBy(row)\n val text = layer.createTextRenderable(point, label, scale)\n text.attributes.textOffset = Offset.center()\n text.putUserProperty(LABEL_TYPE_KEY, labelType)\n text.putUserProperty(LABEL_SCALE_TYPE, scale.toInt())\n text.putUserProperty(LABEL_X_KEY, row * scale)\n text.putUserProperty(LABEL_Y_KEY, col * scale)\n gridElements.add(GridElement(sector, text, METRIC_LABEL))\n }\n\n private fun createLine(firstPosition: GKCoord?, nextPosition: GKCoord?) {\n if (firstPosition != null && nextPosition != null) {\n createLine(getWGSPositionFromXY(firstPosition), getWGSPositionFromXY(nextPosition))\n }\n }\n private fun lineWithIntersection(intersectPoint: GKCoord?, anotherPoint: Position) {\n if (intersectPoint != null) createLine(anotherPoint, getWGSPositionFromXY(intersectPoint))\n }\n\n private fun createLine(startPoint: Position, movedByXPoint: Position) {\n val lineX = layer.createLineRenderable(mutableListOf(startPoint, movedByXPoint), PathType.LINEAR)\n gridElements.add(GridElement(sector, lineX, getTypeLine(), sector.maxLongitude))\n }\n\n\n private fun intersect(point1: GKCoord, point2: GKCoord, x3: Double, y3: Double, x4: Double, y4: Double)=\n GKLayerHelper.intersect(point1.x, point1.y, point2.x, point2.y, x3, y3, x4, y4)\n\n private fun labelBy(rowOrCol: Int) = (\"0\" + abs(rowOrCol * scale / 1000).toInt()).takeLast(2)\n\n private fun getTypeLine() = if (scale == SCALE_1000) GK_METRIC_GRID_1000 else GK_METRIC_GRID_2000\n\n private fun getWGSPositionFromXY(x: Double, y:Double): Position{\n val point = GKCoord.fromXY(x,y)\n return layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n }\n\n private fun getWGSPositionFromXY(point: GKCoord) = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n\n private class ZoneExtremes(val minXMinY: GKCoord, val minXMaxY: GKCoord, val maxXMaxY:GKCoord, val maxXMinY:GKCoord)\n\n companion object {\n const val SCALE_1000 = 1000.0\n const val METRIC_LABEL = \"metric.label\"\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\n\nclass GKMetricLabels(private val layer: GKGraticuleLayer) {\n private val xLabels = mutableMapOf()\n private val yLabels = mutableMapOf()\n private val removeLabel = mutableListOf()\n\n fun selectRenderables(rc: RenderContext, scale: Int) {\n if (scale == 0 || xLabels.isEmpty() && yLabels.isEmpty()) return\n\n val (x, y) = labelLineIntersectionPoint(rc)\n\n for (label in xLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_X_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_X_VALUE)\n\n for (label in yLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_Y_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_Y_VALUE)\n }\n\n fun addLabel(label: Label) {\n val labelType = getLabelType(label) ?: return\n val id = getLabelId(label, labelType) ?: return\n\n if (labelType == LABEL_TYPE_X_VALUE) {\n if (!xLabels.contains(id)) xLabels[id] = label\n } else if (labelType == LABEL_TYPE_Y_VALUE) {\n if (!yLabels.contains(id)) yLabels[id] = label\n }\n }\n\n private fun getLabelType(label: Label) = label.getUserProperty(LABEL_TYPE_KEY)\n\n private fun removeLabels(labelType: String) {\n if (labelType == LABEL_TYPE_X_VALUE) removeLabel.forEach { labelId -> xLabels.remove(labelId) }\n if (labelType == LABEL_TYPE_Y_VALUE) removeLabel.forEach { labelId -> yLabels.remove(labelId) }\n removeLabel.clear()\n }\n\n private fun getLabelId(label: Label, labelType:String): String? {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return null\n val coord = when (labelType) {\n LABEL_TYPE_X_VALUE -> label.getUserProperty(LABEL_X_KEY)\n LABEL_TYPE_Y_VALUE -> label.getUserProperty(LABEL_Y_KEY)\n else -> null\n } ?: return null\n val ew = if (label.position.longitude.inDegrees >= 0.0) \"E\" else \"W\"\n val ns = if (label.position.latitude.inDegrees >= 0.0) \"N\" else \"S\"\n return \"$coord$ns$ew$scale\"\n }\n\n private fun renderLabel(labelType: String, label: Label, x: Double, y: Double) {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return\n if (labelType == LABEL_TYPE_Y_VALUE) {\n val yLabel = label.getUserProperty(LABEL_Y_KEY) ?: return\n val point = GKCoord.fromXY(x,yLabel)\n if (checkIfOutOfZone(point, yLabel)) return\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n } else if (labelType == LABEL_TYPE_X_VALUE) {\n val xLabel = label.getUserProperty(LABEL_X_KEY) ?: return\n val point = GKCoord.fromXY(xLabel,y)\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n }\n layer.addRenderable(label, getTypeBy(scale))\n }\n\n private fun checkIfOutOfZone(point: GKCoord, yLabel: Double) =\n (yLabel / 1E6).toInt() != GKLayerHelper.getZone(point.longitude)\n\n private fun labelLineIntersectionPoint(rc: RenderContext): Pair {\n val eastingOffset = rc.viewport.width * rc.pixelSize / 4\n val northOffset = rc.viewport.height * rc.pixelSize / 4\n val lookAtPosition = rc.lookAtPosition ?: rc.camera.position\n val centerGK = layer.transformFromWGS(\n Position(lookAtPosition.latitude, lookAtPosition.longitude, 0.0)\n )\n val centerXY = GKCoord.fromLatLon(centerGK.latitude, centerGK.longitude)\n return Pair(centerXY.x - northOffset, centerXY.y - eastingOffset)\n }\n\n private fun shouldClean(rc: RenderContext, label: Label, scale: Int) =\n isNotInScale(label, scale) || tooFar(rc, label.position, scale)\n\n private fun isNotInScale(label: Label, scale: Int) =\n scale == 0 || scale > (label.getUserProperty(LABEL_SCALE_TYPE) ?: 0)\n\n private fun tooFar(rc: RenderContext, position: Position, scale: Int) = rc.cameraPoint.distanceTo(\n rc.globe.geographicToCartesian(position.latitude, position.longitude, 0.0, Vec3())\n ) > getDistanceBy(scale)\n\n private fun getTypeBy(scale: Int) = if (scale == 1000) TYPE_LABEL_1000 else TYPE_LABEL_2000\n\n private fun getDistanceBy(scale: Int) = if (scale == 1000) layer.thresholdFor1kLabels else layer.thresholdFor2kLabels\n\n companion object {\n const val LABEL_TYPE_KEY = \"label.name\"\n const val LABEL_TYPE_X_VALUE = \"X\"\n const val LABEL_TYPE_Y_VALUE = \"Y\"\n const val LABEL_X_KEY = \"label.x\"\n const val LABEL_Y_KEY = \"label.y\"\n const val LABEL_SCALE_TYPE = \"label.scale.type\"\n const val TYPE_LABEL_1000 = \"label.1000\"\n const val TYPE_LABEL_2000 = \"label.2000\"\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.MILLION_COOL_NAME\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class GKOverview(layer: GKGraticuleLayer): AbstractGraticuleTile(layer, Sector().setFullSphere()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n val pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) gt.position = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) gt.position = Position(labelPos.latitude, pos.longitude, pos.altitude)\n }\n }\n layer.addRenderable(ge.renderable, GKGraticuleLayer.GRATICULE_GK_OVERVIEW)\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-88.0, longitude, 0.0))\n positions.add(fromDegrees(-60.0, longitude, 0.0))\n positions.add(fromDegrees(-30.0, longitude, 0.0))\n positions.add(fromDegrees(0.0, longitude, 0.0))\n positions.add(fromDegrees(30.0, longitude, 0.0))\n positions.add(fromDegrees(60.0, longitude, 0.0))\n positions.add(fromDegrees(88.0, longitude, 0.0))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-88.0, longitude, 176.0, 30.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0), zoneNumber.toString(), 10e6\n )\n text.attributes.isOutlineEnabled = false\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate parallels\n for (i in 0..45) {\n val latitude = -92.0 + i * 4.0\n // don't need parallel for firs and last\n if (i != 0 || i != 46 ) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 0.0))\n positions.add(fromDegrees(latitude, longitude + 30.0, 0.0))\n positions.add(fromDegrees(latitude, longitude + 60.0, 0.0))\n if (j == 3 ) positions.add(fromDegrees(latitude, 180.0, 0.0))\n else positions.add(fromDegrees(latitude, longitude + 90.0, 0.0))\n\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 3.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n }\n // Latitude band label\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 2, 0.0, 0.0), MILLION_COOL_NAME[i],10e6\n )\n text.attributes.isOutlineEnabled = false\n val sector = fromDegrees(latitude + 2, -180.0, 3.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord.Companion.fromUPS\nimport earth.worldwind.geom.coords.UTMCoord.Companion.fromUTM\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Displays the UTM graticule metric scale.\n */\nabstract class AbstractUTMGraticuleLayer(name: String, scaleModulo: Int, maxResolution: Double): AbstractGraticuleLayer(name) {\n private val metricScaleSupport = UTMMetricScaleSupport(this).apply {\n this.scaleModulo = scaleModulo\n this.maxResolution = maxResolution\n }\n\n override val orderedTypes = listOf(\n GRATICULE_UTM_100000M,\n GRATICULE_UTM_10000M,\n GRATICULE_UTM_1000M,\n GRATICULE_UTM_100M,\n GRATICULE_UTM_10M,\n GRATICULE_UTM_1M\n )\n\n override fun initRenderingParams() {\n // 100,000 meter graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n setRenderingParams(GRATICULE_UTM_100000M, params)\n // 10,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 102, 255)\n params[KEY_LABEL_COLOR] = Color(0, 102, 255)\n setRenderingParams(GRATICULE_UTM_10000M, params)\n // 1,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 255) // Cyan\n params[KEY_LABEL_COLOR] = Color(0, 255, 255) // Cyan\n setRenderingParams(GRATICULE_UTM_1000M, params)\n // 100 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 153, 153)\n params[KEY_LABEL_COLOR] = Color(0, 153, 153)\n setRenderingParams(GRATICULE_UTM_100M, params)\n // 10 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(102, 255, 204)\n params[KEY_LABEL_COLOR] = Color(102, 255, 204)\n setRenderingParams(GRATICULE_UTM_10M, params)\n // 1 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(153, 153, 255)\n params[KEY_LABEL_COLOR] = Color(153, 153, 255)\n setRenderingParams(GRATICULE_UTM_1M, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when {\n resolution >= 100000 -> GRATICULE_UTM_100000M\n resolution >= 10000 -> GRATICULE_UTM_10000M\n resolution >= 1000 -> GRATICULE_UTM_1000M\n resolution >= 100 -> GRATICULE_UTM_100M\n resolution >= 10 -> GRATICULE_UTM_10M\n resolution >= 1 -> GRATICULE_UTM_1M\n else -> GRATICULE_UTM_1M\n }\n\n override fun clear(rc: RenderContext) {\n super.clear(rc)\n metricScaleSupport.clear()\n metricScaleSupport.computeZone(rc)\n }\n\n override fun selectRenderables(rc: RenderContext) { metricScaleSupport.selectRenderables(rc) }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n metricScaleSupport.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n }\n\n fun computePosition(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n return if (zone > 0) computePositionFromUTM(zone, hemisphere, easting, northing)\n else computePositionFromUPS(hemisphere, easting, northing)\n }\n\n private fun computePositionFromUTM(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val utm = fromUTM(zone, hemisphere, easting, northing)\n return Position(utm.latitude.clampLatitude(), utm.longitude.clampLongitude(), 10e3)\n }\n\n private fun computePositionFromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val ups = fromUPS(hemisphere, easting, northing)\n return Position(ups.latitude.clampLatitude(), ups.longitude.clampLongitude(), 10e3)\n }\n\n fun createSquaresGrid(\n utmZone: Int, hemisphere: Hemisphere, utmZoneSector: Sector,\n minEasting: Double, maxEasting: Double, minNorthing: Double, maxNorthing: Double\n ): List {\n val squares = mutableListOf()\n val startEasting = floor(minEasting / ONEHT) * ONEHT\n val startNorthing = floor(minNorthing / ONEHT) * ONEHT\n val cols = ceil((maxEasting - startEasting) / ONEHT).toInt()\n val rows = ceil((maxNorthing - startNorthing) / ONEHT).toInt()\n val squaresArray = Array(rows) { arrayOfNulls(cols) }\n var col = 0\n var easting = startEasting\n while (easting < maxEasting) {\n var row = 0\n var northing = startNorthing\n while (northing < maxNorthing) {\n val sz = UTMSquareZone(this, utmZone, hemisphere, utmZoneSector, easting, northing, ONEHT)\n if (!sz.isOutsideGridZone) {\n squares.add(sz)\n squaresArray[row][col] = sz\n }\n row++\n northing += ONEHT\n }\n col++\n easting += ONEHT\n }\n\n // Keep track of neighbors\n for (c in 0 until cols) {\n for (r in 0 until rows) {\n val sz = squaresArray[r][c]\n if (sz != null) {\n sz.northNeighbor = if (r + 1 < rows) squaresArray[r + 1][c] else null\n sz.eastNeighbor = if (c + 1 < cols) squaresArray[r][c + 1] else null\n }\n }\n }\n return squares\n }\n\n companion object {\n const val UTM_MIN_LATITUDE = -80.0\n const val UTM_MAX_LATITUDE = 84.0\n\n /** Graticule for the 100,000 meter grid. */\n private const val GRATICULE_UTM_100000M = \"Graticule.UTM.100000m\"\n\n /** Graticule for the 10,000 meter grid. */\n private const val GRATICULE_UTM_10000M = \"Graticule.UTM.10000m\"\n\n /** Graticule for the 1,000 meter grid. */\n private const val GRATICULE_UTM_1000M = \"Graticule.UTM.1000m\"\n\n /** Graticule for the 100 meter grid. */\n private const val GRATICULE_UTM_100M = \"Graticule.UTM.100m\"\n\n /** Graticule for the 10 meter grid. */\n private const val GRATICULE_UTM_10M = \"Graticule.UTM.10m\"\n\n /** Graticule for the 1 meter grid. */\n private const val GRATICULE_UTM_1M = \"Graticule.UTM.1m\"\n private const val ONEHT = 100e3\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.floor\n\nopen class MGRSGraticuleLayer: AbstractUTMGraticuleLayer(\"MGRS Graticule\", 100000, 1e5) {\n private val gridZones = Array(20) { arrayOfNulls(60) } // row/col\n private val poleZones = arrayOfNulls(4) // North x2 + South x2\n private val overview = MGRSOverview(this)\n\n /**\n * The maximum resolution graticule that will be rendered, or null if no graticules will be rendered. By\n * default, all graticules are rendered, and this will return GRATICULE_1M.\n */\n var maximumGraticuleResolution: String?\n get() {\n var maxTypeDrawn: String? = null\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n val params = getRenderingParams(type)\n if (params.isDrawLines) maxTypeDrawn = type\n }\n return maxTypeDrawn\n }\n set(graticuleType) {\n var pastTarget = false\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n // Enable all graticulte BEFORE and INCLUDING the target.\n // Disable all graticules AFTER the target.\n val params = getRenderingParams(type)\n params.isDrawLines = !pastTarget\n params.isDrawLabels = !pastTarget\n if (!pastTarget && type == graticuleType) pastTarget = true\n }\n }\n\n override val orderedTypes = mutableListOf(GRATICULE_MGRS_OVERVIEW, GRATICULE_MGRS_GRID_ZONE).apply { addAll(super.orderedTypes) }\n\n override fun initRenderingParams() {\n super.initRenderingParams()\n // MGRS Overview graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(.8f, .8f, .8f, .5f)\n params[KEY_LABEL_COLOR] = Color(1f, 1f, 1f, .8f)\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n params[KEY_DRAW_LABELS] = true\n setRenderingParams(GRATICULE_MGRS_OVERVIEW, params)\n // MGRS GridZone graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 16)\n setRenderingParams(GRATICULE_MGRS_GRID_ZONE, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when (resolution) {\n MGRS_OVERVIEW_RESOLUTION -> GRATICULE_MGRS_OVERVIEW\n MGRS_GRID_ZONE_RESOLUTION -> GRATICULE_MGRS_GRID_ZONE\n else -> super.getTypeFor(resolution)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n if (rc.camera.position.altitude <= GRID_ZONE_MAX_ALTITUDE) {\n selectMGRSRenderables(rc)\n super.selectRenderables(rc)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n private fun selectMGRSRenderables(rc: RenderContext) {\n val zoneList = getVisibleZones(rc)\n for (gz in zoneList) gz.selectRenderables(rc)\n }\n\n private fun getVisibleZones(rc: RenderContext): List {\n val zoneList = mutableListOf()\n val vs = rc.terrain.sector\n // UTM Grid\n val gridRectangle = getGridRectangleForSector(vs)\n if (gridRectangle != null) {\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n if (row != 19 || col != 31 && col != 33 && col != 35) {\n // ignore X32, 34 and 36\n val zone = gridZones[row][col] ?: MGRSGridZone(this, getGridSector(row, col)).also { gridZones[row][col] = it }\n if (zone.isInView(rc)) zoneList.add(zone) else zone.clearRenderables()\n }\n }\n }\n }\n // Poles\n if (vs.maxLatitude.inDegrees > 84) {\n // North Pole\n if (poleZones[2] == null) poleZones[2] = MGRSGridZone(this, fromDegrees(84.0, -180.0, 6.0, 180.0)) // Y\n if (poleZones[3] == null) poleZones[3] = MGRSGridZone(this, fromDegrees(84.0, 0.0, 6.0, 180.0)) // Z\n zoneList.add(poleZones[2]!!)\n zoneList.add(poleZones[3]!!)\n }\n if (vs.minLatitude.inDegrees < -80) {\n // South Pole\n if (poleZones[0] == null) poleZones[0] = MGRSGridZone(this, fromDegrees(-90.0, -180.0, 10.0, 180.0)) // B\n if (poleZones[1] == null) poleZones[1] = MGRSGridZone(this, fromDegrees(-90.0, 0.0, 10.0, 180.0)) // A\n zoneList.add(poleZones[0]!!)\n zoneList.add(poleZones[1]!!)\n }\n return zoneList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport? {\n var rectangle: Viewport? = null\n if (sector.minLatitude.inDegrees < 84 && sector.maxLatitude.inDegrees > -80) {\n val minLat = sector.minLatitude.inDegrees.coerceAtLeast(-80.0)\n val maxLat = sector.maxLatitude.inDegrees.coerceAtMost(84.0)\n val gridSector = fromDegrees(\n minLat, sector.minLongitude.inDegrees, maxLat - minLat, sector.deltaLongitude.inDegrees\n )\n var x1 = getGridColumn(gridSector.minLongitude)\n var x2 = getGridColumn(gridSector.maxLongitude)\n val y1 = getGridRow(gridSector.minLatitude)\n val y2 = getGridRow(gridSector.maxLatitude)\n // Adjust rectangle to include special zones\n if (y1 <= 17 && y2 >= 17 && x2 == 30) x2 = 31 // 32V Norway\n if (y1 <= 19 && y2 >= 19) { // X band\n if (x1 == 31) x1 = 30 // 31X\n if (x2 == 31) x2 = 32 // 33X\n if (x1 == 33) x1 = 32 // 33X\n if (x2 == 33) x2 = 34 // 35X\n if (x1 == 35) x1 = 34 // 35X\n if (x2 == 35) x2 = 36 // 37X\n }\n rectangle = Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n return rectangle\n }\n\n private fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n private fun getGridRow(latitude: Angle) = floor((latitude.inDegrees + 80) / 8.0).toInt().coerceAtMost(19)\n\n private fun getGridSector(row: Int, col: Int): Sector {\n val minLat = -80 + row * 8\n val maxLat = minLat + if (minLat != 72) 8 else 12\n var minLon = -180 + col * 6\n var maxLon = minLon + 6\n // Special sectors\n if (row == 17 && col == 30) // 31V\n maxLon -= 3 else if (row == 17 && col == 31) // 32V\n minLon -= 3 else if (row == 19 && col == 30) // 31X\n maxLon += 3 else if (row == 19 && col == 31) { // 32X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 32) { // 33X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 33) { // 34X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 34) { // 35X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 35) { // 36X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 36) // 37X\n minLon -= 3\n return fromDegrees(minLat.toDouble(), minLon.toDouble(), (maxLat - minLat).toDouble(), (maxLon - minLon).toDouble())\n }\n\n companion object {\n const val MGRS_OVERVIEW_RESOLUTION = 1e6\n const val MGRS_GRID_ZONE_RESOLUTION = 5e5\n\n /** Graticule for the MGRS overview. */\n private const val GRATICULE_MGRS_OVERVIEW = \"Graticule.MGRS.Overview\"\n\n /** Graticule for the MGRS grid zone. */\n private const val GRATICULE_MGRS_GRID_ZONE = \"Graticule.MGRS.GridZone\"\n private const val GRID_ZONE_MAX_ALTITUDE = 5e6\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.MGRSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_GRID_ZONE_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a UTM zone / latitude band intersection\n */\nclass MGRSGridZone(layer: MGRSGraticuleLayer, sector: Sector) : AbstractGraticuleTile(layer, sector) {\n val isUPS = sector.maxLatitude.inDegrees > AbstractUTMGraticuleLayer.UTM_MAX_LATITUDE\n || sector.minLatitude.inDegrees < AbstractUTMGraticuleLayer.UTM_MIN_LATITUDE\n private var name: String\n private var hemisphere: Hemisphere\n private var zone: Int\n private var squares: List? = null\n override val layer get() = super.layer as MGRSGraticuleLayer\n\n init {\n val mgrs = MGRSCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n if (isUPS) {\n name = mgrs.toString().substring(2, 3)\n hemisphere = if (sector.minLatitude.inDegrees > 0) Hemisphere.N else Hemisphere.S\n zone = 0\n } else {\n name = mgrs.toString().substring(0, 3)\n val utm = UTMCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n hemisphere = utm.hemisphere\n zone = utm.zone\n }\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(MGRS_GRID_ZONE_RESOLUTION)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (rc.camera.position.altitude > SQUARE_MAX_ALTITUDE) return\n\n // Select 100km squares elements\n val squares = squares ?: (if (isUPS) createSquaresUPS() else createSquaresUTM()).also { squares = it }\n for (sz in squares) if (sz.isInView(rc)) sz.selectRenderables(rc) else sz.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n squares?.forEach { it.clearRenderables() }.also { squares = null }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf(\n Position(sector.minLatitude, sector.minLongitude, 10e3),\n Position(sector.maxLatitude, sector.minLongitude, 10e3)\n )\n var polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n var lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.minLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, GridElement.TYPE_LINE_WEST))\n if (!isUPS) {\n // right meridian segment\n if (name.startsWith(\"60\")) {\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.maxLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST))\n }\n\n // bottom parallel segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.minLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH))\n\n // top parallel segment\n if (name.endsWith(\"X\")) {\n positions.clear()\n positions.add(Position(sector.maxLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.maxLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH))\n }\n }\n\n // Label\n val text = layer.createTextRenderable(\n Position(sector.centroidLatitude, sector.centroidLongitude, 0.0), name, 10e6\n )\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createSquaresUTM(): List {\n // Find grid zone easting and northing boundaries\n var utm = UTMCoord.fromLatLon(sector.minLatitude, sector.centroidLongitude)\n val minNorthing = utm.northing\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.centroidLongitude)\n var maxNorthing = utm.northing\n maxNorthing = if (maxNorthing == 0.0) 10e6 else maxNorthing\n utm = UTMCoord.fromLatLon(sector.minLatitude, sector.minLongitude)\n var minEasting = utm.easting\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.minLongitude)\n minEasting = utm.easting.coerceAtMost(minEasting)\n var maxEasting = 1e6 - minEasting\n\n // Compensate for some distorted zones\n if (name == \"32V\") maxNorthing += 20e3 // catch KS and LS in 32V\n if (name == \"31X\") maxEasting += ONEHT // catch GA and GV in 31X\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun createSquaresUPS(): List {\n val minEasting: Double\n val maxEasting: Double\n val minNorthing: Double\n val maxNorthing: Double\n if (Hemisphere.N == hemisphere) {\n minNorthing = TWOMIL - ONEHT * 7\n maxNorthing = TWOMIL + ONEHT * 7\n minEasting = if (name == \"Y\") TWOMIL - ONEHT * 7 else TWOMIL\n maxEasting = if (name == \"Y\") TWOMIL else TWOMIL + ONEHT * 7\n } else {\n minNorthing = TWOMIL - ONEHT * 12\n maxNorthing = TWOMIL + ONEHT * 12\n minEasting = if (name == \"A\") TWOMIL - ONEHT * 12 else TWOMIL\n maxEasting = if (name == \"A\") TWOMIL else TWOMIL + ONEHT * 12\n }\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun setSquareName(sz: UTMSquareZone) {\n // Find out MGRS 100Km square name\n val tenMeterDegree = toDegrees(10.0 / 6378137.0)\n var mgrs: MGRSCoord? = null\n when {\n sz.isPositionInside(Position(sz.centroid.latitude, sz.centroid.longitude, 0.0)) ->\n mgrs = MGRSCoord.fromLatLon(sz.centroid.latitude, sz.centroid.longitude)\n sz.isPositionInside(sz.sw) -> mgrs = MGRSCoord.fromLatLon(\n sz.sw.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.sw.longitude.plusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.se) -> mgrs = MGRSCoord.fromLatLon(\n sz.se.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.se.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.nw) -> mgrs = MGRSCoord.fromLatLon(\n sz.nw.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.nw.longitude.plusDegrees(tenMeterDegree).clampLongitude())\n sz.isPositionInside(sz.ne) -> mgrs = MGRSCoord.fromLatLon(\n sz.ne.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.ne.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n }\n // Set square zone name\n if (mgrs != null) sz.name = mgrs.toString().substring(3, 5)\n }\n\n companion object {\n private const val ONEHT = 100e3\n private const val TWOMIL = 2e6\n private const val SQUARE_MAX_ALTITUDE = 1e6\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_OVERVIEW_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class MGRSOverview(layer: MGRSGraticuleLayer): AbstractGraticuleTile(layer, Sector()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n var pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) pos = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) pos = Position(labelPos.latitude, pos.longitude, pos.altitude)\n gt.position = pos\n }\n }\n layer.addRenderable(ge.renderable, layer.getTypeFor(MGRS_OVERVIEW_RESOLUTION))\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-80.0, longitude, 10e3))\n positions.add(fromDegrees(-60.0, longitude, 10e3))\n positions.add(fromDegrees(-30.0, longitude, 10e3))\n positions.add(fromDegrees(0.0, longitude, 10e3))\n positions.add(fromDegrees(30.0, longitude, 10e3))\n val maxLat = if (longitude < 6.0 || longitude > 36.0) {\n // 'regular' UTM meridians\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 84.0\n } else {\n // Exceptions: shorter meridians around and north-east of Norway\n if (longitude == 6.0) {\n 56.0\n } else {\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 72.0\n }\n }\n positions.add(fromDegrees(maxLat, longitude, 10e3))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-80.0, longitude, maxLat + 80.0, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0),\n zoneNumber.toString(), 10e6\n )\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate special meridian segments for exceptions around and north-east of Norway\n for (i in 0..4) {\n positions.clear()\n val longitude = SPECIAL_MERIDIANS[i][0].toDouble()\n val latitude1 = SPECIAL_MERIDIANS[i][1].toDouble()\n val latitude2 = SPECIAL_MERIDIANS[i][2].toDouble()\n positions.add(fromDegrees(latitude1, longitude, 10e3))\n positions.add(fromDegrees(latitude2, longitude, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val sector = fromDegrees(latitude1, longitude, latitude2 - latitude1, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n\n // Generate parallels - no exceptions\n var latitude = -80.0\n for (i in 0..20) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 10e3))\n positions.add(fromDegrees(latitude, longitude + 30.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 60.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 90.0, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 0.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n // Latitude band label\n if (i < 20) {\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 4.0, 0.0, 0.0),\n LAT_BANDS[i].toString(), 10e6\n )\n val sector = fromDegrees(latitude + 4.0, -180.0, 0.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n\n // Increase latitude\n latitude += if (latitude < 72.0) 8.0 else 12.0\n }\n }\n\n companion object {\n // Exceptions for some meridians. Values: longitude, min latitude, max latitude\n private val SPECIAL_MERIDIANS = arrayOf(\n intArrayOf(3, 56, 64), intArrayOf(6, 64, 72), intArrayOf(9, 72, 84), intArrayOf(21, 72, 84), intArrayOf(33, 72, 84)\n )\n\n // Latitude bands letters - from south to north\n private const val LAT_BANDS = \"CDEFGHJKLMNPQRSTUVWX\"\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MAX_LATITUDE\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MIN_LATITUDE\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.log10\nimport kotlin.math.pow\n\ninternal class UTMMetricScaleSupport(private val layer: AbstractUTMGraticuleLayer) {\n private class UTMExtremes {\n var minX = 1e6\n var maxX = 0.0\n var minY = 10e6\n var maxY = 0.0\n var minYHemisphere = Hemisphere.N\n var maxYHemisphere = Hemisphere.S\n }\n\n var scaleModulo = 10000000\n var maxResolution = 1e5\n set(value) {\n field = value\n clear()\n }\n var zone = 0\n private set\n\n // 5 levels 100km to 10m\n private lateinit var extremes: Array\n\n fun computeZone(rc: RenderContext) {\n try {\n rc.lookAtPosition?.let {\n zone = if (it.latitude.inDegrees in UTM_MIN_LATITUDE..UTM_MAX_LATITUDE) {\n val utm = UTMCoord.fromLatLon(it.latitude, it.longitude)\n utm.zone\n } else 0\n }\n } catch (ex: Exception) {\n zone = 0\n }\n }\n\n fun clear() {\n val numLevels = log10(maxResolution).toInt()\n extremes = Array(numLevels) { UTMExtremes() }\n }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n if (UTMZone != zone) return\n if (size < 1 || size > maxResolution) return\n val levelExtremes = extremes[log10(size).toInt() - 1]\n if (ge.type == TYPE_LINE_EASTING || ge.type == TYPE_LINE_EAST || ge.type == TYPE_LINE_WEST) {\n levelExtremes.minX = ge.value.inDegrees.coerceAtMost(levelExtremes.minX)\n levelExtremes.maxX = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxX)\n } else if (ge.type == TYPE_LINE_NORTHING || ge.type == TYPE_LINE_SOUTH || ge.type == TYPE_LINE_NORTH) {\n if (hemisphere == levelExtremes.minYHemisphere) {\n levelExtremes.minY = ge.value.inDegrees.coerceAtMost(levelExtremes.minY)\n } else if (hemisphere == Hemisphere.S) {\n levelExtremes.minY = ge.value.inDegrees\n levelExtremes.minYHemisphere = hemisphere\n }\n if (hemisphere == levelExtremes.maxYHemisphere) {\n levelExtremes.maxY = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxY)\n } else if (hemisphere == Hemisphere.N) {\n levelExtremes.maxY = ge.value.inDegrees\n levelExtremes.maxYHemisphere = hemisphere\n }\n }\n }\n\n fun selectRenderables(rc: RenderContext) {\n val lookAtPosition = rc.lookAtPosition ?: return\n\n // Compute easting and northing label offsets\n val eastingOffset = rc.viewport.width * rc.pixelSize * OFFSET_FACTOR_X / 2\n val northingOffset = rc.viewport.height * rc.pixelSize * OFFSET_FACTOR_Y / 2\n // Derive labels center pos from the view center\n val labelEasting: Double\n var labelNorthing: Double\n var labelHemisphere: Hemisphere\n if (zone > 0) {\n val utm = UTMCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = utm.easting + eastingOffset\n labelNorthing = utm.northing + northingOffset\n labelHemisphere = utm.hemisphere\n if (labelNorthing < 0) {\n labelNorthing += 10e6\n labelHemisphere = Hemisphere.S\n }\n } else {\n val ups = UPSCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = ups.easting + eastingOffset\n labelNorthing = ups.northing + northingOffset\n labelHemisphere = ups.hemisphere\n }\n val viewFrustum = rc.frustum\n var labelPos: Position?\n for (i in extremes.indices) {\n val levelExtremes = extremes[i]\n val gridStep = 10.0.pow(i.toDouble())\n val gridStepTimesTen = gridStep * 10\n val graticuleType = layer.getTypeFor(gridStep)\n if (levelExtremes.minX <= levelExtremes.maxX) {\n // Process easting scale labels for this level\n var easting = levelExtremes.minX\n while (easting <= levelExtremes.maxX) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || easting % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, labelHemisphere, easting, labelNorthing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (easting % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n }\n easting += gridStep\n }\n }\n if (!(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)) {\n // Process northing scale labels for this level\n var currentHemisphere = levelExtremes.minYHemisphere\n var northing = levelExtremes.minY\n while (northing <= levelExtremes.maxY || currentHemisphere != levelExtremes.maxYHemisphere) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || northing % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, currentHemisphere, labelEasting, northing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (northing % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n if (currentHemisphere != levelExtremes.maxYHemisphere && northing >= 10e6 - gridStep) {\n // Switch hemisphere\n currentHemisphere = levelExtremes.maxYHemisphere\n northing = -gridStep\n }\n }\n northing += gridStep\n }\n }\n }\n }\n\n private fun isPointInRange(rc: RenderContext, point: Vec3): Boolean {\n val altitudeAboveGround = layer.computeAltitudeAboveGround(rc)\n return rc.cameraPoint.distanceTo(point) < altitudeAboveGround * VISIBLE_DISTANCE_FACTOR\n }\n\n override fun toString(): String {\n val sb = StringBuilder()\n for (i in 0..4) {\n sb.append(\"level \")\n sb.append(i)\n sb.append(\" : \")\n val levelExtremes = extremes[i]\n if (levelExtremes.minX < levelExtremes.maxX ||\n !(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)\n ) {\n sb.append(levelExtremes.minX)\n sb.append(\", \")\n sb.append(levelExtremes.maxX)\n sb.append(\" - \")\n sb.append(levelExtremes.minY)\n sb.append(levelExtremes.minYHemisphere)\n sb.append(\", \")\n sb.append(levelExtremes.maxY)\n sb.append(levelExtremes.maxYHemisphere)\n } else {\n sb.append(\"empty\")\n }\n sb.append(\"\\n\")\n }\n return sb.toString()\n }\n\n companion object {\n private const val OFFSET_FACTOR_X = -.5\n private const val OFFSET_FACTOR_Y = -.5\n private const val VISIBLE_DISTANCE_FACTOR = 5.0\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a square 10x10 grid and recursive tree in easting/northing coordinates\n */\ninternal class UTMSquareGrid(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n private var subGrids: List? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size / 10)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return\n\n // Select sub grids renderables\n val subGrids = subGrids ?: createSubGrids().also { subGrids = it }\n for (sg in subGrids) if (sg.isInView(rc)) sg.selectRenderables(rc) else sg.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n subGrids?.forEach { it.clearRenderables() }.also { subGrids = null }\n }\n\n private fun createSubGrids(): List {\n val subGrids = mutableListOf()\n val gridStep = size / 10\n for (i in 0..9) {\n val easting = SWEasting + gridStep * i\n for (j in 0..9) {\n val northing = SWNorthing + gridStep * j\n val sg = UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, easting, northing, gridStep)\n if (!sg.isOutsideGridZone) subGrids.add(sg)\n }\n }\n return subGrids\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val gridStep = size / 10\n val positions = mutableListOf()\n\n // South-North lines\n for (i in 1..9) {\n val easting = SWEasting + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing)\n var p2 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing + size)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(\n GridElement(lineSector, polyline, TYPE_LINE_EASTING, easting.degrees)\n )\n }\n }\n // West-East lines\n for (i in 1..9) {\n val northing = SWNorthing + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, SWEasting, northing)\n var p2 = layer.computePosition(UTMZone, hemisphere, SWEasting + size, northing)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTHING, northing.degrees))\n }\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.sign\n\n/**\n * Represent a generic UTM/UPS square area\n */\nabstract class UTMSquareSector(\n layer: AbstractUTMGraticuleLayer, val UTMZone: Int, val hemisphere: Hemisphere,\n val UTMZoneSector: Sector, val SWEasting: Double, val SWNorthing: Double, val size: Double\n): AbstractGraticuleTile(layer, Sector()) {\n val squareCenter = layer.computePosition(UTMZone, hemisphere, SWEasting + size / 2, SWNorthing + size / 2)\n // Four corners position\n var sw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing)\n var se = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing)\n var nw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing + size)\n var ne = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing + size)\n var boundingSector = boundingSector(adjustDateLineCrossingPoints()).apply { if (!isInsideGridZone) intersect(UTMZoneSector) }.also { sector.copy(it) }\n var centroid = boundingSector.centroid(Location())\n val isTruncated = !isInsideGridZone\n override val layer get() = super.layer as AbstractUTMGraticuleLayer\n /**\n * Determines whether this square is fully inside its parent grid zone.\n */\n private val isInsideGridZone get() = isPositionInside(nw) && isPositionInside(ne) && isPositionInside(sw) && isPositionInside(se)\n /**\n * Determines whether this square is fully outside its parent grid zone.\n */\n val isOutsideGridZone = !isPositionInside(nw) && !isPositionInside(ne) && !isPositionInside(sw) && !isPositionInside(se)\n\n private fun adjustDateLineCrossingPoints(): Iterable {\n val corners = listOf(sw, se, nw, ne)\n if (!locationsCrossDateLine(corners)) return corners\n\n var lonSign = 0.0\n for (corner in corners) if (abs(corner.longitude.inDegrees) != 180.0) lonSign = sign(corner.longitude.inDegrees)\n if (lonSign == 0.0) return corners\n\n if (abs(sw.longitude.inDegrees) == 180.0 && sign(sw.longitude.inDegrees) != lonSign)\n sw = Position(sw.latitude, -sw.longitude, sw.altitude)\n if (abs(se.longitude.inDegrees) == 180.0 && sign(se.longitude.inDegrees) != lonSign)\n se = Position(se.latitude, -se.longitude, se.altitude)\n if (abs(nw.longitude.inDegrees) == 180.0 && sign(nw.longitude.inDegrees) != lonSign)\n nw = Position(nw.latitude, -nw.longitude, nw.altitude)\n if (abs(ne.longitude.inDegrees) == 180.0 && sign(ne.longitude.inDegrees) != lonSign)\n ne = Position(ne.latitude, -ne.longitude, ne.altitude)\n\n return listOf(sw, se, nw, ne)\n }\n\n private fun locationsCrossDateLine(locations: Iterable): Boolean {\n var pos: Location? = null\n for (posNext in locations) {\n if (pos != null) {\n // A segment cross the line if end pos have different longitude signs\n // and are more than 180 degrees longitude apart\n if (sign(pos.longitude.inDegrees) != sign(posNext.longitude.inDegrees)) {\n val delta = abs(pos.longitude.inDegrees - posNext.longitude.inDegrees)\n if (delta > 180 && delta < 360) return true\n }\n }\n pos = posNext\n }\n return false\n }\n\n private fun boundingSector(locations: Iterable): Sector {\n var minLat = POS90\n var minLon = POS180\n var maxLat = NEG90\n var maxLon = NEG180\n for (p in locations) {\n val lat = p.latitude\n if (lat.inDegrees < minLat.inDegrees) minLat = lat\n if (lat.inDegrees > maxLat.inDegrees) maxLat = lat\n val lon = p.longitude\n if (lon.inDegrees < minLon.inDegrees) minLon = lon\n if (lon.inDegrees > maxLon.inDegrees) maxLon = lon\n }\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun boundingSector(pA: Location, pB: Location): Sector {\n var minLat = pA.latitude\n var minLon = pA.longitude\n var maxLat = pA.latitude\n var maxLon = pA.longitude\n if (pB.latitude.inDegrees < minLat.inDegrees) minLat = pB.latitude\n else if (pB.latitude.inDegrees > maxLat.inDegrees) maxLat = pB.latitude\n if (pB.longitude.inDegrees < minLon.inDegrees) minLon = pB.longitude\n else if (pB.longitude.inDegrees > maxLon.inDegrees) maxLon = pB.longitude\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun isPositionInside(position: Location) = UTMZoneSector.contains(position)\n\n override fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, centroid.latitude, centroid.longitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n return size / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n companion object {\n const val MIN_CELL_SIZE_PIXELS = 100\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_GRIDZONE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\nimport kotlin.math.cos\n\n/**\n * Represent a 100km square zone inside an UTM zone.\n */\nclass UTMSquareZone(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n var name: String? = null\n var northNeighbor: UTMSquareZone? = null\n var eastNeighbor: UTMSquareZone? = null\n private var squareGrid: UTMSquareGrid? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size)\n for (ge in gridElements) if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && isNorthNeighborInView(rc)) continue\n if (ge.type == TYPE_LINE_EAST && isEastNeighborInView(rc)) continue\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 2) return\n\n // Select grid renderables\n val squareGrid = squareGrid ?: UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size).also { squareGrid = it }\n if (squareGrid.isInView(rc)) squareGrid.selectRenderables(rc) else squareGrid.clearRenderables()\n }\n\n private fun isNorthNeighborInView(rc: RenderContext) = northNeighbor?.isInView(rc) == true\n\n private fun isEastNeighborInView(rc: RenderContext) = eastNeighbor?.isInView(rc) == true\n\n override fun clearRenderables() {\n super.clearRenderables()\n squareGrid?.clearRenderables()\n squareGrid = null\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // left segment\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, nw, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(nw)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_WEST, SWEasting.degrees))\n }\n\n // right segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(se, ne, UTMZoneSector, positions)\n } else {\n positions.add(se)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST, (SWEasting + size).degrees))\n }\n\n // bottom segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, se, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(se)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH, SWNorthing.degrees))\n }\n\n // top segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(nw, ne, UTMZoneSector, positions)\n } else {\n positions.add(nw)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH, (SWNorthing + size).degrees))\n }\n\n // Label\n name?.let { name ->\n // Only add a label to squares above some dimension\n if (boundingSector.deltaLongitude.inDegrees * cos(centroid.latitude.inRadians) > .2\n && boundingSector.deltaLatitude.inDegrees > .2\n ) {\n val labelPos = if (UTMZone != 0) centroid // Not at poles\n else if (isPositionInside(Position(squareCenter.latitude, squareCenter.longitude, 0.0))) squareCenter\n else if (squareCenter.latitude.inDegrees <= UTMZoneSector.maxLatitude.inDegrees\n && squareCenter.latitude.inDegrees >= UTMZoneSector.minLatitude.inDegrees) centroid\n else null\n if (labelPos != null) {\n val text = layer.createTextRenderable(\n Position(labelPos.latitude, labelPos.longitude, 0.0), name, size * 10\n )\n gridElements.add(GridElement(boundingSector, text, TYPE_GRIDZONE_LABEL))\n }\n }\n }\n }\n}","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawableHeatmap\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\n\nopen class ElevationHeatmapLayer: AbstractLayer(\"Elevation Heatmap\") {\n override var isPickEnabled = false // Elevation Heatmap is not pickable\n override var opacity = 0.5f // Elevation Heatmap is semi-transparent by default\n /**\n * RGB colors for five thresholds of heatmap\n */\n val colors = arrayOf(\n Color(0.0f, 0.0f, 1.0f), // 0% - Blue\n Color(0.0f, 1.0f, 1.0f), // 25% - Cyan\n Color(0.0f, 1.0f, 0.0f), // 50% - Green\n Color(1.0f, 1.0f, 0.0f), // 75% - Yellow\n Color(1.0f, 0.0f, 0.0f) // 100% - Red\n )\n /**\n * Auto determines height limits from available terrain tiles. If false, then limits should be specified manually.\n */\n var autoHeightLimits = true\n /**\n * Configurable offset from maximal available terrain tile level to take into account when calculating height limits\n */\n var levelNumberDepth = 3\n /**\n * Last automatically calculated or manually specified min and max height limits\n */\n val heightLimits = FloatArray(2)\n\n override fun doRender(rc: RenderContext) {\n if (autoHeightLimits) rc.terrain.heightLimits(levelNumberDepth, heightLimits)\n\n val pool = rc.getDrawablePool()\n val drawable = DrawableHeatmap.obtain(pool)\n heightLimits.copyInto(drawable.heightLimits)\n drawable.colors.forEachIndexed { i, color -> color.copy(colors[i]) }\n drawable.opacity = opacity\n drawable.offset = rc.globe.offset\n drawable.program = rc.getShaderProgram { ElevationHeatmapProgram() }\n rc.offerSurfaceDrawable(drawable, 0.0)\n }\n}\n","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform index\n// TODO to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class ElevationHeatmapProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform float scale;\n uniform float offset;\n\n attribute vec4 vertexPoint;\n attribute float vertexHeight;\n\n varying float height;\n\n void main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform vec3 color0;\n uniform vec3 color1;\n uniform vec3 color2;\n uniform vec3 color3;\n uniform vec3 color4;\n uniform float opacity;\n\n varying float height;\n\n void main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n protected var scaleId = KglUniformLocation.NONE\n protected var offsetId = KglUniformLocation.NONE\n protected var color0Id = KglUniformLocation.NONE\n protected var color1Id = KglUniformLocation.NONE\n protected var color2Id = KglUniformLocation.NONE\n protected var color3Id = KglUniformLocation.NONE\n protected var color4Id = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n scaleId = gl.getUniformLocation(program, \"scale\")\n gl.uniform1f(scaleId, 0f)\n offsetId = gl.getUniformLocation(program, \"offset\")\n gl.uniform1f(offsetId, 0f)\n color0Id = gl.getUniformLocation(program, \"color0\")\n gl.uniform3f(color0Id, 0f, 0f, 0f)\n color1Id = gl.getUniformLocation(program, \"color1\")\n gl.uniform3f(color1Id, 0f, 0f, 0f)\n color2Id = gl.getUniformLocation(program, \"color2\")\n gl.uniform3f(color2Id, 0f, 0f, 0f)\n color3Id = gl.getUniformLocation(program, \"color3\")\n gl.uniform3f(color3Id, 0f, 0f, 0f)\n color4Id = gl.getUniformLocation(program, \"color4\")\n gl.uniform3f(color4Id, 0f, 0f, 0f)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, 0f)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun setLimits(limits: FloatArray) {\n val delta = limits[1] - limits[0]\n gl.uniform1f(scaleId, if (delta != 0.0f) 1.0f / delta else 0.0f)\n gl.uniform1f(offsetId, if (delta != 0.0f) -limits[0] / delta else 0.0f)\n }\n\n fun setColors(colors: Array) {\n gl.uniform3f(color0Id, colors[0].red, colors[0].green, colors[0].blue)\n gl.uniform3f(color1Id, colors[1].red, colors[1].green, colors[1].blue)\n gl.uniform3f(color2Id, colors[2].red, colors[2].green, colors[2].blue)\n gl.uniform3f(color3Id, colors[3].red, colors[3].green, colors[3].blue)\n gl.uniform3f(color4Id, colors[4].red, colors[4].green, colors[4].blue)\n }\n\n fun setOpacity(opacity: Float) {\n gl.uniform1f(opacityId, opacity)\n }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\nimport kotlin.jvm.JvmStatic\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nabstract class AbstractMercatorImageTile(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): ImageTile(sector, level, row, column) {\n companion object {\n /**\n * Creates all Mercator tiles for a specified level within a LevelSet.\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result a pre-allocated Collection in which to store the results\n */\n @JvmStatic\n fun assembleMercatorTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = level.parent.sector\n val tileOrigin = fromSector(level.parent.tileOrigin)\n val dLat = level.tileDelta.latitude\n val dLon = level.tileDelta.longitude\n val firstRow = tileOrigin.computeRow(dLat, sector.minLatitude)\n val lastRow = tileOrigin.computeLastRow(dLat, sector.maxLatitude)\n val firstCol = tileOrigin.computeColumn(dLon, sector.minLongitude)\n val lastCol = tileOrigin.computeLastColumn(dLon, sector.maxLongitude)\n val dPercent = tileOrigin.maxLatPercent - tileOrigin.minLatPercent\n val dLatPercent = dLat.inDegrees / tileOrigin.deltaLatitude.inDegrees * dPercent\n val firstRowPercent = gudermannianInverse(tileOrigin.minLatitude) + firstRow * dLatPercent\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * dLon.inDegrees)\n var d1 = firstRowPercent\n for (row in firstRow..lastRow) {\n val d2 = d1 + dLatPercent\n var t1 = firstColLon\n for (col in firstCol..lastCol) {\n val t2 = t1 + dLon\n result.add(tileFactory.createTile(MercatorSector(d1, d2, t1, t2), level, row, col))\n t1 = t2\n }\n d1 = d2\n }\n return result\n }\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its LevelSet.\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n override fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n val sector = sector as MercatorSector\n val d0 = sector.minLatPercent\n val d2 = sector.maxLatPercent\n val d1 = d0 + (d2 - d0) / 2.0\n val t0 = sector.minLongitude\n val t2 = sector.maxLongitude\n val t1 = average(t0, t2)\n val northRow = 2 * row\n val southRow = northRow + 1\n val westCol = 2 * column\n val eastCol = westCol + 1\n val child0 = tileFactory.createTile(MercatorSector(d0, d1, t0, t1), childLevel, northRow, westCol)\n val child1 = tileFactory.createTile(MercatorSector(d0, d1, t1, t2), childLevel, northRow, eastCol)\n val child2 = tileFactory.createTile(MercatorSector(d1, d2, t0, t1), childLevel, southRow, westCol)\n val child3 = tileFactory.createTile(MercatorSector(d1, d2, t1, t2), childLevel, southRow, eastCol)\n return arrayOf(child0, child1, child2, child3)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Sector\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\nopen class MercatorSector(\n val minLatPercent: Double = -1.0, val maxLatPercent: Double = 1.0,\n minLongitude: Angle = Angle.NEG180, maxLongitude: Angle = Angle.POS180\n): Sector(gudermannian(minLatPercent), gudermannian(maxLatPercent), minLongitude, maxLongitude) {\n\n override fun computeColumn(tileDelta: Angle, longitude: Angle) = floor(getX(longitude) * getTilesX(tileDelta)).toInt()\n\n override fun computeRow(tileDelta: Angle, latitude: Angle) = floor(getY(latitude) * getTilesY(tileDelta)).toInt()\n\n override fun computeLastColumn(tileDelta: Angle, longitude: Angle) = ceil(getX(longitude) * getTilesX(tileDelta) - 1).toInt()\n\n override fun computeLastRow(tileDelta: Angle, latitude: Angle) = ceil(getY(latitude) * getTilesY(tileDelta) - 1).toInt()\n\n private fun getX(longitude: Angle) = (longitude.inDegrees + 180.0) / 360.0\n\n private fun getY(latitude: Angle) = (1.0 + ln(tan(latitude.inRadians) + 1.0 / cos(latitude.inRadians)) / PI) / 2.0\n\n private fun getTilesX(tileDelta: Angle) = deltaLongitude.inDegrees / tileDelta.inDegrees\n\n private fun getTilesY(tileDelta: Angle) = deltaLatitude.inDegrees / tileDelta.inDegrees\n\n companion object {\n @JvmStatic\n fun fromDegrees(\n minLatPercent: Double, maxLatPercent: Double, minLonDegrees: Double, maxLonDegrees: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n\n @JvmStatic\n fun fromRadians(\n minLatPercent: Double, maxLatPercent: Double, minLonRadians: Double, maxLonRadians: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n\n @JvmStatic\n fun fromSector(sector: Sector) = MercatorSector(\n gudermannianInverse(sector.minLatitude), gudermannianInverse(sector.maxLatitude),\n sector.minLongitude, sector.maxLongitude\n )\n\n @JvmStatic\n fun gudermannianInverse(latitude: Angle) = ln(tan(PI / 4.0 + latitude.inRadians / 2.0)) / PI\n\n @JvmStatic\n fun gudermannian(percent: Double) = fromRadians(atan(sinh(percent * PI)))\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.util.LevelSet\n\nopen class MercatorTiledImageLayer(\n name: String? = null, tiledSurfaceImage: MercatorTiledSurfaceImage? = null\n): TiledImageLayer(name, tiledSurfaceImage) {\n override fun clone() = MercatorTiledImageLayer(displayName, tiledSurfaceImage?.clone() as? MercatorTiledSurfaceImage)\n\n companion object {\n fun buildTiledSurfaceImage(\n tileFactory: MercatorTileFactory, numLevels: Int = 22, tileSize: Int = 256, transparent: Boolean = false, levelOffset: Int = 1\n ): MercatorTiledSurfaceImage {\n val sector = MercatorSector()\n val tileOrigin = MercatorSector()\n val firstLevelDelta = Location(tileOrigin.deltaLatitude, tileOrigin.deltaLongitude)\n // Skip 1 topmost level with bad resolution from processing\n val levelSet = LevelSet(sector, tileOrigin, firstLevelDelta, numLevels, tileSize, tileSize, levelOffset)\n return MercatorTiledSurfaceImage(tileFactory, levelSet).apply {\n // Reduce memory usage by using a 16-bit configuration with no alpha\n if (!transparent) imageOptions = ImageOptions(ImageConfig.RGB_565)\n }\n }\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.TileFactory\n\nopen class MercatorTiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet) : TiledSurfaceImage(tileFactory, levelSet) {\n override fun clone() = MercatorTiledSurfaceImage(tileFactory, with(levelSet) {\n // It is crucial to keep the Mercator sector in the level set clone to keep correct tiling\n LevelSet(fromSector(sector), fromSector(tileOrigin), firstLevelDelta, numLevels, tileWidth, tileHeight, levelOffset)\n }).also {\n it.imageOptions = imageOptions\n }\n\n override fun createTopLevelTiles() =\n AbstractMercatorImageTile.assembleMercatorTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.WebImageLayer\n\nclass WebMercatorImageLayer(\n override val serviceAddress: String,\n override val imageFormat: String = \"image/png\",\n override val isTransparent: Boolean = false,\n name: String? = null,\n tiledSurfaceImage: MercatorTiledSurfaceImage? = null\n) : MercatorTiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n\n override fun clone() = WebMercatorImageLayer(\n serviceAddress, imageFormat, isTransparent, displayName, tiledSurfaceImage?.clone() as? MercatorTiledSurfaceImage\n )\n\n companion object {\n const val SERVICE_TYPE = \"XYZ\"\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.mercator.MercatorTiledImageLayer.Companion.buildTiledSurfaceImage\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.locale.language\nimport kotlin.random.Random\n\nobject WebMercatorLayerFactory {\n private const val OPEN_BRACKET = '{'\n private const val CLOSED_BRACKET = '}'\n private const val I_EXPRESSION = \"{i}\"\n private const val X_COORDINATE = \"{x}\"\n private const val Y_COORDINATE = \"{y}\"\n private const val Z_COORDINATE = \"{z}\"\n private const val LANGUAGE = \"{lang}\"\n private const val RAND_PREFIX = \"{rand=\"\n\n fun createLayer(\n urlTemplate: String, imageFormat: String = \"image/png\", transparent: Boolean = false,\n name: String? = null, numLevels: Int = 22, tileSize: Int = 256, levelOffset: Int = 1\n ): WebMercatorImageLayer {\n val urlParts = parseUrl(urlTemplate)\n val randomValue = urlParts.find { it.startsWith(RAND_PREFIX) }\n val randomValues = randomValue?.removeSurrounding(RAND_PREFIX, \"}\")?.split(\",\")\n val tileFactory = object : MercatorTileFactory {\n override val contentType = \"Web Mercator\"\n\n override fun getImageSource(x: Int, y: Int, z: Int): ImageSource {\n val resultServerUrl = StringBuilder()\n urlParts.forEach {\n resultServerUrl.append(\n when (it) {\n X_COORDINATE -> x\n Y_COORDINATE -> y\n Z_COORDINATE -> z\n LANGUAGE -> language\n randomValue -> randomValues?.get(Random.nextInt(randomValues.size))\n I_EXPRESSION -> x % 4 + y % 4 * 4\n else -> it\n }\n )\n }\n return ImageSource.fromUrlString(resultServerUrl.toString())\n }\n }\n val tiledSurfaceImage = buildTiledSurfaceImage(tileFactory, numLevels, tileSize, transparent, levelOffset)\n return WebMercatorImageLayer(urlTemplate, imageFormat, transparent, name, tiledSurfaceImage)\n }\n\n private fun parseUrl(serverUrl: String): List {\n val result = mutableListOf()\n val builder = StringBuilder()\n serverUrl.toCharArray().forEachIndexed { index, char ->\n if (char == OPEN_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n builder.append(char)\n if (char == CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n if (index == serverUrl.length - 1 && char != CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n }\n return result\n }\n}","package earth.worldwind.layer.starfield\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.MR\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawableStarField\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n/**\n * Constructs a layer showing stars and the Sun around the Earth.\n * If used together with the AtmosphereLayer, the StarFieldLayer must be inserted before the AtmosphereLayer.\n *\n * If you want to use your own star data, the file provided must be .json\n * and the fields \"ra\", \"dec\" and \"vmag\" must be present in the metadata.\n * ra and dec must be expressed in degrees.\n *\n * This layer uses J2000.0 as the ref epoch.\n *\n * If the star data .json file is too big, consider enabling gzip compression on your web server.\n * For more info about enabling gzip compression consult the configuration for your web server.\n */\nopen class StarFieldLayer(starDataSource: FileResource = MR.files.stars_json): AbstractLayer(\"StarField\") {\n override var isPickEnabled = false // The StarField Layer is not pickable.\n /**\n * Resource for the stars data\n */\n var starDataSource = starDataSource\n set(value) {\n field = value\n invalidateStarData()\n }\n /**\n * Resource for the sun texture image.\n */\n var sunImageSource = ImageSource.fromResource(MR.images.sun_texture)\n /**\n * The size of the Sun in pixels.\n * This can not exceed the maximum allowed pointSize of the GPU.\n * A warning will be given if the size is too big and the allowed max size will be used.\n */\n var sunSize = 128f\n /**\n * Indicates weather to show or hide the Sun\n */\n var isShowSun = true\n /**\n * Display star field on a specified time point. If null, then current time will be used each frame.\n */\n var time : Instant? = null\n protected var starsPositionsVboCacheKey = nextCacheKey() //gpu cache key for the stars vbo.\n protected var numStars = 0\n protected var starData: StarData? = null\n protected var minMagnitude = Float.MAX_VALUE\n protected var maxMagnitude = Float.MIN_VALUE\n protected var sunBufferViewHashCode = 0\n /**\n * A flag to indicate the star data is currently being retrieved.\n */\n protected var loadStarted = false\n protected val minScale = 10e6\n protected var sunPositionsCacheKey = nextCacheKey()\n protected val sunBufferView = FloatArray(4)\n\n protected fun nextCacheKey() = Any()\n\n protected open fun invalidateStarData() {\n starData = null\n starsPositionsVboCacheKey = nextCacheKey()\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Star Field layer is not applicable for 2D globe\n\n loadStarData(rc)\n\n val starData = starData ?: return // Star data is not loaded yet\n val time = time ?: Clock.System.now()\n val pool = rc.getDrawablePool()\n val drawable = DrawableStarField.obtain(pool)\n\n // Render Star Field\n drawable.starsPositionsBuffer = rc.getBufferObject(starsPositionsVboCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, createStarsGeometry(starData, rc))\n }\n // Number of days since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n drawable.julianDate = SunPosition.computeJulianDate(time)\n drawable.minMagnitude = minMagnitude\n drawable.maxMagnitude = maxMagnitude\n drawable.numStars = numStars\n drawable.matrix.copy(rc.modelviewProjection)\n val scale = (rc.camera.position.altitude * 1.5).coerceAtLeast(minScale)\n drawable.matrix.multiplyByScale(scale, scale, scale)\n\n // Render The Sun\n drawable.isShowSun = isShowSun\n if (drawable.isShowSun) {\n drawable.sunTexture = rc.getTexture(sunImageSource, null)\n if (drawable.sunTexture != null) {\n drawable.sunSize = sunSize\n\n val sunCelestialLocation = SunPosition.getAsCelestialLocation(time)\n\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n sunBufferView[0] = sunCelestialLocation.declination.inDegrees.toFloat()\n sunBufferView[1] = sunCelestialLocation.rightAscension.inDegrees.toFloat()\n sunBufferView[2] = sunSize.coerceAtMost(DrawableStarField.maxGlPointSize)\n sunBufferView[3] = 1f\n\n val hashCode = sunBufferView.contentHashCode()\n if (sunBufferViewHashCode != hashCode) {\n sunBufferViewHashCode = hashCode\n sunPositionsCacheKey = nextCacheKey()\n }\n drawable.sunPositionsBuffer = rc.getBufferObject(sunPositionsCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, sunBufferView)\n }\n }\n }\n\n drawable.program = rc.getShaderProgram { StarFieldProgram() }\n rc.offerBackgroundDrawable(drawable)\n }\n\n protected open fun loadStarData(rc: RenderContext) {\n if (starData == null && !loadStarted) {\n loadStarted = true\n rc.renderResourceCache.retrieveTextFile(starDataSource) {\n starData = Json.decodeFromString(it)\n loadStarted = false\n WorldWind.requestRedraw()\n }\n }\n }\n\n protected open fun createStarsGeometry(starData: StarData, rc: RenderContext): FloatArray {\n val indexes = parseStarsMetadata(starData.metadata)\n require(indexes[0] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing ra field in star data.\")\n }\n require(indexes[1] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing dec field in star data.\")\n }\n require(indexes[2] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing vmag field in star data.\")\n }\n\n numStars = starData.data.size\n minMagnitude = Float.MAX_VALUE\n maxMagnitude = Float.MIN_VALUE\n\n val positions = FloatArray(numStars * 4)\n var positionIndex = 0\n for (i in starData.data.indices) {\n val starInfo = starData.data[i]\n val rightAscension = starInfo[indexes[0]] //for longitude\n val declination = starInfo[indexes[1]] //for latitude\n val magnitude = starInfo[indexes[2]]\n val pointSize = if (magnitude < 2) 2f else 1f\n\n positions[positionIndex++] = declination\n positions[positionIndex++] = rightAscension\n positions[positionIndex++] = pointSize * rc.densityFactor\n positions[positionIndex++] = magnitude\n\n minMagnitude = minMagnitude.coerceAtMost(magnitude)\n maxMagnitude = maxMagnitude.coerceAtLeast(magnitude)\n }\n\n return positions\n }\n\n protected open fun parseStarsMetadata(metadata: List): Array {\n var raIndex = -1\n var decIndex = -1\n var magIndex = -1\n for (i in metadata.indices) {\n val starMetaInfo = metadata[i]\n if (starMetaInfo.name == \"ra\") raIndex = i\n if (starMetaInfo.name == \"dec\") decIndex = i\n if (starMetaInfo.name == \"vmag\") magIndex = i\n }\n return arrayOf(raIndex, decIndex, magIndex)\n }\n\n @Serializable\n data class StarMetadata(\n val name: String, val description: String, val datatype: String,\n val arraysize: Int, val unit: String, val ucd: String\n )\n\n @Serializable\n data class StarData(val metadata: List, val data: List>)\n}\n","package earth.worldwind.layer.starfield\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n/**\n * StarFieldProgram is a GLSL program that draws points representing stars.\n */\nopen class StarFieldProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n attribute vec4 vertexPoint;\n\n uniform mat4 mvpMatrix;\n /* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\n uniform float numDays;\n uniform vec2 magnitudeRange;\n\n varying float magnitudeWeight;\n\n /* normalizes an angle between 0.0 and 359.0 */\n float normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n }\n\n /* transforms declination and right ascension in cartesian coordinates */\n vec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n }\n\n /* normalizes a value between 0.0 and 1.0 */\n float normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n }\n\n void main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform sampler2D textureSampler;\n uniform int textureEnabled;\n\n varying float magnitudeWeight;\n\n const vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n const vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\n void main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n /* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var numDaysId = KglUniformLocation.NONE\n protected var magnitudeRangeId = KglUniformLocation.NONE\n protected var textureUnitId = KglUniformLocation.NONE\n protected var textureEnabledId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\");\n numDaysId = gl.getUniformLocation(program, \"numDays\");\n magnitudeRangeId = gl.getUniformLocation(program, \"magnitudeRange\");\n textureUnitId = gl.getUniformLocation(program, \"textureSampler\");\n textureEnabledId = gl.getUniformLocation(program, \"textureEnabled\");\n }\n\n /**\n * Loads the specified matrix as the value of this program's 'mvpMatrix' uniform variable.\n *\n * @param matrix The matrix to load.\n */\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n /**\n * Loads the specified number as the value of this program's 'numDays' uniform variable.\n *\n * @param numDays The number of days (positive or negative) since Greenwich noon, Terrestrial Time,\n * on 1 January 2000 (J2000.0)\n */\n fun loadNumDays(numDays: Float) = gl.uniform1f(numDaysId, numDays)\n\n /**\n * Loads the specified numbers as the value of this program's 'magnitudeRange' uniform variable.\n *\n * @param minMag Minimal magnitude\n * @param maxMag Maximal magnitude\n */\n fun loadMagnitudeRange(minMag: Float, maxMag: Float) = gl.uniform2f(magnitudeRangeId, minMag, maxMag)\n\n /**\n * Loads the specified number as the value of this program's 'textureSampler' uniform variable.\n *\n * @param unit The texture unit.\n */\n fun loadTextureUnit(unit: Int) = gl.uniform1i(textureUnitId, unit - GL_TEXTURE0);\n\n /**\n * Loads the specified boolean as the value of this program's 'textureEnabledLocation' uniform variable.\n *\n * @param value Texture enabled\n */\n fun loadTextureEnabled(value: Boolean) = gl.uniform1i(textureEnabledId, if (value) 1 else 0)\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.geom.TileMatrixSet.Companion.fromTilePyramid\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Coverage Service (WCS) version 1.0.0.\n * Wcs100ElevationCoverage requires the WCS service address, coverage name, and coverage bounding sector. Get Coverage\n * requests generated for retrieving data use the WCS version 1.0.0 protocol and are limited to the EPSG:4326 coordinate\n * system. Wcs100ElevationCoverage does not perform version negotiation and assumes the service supports the format and\n * coordinate system parameters detailed here.\n */\nclass Wcs100ElevationCoverage private constructor(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): TiledElevationCoverage(tileMatrixSet, elevationSourceFactory), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n constructor(\n serviceAddress: String, coverageName: String, outputFormat: String, sector: Sector, resolution: Angle\n ): this(\n serviceAddress, coverageName, outputFormat,\n fromTilePyramid(sector, if (sector.isFullSphere) 2 else 1, 1, 256, 256, resolution),\n Wcs100ElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n )\n\n override fun clone() = Wcs100ElevationCoverage(\n serviceAddress, coverageName, outputFormat, tileMatrixSet, elevationSourceFactory\n )\n\n companion object {\n const val SERVICE_TYPE = \"WCS 1.0.0\"\n }\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\n\n/**\n * Factory for constructing WCS version 1.0.0 URLs associated with WCS Get Coverage requests.\n */\nopen class Wcs100ElevationSourceFactory(\n /**\n * The WCS service address use to build Get Coverage URLs.\n */\n protected val serviceAddress: String,\n /**\n * The coverage name of the desired WCS coverage.\n */\n protected val coverageName: String,\n /**\n * Required WCS source output format\n */\n protected val outputFormat: String,\n /**\n * The coordinate reference system to use in Get Coverage URLs. Defaults to EPSG:4326.\n */\n protected val coordinateSystem: String = \"EPSG:4326\"\n): ElevationSourceFactory {\n override val contentType = \"WCS 1.0.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val urlString = urlForTile(tileMatrix, row, column)\n return ElevationSource.fromUrlString(urlString)\n }\n\n protected open fun urlForTile(tileMatrix: TileMatrix, row: Int, col: Int) = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WCS\")\n .appendQueryParameter(\"REQUEST\", \"GetCoverage\")\n .appendQueryParameter(\"COVERAGE\", coverageName)\n .appendQueryParameter(\"CRS\", coordinateSystem)\n .appendQueryParameter(\"BBOX\", tileMatrix.tileSector(row, col).run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n .appendQueryParameter(\"WIDTH\", tileMatrix.tileWidth.toString())\n .appendQueryParameter(\"HEIGHT\", tileMatrix.tileHeight.toString())\n .appendQueryParameter(\"FORMAT\", outputFormat)\n .build().toString()\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.shape.TiledSurfaceImage\n\nclass WmsImageLayer(\n override val serviceAddress: String,\n override val serviceMetadata: String,\n override val layerName: String,\n name: String? = null,\n tiledSurfaceImage: TiledSurfaceImage? = null\n) : TiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.isTransparent ?: true\n\n override fun clone() = WmsImageLayer(\n serviceAddress, serviceMetadata, layerName, displayName, tiledSurfaceImage?.clone()\n )\n\n companion object {\n const val SERVICE_TYPE = \"WMS\"\n }\n}","package earth.worldwind.ogc\n\n/**\n * Configuration values for a WMS layer.\n */\nclass WmsLayerConfig(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String\n) {\n /**\n * The WMS protocol version. Defaults to 1.3.0.\n */\n var wmsVersion = \"1.3.0\"\n /**\n * The comma-separated list of WMS style names.\n */\n var styleNames: String? = null\n /**\n * The coordinate reference system to use when requesting layers. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map requests.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map requests should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map requests.\n */\n var timeString: String? = null\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.wms.WmsCapabilities\nimport earth.worldwind.ogc.wms.WmsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LevelSetConfig\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmsLayerFactory {\n private const val DEFAULT_WMS_NUM_LEVELS = 20\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMS service address\n * @param layerNames Optional list of WMS layer names to be requested and combined into the resulting image layer\n * @param serviceMetadata Optional WMS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerNames: List, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerNames.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmsCapabilitiesText = serviceMetadata ?: retrieveWmsCapabilities(serviceAddress)\n val wmsCapabilities = decodeWmsCapabilities(wmsCapabilitiesText)\n val wmsLayers = wmsCapabilities.getNamedLayers(layerNames)\n require(wmsLayers.isNotEmpty()) {\n makeMessage(\"WmsLayerFactory\", \"createLayer\", \"Provided layer names did not match available layers\")\n }\n return createWmsImageLayer(serviceAddress, wmsCapabilitiesText, wmsLayers, displayName)\n }\n\n private suspend fun retrieveWmsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.3.0\")\n .appendQueryParameter(\"SERVICE\", \"WMS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmsLayers: List, name: String?\n ) = WmsImageLayer(\n serviceAddress, serviceMetadata, wmsLayers.mapNotNull { lc -> lc.name }.joinToString(\",\"),\n name ?: wmsLayers.joinToString(\",\") { lc -> lc.title }, createWmsSurfaceImage(wmsLayers)\n )\n\n private fun createWmsSurfaceImage(wmsLayers: List): TiledSurfaceImage {\n // Check if the server supports multiple layer request\n val layerLimit = wmsLayers[0].capability?.capabilities?.service?.layerLimit\n require (layerLimit == null || layerLimit >= wmsLayers.size) {\n makeMessage(\n \"WmsLayerFactory\", \"createFromWmsAsync\",\n \"The number of layers specified exceeds the services limit\"\n )\n }\n val wmsLayerConfig = getLayerConfigFromWmsCapabilities(wmsLayers)\n val levelSetConfig = getLevelSetConfigFromWmsCapabilities(wmsLayers)\n return TiledSurfaceImage(WmsTileFactory(wmsLayerConfig), LevelSet(levelSetConfig))\n }\n\n internal fun getLayerConfigFromWmsCapabilities(wmsLayers: List): WmsLayerConfig {\n // Construct the WmsTiledImage renderable from the WMS Capabilities properties\n val wmsCapabilities = wmsLayers[0].capability?.capabilities\n val serviceAddress = wmsCapabilities?.capability?.request?.getMap?.getUrl ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Unable to resolve GetMap URL\")\n )\n var matchingCoordinateSystems: MutableSet? = null\n for (wmsLayer in wmsLayers) {\n val wmsLayerCoordinateSystems = wmsLayer.referenceSystems\n if (matchingCoordinateSystems == null) matchingCoordinateSystems = wmsLayerCoordinateSystems.toMutableSet()\n else matchingCoordinateSystems.retainAll(wmsLayerCoordinateSystems.toSet())\n }\n val wmsLayerConfig = WmsLayerConfig(serviceAddress, wmsLayers.joinToString(\",\") { l -> l.name ?: \"\" })\n when (val wmsVersion = wmsCapabilities.version) {\n \"1.3.0\" -> wmsLayerConfig.wmsVersion = wmsVersion\n else -> error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Version not compatible\")\n )\n }\n if (matchingCoordinateSystems?.contains(\"EPSG:4326\") == true) {\n wmsLayerConfig.coordinateSystem = \"EPSG:4326\"\n } else if (matchingCoordinateSystems?.contains(\"CRS:84\") == true) {\n wmsLayerConfig.coordinateSystem = \"CRS:84\"\n } else error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Coordinate systems not compatible\")\n )\n\n // Negotiate Image Formats\n val imageFormats = wmsCapabilities.capability.request.getMap.formats\n wmsLayerConfig.imageFormat = compatibleImageFormats.firstOrNull { format -> imageFormats.contains(format) } ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Image Formats Not Compatible\")\n )\n\n // Setup transparency. If at least one layer is opaque then transparency is disabled\n wmsLayerConfig.isTransparent = !wmsLayers.any { layer -> layer.isOpaque }\n\n return wmsLayerConfig\n }\n\n internal fun getLevelSetConfigFromWmsCapabilities(layerCapabilities: List): LevelSetConfig {\n val levelSetConfig = LevelSetConfig()\n var minScaleDenominator = Double.MAX_VALUE\n val sector = Sector()\n for (layerCapability in layerCapabilities) {\n layerCapability.minScaleDenominator?.let { minScaleDenominator = minScaleDenominator.coerceAtMost(it) }\n layerCapability.geographicBoundingBox?.let { sector.union(it) }\n }\n if (!sector.isEmpty) levelSetConfig.sector.copy(sector) else error(\n makeMessage(\n \"WmsLayerFactory\", \"getLevelSetConfigFromWmsCapabilities\", \"Geographic Bounding Box Not Defined\"\n )\n )\n levelSetConfig.numLevels = when {\n minScaleDenominator != Double.MAX_VALUE -> {\n // WMS 1.3.0 scale configuration. Based on the WMS 1.3.0 spec page 28. The hard coded value 0.00028 is\n // detailed in the spec as the common pixel size of 0.28mm x 0.28mm. Configures the maximum level not to\n // exceed the specified min scale denominator.\n val minMetersPerPixel = minScaleDenominator * 0.00028\n val minRadiansPerPixel = minMetersPerPixel / Ellipsoid.WGS84.semiMajorAxis\n levelSetConfig.numLevelsForMinResolution(minRadiansPerPixel)\n }\n else -> DEFAULT_WMS_NUM_LEVELS // Default scale configuration when no minimum scale denominator or scale hint is provided.\n }\n return levelSetConfig\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ln\nimport kotlin.math.roundToInt\n\n/**\n * Multi-resolution, hierarchical collection of tiles organized into levels of increasing resolution. Applications\n * typically do not interact with this class.\n */\nopen class LevelSet {\n /**\n * The sector spanned by this level set.\n */\n val sector: Sector\n /**\n * Tile origin for this level set\n */\n val tileOrigin: Sector\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of this level set.\n */\n val firstLevelDelta: Location\n /**\n * The width in pixels of images associated with tiles in this level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with this level set.\n */\n val tileWidth: Int\n /**\n * The height in pixels of images associated with tiles in this level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with this level set.\n */\n val tileHeight: Int\n /**\n * Determines how many levels to skip from retrieving tile data during tile pyramid subdivision.\n */\n val levelOffset: Int\n /**\n * The hierarchical levels, sorted from lowest to highest resolution.\n */\n protected val levels: Array\n /**\n * Returns the number of levels in this level set.\n */\n val numLevels get() = levels.size\n /**\n * Returns the first level (the lowest resolution) of this level set.\n */\n val firstLevel get() = levels.first()\n /**\n * Returns the last level (the highest resolution) of this level set.\n */\n val lastLevel get() = levels.last()\n\n /**\n * Constructs an empty level set with no levels. The methods `level`, `levelForResolution`,\n * `firstLevel` and `lastLevel` always return null.\n */\n constructor() {\n sector = Sector()\n tileOrigin = Sector()\n firstLevelDelta = Location()\n tileWidth = 0\n tileHeight = 0\n levelOffset = 0\n levels = emptyArray()\n }\n\n /**\n * Constructs a level set with specified parameters.\n *\n * @param sector the sector spanned by this level set\n * @param tileOrigin the origin for this level set\n * @param firstLevelDelta the geographic width and height of tiles in the first level (the lowest resolution)\n * of the level set\n * @param numLevels the number of levels in the level set\n * @param tileWidth the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the longitudinal direction of elevation tiles associate with this leve set\n * @param tileHeight the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the latitudinal direction of elevation tiles associate with this level set\n * @param levelOffset determines how many levels to skip from retrieving texture during tile pyramid subdivision\n *\n * @throws IllegalArgumentException If any dimension is zero\n */\n constructor(\n sector: Sector, tileOrigin: Sector, firstLevelDelta: Location, numLevels: Int, tileWidth: Int, tileHeight: Int, levelOffset: Int = 0\n ) {\n require(firstLevelDelta.latitude.inDegrees > 0.0 && firstLevelDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidTileDelta\")\n }\n require(numLevels >= 0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidNumLevels\")\n }\n require(tileWidth >= 1 && tileHeight >= 1) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidWidthOrHeight\")\n }\n this.sector = sector\n this.tileOrigin = tileOrigin\n this.firstLevelDelta = firstLevelDelta\n this.tileWidth = tileWidth\n this.tileHeight = tileHeight\n this.levelOffset = levelOffset\n this.levels = Array(numLevels) {\n val divisor = 1 shl it\n Level(this, it, Location(firstLevelDelta.latitude / divisor, firstLevelDelta.longitude / divisor))\n }\n }\n\n /**\n * Constructs a level set with parameters from a specified level set.\n *\n * @param levelSet source level set\n */\n constructor(levelSet: LevelSet): this(\n Sector(levelSet.sector),\n Sector(levelSet.tileOrigin),\n Location(levelSet.firstLevelDelta),\n levelSet.numLevels,\n levelSet.tileWidth,\n levelSet.tileHeight,\n levelSet.levelOffset\n )\n\n /**\n * Constructs a level set with parameters from a specified configuration. The configuration's sector must be\n * non-null, its first level delta must be positive, its number of levels must be 1 or more, and its tile width and\n * tile height must be 1 or greater.\n *\n * @param config the configuration for this level set\n */\n constructor(config: LevelSetConfig): this(\n config.sector,\n config.tileOrigin,\n config.firstLevelDelta,\n config.numLevels,\n config.tileWidth,\n config.tileHeight,\n config.levelOffset\n )\n\n /**\n * Returns the [Level] for a specified level number.\n *\n * @param levelNumber the number of the desired level\n *\n * @return the requested level, or null if the level does not exist\n */\n fun level(levelNumber: Int) = if (levelNumber in levels.indices) levels[levelNumber] else null\n\n /**\n * Returns the level that most closely approximates the specified resolution.\n *\n * @param resolution the desired resolution in angular value of latitude per pixel.\n *\n * @return the level for the specified resolution, or null if this level set is empty\n *\n * @throws IllegalArgumentException If the resolution is not positive\n * @throws IllegalStateException If this level set is empty\n */\n fun levelForResolution(resolution: Angle): Level {\n require(resolution.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSetConfig\", \"levelForResolution\", \"invalidResolution\")\n }\n if (levels.isEmpty()) error(\"This level set is empty\")\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / resolution.inDegrees) / ln(2.0) // fractional level address\n val levelNumber = level.roundToInt() // nearest neighbor level\n return when {\n levelNumber < 0 -> levels[0] // unable to match the resolution; return the first level\n levelNumber < levels.size -> levels[levelNumber] // nearest neighbor level is in this level set\n else -> levels[levels.size - 1] // unable to match the resolution; return the last level\n }\n }\n\n /**\n * Determine the min relevant level for the sector of this level set\n *\n * @param maxLevel Maximum available level\n * @return Minimum relevant level number\n */\n fun minRelevantLevel(maxLevel: Level = lastLevel) = levels[sector.minLevelNumber(maxLevel.levelNumber)]\n\n /**\n * Calculates approximate count of tiles in specified sector within specified resolution range\n *\n * @param sector co calculate tiles amount\n * @param minLevel minimal required level\n * @param maxLevel maximal required level\n * @return tiles count\n */\n fun tileCount(sector: Sector, minLevel: Level, maxLevel: Level): Long {\n var tileCount = 0L\n var level = minLevel\n do {\n tileCount += level.tilesInSector(sector)\n level = level.nextLevel ?: break\n } while (level.levelNumber <= maxLevel.levelNumber)\n return tileCount\n }\n}",null,"package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\n/**\n * Factory for constructing URLs associated with WMS Get Map requests.\n */\nopen class WmsTileFactory(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n\n /**\n * The WMS protocol version.\n */\n var wmsVersion: String,\n\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String,\n /**\n * The comma-separated list of WMS style names. May be null in which case the default style is assumed.\n */\n var styleNames: String?\n): TileFactory {\n /**\n * The coordinate reference system to use in Get Map URLs. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map URLs. May be null in which case a default format is assumed.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map URLs should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map URLs. May be null in which case no time parameter is included.\n */\n var timeString: String? = null\n\n /**\n * Constructs a level set with a specified configuration. The configuration's service address, WMS protocol version,\n * layer names and coordinate reference system must be non-null. The style names may be null, in which case the\n * default style is assumed. The time string may be null, in which case no time parameter is included.\n *\n * @param config the configuration for this URL builder\n */\n constructor(config: WmsLayerConfig): this(config.serviceAddress, config.wmsVersion, config.layerNames, config.styleNames) {\n coordinateSystem = config.coordinateSystem\n imageFormat = config.imageFormat\n isTransparent = config.isTransparent\n timeString = config.timeString\n }\n\n override val contentType = \"WMS 1.3.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(sector, level.tileWidth, level.tileHeight).let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(sector: Sector, width: Int, height: Int) = Uri.parse(serviceAddress).buildUpon().apply {\n require(width >= 1 && height >= 1) {\n logMessage(ERROR, \"WmsTileFactory\", \"urlForTile\", \"invalidWidthOrHeight\")\n }\n appendQueryParameter(\"VERSION\", wmsVersion)\n appendQueryParameter(\"SERVICE\", \"WMS\")\n appendQueryParameter(\"REQUEST\", \"GetMap\")\n appendQueryParameter(\"LAYERS\", layerNames)\n appendQueryParameter(\"STYLES\", styleNames ?: \"\")\n appendQueryParameter(\"WIDTH\", width.toString())\n appendQueryParameter(\"HEIGHT\", height.toString())\n appendQueryParameter(\"FORMAT\", imageFormat ?: \"image/png\")\n appendQueryParameter(\"TRANSPARENT\", if (isTransparent) \"TRUE\" else \"FALSE\")\n if (wmsVersion == \"1.3.0\") {\n appendQueryParameter(\"CRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n if (coordinateSystem == \"CRS:84\") {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n } else {\n \"${minLatitude.inDegrees},${minLongitude.inDegrees},${maxLatitude.inDegrees},${maxLongitude.inDegrees}\"\n }\n })\n } else {\n appendQueryParameter(\"SRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n }\n timeString?.let { appendQueryParameter(\"TIME\", it) }\n }.build().toString()\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.shape.TiledSurfaceImage\n\nclass WmtsImageLayer(\n override val serviceAddress: String,\n override val serviceMetadata: String,\n override val layerName: String,\n name: String? = null,\n tiledSurfaceImage: TiledSurfaceImage? = null\n) : TiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmtsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent = true // WMTS has no transparency data available\n\n override fun clone() = WmtsImageLayer(\n serviceAddress, serviceMetadata, layerName, displayName, tiledSurfaceImage?.clone()\n )\n\n companion object {\n const val SERVICE_TYPE = \"WMTS\"\n }\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Angle.Companion.toRadians\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Location.Companion.fromDegrees\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsTileFactory.Companion.TILE_COL_TEMPLATE\nimport earth.worldwind.ogc.WmtsTileFactory.Companion.TILE_MATRIX_TEMPLATE\nimport earth.worldwind.ogc.WmtsTileFactory.Companion.TILE_ROW_TEMPLATE\nimport earth.worldwind.ogc.wmts.WmtsCapabilities\nimport earth.worldwind.ogc.wmts.WmtsLayer\nimport earth.worldwind.ogc.wmts.WmtsTileMatrixSet\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.TileFactory\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmtsLayerFactory {\n private const val PIXEL_SIZE = 0.28E-3 // Standardized rendering pixel size (0.28mm)\n private const val STYLE_TEMPLATE = \"{style}\"\n private const val TILE_MATRIX_SET_TEMPLATE = \"{TileMatrixSet}\"\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMTS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMTS service address\n * @param layerName Optional WMTS layer name to be requested into the resulting image layer\n * @param serviceMetadata Optional WMTS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerName: String, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n\t\trequire(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerName.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmtsCapabilitiesText = serviceMetadata ?: retrieveWmtsCapabilities(serviceAddress)\n val wmtsCapabilities = decodeWmtsCapabilities(wmtsCapabilitiesText)\n val wmtsLayer = wmtsCapabilities.getLayer(layerName)\n requireNotNull(wmtsLayer) {\n makeMessage(\"WmtsLayerFactory\", \"createLayer\", \"Specified layer name was not found\")\n }\n return createWmtsImageLayer(serviceAddress, wmtsCapabilitiesText, wmtsLayer, displayName)\n }\n\n private suspend fun retrieveWmtsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmtsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmtsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmtsLayer: WmtsLayer, name: String?\n ) = WmtsImageLayer(\n serviceAddress, serviceMetadata, wmtsLayer.identifier, name ?: wmtsLayer.title, createWmtsSurfaceImage(wmtsLayer)\n )\n\n private fun createWmtsSurfaceImage(wmtsLayer: WmtsLayer): TiledSurfaceImage {\n // Search the list of coordinate system compatible tile matrix sets for compatible tiling schemes\n val tileMatrixSet = determineCompatibleTileMatrixSet(wmtsLayer.layerSupportedTileMatrixSets) ?: error(\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Tile Schemes Not Compatible\")\n )\n val tileFactory = createWmtsTileFactory(wmtsLayer, tileMatrixSet)\n val levelSet = createWmtsLevelSet(wmtsLayer, tileMatrixSet)\n return TiledSurfaceImage(tileFactory, levelSet)\n }\n\n private fun createWmtsTileFactory(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet): TileFactory {\n // First choice is a ResourceURL\n for (resourceUrl in wmtsLayer.resourceUrls) if (compatibleImageFormats.contains(resourceUrl.format)) {\n val template = resourceUrl.template\n .replace(STYLE_TEMPLATE, wmtsLayer.styles[0].identifier)\n .replace(TILE_MATRIX_SET_TEMPLATE, tileMatrixSet.identifier)\n return WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, resourceUrl.format)\n }\n\n // Second choice is if the server supports KVP\n val baseUrl = determineKvpUrl(wmtsLayer)\n return if (baseUrl != null) {\n val imageFormat = compatibleImageFormats.firstOrNull { format -> wmtsLayer.formats.contains(format) } ?: error(\n makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"Image Formats Not Compatible\")\n )\n val styleIdentifier = wmtsLayer.styles[0].identifier\n val template = buildWmtsKvpTemplate(\n baseUrl, wmtsLayer.identifier, imageFormat, styleIdentifier, tileMatrixSet.identifier\n )\n WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, imageFormat)\n } else error(makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"No KVP Get Support\"))\n }\n\n private fun createWmtsLevelSet(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet) = with(tileMatrixSet) {\n val sector = wmtsLayer.wgs84BoundingBox?.sector ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"WGS84BoundingBox not defined for layer: \" + wmtsLayer.identifier\n )\n )\n val pixelSpan = scaleDenominator / toRadians(Ellipsoid.WGS84.semiMajorAxis) * PIXEL_SIZE\n val tileSpanX = tileWidth * pixelSpan\n val tileSpanY = tileHeight * pixelSpan\n val maxX = minX + tileSpanX * matrixWidth\n val minY = maxY - tileSpanY * matrixHeight\n val deltaX = maxX - minX\n val deltaY = maxY - minY\n LevelSet(\n sector, fromDegrees(minY, minX, deltaY, deltaX),\n fromDegrees(deltaY / matrixHeight, deltaX / matrixWidth),\n tileMatrices.size, tileWidth, tileHeight\n )\n }\n\n private fun buildWmtsKvpTemplate(\n kvpServiceAddress: String, layer: String, format: String, styleIdentifier: String, tileMatrixSet: String\n ) = Uri.parse(kvpServiceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetTile\")\n .appendQueryParameter(\"LAYER\", layer)\n .appendQueryParameter(\"STYLE\", styleIdentifier)\n .appendQueryParameter(\"FORMAT\", format)\n .appendQueryParameter(\"TILEMATRIXSET\", tileMatrixSet)\n .build().toString() + \"&TILEMATRIX=$TILE_MATRIX_TEMPLATE&TILEROW=$TILE_ROW_TEMPLATE&TILECOL=$TILE_COL_TEMPLATE\"\n\n private fun determineCompatibleTileMatrixSet(tileMatrixSets: List): TileMatrixSet? {\n // Iterate through each provided tile matrix set\n for (tileMatrixSet in tileMatrixSets) {\n // Determine if there is a TileMatrixSet that matches our Coordinate System compatibility and tiling scheme\n val directAxisOrder = when (tileMatrixSet.supportedCrs) {\n \"urn:ogc:def:crs:OGC:1.3:CRS84\", \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\" -> true\n \"urn:ogc:def:crs:EPSG::4326\" -> false\n else -> continue // The provided tile matrix set should adhere to either EPGS:4326 or CRS84\n }\n val tileMatrices = mutableListOf()\n var minX = 0.0\n var maxY = 0.0\n var scaleDenominator = 0.0\n var tileWidth = 0\n var tileHeight = 0\n var matrixWidth = 0\n var matrixHeight = 0\n var previousHeight = 0\n var previousWidth = 0\n var previousCorner: String? = null\n // Walk through the associated tile matrices and check for compatibility with WWA tiling scheme\n for (tileMatrix in tileMatrixSet.tileMatrices) {\n // Check and parse top left corner values\n if (previousCorner != null && tileMatrix.topLeftCorner != previousCorner) continue\n val topLeftCorner = tileMatrix.topLeftCorner.split(\"\\\\s+\".toRegex())\n if (topLeftCorner.size != 2) continue\n\n // Check tile size equals for all tile matrices\n if (tileWidth != 0 && tileWidth != tileMatrix.tileWidth) continue\n if (tileHeight != 0 && tileHeight != tileMatrix.tileHeight) continue\n\n // Ensure quad division behavior from previous tile matrix\n if (previousWidth != 0 && 2 * previousWidth != tileMatrix.matrixWidth) break\n if (previousHeight != 0 && 2 * previousHeight != tileMatrix.matrixHeight) break\n\n // Remember the first level parameters\n if (tileMatrices.isEmpty()) {\n try {\n if (directAxisOrder) {\n minX = topLeftCorner[0].toDouble()\n maxY = topLeftCorner[1].toDouble()\n } else {\n minX = topLeftCorner[1].toDouble()\n maxY = topLeftCorner[0].toDouble()\n }\n } catch (e: NumberFormatException) {\n logMessage(\n WARN, \"WmtsLayerFactory\", \"determineTileSchemeCompatibleTileMatrixSet\",\n \"Unable to parse TopLeftCorner values\"\n )\n continue\n }\n scaleDenominator = tileMatrix.scaleDenominator\n tileWidth = tileMatrix.tileWidth\n tileHeight = tileMatrix.tileWidth\n matrixWidth = tileMatrix.matrixWidth\n matrixHeight = tileMatrix.matrixHeight\n }\n\n // And add compatible tile matrix\n tileMatrices.add(tileMatrix.identifier)\n previousHeight = tileMatrix.matrixHeight\n previousWidth = tileMatrix.matrixWidth\n previousCorner = tileMatrix.topLeftCorner\n }\n\n // Return the first compatible tile matrix set\n if (tileMatrices.isNotEmpty()) return TileMatrixSet(\n tileMatrixSet.identifier, tileMatrices, scaleDenominator, minX, maxY,\n tileWidth, tileHeight, matrixWidth, matrixHeight\n )\n }\n return null\n }\n\n /**\n * Conducts a simple search through the [WmtsLayer]s distributed computing platform resources for a URL which\n * supports KVP queries to the WMTS. This method only looks at the first entry of every array of the layers 'GET'\n * retrieval methods.\n *\n * @param layer the [WmtsLayer] to search for KVP support\n *\n * @return the URL for the supported KVP or null if KVP or 'GET' method isn't provided by the layer\n */\n private fun determineKvpUrl(layer: WmtsLayer): String? {\n val capabilities = layer.capabilities\n val operationsMetadata = capabilities.operationsMetadata ?: return null\n val getTileOperation = operationsMetadata.getTile ?: return null\n val dcp = getTileOperation.dcps\n if (dcp.isEmpty()) return null\n val getMethods = dcp[0].getMethods\n if (getMethods.isEmpty()) return null\n val constraints = getMethods[0].constraints\n if (constraints.isEmpty()) return null\n val allowedValues = constraints[0].allowedValues\n return if (allowedValues.contains(\"KVP\")) getMethods[0].url else null\n }\n\n private class TileMatrixSet(\n val identifier: String,\n val tileMatrices: List,\n val scaleDenominator: Double,\n val minX: Double,\n val maxY: Double,\n val tileWidth: Int,\n val tileHeight: Int,\n val matrixWidth: Int,\n val matrixHeight: Int,\n )\n}",null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\nopen class WmtsTileFactory(\n private val template: String,\n private val tileMatrixIdentifiers: List,\n private val firstLevelHeight: Int,\n val imageFormat: String\n): TileFactory {\n override val contentType = \"WMTS 1.0.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(level.levelNumber, row, column)?.let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(level: Int, row: Int, column: Int): String? {\n if (level >= tileMatrixIdentifiers.size) {\n logMessage(\n Logger.WARN, \"WmtsTileFactory\", \"urlForTile\",\n \"invalid level for tileMatrixIdentifiers: $level\"\n )\n return null\n }\n\n // flip the row index\n val rowHeight = firstLevelHeight shl level\n val flipRow = rowHeight - row - 1\n return template.replace(TILE_MATRIX_TEMPLATE, tileMatrixIdentifiers[level])\n .replace(TILE_ROW_TEMPLATE, flipRow.toString()).replace(TILE_COL_TEMPLATE, column.toString())\n }\n\n companion object {\n const val TILE_MATRIX_TEMPLATE = \"{TileMatrix}\"\n const val TILE_ROW_TEMPLATE = \"{TileRow}\"\n const val TILE_COL_TEMPLATE = \"{TileCol}\"\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Attribution\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAttribution(\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String? = null,\n val onlineResource: WmsOnlineResource? = null,\n val logoURL: WmsLogoUrl? = null\n) {\n val url get() = onlineResource?.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"AuthorityURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAuthorityUrl(\n val name: String,\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsBoundingBox(\n val CRS: String,\n val minx: Double,\n val maxx: Double,\n val miny: Double,\n val maxy: Double,\n val resx: Double? = null,\n val resy: Double? = null,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"WMS_Capabilities\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapabilities(\n /**\n * Returns the document's version number.\n */\n val version: String = \"1.3.0\",\n /**\n * Returns the document's update sequence.\n */\n val updateSequence: String? = null,\n /**\n * Returns the document's service information.\n */\n val service: WmsService,\n val capability: WmsCapability\n) {\n /**\n * Returns all named layers in the capabilities document.\n */\n val namedLayers get() = capability.layers.flatMap { layer -> layer.namedLayers }\n\n init {\n capability.capabilities = this\n }\n\n fun getNamedLayer(name: String) = namedLayers.firstOrNull { layer -> layer.name == name }\n\n fun getNamedLayers(names: List) = namedLayers.filter { layer -> names.contains(layer.name) }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capability\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapability(\n val request: WmsRequest,\n val layers: List = emptyList(),\n /**\n * Object representation of an Exception element. Pre-allocated to prevent NPE in the event the server does not\n * include an Exception block.\n */\n val exception: WmsException = WmsException()\n) {\n @Transient\n lateinit var capabilities: WmsCapabilities\n\n init {\n layers.forEach { layer -> layer.capability = this }\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactAddress\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactAddress(\n @XmlElement(true)\n @XmlSerialName(\"AddressType\", WMS_NAMESPACE, WMS_PREFIX)\n val addressType: String,\n @XmlElement(true)\n @XmlSerialName(\"Address\", WMS_NAMESPACE, WMS_PREFIX)\n val address: String,\n @XmlElement(true)\n @XmlSerialName(\"City\", WMS_NAMESPACE, WMS_PREFIX)\n val city: String,\n @XmlElement(true)\n @XmlSerialName(\"StateOrProvince\", WMS_NAMESPACE, WMS_PREFIX)\n val stateOrProvince: String,\n @XmlElement(true)\n @XmlSerialName(\"PostCode\", WMS_NAMESPACE, WMS_PREFIX)\n val postCode: String,\n @XmlElement(true)\n @XmlSerialName(\"Country\", WMS_NAMESPACE, WMS_PREFIX)\n val country: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInformation\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactInformation(\n @XmlElement(true)\n @XmlSerialName(\"ContactPosition\", WMS_NAMESPACE, WMS_PREFIX)\n val position: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactVoiceTelephone\", WMS_NAMESPACE, WMS_PREFIX)\n val voiceTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactFacsimileNumber\", WMS_NAMESPACE, WMS_PREFIX)\n val facsimileTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactElectronicMailAddress\", WMS_NAMESPACE, WMS_PREFIX)\n val electronicMailAddress: String? = null,\n val contactAddress: WmsContactAddress? = null,\n val contactPersonPrimary: WmsContactPersonPrimary? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactPersonPrimary\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactPersonPrimary(\n @XmlElement(true)\n @XmlSerialName(\"ContactPerson\", WMS_NAMESPACE, WMS_PREFIX)\n val contactPerson: String,\n @XmlElement(true)\n @XmlSerialName(\"ContactOrganization\", WMS_NAMESPACE, WMS_PREFIX)\n val contactOrganization: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCPType\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDcpType(\n val http: WmsHttp\n) {\n val getHref get() = http.get.onlineResource.url\n val postHref get() = http.post?.onlineResource?.url\n\n @Serializable\n @XmlSerialName(\"HTTP\", WMS_NAMESPACE, WMS_PREFIX)\n data class WmsHttp(\n @XmlSerialName(\"Get\", WMS_NAMESPACE, WMS_PREFIX)\n val get: WmsHttpProtocol,\n @XmlSerialName(\"Post\", WMS_NAMESPACE, WMS_PREFIX)\n val post: WmsHttpProtocol? = null,\n )\n\n @Serializable\n data class WmsHttpProtocol(\n val onlineResource: WmsOnlineResource\n )\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDimension(\n val name: String,\n val units: String,\n val unitSymbol: String? = null,\n val default: String? = null,\n val multipleValues: Boolean? = null,\n val nearestValue: Boolean? = null,\n val current: Boolean? = null,\n @XmlValue(true)\n val value: String? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Exception\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsException(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList()\n)","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"EX_GeographicBoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsGeographicBoundingBox(\n @XmlElement(true)\n @XmlSerialName(\"northBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val north: Double,\n @XmlElement(true)\n @XmlSerialName(\"eastBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val east: Double,\n @XmlElement(true)\n @XmlSerialName(\"southBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val south: Double,\n @XmlElement(true)\n @XmlSerialName(\"westBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val west: Double\n) {\n val geographicBoundingBox get() = fromDegrees(south, west, north - south, east - west)\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Identifier\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsIdentifier(\n val authority: String,\n @XmlValue(true)\n val identifier: String,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsInfoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLayer(\n // Properties of the Layer element\n val layers: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = emptyList(),\n private val _styles: List = emptyList(),\n @XmlSerialName(\"CRS\", WMS_NAMESPACE, WMS_PREFIX)\n private val _referenceSystems: List = emptyList(),\n private val _geographicBoundingBox: WmsGeographicBoundingBox? = null,\n private val _boundingBoxes: List = emptyList(),\n private val _dimensions: List = emptyList(),\n private val _attribution: WmsAttribution? = null,\n private val _authorityUrls: List = emptyList(),\n val identifiers: List = emptyList(),\n val metadataUrls: List = emptyList(),\n @XmlSerialName(\"DataURL\", WMS_NAMESPACE, WMS_PREFIX)\n val dataUrls: List = emptyList(),\n @XmlSerialName(\"FeatureListURL\", WMS_NAMESPACE, WMS_PREFIX)\n val featureListUrls: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"MaxScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _maxScaleDenominator: Double? = null,\n @XmlElement(true)\n @XmlSerialName(\"MinScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _minScaleDenominator: Double? = null,\n // Properties of the Layer attributes\n @XmlSerialName(\"queryable\", WMS_NAMESPACE, WMS_PREFIX)\n val isQueryable: Boolean = false,\n @XmlSerialName(\"cascaded\", WMS_NAMESPACE, WMS_PREFIX)\n private val _cascaded: Int? = null,\n @XmlSerialName(\"opaque\", WMS_NAMESPACE, WMS_PREFIX)\n val isOpaque: Boolean = false,\n @XmlSerialName(\"noSubsets\", WMS_NAMESPACE, WMS_PREFIX)\n val isNoSubsets: Boolean = false,\n @XmlSerialName(\"fixedWidth\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedWidth: Int? = null,\n @XmlSerialName(\"fixedHeight\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedHeight: Int? = null,\n) {\n val namedLayers: List get() = (name?.let { listOf(this) } ?: emptyList()) + layers.flatMap { layer -> layer.namedLayers }\n val styles: List get() = _styles + (parent?.styles ?: emptyList())\n val referenceSystems: List get() = _referenceSystems + (parent?.referenceSystems ?: emptyList())\n val geographicBoundingBox: Sector? get() = _geographicBoundingBox?.geographicBoundingBox ?: parent?.geographicBoundingBox\n val boundingBoxes get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._boundingBoxes.forEach { bBox -> if (!result.containsKey(bBox.CRS)) result[bBox.CRS] = bBox }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val dimensions get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._dimensions.forEach { dimen -> if (!result.containsKey(dimen.name)) result[dimen.name] = dimen }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val attribution: WmsAttribution? get() = _attribution ?: parent?.attribution\n val authorityUrls: List get() = _authorityUrls + (parent?.authorityUrls ?: emptyList())\n val maxScaleDenominator: Double? get() = _maxScaleDenominator ?: parent?.maxScaleDenominator\n val minScaleDenominator: Double? get() = _minScaleDenominator ?: parent?.minScaleDenominator\n val cascaded: Int? get() = _cascaded ?: parent?.cascaded\n val fixedWidth: Int? get() = _fixedWidth ?: parent?.fixedWidth\n val fixedHeight: Int? get() = _fixedHeight ?: parent?.fixedHeight\n @Transient\n var capability: WmsCapability? = null\n get() = field ?: parent?.capability\n @Transient\n var parent: WmsLayer? = null\n\n init {\n layers.forEach { layer -> layer.parent = this }\n }\n\n fun getStyle(name: String) = styles.firstOrNull { style -> style.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LogoURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLogoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: Set = setOf(),\n val onlineResource: WmsOnlineResource,\n val width: Int? = null,\n val height: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"MetadataURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsMetadataUrl(\n val type: String,\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsOnlineResource(\n @XmlSerialName(\"type\", XLINK_NAMESPACE, XLINK_PREFIX)\n val type: String = \"simple\",\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Request\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsRequest(\n @XmlSerialName(\"GetCapabilities\", WMS_NAMESPACE, WMS_PREFIX)\n val getCapabilities: WmsRequestOperation,\n @XmlSerialName(\"GetMap\", WMS_NAMESPACE, WMS_PREFIX)\n val getMap: WmsRequestOperation,\n @XmlSerialName(\"GetFeatureInfo\", WMS_NAMESPACE, WMS_PREFIX)\n val getFeatureInfo: WmsRequestOperation? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsRequestOperation(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val dcpType: WmsDcpType\n) {\n val getUrl get() = dcpType.getHref\n val postUrl get() = dcpType.postHref\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Service\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsService(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Fees\", WMS_NAMESPACE, WMS_PREFIX)\n val fees: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AccessConstraints\", WMS_NAMESPACE, WMS_PREFIX)\n val accessConstraints: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = listOf(),\n val onlineResource: WmsOnlineResource,\n val contactInformation: WmsContactInformation? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxWidth\", WMS_NAMESPACE, WMS_PREFIX)\n val maxWidth: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxHeight\", WMS_NAMESPACE, WMS_PREFIX)\n val maxHeight: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"LayerLimit\", WMS_NAMESPACE, WMS_PREFIX)\n val layerLimit: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"LegendURL\", WMS_NAMESPACE, WMS_PREFIX)\n val legendUrls: List = emptyList(),\n @XmlSerialName(\"StyleSheetURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleSheetUrl: WmsInfoUrl? = null,\n @XmlSerialName(\"StyleURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleUrl: WmsInfoUrl? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Address\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsAddress(\n @XmlSerialName(\"DeliveryPoint\", OWS11_NAMESPACE, OWS11_PREFIX)\n val deliveryPoints: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"City\", OWS11_NAMESPACE, OWS11_PREFIX)\n val city: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AdministrativeArea\", OWS11_NAMESPACE, OWS11_PREFIX)\n val administrativeArea: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PostalCode\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postalCode: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Country\", OWS11_NAMESPACE, OWS11_PREFIX)\n val country: String? = null,\n @XmlSerialName(\"ElectronicMailAddress\", OWS11_NAMESPACE, OWS11_PREFIX)\n val electronicMailAddresses: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsBoundingBox(\n val crs: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"LowerCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val lowerCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"UpperCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val upperCorner: String\n) {\n val sector get() = try {\n val regex = \"\\\\s+\".toRegex()\n val lowerValues = lowerCorner.split(regex)\n val upperValues = upperCorner.split(regex)\n val minLon = lowerValues[0].toDouble()\n val minLat = lowerValues[1].toDouble()\n val maxLon = upperValues[0].toDouble()\n val maxLat = upperValues[1].toDouble()\n Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n } catch (ex: Exception) {\n Logger.logMessage(\n Logger.ERROR, \"OwsBoundingBox\", \"sector\",\n \"Error parsing bounding box corners, LowerCorner=$lowerCorner UpperCorner=$upperCorner\", ex\n )\n null\n }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlDefault\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Constraint\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsConstraint(\n val name: String,\n @XmlSerialName(\"AllowedValues\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Value\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlDefault(\"AnyValue\")\n val allowedValues: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInfo\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsContactInfo(\n val phone: OwsPhone? = null,\n val address: OwsAddress? = null,\n val onlineResource: OwsOnlineResource? = null,\n @XmlElement(true)\n @XmlSerialName(\"HoursOfService\", OWS11_NAMESPACE, OWS11_PREFIX)\n val hoursOfService: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactInstructions\", OWS11_NAMESPACE, OWS11_PREFIX)\n val contactInstructions: String? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsDcp(\n val http: OwsHttp\n) {\n val getMethods get() = http.getMethods\n val postMethods get() = http.postMethods\n}","package earth.worldwind.ogc.wmts\n\nabstract class OwsDescription {\n abstract val title: String?\n abstract val abstract: String?\n abstract val keywords: List\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"HTTP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsHttp(\n @XmlSerialName(\"Get\", OWS11_NAMESPACE, OWS11_PREFIX)\n val getMethods: List = emptyList(),\n @XmlSerialName(\"Post\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postMethods: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class OwsHttpMethod(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val constraints: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOnlineResource(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Operation\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperation(\n val name: String,\n val dcps: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OperationsMetadata\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperationsMetadata(\n val operations: List = emptyList()\n) {\n val getCapabilities get() = operations.firstOrNull { operation -> operation.name == \"GetCapabilities\" }\n val getTile get() = operations.firstOrNull { operation -> operation.name == \"GetTile\" }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Phone\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsPhone(\n @XmlElement(true)\n @XmlSerialName(\"Voice\", OWS11_NAMESPACE, OWS11_PREFIX)\n val voice: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Facsimile\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fax: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceContact\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceContact(\n @XmlElement(true)\n @XmlSerialName(\"IndividualName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val individualName: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PositionName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val positionName: String? = null,\n val contactInfo: OwsContactInfo? = null,\n @XmlElement(true)\n @XmlSerialName(\"Role\", OWS11_NAMESPACE, OWS11_PREFIX)\n val role: String? = null,\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceIdentification\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceIdentification(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"ServiceType\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceType: String,\n @XmlSerialName(\"ServiceTypeVersion\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceTypeVersions: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Fees\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fees: String? = null,\n @XmlSerialName(\"AccessConstraints\", OWS11_NAMESPACE, OWS11_PREFIX)\n val accessConstraints: List = emptyList(),\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceProvider\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceProvider(\n @XmlElement(true)\n @XmlSerialName(\"ProviderName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val providerName: String,\n @XmlSerialName(\"ProviderSite\", OWS11_NAMESPACE, OWS11_PREFIX)\n val onlineResource: OwsOnlineResource? = null,\n val serviceContact: OwsServiceContact\n) {\n val providerSiteUrl get() = onlineResource?.url\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capabilities\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsCapabilities(\n val version: String,\n val updateSequence: String? = null,\n val serviceIdentification: OwsServiceIdentification? = null,\n val serviceProvider: OwsServiceProvider? = null,\n val operationsMetadata: OwsOperationsMetadata? = null,\n val contents: WmtsContents,\n @XmlSerialName(\"Themes\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val themes: List = emptyList(),\n @XmlSerialName(\"ServiceMetadataURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val serviceMetadataUrls: List = emptyList()\n) {\n val layers get() = contents.layers\n val tileMatrixSets get() = contents.tileMatrixSets\n\n init {\n layers.forEach { layer -> layer.capabilities = this }\n }\n\n fun getLayer(identifier: String) = contents.layers.firstOrNull { layer -> layer.identifier == identifier }\n\n fun getTileMatrixSet(identifier: String) = contents.tileMatrixSets.firstOrNull { tms -> tms.identifier == identifier }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Contents\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsContents(\n val layers: List = emptyList(),\n val tileMatrixSets: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsDimension(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"UOM\", OWS11_NAMESPACE, OWS11_PREFIX)\n val unitOfMeasure: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"UnitSymbol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val unitSymbol: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Default\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val valueDefault: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Current\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val current: Boolean? = null,\n @XmlSerialName(\"Value\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val values: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLayer(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val boundingBoxes: List = emptyList(),\n @XmlSerialName(\"WGS84BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\n val wgs84BoundingBox: OwsBoundingBox? = null,\n @XmlSerialName(\"Metadata\", OWS11_NAMESPACE, OWS11_PREFIX)\n val metadata: List = emptyList(),\n val styles: List = emptyList(),\n @XmlSerialName(\"Format\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val formats: List = emptyList(),\n @XmlSerialName(\"InfoFormat\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val infoFormats: List = emptyList(),\n val tileMatrixSetLinks: List = emptyList(),\n val resourceUrls: List = emptyList(),\n val dimensions: List = emptyList(),\n): OwsDescription() {\n val layerSupportedTileMatrixSets get() = tileMatrixSetLinks.flatMap { link ->\n capabilities.tileMatrixSets.filter { set -> set.identifier == link.identifier }\n }\n @Transient\n lateinit var capabilities: WmtsCapabilities\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LegendURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLegendURL(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val format: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ResourceURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsResourceUrl(\n val format: String,\n val resourceType: String,\n val template: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val isDefault: Boolean = false,\n val legendUrls: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTheme(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val themes: List = emptyList(),\n @XmlSerialName(\"LayerRef\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val layerRefs: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrix(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"ScaleDenominator\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val scaleDenominator: Double,\n @XmlElement(true)\n @XmlSerialName(\"TopLeftCorner\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val topLeftCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"TileWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"TileHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileHeight: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixHeight: Int\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixLimits(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixIdentifier: String,\n @XmlElement(true)\n @XmlSerialName(\"MinTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MinTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileCol: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileCol: Int\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSet(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"SupportedCRS\", OWS11_NAMESPACE, OWS11_PREFIX)\n val supportedCrs: String,\n @XmlElement(true)\n @XmlSerialName(\"WellKnownScaleSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val wellKnownScaleSet: String? = null,\n val boundingBox: OwsBoundingBox? = null,\n val tileMatrices: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSetLink\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSetLink(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val identifier: String,\n @XmlSerialName(\"TileMatrixSetLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixSetLimits: List = emptyList()\n)","package earth.worldwind.render\n\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractRenderable @JvmOverloads constructor(override var displayName: String? = null): Renderable {\n override var isEnabled = true\n override var isPickEnabled = true\n override var pickDelegate: Any? = null\n private var userProperties: MutableMap? = null\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun getUserProperty(key: Any) = userProperties?.get(key) as? T\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) { if (isEnabled && (isPickEnabled || !rc.isPickMode)) doRender(rc) }\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\n\nabstract class AbstractSurfaceRenderable(sector: Sector, displayName: String? = null) : AbstractRenderable(displayName) {\n var sector = Sector(sector)\n set(value) {\n field.copy(value)\n invalidateExtent()\n }\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset ) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n\n protected open fun invalidateExtent() {\n heightLimitsTimestamp = 0L\n extentExaggeration = 0.0f\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Color with red, green, blue and alpha components. Each RGB component is a number between 0.0 and 1.0 indicating the\n * component's intensity. The alpha component is a number between 0.0 (fully transparent) and 1.0 (fully opaque)\n * indicating the color's opacity.\n */\nopen class Color @JvmOverloads constructor(\n /**\n * The color's red component.\n */\n var red: Float,\n /**\n * The color's green component.\n */\n var green: Float,\n /**\n * The color's blue component.\n */\n var blue: Float,\n /**\n * The color's alpha component.\n */\n var alpha: Float = 1f\n) {\n /**\n * Constructs a color with red, green, blue and alpha all 1.0.\n */\n constructor(): this(red = 1f, green = 1f, blue = 1f, alpha = 1f)\n\n /**\n * Constructs a color from integer components\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n @JvmOverloads\n constructor(red: Int, green: Int, blue: Int, alpha: Int = 255): this(\n red = red / 255f,\n green = green / 255f,\n blue = blue / 255f,\n alpha = alpha / 255f\n )\n\n /**\n * Constructs a color with components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the components\n */\n constructor(colorInt: Int): this(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue = blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Constructs a color with the components of a specified color.\n *\n * @param color the color specifying the components\n */\n constructor(color: Color): this(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Sets this color to the specified components.\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n fun set(red: Float, green: Float, blue: Float, alpha: Float) = apply {\n this.red = red\n this.green = green\n this.blue = blue\n this.alpha = alpha\n }\n\n /**\n * Sets this color to the components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the new components\n *\n * @return this color with its components set to those of the specified color int\n */\n fun set(colorInt: Int) = set(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue= blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Sets this color to the components of a specified color.\n *\n * @param color the color specifying the new components\n *\n * @return this color with its components set to that of the specified color\n */\n fun copy(color: Color) = set(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Copies this color's components to the specified array. The result is compatible with GLSL uniform vectors, and\n * can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's components\n */\n fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"toArray\", \"missingArray\")\n }\n result[o++] = red\n result[o++] = green\n result[o++] = blue\n result[o] = alpha\n return result\n }\n\n /**\n * Returns this color's components as a color int. Color ints are stored as packed ints as follows: `(alpha <<\n * 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and 255 with 0\n * indicating the component's intensity.\n *\n * @return this color converted to a color int\n */\n fun toColorInt(): Int {\n val r8 = (red * 0xFF).roundToInt()\n val g8 = (green * 0xFF).roundToInt()\n val b8 = (blue * 0xFF).roundToInt()\n val a8 = (alpha * 0xFF).roundToInt()\n return argb(a8, r8, g8, b8)\n }\n\n /**\n * Convert the argb color to its HSV components.\n * hsv[0] is Hue [0 .. 360)\n * hsv[1] is Saturation [0...1]\n * hsv[2] is Value [0...1]\n * @param hsv 3 element array which holds the resulting HSV components.\n */\n fun toHSV(hsv: FloatArray) {\n val v = red.coerceAtLeast(green).coerceAtLeast(blue)\n val diff = v - red.coerceAtMost(green).coerceAtMost(blue)\n var h: Float\n val s: Float\n if (diff == 0f) {\n h = 0f\n s = 0f\n } else {\n s = diff / v\n val rr = (v - red) / 6f / diff + 1f / 2f\n val gg = (v - green) / 6f / diff + 1f / 2f\n val bb = (v - blue) / 6f / diff + 1f / 2f\n\n h = if (red == v) bb - gg\n else if (green == v) (1f / 3f) + rr - bb\n else if (blue == v) (2f / 3f) + gg - rr\n else 0f\n if (h < 0f) h += 1f else if (h > 1f) h -= 1f\n }\n hsv[0] = h * 360f\n hsv[1] = s\n hsv[2] = v\n }\n\n /**\n * Premultiplies this color in place. The RGB components are multiplied by the alpha component.\n *\n * @return this color with its RGB components multiplied by its alpha component\n */\n fun premultiply() = apply {\n red *= alpha\n green *= alpha\n blue *= alpha\n }\n\n /**\n * Premultiplies the specified color and stores the result in this color. This color's RGB components are set to the\n * product of the specified color's RGB components and its alpha component. This color's alpha component is set to\n * the specified color's alpha.\n *\n * @param color the color with components to premultiply and store in this color\n *\n * @return this color set to the premultiplied components of the specified color\n */\n fun premultiplyColor(color: Color) = apply {\n red = color.red * color.alpha\n green = color.green * color.alpha\n blue = color.blue * color.alpha\n alpha = color.alpha\n }\n\n /**\n * Copies this color's premultiplied components to the specified array. The result is compatible with GLSL uniform\n * vectors, and can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's premultiplied components\n */\n fun premultiplyToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"premultiplyToArray\", \"missingArray\")\n }\n result[o++] = red * alpha\n result[o++] = green * alpha\n result[o++] = blue * alpha\n result[o] = alpha\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Color) return false\n return red == other.red && green == other.green && blue == other.blue && alpha == other.alpha\n }\n\n override fun hashCode(): Int {\n var result = red.hashCode()\n result = 31 * result + green.hashCode()\n result = 31 * result + blue.hashCode()\n result = 31 * result + alpha.hashCode()\n return result\n }\n\n override fun toString() = \"Color(red=$red, green=$green, blue=$blue, alpha=$alpha)\"\n\n /**\n * Returns a string representation of this color, indicating the byte values corresponding to this color's\n * floating-point component values.\n *\n * @returns Byte string\n */\n fun toByteString(): String {\n val rb = (red * 255).roundToInt()\n val gb = (green * 255).roundToInt()\n val bb = (blue * 255).roundToInt()\n val ab = (alpha * 255).roundToInt()\n return \"($rb,$gb,$bb,$ab)\"\n }\n\n /**\n * Create a hex color string that CSS can use. Optionally, inhibit capturing alpha,\n * because some uses reject a four-component color specification.\n *\n * @param isUsingAlpha Enable the use of an alpha component.\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @returns A color string suitable for CSS.\n */\n fun toHexString(isUsingAlpha: Boolean = false, argb: Boolean = false): String {\n // Use Math.ceil() to get 0.75 to map to 0xc0. This is important if the display is dithering.\n val redHex = ceil(red * 255).toInt().toString(16)\n val greenHex = ceil(green * 255).toInt().toString(16)\n val blueHex = ceil(blue * 255).toInt().toString(16)\n val alphaHex = ceil(alpha * 255).toInt().toString(16)\n\n var result = \"#\"\n if (isUsingAlpha && argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n result += if (redHex.length < 2) (\"0$redHex\") else redHex\n result += if (greenHex.length < 2) (\"0$greenHex\") else greenHex\n result += if (blueHex.length < 2) (\"0$blueHex\") else blueHex\n if (isUsingAlpha && !argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n return result\n }\n\n /**\n * Create a rgba color string that conforms to CSS Color Module Level 3 specification.\n * @returns A color string suitable for CSS.\n */\n fun toCssColorString(): String {\n val red = (red * 255).roundToInt()\n val green = (green * 255).roundToInt()\n val blue = (blue * 255).roundToInt()\n\n // Per the CSS Color Module Level 3 specification, alpha is expressed as floating point value between 0 - 1\n return \"rgba($red, $green, $blue, $alpha)\"\n }\n\n companion object {\n /**\n * @param hexString representing hex value\n * (formatted \"0xRRGGBB\" i.e. \"0xFFFFFF\")\n * OR\n * formatted \"0xAARRGGBB\" i.e. \"0x00FFFFFF\" for a color with an alpha value\n * I will also put up with \"RRGGBB\" and \"AARRGGBB\" without the starting \"0x\"\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @return color represented by hex string\n */\n fun fromHexString(hexString: String, argb: Boolean = false): Color {\n val hexValue = when {\n hexString[0] == '#' -> hexString.substring(1)\n hexString.substring(0, 2).equals(\"0x\", true) -> hexString.substring(2)\n else -> hexString\n }.uppercase()\n\n val length = hexValue.length\n\n return if (length == 8 || length == 6) {\n val hexAlphabet = \"0123456789ABCDEF\"\n val value = intArrayOf(0, 0, 0, 0)\n for ((k, i) in (0 until length step 2).withIndex()) {\n val int1 = hexAlphabet.indexOf(hexValue[i])\n val int2 = hexAlphabet.indexOf(hexValue[i + 1])\n value[k] = int1 * 16 + int2\n }\n\n when (length) {\n 8 -> if (argb) Color(value[1],value[2],value[3],value[0]) else Color(value[0],value[1],value[2],value[3])\n 6 -> Color(value[0],value[1],value[2])\n else -> error(\"Bad hex value: $hexString\")\n }\n } else error(\"Bad hex value: $hexString\")\n }\n\n /**\n * Return the alpha component of a color int. This is the same as saying\n * color >>> 24\n */\n private fun alpha(color: Int) = color ushr 24\n\n /**\n * Return the red component of a color int. This is the same as saying\n * (color >> 16) & 0xFF\n */\n private fun red(color: Int) = color shr 16 and 0xFF\n\n /**\n * Return the green component of a color int. This is the same as saying\n * (color >> 8) & 0xFF\n */\n private fun green(color: Int) = color shr 8 and 0xFF\n\n /**\n * Return the blue component of a color int. This is the same as saying\n * color & 0xFF\n */\n private fun blue(color: Int) = color and 0xFF\n\n /**\n * Return a color-int from alpha, red, green, blue components.\n * These component values should be \\([0..255]\\), but there is no\n * range check performed, so if they are out of range, the\n * returned color is undefined.\n * @param alpha Alpha component \\([0..255]\\) of the color\n * @param red Red component \\([0..255]\\) of the color\n * @param green Green component \\([0..255]\\) of the color\n * @param blue Blue component \\([0..255]\\) of the color\n */\n private fun argb(alpha: Int, red: Int, green: Int, blue: Int) = alpha shl 24 or (red shl 16) or (green shl 8) or blue\n }\n}","package earth.worldwind.render\n\nenum class FontWeight { NORMAL, BOLD, ITALIC }","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.*\n\nopen class Framebuffer : RenderResource {\n protected var framebufferName = KglFramebuffer.NONE\n protected val attachedTextures = mutableMapOf()\n\n override fun release(dc: DrawContext) {\n if (framebufferName.isValid()) {\n deleteFramebuffer(dc)\n attachedTextures.clear()\n }\n }\n\n fun bindFramebuffer(dc: DrawContext): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) dc.bindFramebuffer(framebufferName)\n return framebufferName.isValid()\n }\n\n fun attachTexture(dc: DrawContext, texture: Texture, attachment: Int): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) {\n framebufferTexture(dc, texture, attachment)\n attachedTextures[attachment] = texture\n }\n return framebufferName.isValid()\n }\n\n fun getAttachedTexture(attachment: Int) = attachedTextures[attachment] ?: error(\"Invalid attachment type\")\n\n fun isFramebufferComplete(dc: DrawContext) = framebufferStatus(dc) == GL_FRAMEBUFFER_COMPLETE\n\n protected open fun createFramebuffer(dc: DrawContext) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Create the OpenGL framebuffer object.\n framebufferName = dc.gl.createFramebuffer()\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, framebufferName)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer)\n }\n }\n\n protected open fun deleteFramebuffer(dc: DrawContext) {\n dc.gl.deleteFramebuffer(framebufferName)\n framebufferName = KglFramebuffer.NONE\n }\n\n protected open fun framebufferTexture(dc: DrawContext, texture: Texture?, attachment: Int) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Attach the texture to the framebuffer object, or remove the attachment if the texture is null.\n val textureName = texture?.getTextureName(dc) ?: KglTexture.NONE\n dc.gl.framebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, textureName, 0 /*level*/)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n\n protected open fun framebufferStatus(dc: DrawContext): Int {\n val currentFramebuffer = dc.currentFramebuffer\n return try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Get the OpenGL framebuffer object status code.\n dc.gl.checkFramebufferStatus(GL_FRAMEBUFFER)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.draw.DrawableTerrain\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.AltitudeMode.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.shape.TextAttributes\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.SynchronizedPool\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.math.tan\n\nopen class RenderContext {\n companion object {\n private const val MAX_PICKED_OBJECT_ID = 0xFFFFFF\n }\n\n lateinit var globe: Globe\n lateinit var terrainTessellator: Tessellator\n lateinit var terrain: Terrain\n lateinit var layers: LayerList\n lateinit var currentLayer: Layer\n lateinit var camera: Camera\n lateinit var renderResourceCache: RenderResourceCache\n var densityFactor = 1f\n var verticalExaggeration = 1.0\n var horizonDistance = 0.0\n var atmosphereAltitude = 0.0\n var viewingDistance = 0.0\n var pixelSize = 0.0\n var lookAtPosition: Position? = null\n var globeState: Globe.State? = null\n var elevationModelTimestamp = 0L\n var cameraPoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n val frustum = Frustum()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n var isRedrawRequested = false\n protected set\n private var pickedObjectId = 0\n private var pixelSizeFactor = 0.0\n private val userProperties = mutableMapOf()\n val drawablePools = mutableMapOf>()\n private val textRenderer = TextRenderer(this)\n private val scratchTextCacheKey = TextCacheKey()\n private val scratchVector = Vec3()\n\n val tessellator: GLUtessellator by lazy { GLU.gluNewTess() }\n\n open fun reset() {\n densityFactor = 1f\n verticalExaggeration = 1.0\n horizonDistance = 0.0\n atmosphereAltitude = 0.0\n viewingDistance = 0.0\n pixelSize = 0.0\n lookAtPosition = null\n globeState = null\n elevationModelTimestamp = 0L\n cameraPoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n frustum.setToUnitFrustum()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pickedObjectId = 0\n isRedrawRequested = false\n pixelSizeFactor = 0.0\n userProperties.clear()\n }\n\n fun requestRedraw() { isRedrawRequested = true }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n fun pixelSizeAtDistance(distance: Double): Double {\n if (pixelSizeFactor == 0.0) { // cache the scaling factor used to convert distances to pixel sizes\n val fov = camera.fieldOfView\n val tanFov2 = tan(fov.inRadians * 0.5)\n pixelSizeFactor = 2 * tanFov2 / viewport.height\n }\n return distance * pixelSizeFactor\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. The resultant screen point is in OpenGL screen coordinates,\n * with the origin in the bottom-left corner and axes that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param modelPoint the Cartesian point to project\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(modelPoint: Vec3, result: Vec3): Boolean {\n // TODO consider consolidating this with Matrix4.project and moving projectWithDepth to Matrix4\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This\n // inverts the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelviewProjection.m\n var x = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n var y = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n var z = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val w = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates, applying an offset to the point's projected depth value. The\n * resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes that\n * extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *
\n * The depth offset may be any real number and is typically used to move the screenPoint slightly closer to the\n * user's eye in order to give it visual priority over nearby objects or terrain. An offset of zero has no effect.\n * An offset less than zero brings the screenPoint closer to the eye, while an offset greater than zero pushes the\n * projected screen point away from the eye.\n *
\n * Applying a non-zero depth offset has no effect on whether the model point is clipped by this method or by WebGL.\n * Clipping is performed on the original model point, ignoring the depth offset. The final depth value after\n * applying the offset is clamped to the range [0,1].\n *\n * @param modelPoint the Cartesian point to project\n * @param depthOffset the amount of depth offset to apply\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun projectWithDepth(modelPoint: Vec3, depthOffset: Double, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates. The eye coordinate and the clip\n // coordinate are transformed separately in order to reuse the eye coordinate below.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelview.m\n val ex = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n val ey = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n val ez = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val ew = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n\n // Transform the point from eye coordinates to clip coordinates.\n val p = projection.m\n var x = p[0] * ex + p[1] * ey + p[2] * ez + p[3] * ew\n var y = p[4] * ex + p[5] * ey + p[6] * ez + p[7] * ew\n var z = p[8] * ex + p[9] * ey + p[10] * ez + p[11] * ew\n val w = p[12] * ex + p[13] * ey + p[14] * ez + p[15] * ew\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Transform the Z eye coordinate to clip coordinates again, this time applying a depth offset. The depth\n // offset is applied only to the matrix element affecting the projected Z coordinate, so we inline the\n // computation here instead of re-computing X, Y, Z and W in order to improve performance. See\n // Matrix4.offsetProjectionDepth for more information on the effect of this offset.\n z = p[8] * ex + p[9] * ey + p[10] * ez * (1 + depthOffset) + p[11] * ew\n z /= w\n\n // Clamp the point to the near and far clip planes. We know the point's original Z value is contained within\n // the clip planes, so we limit its offset z value to the range [-1, 1] in order to ensure it is not clipped\n // by WebGL. In clip coordinates the near and far clip planes are perpendicular to the Z axis and are\n // located at -1 and 1, respectively.\n z = z.coerceIn(-1.0, 1.0)\n\n // Convert the point from clip coordinates to the range [0, 1]. This enables the XY coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range [0, 1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Converts a geographic [Position] to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param position the specified position\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n position: Position, altitudeMode: AltitudeMode, result: Vec3\n ) = geographicToCartesian(position.latitude, position.longitude, position.altitude, altitudeMode, result)\n\n /**\n * Converts a geographic position to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode, result: Vec3\n ): Vec3 {\n when (altitudeMode) {\n ABSOLUTE -> globe.geographicToCartesian(latitude, longitude, altitude * verticalExaggeration, result)\n CLAMP_TO_GROUND -> if (!terrain.surfacePoint(latitude, longitude, result)) globe.run {\n // Use elevation model height as a fallback\n val elevation = getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n RELATIVE_TO_GROUND -> if (terrain.surfacePoint(latitude, longitude, result)) {\n // Offset along the normal vector at the terrain surface point.\n if (altitude != 0.0) globe.geographicToCartesianNormal(latitude, longitude, scratchVector).also {\n result.add(scratchVector.multiply(altitude))\n }\n } else globe.run {\n // Use elevation model height as a fallback\n val elevation = altitude + getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n }\n return result\n }\n\n // TODO redesign ShaderProgram to operate as a resource accessible from DrawContext\n // TODO created automatically on OpenGL thread, unless the caller wants to explicitly create a program\n inline fun getShaderProgram(builder: () -> T): T {\n val key = T::class\n return renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.programLength) } } as T\n }\n\n fun getTexture(imageSource: ImageSource, imageOptions: ImageOptions?, retrieve: Boolean = true) =\n renderResourceCache.run { get(imageSource) ?: if (retrieve) retrieveTexture(imageSource, imageOptions) else null } as Texture?\n\n inline fun getBufferObject(key: Any, builder: () -> T) =\n renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.byteCount) } } as T\n\n fun getText(text: String?, attributes: TextAttributes, render: Boolean = true) = renderResourceCache.run {\n scratchTextCacheKey.text = text\n scratchTextCacheKey.attributes = attributes\n // Use scratch key on get operation to avoid unnecessary object creation on each text render on each frame\n get(scratchTextCacheKey) as Texture? ?: if (render) textRenderer.renderText(text, attributes)?.also {\n // Use new text cache key and copy attributes on put operation to avoid cache issues on attributes modification\n put(TextCacheKey(text, TextAttributes(attributes)), it, it.byteCount)\n } else null\n }\n\n fun offerBackgroundDrawable(drawable: Drawable) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.BACKGROUND, 0.0)\n }\n\n fun offerSurfaceDrawable(drawable: Drawable, zOrder: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SURFACE, zOrder)\n }\n\n fun offerShapeDrawable(drawable: Drawable, cameraDistance: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SHAPE, -cameraDistance) // order by descending distance to the viewer\n }\n\n fun offerDrawableTerrain(drawable: DrawableTerrain, sortOrder: Double) {\n drawableTerrain?.offerDrawable(drawable, DrawableGroup.SURFACE, sortOrder)\n }\n\n fun sortDrawables() {\n drawableQueue?.sortDrawables()\n drawableTerrain?.sortDrawables()\n }\n\n val drawableCount get() = drawableQueue?.count ?: 0\n\n @Suppress(\"UNCHECKED_CAST\")\n inline fun getDrawablePool(): Pool {\n val key = T::class\n // use SynchronizedPool; acquire and are release may be called in separate threads\n return drawablePools[key] as Pool? ?: SynchronizedPool().also { drawablePools[key] = it }\n }\n\n fun offerPickedObject(pickedObject: PickedObject) { pickedObjects?.offerPickedObject(pickedObject) }\n\n fun nextPickedObjectId(): Int {\n if (++pickedObjectId > MAX_PICKED_OBJECT_ID) pickedObjectId = 1\n return pickedObjectId\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun getUserProperty(key: Any) = userProperties[key] as? T\n\n fun putUserProperty(key: Any, value: Any) = userProperties.put(key, value)\n\n fun removeUserProperty(key: Any) = userProperties.remove(key)\n\n fun hasUserProperty(key: Any) = userProperties.containsKey(key)\n\n protected data class TextCacheKey(\n var text: String? = null,\n var attributes: TextAttributes? = null\n )\n}","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport earth.worldwind.util.math.powerOfTwoCeiling\n\nopen class Texture(val width: Int, val height: Int, protected val format: Int, protected val type: Int, protected val isRT: Boolean = false) : RenderResource {\n companion object {\n protected fun estimateByteCount(width: Int, height: Int, format: Int, type: Int, hasMipMap: Boolean): Int {\n require(width >= 0 && height >= 0) {\n logMessage(ERROR, \"Texture\", \"estimateByteCount\", \"invalidWidthOrHeight\")\n }\n // Compute the number of bytes per row of texture image level 0. Use a default of 32 bits per pixel when either\n // of the bitmap's type or internal format are unrecognized. Adjust the width to the next highest power-of-two\n // to better estimate the memory consumed by non-power-of-two images.\n val widthPow2 = powerOfTwoCeiling(width)\n val bytesPerRow = when (type) {\n GL_UNSIGNED_BYTE -> when (format) {\n GL_ALPHA, GL_LUMINANCE -> widthPow2 // 8 bits per pixel\n GL_LUMINANCE_ALPHA -> widthPow2 * 2 // 16 bits per pixel\n GL_RGB -> widthPow2 * 3 // 24 bits per pixel\n GL_RGBA -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT_5_6_5,\n GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1 -> widthPow2 * 2 // 16 bits per pixel\n GL_UNSIGNED_INT -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n\n // Compute the number of bytes for the entire texture image level 0 (i.e. bytePerRow * numRows). Adjust the\n // height to the next highest power-of-two to better estimate the memory consumed by non power-of-two images.\n val heightPow2 = powerOfTwoCeiling(height)\n var byteCount = bytesPerRow * heightPow2\n\n // If the texture will have mipmaps, add 1/3 to account for the bytes used by texture image level 1 through\n // texture image level N.\n if (hasMipMap) byteCount += byteCount / 3\n return byteCount\n }\n }\n\n val coordTransform = Matrix3()\n val byteCount get() = estimateByteCount(width, height, format, type, hasMipMap)\n protected var name = KglTexture.NONE\n protected var parameters: MutableMap? = null\n protected open val hasMipMap = false\n private var pickMode = false\n\n fun getTexParameter(name: Int) = parameters?.get(name)?:0\n\n fun setTexParameter(name: Int, param: Int) {\n val parameters = parameters ?: mutableMapOf().also { parameters = it }\n parameters[name] = param\n }\n\n override fun release(dc: DrawContext) {\n if (name.isValid()) deleteTexture(dc)\n }\n\n fun getTextureName(dc: DrawContext): KglTexture {\n if (!name.isValid()) createTexture(dc)\n return name\n }\n\n fun bindTexture(dc: DrawContext): Boolean {\n if (!name.isValid()) createTexture(dc)\n if (name.isValid()) dc.bindTexture(name)\n if (name.isValid() && pickMode != dc.isPickMode) {\n setTexParameters(dc)\n pickMode = dc.isPickMode\n }\n return name.isValid()\n }\n\n protected open fun createTexture(dc: DrawContext) {\n val currentTexture = dc.currentTexture\n try {\n // Create the OpenGL texture 2D object.\n name = dc.gl.createTexture()\n dc.gl.bindTexture(GL_TEXTURE_2D, name)\n\n // Specify the texture object's image data\n allocTexImage(dc)\n\n // Configure the texture object's parameters.\n setTexParameters(dc)\n } finally {\n // Restore the current OpenGL texture object binding.\n dc.gl.bindTexture(GL_TEXTURE_2D, currentTexture)\n }\n }\n\n protected open fun deleteTexture(dc: DrawContext) {\n dc.gl.deleteTexture(name)\n name = KglTexture.NONE\n }\n\n protected open fun allocTexImage(dc: DrawContext) {\n // Following line of code is a dirty hack to disable AFBC compression on Mali GPU driver,\n // which cause huge memory leak during surface shapes drawing on terrain textures.\n if (isRT and dc.gl.hasMaliOOMBug) dc.gl.texImage2D(GL_TEXTURE_2D, 0, format, 1, 1, 0, format, type, null)\n\n // Allocate texture memory for the OpenGL texture 2D object. The texture memory is initialized with 0.\n dc.gl.texImage2D(\n GL_TEXTURE_2D, 0 /*level*/, format, width, height, 0 /*border*/, format, type, null /*pixels*/\n )\n }\n\n // TODO refactor setTexParameters to apply all configured tex parameters\n // TODO apply defaults only when no parameter is configured\n // TODO consider simplifying the defaults and requiring that layers/shapes specify what they want\n protected open fun setTexParameters(dc: DrawContext) {\n var param: Int\n\n // Configure the OpenGL texture minification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MIN_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param)\n else -> dc.gl.texParameteri(\n GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, if (hasMipMap) GL_LINEAR_MIPMAP_LINEAR else GL_LINEAR\n )\n }\n\n // Configure the OpenGL texture magnification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MAG_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param)\n else -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)\n }\n\n // Configure the OpenGL texture wrapping function for texture coordinate S. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_S).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)\n\n // Configure the OpenGL texture wrapping function for texture coordinate T. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_T).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Range\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.KglBuffer\n\nabstract class AbstractBufferObject(protected val target: Int, val byteCount: Int) : RenderResource {\n val ranges = mutableMapOf()\n protected var id = KglBuffer.NONE\n\n override fun release(dc: DrawContext) { deleteBufferObject(dc) }\n\n open fun bindBuffer(dc: DrawContext): Boolean {\n if (id.isValid()) dc.bindBuffer(target, id)\n return id.isValid()\n }\n\n protected open fun loadBuffer(dc: DrawContext) {\n val currentBuffer = dc.currentBuffer(target)\n try {\n // Create the OpenGL buffer object.\n if (!id.isValid()) createBufferObject(dc)\n // Make the OpenGL buffer object bound to the specified target.\n dc.bindBuffer(target, id)\n // Load the current NIO buffer as the OpenGL buffer object's data.\n loadBufferObjectData(dc)\n } catch (e: Exception) {\n // The NIO buffer could not be used as buffer data for an OpenGL buffer object. Delete the buffer object\n // to ensure that calls to bindBuffer fail.\n deleteBufferObject(dc)\n logMessage(\n ERROR, \"BufferObject\", \"loadBuffer\", \"Exception attempting to load buffer data\", e\n )\n } finally {\n // Restore the current OpenGL buffer object binding.\n dc.bindBuffer(target, currentBuffer)\n }\n }\n\n protected open fun createBufferObject(dc: DrawContext) { id = dc.gl.createBuffer() }\n\n protected open fun deleteBufferObject(dc: DrawContext) {\n if (id.isValid()) {\n dc.gl.deleteBuffer(id)\n id = KglBuffer.NONE\n }\n }\n\n protected abstract fun loadBufferObjectData(dc: DrawContext)\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.util.kgl.KglBuffer\nimport earth.worldwind.draw.DrawContext\n\nopen class BufferPool(\n protected val target: Int,\n protected val usage: Int,\n protected val blockSize: Int = DEFAULT_BLOCK_SIZE,\n protected val blockCount: Int = DEFAULT_BLOCK_COUNT\n) {\n protected val buffers = Array(blockCount) { KglBuffer.NONE }\n protected var index = 0\n protected var offset = 0\n\n fun reset() {\n index = 0\n offset = 0\n }\n\n fun contextLost() {\n reset()\n buffers.fill(KglBuffer.NONE)\n }\n\n open fun bindBuffer(dc: DrawContext, sourceData: FloatArray): Int {\n if (blockSize < sourceData.size * Float.SIZE_BYTES) return -1\n if (!buffers[index].isValid() && !appendBuffer(dc)) return -1\n\n if (!enoughSpace(sourceData)) {\n index = (index + 1) % blockCount;\n if (!appendBuffer(dc)) return -1\n }\n\n dc.gl.bindBuffer(target, buffers[index])\n\n return subAllocAndPopulate(dc, sourceData)\n }\n\n private fun enoughSpace(sourceData: FloatArray) = offset + sourceData.size * Float.SIZE_BYTES <= blockSize\n\n private fun appendBuffer(dc: DrawContext): Boolean {\n if (!buffers[index].isValid() && !allocNewBuffer(dc)) return false\n offset = 0\n return true\n }\n\n private fun allocNewBuffer(dc: DrawContext): Boolean {\n val id = dc.gl.createBuffer()\n if (!id.isValid()) return false\n dc.gl.bindBuffer(target, id)\n dc.gl.bufferData(target, blockSize, null as FloatArray?, usage) // Only reserve memory\n dc.gl.bindBuffer(target, KglBuffer.NONE)\n buffers[index] = id\n return id.isValid()\n }\n\n private fun subAllocAndPopulate(dc: DrawContext, sourceData: FloatArray): Int {\n val bufferSize = sourceData.size * Float.SIZE_BYTES\n if (offset + bufferSize > blockSize) return -1\n dc.gl.bufferSubData(target, offset, bufferSize, sourceData) // Update part of the buffer\n val result = offset\n offset += bufferSize\n return result\n }\n\n companion object {\n const val DEFAULT_BLOCK_SIZE = 64 * 1024 // 64 KB\n const val DEFAULT_BLOCK_COUNT = 64\n }\n}\n","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class FloatBufferObject(\n target: Int, array: FloatArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Float.SIZE_BYTES) {\n protected var array: FloatArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class IntBufferObject(\n target: Int, array: IntArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Int.SIZE_BYTES) {\n protected var array: IntArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class ShortBufferObject(\n target: Int, array: ShortArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Short.SIZE_BYTES) {\n protected var array: ShortArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.image\n\n/**\n * Image config indicates the in-memory representation for images displayed by WorldWind components. Images are\n * typically represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do\n * not require an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration.\n * Accepted values are [RGBA_8888] and [RGB_565].\n */\nenum class ImageConfig {\n /**\n * Indicating 32-bit RGBA_8888 image configuration.\n */\n RGBA_8888,\n /**\n * Indicating 16-bit RGBA_565 image configuration.\n */\n RGB_565;\n}","package earth.worldwind.render.image\n\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Options for images displayed by WorldWind components.\n */\nopen class ImageOptions @JvmOverloads constructor(\n /**\n * Indicates the in-memory configuration for images displayed by WorldWind components. By default, images are\n * represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do not require\n * an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration. Accepted values are\n * [ImageConfig.RGBA_8888] and [ImageConfig.RGB_565].\n */\n var imageConfig: ImageConfig = ImageConfig.RGBA_8888\n) {\n /**\n * Indicates the image sampling algorithm used by WorldWind to display images that appear larger or smaller on\n * screen than their native resolution. Accepted values are [ResamplingMode.BILINEAR] and [ResamplingMode.NEAREST_NEIGHBOR].\n */\n var resamplingMode = ResamplingMode.BILINEAR\n /**\n * Indicates how WorldWind displays the contents of an image when attempting to draw a region outside of the image\n * bounds. Accepted values are [WrapMode.CLAMP] and [WrapMode.REPEAT].\n */\n var wrapMode = WrapMode.CLAMP\n /**\n * Initial width for image that has no dimensions (e.g. SVG image)\n */\n var initialWidth = 0\n /**\n * Initial height for image that has no dimensions (e.g. SVG image)\n */\n var initialHeight = 0\n}","package earth.worldwind.render.image\n\n/**\n * Resampling mode indicates the image sampling algorithm used by WorldWind to display images that appear larger or\n * smaller on screen than their native resolution. Accepted values are [BILINEAR] and [NEAREST_NEIGHBOR].\n */\nenum class ResamplingMode {\n /**\n * Indicating bilinear image sampling.\n */\n BILINEAR,\n /**\n * Indicating nearest neighbor image sampling.\n */\n NEAREST_NEIGHBOR;\n}","package earth.worldwind.render.image\n\n/**\n * Wrap mode indicates how WorldWind displays the contents of an image when attempting to draw a region outside of\n * the image bounds. Accepted values are [CLAMP] and [REPEAT].\n */\nenum class WrapMode {\n /**\n * Indicating that the image's edge pixels should be displayed outside of the image bounds.\n */\n CLAMP,\n /**\n * Indicating that the image should display as a repeating pattern outside of the image bounds.\n */\n REPEAT;\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\n\n/**\n * Represents an OpenGL shading language (GLSL) shader program and provides methods for identifying and accessing shader\n * variables. Shader programs are configured by calling `setProgramSources` to specify the the GLSL vertex\n * shader and fragment shader source code, then made current by calling `useProgram`.\n */\nabstract class AbstractShaderProgram: RenderResource {\n companion object {\n protected const val VERTEX_SHADER = 0\n protected const val FRAGMENT_SHADER = 1\n }\n\n protected abstract var programSources: Array\n protected abstract val attribBindings: Array\n protected lateinit var gl : Kgl\n private set\n /**\n * Indicates the approximate size of the OpenGL resources referenced by this GPU program.\n */\n val programLength get() = programSources.sumOf{str -> str.length}\n\n /**\n * Indicates the OpenGL program object associated with this GPU program.\n */\n protected var program = KglProgram.NONE\n protected var mustBuildProgram = true\n\n override fun release(dc: DrawContext) = deleteProgram(dc)\n\n fun useProgram(dc: DrawContext): Boolean {\n if (mustBuildProgram) {\n // Clear the program's build dirty bit.\n mustBuildProgram = false\n\n // Remove any existing GLSL program.\n if (program.isValid()) deleteProgram(dc)\n\n // Compile and link the GLSL program sources.\n buildProgram(dc)\n\n // Free memory, occupied by program sources\n programSources = emptyArray()\n\n // Give subclasses an opportunity to initialize default GLSL uniform values.\n if (program.isValid()) {\n val currentProgram = dc.currentProgram\n try {\n dc.useProgram(program)\n initProgram(dc)\n } finally {\n dc.useProgram(currentProgram)\n }\n }\n }\n if (program.isValid()) dc.useProgram(program)\n return program.isValid()\n }\n\n protected open fun buildProgram(dc: DrawContext) {\n val vs = dc.gl.createShader(GL_VERTEX_SHADER)\n dc.gl.shaderSource(vs, programSources[VERTEX_SHADER])\n dc.gl.compileShader(vs)\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(vs)\n dc.gl.deleteShader(vs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL vertex shader \\n$msg\"\n )\n return\n }\n val fs = dc.gl.createShader(GL_FRAGMENT_SHADER)\n dc.gl.shaderSource(fs, programSources[FRAGMENT_SHADER])\n dc.gl.compileShader(fs)\n\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(fs)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL fragment shader \\n$msg\"\n )\n return\n }\n val program = dc.gl.createProgram()\n dc.gl.attachShader(program, vs)\n dc.gl.attachShader(program, fs)\n for (i in attribBindings.indices) dc.gl.bindAttribLocation(program, i, attribBindings[i])\n dc.gl.linkProgram(program)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n if (dc.gl.getProgramParameteri(program, GL_LINK_STATUS) != GL_TRUE) {\n val msg = dc.gl.getProgramInfoLog(program)\n dc.gl.deleteProgram(program)\n logMessage(ERROR, \"ShaderProgram\", \"buildProgram\", \"Error linking GL program \\n$msg\")\n return\n }\n this.program = program\n }\n\n protected open fun initProgram(dc: DrawContext) { gl = dc.gl }\n\n protected open fun deleteProgram(dc: DrawContext) {\n if (program.isValid()) {\n dc.gl.deleteProgram(program)\n program = KglProgram.NONE\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class BasicShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n\n void main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class SightlineProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform mat4 slpMatrix[2];\n\n attribute vec4 vertexPoint;\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n uniform highp sampler2D depthSampler;\n #else\n precision mediump float;\n uniform mediump sampler2D depthSampler;\n #endif\n\n uniform float range;\n uniform vec4 color[2];\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n const vec3 minusOne = vec3(-1.0, -1.0, -1.0);\n const vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\n void main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var slpMatrixId = KglUniformLocation.NONE\n protected var rangeId = KglUniformLocation.NONE\n protected var depthSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n private val array = FloatArray(32)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n slpMatrixId = gl.getUniformLocation(program, \"slpMatrix\")\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n rangeId = gl.getUniformLocation(program, \"range\")\n gl.uniform1f(rangeId, 0f)\n colorId = gl.getUniformLocation(program, \"color\")\n gl.uniform4f(colorId, 1f, 1f, 1f, 1f)\n depthSamplerId = gl.getUniformLocation(program, \"depthSampler\")\n gl.uniform1i(depthSamplerId, 0) // GL_TEXTURE0\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadSightlineProjection(projection: Matrix4, sightline: Matrix4) {\n projection.transposeToArray(array, 0)\n sightline.transposeToArray(array, 16)\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n }\n\n fun loadRange(range: Float) {\n gl.uniform1f(rangeId, range)\n }\n\n fun loadColor(visibleColor: Color, occludedColor: Color) {\n visibleColor.premultiplyToArray(array, 0)\n occludedColor.premultiplyToArray(array, 4)\n gl.uniform4fv(colorId, 2, array, 0)\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating surface tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform\n// TODO index to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class SurfaceTextureProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix[2];\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n val texCoordMatrix = arrayOf(Matrix3(), Matrix3())\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n private val texCoordMatrixArray = FloatArray(9 * 2)\n private val color = Color()\n private var opacity = 1.0f\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, 0) // disable pick mode\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, 0) // disable texture\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(texCoordMatrixArray, 0) // 3 x 3 identity matrix\n Matrix3().transposeToArray(texCoordMatrixArray, 9) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n color.set(1f, 1f, 1f, 1f) // opaque white\n gl.uniform4f(colorId, color.red, color.green, color.blue, color.alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) { gl.uniform1i(enablePickModeId, if (enable) 1 else 0) }\n\n fun enableTexture(enable: Boolean) { gl.uniform1i(enableTextureId, if (enable) 1 else 0) }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun loadTexCoordMatrix() {\n texCoordMatrix[0].transposeToArray(texCoordMatrixArray, 0)\n texCoordMatrix[1].transposeToArray(texCoordMatrixArray, 9)\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class TriangleShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform float lineWidth;\n uniform float invMiterLengthCutoff;\n uniform vec2 screen;\n uniform bool enableTexture;\n uniform bool enableOneVertexMode;\n uniform mat3 texCoordMatrix;\n \n attribute vec4 pointA;\n attribute vec4 pointB;\n attribute vec4 pointC;\n attribute vec2 vertexTexCoord;\n \n varying vec2 texCoord;\n \n void main() {\n if (enableOneVertexMode) {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vec4(pointA.xyz, 1.0);\n } else {\n /* Transform the vertex position by the modelview-projection matrix. */\n vec4 pointAScreen = mvpMatrix * vec4(pointA.xyz, 1);\n vec4 pointBScreen = mvpMatrix * vec4(pointB.xyz, 1);\n vec4 pointCScreen = mvpMatrix * vec4(pointC.xyz, 1);\n float corner = pointB.w;\n \n pointAScreen = pointAScreen / pointAScreen.w;\n pointBScreen = pointBScreen / pointBScreen.w;\n pointCScreen = pointCScreen / pointCScreen.w;\n \n vec2 eps = vec2(2.0 / screen.x, 2.0 / screen.y);\n eps *= 0.1;\n \n if (all(lessThanEqual(abs(pointBScreen.xy - pointAScreen.xy), eps))) {\n pointAScreen.xy = pointBScreen.xy + normalize(pointBScreen.xy - pointCScreen.xy);\n }\n if (all(lessThanEqual(abs(pointBScreen.xy - pointCScreen.xy), eps))) {\n pointCScreen.xy = pointBScreen.xy + normalize(pointBScreen.xy - pointAScreen.xy);\n }\n if (all(lessThanEqual(abs(pointAScreen.xy - pointCScreen.xy), eps))) {\n pointCScreen.xy = pointBScreen.xy + normalize(pointBScreen.xy - pointAScreen.xy);\n }\n \n vec2 AB = normalize(normalize(pointBScreen.xy - pointAScreen.xy) * screen);\n vec2 BC = normalize(normalize(pointCScreen.xy - pointBScreen.xy) * screen);\n vec2 tangent = normalize(AB + BC);\n \n vec2 miter = vec2(-tangent.y, tangent.x);\n vec2 normalA = vec2(-AB.y, AB.x);\n float miterLength = 1.0 / max(dot(miter, normalA), invMiterLengthCutoff);\n \n gl_Position = pointBScreen;\n gl_Position.xy = gl_Position.xy + (corner * miter * lineWidth * miterLength) / screen.xy;\n }\n \n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n \n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n \n varying vec2 texCoord;\n \n void main() {\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"pointA\", \"pointB\", \"pointC\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected var enableOneVertexMode = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var lineWidth = 1.0f\n protected var invMiterLengthCutoff = 1 / 5.0f // shouldn't be greater than 1.0 or equal 0.0\n protected var screenX = 0.0f\n protected var screenY = 0.0f\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n protected var lineWidthId = KglUniformLocation.NONE\n protected var invMiterLengthCutoffId = KglUniformLocation.NONE\n protected var screenId = KglUniformLocation.NONE\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var enableOneVertexModeId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n lineWidthId = gl.getUniformLocation(program, \"lineWidth\")\n gl.uniform1f(lineWidthId, lineWidth)\n invMiterLengthCutoffId = gl.getUniformLocation(program, \"invMiterLengthCutoff\")\n gl.uniform1f(invMiterLengthCutoffId, invMiterLengthCutoff)\n screenId = gl.getUniformLocation(program, \"screen\")\n gl.uniform2f(screenId, screenX, screenY)\n\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n enableOneVertexModeId = gl.getUniformLocation(program, \"enableOneVertexMode\")\n gl.uniform1i(enableOneVertexModeId, if (enableOneVertexMode) 1 else 0)\n\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n fun enableOneVertexMode(enable: Boolean) {\n if (enableOneVertexMode != enable) {\n enableOneVertexMode = enable\n gl.uniform1i(enableOneVertexModeId, if (enable) 1 else 0)\n }\n }\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n\n fun loadLineWidth(lineWidth : Float) {\n if (this.lineWidth != lineWidth) {\n this.lineWidth = lineWidth\n gl.uniform1f(lineWidthId, lineWidth)\n }\n }\n\n fun loadMiterLengthCutoff(miterLengthCutoff : Float) {\n if (this.invMiterLengthCutoff != 1.0f / miterLengthCutoff) {\n this.invMiterLengthCutoff = 1.0f / miterLengthCutoff\n gl.uniform1f(invMiterLengthCutoffId, invMiterLengthCutoff)\n }\n }\n\n fun loadScreen(screenX : Float, screenY : Float) {\n if ((this.screenX != screenX) and (this.screenY != screenY) ) {\n this.screenX = screenX\n this.screenY = screenY\n gl.uniform2f(screenId, this.screenX, this.screenY)\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport kotlin.math.sqrt\n\nabstract class AbstractShape(override var attributes: ShapeAttributes): AbstractRenderable(), Attributable, Highlightable {\n companion object {\n const val NEAR_ZERO_THRESHOLD = 1.0e-10\n }\n\n var altitudeMode = AltitudeMode.ABSOLUTE\n set(value) {\n field = value\n reset()\n }\n var pathType = PathType.GREAT_CIRCLE\n set(value) {\n field = value\n reset()\n }\n /**\n * Draw sides of the shape which extend from the defined position and altitude to the ground.\n */\n var isExtrude = false\n set(value) {\n field = value\n reset()\n }\n /**\n * Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.\n */\n var isFollowTerrain = false\n set(value) {\n field = value\n reset()\n }\n override var highlightAttributes: ShapeAttributes? = null\n override var isHighlighted = false\n var maximumIntermediatePoints = 10\n protected lateinit var activeAttributes: ShapeAttributes\n protected var isSurfaceShape = false\n protected var lastGlobeState: Globe.State? = null\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n protected val boundingSector = Sector()\n protected val boundingBox = BoundingBox()\n private val scratchPoint = Vec3()\n\n override fun doRender(rc: RenderContext) {\n checkGlobeState(rc)\n if (!isWithinProjectionLimits(rc)) return\n\n // Don't render anything if the shape is not visible.\n if (!intersectsFrustum(rc)) return\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this shape has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = rc.globe.is2D || altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the shape's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Indicates whether this shape is within the current globe's projection limits. Subclasses may implement\n * this method to perform the test. The default implementation returns true.\n * @param rc The current render context.\n * @returns true if this shape is within or intersects the current globe's projection limits, otherwise false.\n */\n protected open fun isWithinProjectionLimits(rc: RenderContext) = true\n\n protected open fun intersectsFrustum(rc: RenderContext) =\n (boundingBox.isUnitBox || boundingBox.intersectsFrustum(rc.frustum)) &&\n // This is a temporary solution. Surface shapes should also use bounding box.\n (boundingSector.isEmpty || boundingSector.intersects(rc.terrain.sector))\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun cameraDistanceGeographic(rc: RenderContext, boundingSector: Sector): Double {\n val lat = rc.camera.position.latitude.inDegrees.coerceIn(\n boundingSector.minLatitude.inDegrees,\n boundingSector.maxLatitude.inDegrees\n )\n val lon = rc.camera.position.longitude.inDegrees.coerceIn(\n boundingSector.minLongitude.inDegrees,\n boundingSector.maxLongitude.inDegrees\n )\n val point = rc.geographicToCartesian(lat.degrees, lon.degrees, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n return point.distanceTo(rc.cameraPoint)\n }\n\n protected open fun cameraDistanceCartesian(rc: RenderContext, array: FloatArray, count: Int, stride: Int, offset: Vec3): Double {\n val cx = rc.cameraPoint.x - offset.x\n val cy = rc.cameraPoint.y - offset.y\n val cz = rc.cameraPoint.z - offset.z\n var minDistance2 = Double.POSITIVE_INFINITY\n for (idx in 0 until count step stride) {\n val px = array[idx]\n val py = array[idx + 1]\n val pz = array[idx + 2]\n val dx = px - cx\n val dy = py - cy\n val dz = pz - cz\n val distance2 = dx * dx + dy * dy + dz * dz\n if (minDistance2 > distance2) minDistance2 = distance2\n }\n return sqrt(minDistance2)\n }\n\n protected open fun computeRepeatingTexCoordTransform(texture: Texture, metersPerPixel: Double, result: Matrix3): Matrix3 {\n val texCoordMatrix = result.setToIdentity()\n texCoordMatrix.setScale(1.0 / (texture.width * metersPerPixel), 1.0 / (texture.height * metersPerPixel))\n texCoordMatrix.multiplyByMatrix(texture.coordTransform)\n return texCoordMatrix\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n if (rc.globeState != lastGlobeState) {\n reset()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun reset() {\n boundingBox.setToUnitBox()\n boundingSector.setEmpty()\n }\n\n protected abstract fun makeDrawable(rc: RenderContext)\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.*\n\n/**\n * Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.\n *
\n *

Axes and Heading

\n *
\n * Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points\n * North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and\n * semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is\n * defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis\n * pointing Southeast and the semi-minor axis pointing Northeast.\n *
\n *

Altitude Mode and Terrain Following

\n *
\n * Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For\n * example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean\n * sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative\n * to the ellipse's center location.\n *
\n * Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's\n * terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See [isFollowTerrain] and\n * [altitudeMode].\n *
\n *

Display Granularity

\n *
\n * Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This\n * approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the\n * maximum number of angular intervals used in this representation with [maximumIntervals].\n */\nopen class Ellipse @JvmOverloads constructor(\n center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n /**\n * The ellipse's geographic center position.\n */\n var center = Position(center)\n set(value) {\n field.copy(value)\n reset()\n }\n /**\n * The ellipse's radius perpendicular to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-major axis points East.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var majorRadius = majorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMajorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's radius parallel to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-minor axis points North.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var minorRadius = minorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMinorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's heading clockwise from North. When ellipse's heading is 0.0,\n * the semi-major axis points East and the semi-minor axis points North.\n * Headings other than 0.0 rotate the axes about the ellipse's center position,\n * while retaining the axes relative relationship to one another.\n */\n var heading = ZERO\n set(value) {\n field = value\n reset()\n }\n /**\n * The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this\n * value will make ellipses appear coarser.\n */\n var maximumPixelsPerInterval = 50.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"maximumPixelsPerInterval\", \"invalidPixelsPerInterval\")\n }\n field = value\n reset()\n }\n /**\n * Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.\n *
\n * Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly\n * approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an\n * implementation-defined minimum number of intervals.\n *
\n * Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number\n * of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used\n * instead.\n *\n * @throws IllegalArgumentException If the number of intervals is negative\n */\n var maximumIntervals = 256\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMaximumIntervals\", \"invalidNumIntervals\")\n }\n field = value\n reset()\n }\n /**\n * The number of intervals used for generating geometry. Clamped between MIN_INTERVALS and maximumIntervals.\n * Will always be even.\n */\n protected var activeIntervals = 0\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var vertexBufferKey = Any()\n protected var lineVertexArray = FloatArray(0)\n protected var lineVertexIndex = 0\n protected var lineVertexBufferKey = Any()\n protected var lineElementBufferKey = Any()\n protected var verticalVertexIndex = 0\n protected val verticalElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n protected val texCoord2d = Vec3()\n protected val texCoordMatrix = Matrix3()\n protected val modelToTexCoord = Matrix4()\n protected var cameraDistance = 0.0\n protected val prevPoint = Vec3()\n\n init {\n require(majorRadius >= 0 && minorRadius >= 0) {\n logMessage(ERROR, \"Ellipse\", \"constructor\", \"invalidRadius\")\n }\n }\n\n companion object {\n protected const val VERTEX_STRIDE = 5\n protected const val LINE_VERTEX_STRIDE = 10\n /**\n * The minimum number of intervals that will be used for geometry generation.\n */\n protected const val MIN_INTERVALS = 32\n /**\n * Key for Range object in the element buffer describing the top of the Ellipse.\n */\n protected const val TOP_RANGE = 0\n /**\n * Key for Range object in the element buffer describing the extruded sides of the Ellipse.\n */\n protected const val SIDE_RANGE = 1\n\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n\n /**\n * Simple interval count based cache of the keys for element buffers. Element buffers are dependent only on the\n * number of intervals so the keys are cached here. The element buffer object itself is in the\n * RenderResourceCache and subject to the restrictions and behavior of that cache.\n */\n protected val elementBufferKeys = mutableMapOf()\n\n private val scratchPosition = Position()\n private val scratchPoint = Vec3()\n private val scratchVertPoint = Vec3()\n\n protected fun assembleElements(intervals: Int): ShortBufferObject {\n // Create temporary storage for elements\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n val elements = mutableListOf()\n\n // Generate the top element buffer with spine\n var idx = intervals.toShort()\n val offset = computeIndexOffset(intervals)\n\n // Add the anchor leg\n elements.add(0.toShort())\n elements.add(1.toShort())\n // Tessellate the interior\n for (i in 2 until intervals) {\n // Add the corresponding interior spine point if this isn't the vertex following the last vertex for the\n // negative major axis\n if (i != intervals / 2 + 1) if (i > intervals / 2) elements.add(--idx) else elements.add(idx++)\n // Add the degenerate triangle at the negative major axis in order to flip the triangle strip back towards\n // the positive axis\n if (i == intervals / 2) elements.add(i.toShort())\n // Add the exterior vertex\n elements.add(i.toShort())\n }\n // Complete the strip\n elements.add(--idx)\n elements.add(0.toShort())\n val topRange = Range(0, elements.size)\n\n // Generate the side element buffer\n for (i in 0 until intervals) {\n elements.add(i.toShort())\n elements.add(i.plus(offset).toShort())\n }\n elements.add(0.toShort())\n elements.add(offset.toShort())\n val sideRange = Range(topRange.upper, elements.size)\n\n // Generate a buffer for the element\n val elementBuffer = ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements.toShortArray())\n elementBuffer.ranges[TOP_RANGE] = topRange\n elementBuffer.ranges[SIDE_RANGE] = sideRange\n return elementBuffer\n }\n\n protected fun computeNumberSpinePoints(intervals: Int) = intervals / 2 - 1 // intervals should be even\n\n protected fun computeIndexOffset(intervals: Int) = intervals + computeNumberSpinePoints(intervals)\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (majorRadius == 0.0 && minorRadius == 0.0) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = Any()\n lineVertexBufferKey = Any()\n lineElementBufferKey = Any()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n val drawableLines: Drawable\n val drawStateLines: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n\n drawableLines = DrawableSurfaceShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n // Use the basic GLSL program for texture projection.\n drawableLines.offset = rc.globe.offset\n drawableLines.sector.copy(boundingSector)\n\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n\n drawableLines = DrawableShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n cameraDistance = boundingBox.distanceTo(rc.cameraPoint)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Get the attributes of the element buffer\n val elementBufferKey = elementBufferKeys[activeIntervals] ?: Any().also { elementBufferKeys[activeIntervals] = it }\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) { assembleElements(activeIntervals) }\n\n drawStateLines.isLine = true\n\n // Use the basic GLSL program to draw the shape.\n drawStateLines.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawStateLines.vertexBuffer = rc.getBufferObject(lineVertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, lineVertexArray) }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawStateLines.elementBuffer = rc.getBufferObject(lineElementBufferKey) {\n val array = IntArray(outlineElements.size + verticalElements.size)\n var index = 0\n for (element in outlineElements) array[index++] = element\n for (element in verticalElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n drawInterior(rc, drawState)\n drawOutline(rc, drawStateLines)\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Configure the drawable according to the shape's attributes.\n drawStateLines.vertexOrigin.copy(vertexOrigin)\n drawStateLines.enableCullFace = false\n drawStateLines.enableDepthTest = activeAttributes.isDepthTest\n drawStateLines.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) {\n rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n rc.offerSurfaceDrawable(drawableLines, 0.0 /*zOrder*/)\n } else {\n rc.offerShapeDrawable(drawableLines, cameraDistance)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n val top = drawState.elementBuffer!!.ranges[TOP_RANGE]!!\n drawState.drawElements(GL_TRIANGLE_STRIP, top.length, GL_UNSIGNED_SHORT, top.lower * 2 /*offset*/)\n if (isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLE_STRIP, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, 0 * Int.SIZE_BYTES\n )\n if (activeAttributes.isDrawVerticals && isExtrude && !isSurfaceShape) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_TRIANGLES, verticalElements.size,\n GL_UNSIGNED_INT, (outlineElements.size) * Int.SIZE_BYTES\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext): Boolean {\n val calculatedIntervals = computeIntervals(rc)\n val sanitizedIntervals = sanitizeIntervals(calculatedIntervals)\n if (vertexArray.isEmpty() || isExtrude && !isSurfaceShape && lineVertexArray.isEmpty() || sanitizedIntervals != activeIntervals) {\n activeIntervals = sanitizedIntervals\n return true\n }\n return false\n }\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n\n // Use the ellipse's center position as the local origin for vertex positions.\n if (isSurfaceShape) {\n vertexOrigin.set(center.longitude.inDegrees, center.latitude.inDegrees, center.altitude)\n } else {\n rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n vertexOrigin.set(scratchPoint.x, scratchPoint.y, scratchPoint.z)\n }\n\n // Determine the number of spine points\n val spineCount = computeNumberSpinePoints(activeIntervals) // activeIntervals must be even\n\n // Clear the shape's vertex array. The array will accumulate values as the shapes's geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals * 2 + spineCount) * VERTEX_STRIDE)\n else FloatArray((activeIntervals + spineCount) * VERTEX_STRIDE)\n\n lineVertexIndex = 0\n lineVertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals + 3 + (activeIntervals + 1) * 4) * LINE_VERTEX_STRIDE)\n else FloatArray((activeIntervals + 3) * LINE_VERTEX_STRIDE)\n verticalVertexIndex = (activeIntervals + 3) * LINE_VERTEX_STRIDE\n\n verticalElements.clear()\n outlineElements.clear()\n\n // Check if minor radius is less than major in which case we need to flip the definitions and change the phase\n val isStandardAxisOrientation = majorRadius > minorRadius\n val headingAdjustment = if (isStandardAxisOrientation) 90.0 else 0.0\n\n // Vertex generation begins on the positive major axis and works ccs around the ellipse. The spine points are\n // then appended from positive major axis to negative major axis.\n val deltaRadians = 2 * PI / activeIntervals\n val majorArcRadians: Double\n val minorArcRadians: Double\n val globeRadius = max(rc.globe.equatorialRadius, rc.globe.polarRadius)\n if (isStandardAxisOrientation) {\n majorArcRadians = majorRadius / globeRadius\n minorArcRadians = minorRadius / globeRadius\n } else {\n majorArcRadians = minorRadius / globeRadius\n minorArcRadians = majorRadius / globeRadius\n }\n\n // Determine the offset from the top and extruded vertices\n val arrayOffset = computeIndexOffset(activeIntervals) * VERTEX_STRIDE\n // Setup spine radius values\n var spineIdx = 0\n val spineRadius = DoubleArray(spineCount)\n\n var firstLoc = Position()\n // Iterate around the ellipse to add vertices\n for (i in 0 until activeIntervals) {\n val radians = deltaRadians * i\n val x = cos(radians) * majorArcRadians\n val y = sin(radians) * minorArcRadians\n val azimuthDegrees = toDegrees(-atan2(y, x))\n val arcRadius = sqrt(x * x + y * y)\n // Calculate the great circle location given this activeIntervals step (azimuthDegrees) a correction value to\n // start from an east-west aligned major axis (90.0) and the user specified user heading value\n val azimuth = heading.plusDegrees(azimuthDegrees + headingAdjustment)\n val loc = center.greatCircleLocation(azimuth, arcRadius, scratchPosition)\n addVertex(rc, loc.latitude, loc.longitude, center.altitude, arrayOffset, isExtrude)\n // Add the major arc radius for the spine points. Spine points are vertically coincident with exterior\n // points. The first and middle most point do not have corresponding spine points.\n if (i > 0 && i < activeIntervals / 2) spineRadius[spineIdx++] = x\n if (i < 1) {\n firstLoc = Position(loc.latitude, loc.longitude, center.altitude)\n addLineVertex(rc, loc.latitude, loc.longitude, center.altitude, verticalVertexIndex, true)\n }\n addLineVertex(rc, loc.latitude, loc.longitude, center.altitude, verticalVertexIndex, false)\n }\n\n addLineVertex(rc, firstLoc.latitude, firstLoc.longitude, firstLoc.altitude, verticalVertexIndex, false)\n addLineVertex(rc, firstLoc.latitude, firstLoc.longitude, firstLoc.altitude, verticalVertexIndex, true)\n\n // Add the interior spine point vertices\n for (i in 0 until spineCount) {\n center.greatCircleLocation(heading.plusDegrees(headingAdjustment), spineRadius[i], scratchPosition)\n addVertex(rc, scratchPosition.latitude, scratchPosition.longitude, center.altitude, arrayOffset, false)\n }\n\n // Compute the shape's bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty()\n }\n }\n protected open fun addLineVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset : Int, firstOrLast : Boolean\n ) {\n val vertex = (lineVertexIndex / LINE_VERTEX_STRIDE - 1) * 2\n val point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n if (lineVertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n } else {\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n if (isExtrude && !firstOrLast) {\n val vertPoint = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, scratchVertPoint)\n val index = verticalVertexIndex / LINE_VERTEX_STRIDE * 2\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0f\n\n verticalElements.add(index)\n verticalElements.add(index + 1)\n verticalElements.add(index + 2)\n verticalElements.add(index + 2)\n verticalElements.add(index + 1)\n verticalElements.add(index + 3)\n }\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset: Int, isExtrudedSkirt: Boolean\n ) {\n var offsetVertexIndex = vertexIndex + offset\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n // reserved for future texture coordinate use\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n if (isExtrudedSkirt) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n vertexArray[offsetVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[offsetVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[offsetVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex] = 0f //unused\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n val point = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n rc.globe.cartesianToLocalTransform(point.x, point.y, point.z, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n /**\n * Calculate the number of times to split the edges of the shape for geometry assembly.\n *\n * @param rc current RenderContext\n *\n * @return an even number of intervals\n */\n protected open fun computeIntervals(rc: RenderContext): Int {\n var intervals = MIN_INTERVALS\n if (intervals >= maximumIntervals) return intervals // use at least the minimum number of intervals\n val centerPoint = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n val maxRadius = max(majorRadius, minorRadius)\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint) - maxRadius\n if (cameraDistance <= 0) return maximumIntervals // use the maximum number of intervals when the camera is very close\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n val circumferencePixels = computeCircumference() / metersPerPixel\n val circumferenceIntervals = circumferencePixels / maximumPixelsPerInterval\n val subdivisions = ln(circumferenceIntervals / intervals) / ln(2.0)\n val subdivisionCount = ceil(subdivisions).toInt().coerceAtLeast(0)\n intervals = intervals shl subdivisionCount // subdivide the base intervals to achieve the desired number of intervals\n return intervals.coerceAtMost(maximumIntervals) // don't exceed the maximum number of intervals\n }\n\n protected open fun sanitizeIntervals(intervals: Int) = if (intervals % 2 == 0) intervals else intervals - 1\n\n open fun computeCircumference(): Double {\n val a = majorRadius\n val b = minorRadius\n return PI * (3 * (a + b) - sqrt((3 * a + b) * (a + 3 * b)))\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n lineVertexArray = FloatArray(0)\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Represents a label at a geographic position. Labels display a single line of text according to specified [TextAttributes].\n */\nopen class Label @JvmOverloads constructor(\n /**\n * The label's geographic position.\n */\n position: Position,\n /**\n * Indicates the text displayed by this label. The returned string may be null, indicating that this label displays\n * nothing.\n */\n var text: String? = null,\n /**\n * Indicates this label's \"normal\" attributes, that is the attributes used when the label's highlighted flag is\n * false. If null and this label is not highlighted, this label displays nothing.\n */\n var attributes: TextAttributes = TextAttributes()\n) : AbstractRenderable(), Highlightable, Movable {\n /**\n * The label's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The label's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Indicates the rotation applied to this label. The rotation represents clockwise clockwise degrees relative to\n * this label's labelRotationMode.\n */\n var rotation = ZERO\n /**\n * Indicates the orientation mode used to interpret this label's rotation. Label rotation may be either relative to\n * the screen or relative to the globe, as indicated by the following allowable values:\n * `OrientationMode.RELATIVE_TO_SCREEN` - The label's orientation is fixed relative to the screen. Rotation indicates\n * clockwise degrees relative to the screen's vertical axis. This is the default mode.\n * `OrientationMode.RELATIVE_TO_GLOBE` - The label's orientation is fixed relative to the globe. Rotation indicates\n * clockwise degrees relative to North.\n */\n var rotationMode = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The attributes used when this label's highlighted flag is true. If null and the highlighted flag is true,\n * this label's normal attributes are used. If they, too, are null, this label displays nothing.\n */\n var highlightAttributes: TextAttributes? = null\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: TextAttributes\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Label, this is\n * simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * Sets the eye altitude, in meters, above which this label is not displayed.\n */\n var visibilityThreshold = 0.0\n\n companion object {\n /**\n * The default amount of screen depth offset applied to the label's text during rendering. Values less than zero\n * bias depth values toward the viewer.\n */\n protected const val DEFAULT_DEPTH_OFFSET = -0.1\n\n /**\n * The label's properties associated with the current render pass.\n */\n private val renderData = RenderData()\n }\n\n /**\n * Moves the shape over the globe's surface. For a Label, this simply change its position.\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n if (text?.isEmpty() != false) return // no text to render\n\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the label's Cartesian model point.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, renderData.placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the label drawable and\n // determining the amount of depth offset to apply.\n renderData.cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(renderData.placePoint)\n\n // Do not draw labels after the specified threshold\n if (visibilityThreshold > 0.0 && renderData.cameraDistance > visibilityThreshold) return\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n if (renderData.cameraDistance < rc.horizonDistance) depthOffset = DEFAULT_DEPTH_OFFSET\n\n // Project the label's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(renderData.placePoint, depthOffset, renderData.screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this label has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n renderData.pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(renderData.pickedObjectId, renderData.pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the label's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(renderData.pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n val texture = rc.getText(text, activeAttributes, rc.frustum.containsPoint(renderData.placePoint)) ?: return\n\n // Initialize the unit square transform to the identity matrix.\n renderData.unitSquareTransform.setToIdentity()\n\n // Apply the label's translation according to its text size and text offset. The text offset is defined with its\n // origin at the text's bottom-left corner and axes that extend up and to the right from the origin point.\n val w = texture.width.toDouble()\n val h = texture.height.toDouble()\n val s = activeAttributes.scale\n activeAttributes.textOffset.offsetForSize(w, h, renderData.offset)\n renderData.unitSquareTransform.setTranslation(\n renderData.screenPlacePoint.x - renderData.offset.x * s,\n renderData.screenPlacePoint.y - renderData.offset.y * s,\n renderData.screenPlacePoint.z\n )\n\n // Apply the label's rotation according to its rotation value and orientation mode. The rotation is applied\n // such that the text rotates around the text offset point.\n val actualRotation = if (rotationMode == OrientationMode.RELATIVE_TO_GLOBE)\n rc.camera.heading - rotation else -rotation\n if (actualRotation != ZERO) {\n renderData.unitSquareTransform.multiplyByTranslation(\n renderData.offset.x, renderData.offset.y, 0.0\n )\n renderData.unitSquareTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n renderData.unitSquareTransform.multiplyByTranslation(\n -renderData.offset.x, -renderData.offset.y, 0.0\n )\n }\n\n // Apply the label's translation and scale according to its text size.\n renderData.unitSquareTransform.multiplyByScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(renderData.unitSquareTransform, renderData.screenBounds)\n if (!rc.frustum.intersectsViewport(renderData.screenBounds)) return // the text is outside the viewport\n\n // Obtain a pooled drawable and configure it to draw the label's text.\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n\n // Use the basic GLSL program to draw the text.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the text's unit square transform matrix.\n drawable.unitSquareTransform.copy(renderData.unitSquareTransform)\n\n // Configure the drawable according to the active attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(renderData.pickColor)\n else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = texture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerShapeDrawable(drawable, renderData.cameraDistance)\n }\n\n /**\n * Properties associated with the label during a render pass.\n */\n protected open class RenderData {\n /**\n * The model coordinate point corresponding to the label's position.\n */\n val placePoint = Vec3()\n /**\n * The screen coordinate point corresponding to the label's position.\n */\n val screenPlacePoint = Vec3()\n /**\n * The screen coordinate offset corresponding to the active attributes.\n */\n val offset = Vec2()\n /**\n * The screen coordinate transform to apply to the drawable unit square.\n */\n val unitSquareTransform = Matrix4()\n /**\n * The screen viewport indicating the label's screen bounds.\n */\n val screenBounds = Viewport()\n /**\n * Unique identifier associated with the label during picking.\n */\n var pickedObjectId = 0\n /**\n * Unique color used to display the label during picking.\n */\n val pickColor = Color()\n /**\n * The distance from the camera position to the label position, in meters.\n */\n var cameraDistance = 0.0\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSightline\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.BoundingSphere\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays an omnidirectional sightline's visibility within the WorldWind scene. The sightline's placement and area of\n * potential visibility are represented by a Cartesian sphere with a center position and a range. Terrain features\n * within the sphere are considered visible if there is a direct line-of-sight between the center position and a given\n * terrain point.\n *
\n * OmnidirectionalSightline displays an overlay on the WorldWind terrain indicating which terrain features are visible,\n * and which are occluded. Visible terrain features, those having a direct line-of-sight to the center position, appear\n * in the sightline's normal attributes or its highlight attributes, depending on the highlight state. Occluded terrain\n * features appear in the sightline's occlude attributes, regardless of highlight state. Terrain features outside the\n * sightline's range are excluded from the overlay.\n *
\n *

Limitations and Planned Improvements

* OmnidirectionalSightline is currently limited to terrain-based\n * occlusion, and does not incorporate other 3D scene elements during visibility determination. Subsequent iterations\n * will support occlusion of both terrain and 3D polygons. * The visibility overlay is drawn in ShapeAttributes'\n * interior color only. Subsequent iterations will add an outline where the sightline's range intersects the scene, and\n * will display the sightline's geometry as an outline. * OmnidirectionalSightline requires OpenGL ES 2.0\n * extension [GL_OES_depth_texture](https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt).\n * Subsequent iterations may relax this requirement.\n */\nopen class OmnidirectionalSightline @JvmOverloads constructor(\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n position: Position,\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n */\n range: Double,\n /**\n * Indicates this sightline's \"normal\" attributes. These attributes are used for the sightline's overlay when the\n * highlighted flag is false, and there is a direct line-of-sight from the sightline's center position to a terrain\n * feature. If null and this sightline is not highlighted, visible terrain features are excluded from\n * the overlay.\n */\n override var attributes: ShapeAttributes = ShapeAttributes()\n) : AbstractRenderable(), Attributable, Highlightable, Movable {\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n *\n * @throws IllegalArgumentException If the range is negative\n */\n var range = range\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"setRange\", \"invalidRange\")\n }\n field = value\n }\n /**\n * The sightline's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Determines whether the normal or highlighted attributes should be used for visible features.\n */\n override var isHighlighted = false\n /**\n * The attributes to use for visible features, when the sightline is highlighted.\n */\n override var highlightAttributes: ShapeAttributes? = null\n /**\n * The attributes to use for occluded features.\n */\n var occludeAttributes = ShapeAttributes().apply { interiorColor.copy(Color(1f, 0f, 0f, 1f)) }\n /**\n * A position associated with the object that indicates its aggregate geographic position. For an\n * OmnidirectionalSightline, this is simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * The attributes to use for visible features during the current render pass.\n */\n protected lateinit var activeAttributes: ShapeAttributes\n\n private val centerPoint = Vec3()\n private var pickedObjectId = 0\n private val pickColor = Color()\n private val boundingSphere = BoundingSphere()\n\n init {\n require(range >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"constructor\", \"invalidRange\")\n }\n }\n\n /**\n * Moves the sightline over the globe's surface.\n *\n * @param globe not used.\n * @param position the new position of the sightline's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n // Compute this sightline's center point in Cartesian coordinates.\n if (!determineCenterPoint(rc)) return\n\n // Don't render anything if the sightline's coverage area is not visible.\n if (!isVisible(rc)) return\n\n // Select the currently active attributes.\n determineActiveAttributes(rc)\n\n // Configure the pick color when rendering in pick mode.\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the sightline's drawables with its picked object ID.\n if (rc.isPickMode) rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n\n protected open fun determineCenterPoint(rc: RenderContext): Boolean {\n rc.geographicToCartesian(position, altitudeMode, centerPoint)\n return centerPoint.x != 0.0 && centerPoint.y != 0.0 && centerPoint.z != 0.0\n }\n\n protected open fun isVisible(rc: RenderContext): Boolean {\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint)\n val pixelSizeMeters = rc.pixelSizeAtDistance(cameraDistance)\n return if (range < pixelSizeMeters) false // The range is zero, or is less than one screen pixel\n else boundingSphere.set(centerPoint, range).intersectsFrustum(rc.frustum)\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Obtain a pooled drawable and configure it to draw the sightline's coverage.\n val pool = rc.getDrawablePool()\n val drawable = DrawableSightline.obtain(pool)\n\n // Compute the transform from sightline local coordinates to world coordinates.\n rc.globe.cartesianToLocalTransform(\n centerPoint.x, centerPoint.y, centerPoint.z, drawable.centerTransform\n )\n\n // Clamp range to max float value as OpenGL drawable operates with float range\n drawable.range = range.coerceIn(0.0, Float.MAX_VALUE.toDouble()).toFloat()\n\n // Configure the drawable colors according to the current attributes. When picking use a unique color associated\n // with the picked object ID. Null attributes indicate that nothing is drawn.\n drawable.visibleColor.copy(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawable.occludedColor.copy(if (rc.isPickMode) pickColor else occludeAttributes.interiorColor)\n\n // Use the sightline GLSL program to draw the coverage.\n drawable.program = rc.getShaderProgram { SightlineProgram() }\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n}","package earth.worldwind.shape\n\n/**\n * Orientation mode indicates how WorldWind interprets a renderable's orientation value, e.g., tilt and rotate\n * values. Accepted values are [RELATIVE_TO_GLOBE], and [RELATIVE_TO_SCREEN].\n */\nenum class OrientationMode {\n /**\n * Indicating that the related value is specified relative to the globe.\n */\n RELATIVE_TO_GLOBE,\n /**\n * Indicating that the related value is specified relative to the plane of the screen.\n */\n RELATIVE_TO_SCREEN;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Path @JvmOverloads constructor(\n positions: List, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n var positions = positions\n set(value) {\n field = value\n reset()\n }\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var verticalIndex = 0\n protected var extrudeIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val interiorElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected lateinit var vertexBufferKey: Any\n protected lateinit var elementBufferKey: Any\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n private val point = Vec3()\n private val verticalPoint = Vec3()\n private val prevPoint = Vec3()\n private val texCoordMatrix = Matrix3()\n private val intermediateLocation = Location()\n\n companion object {\n protected const val VERTEX_STRIDE = 10\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n wrapMode = WrapMode.REPEAT\n }\n\n protected fun nextCacheKey() = Any()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (positions.size < 2) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool, and compute distance to the render camera.\n val drawable: Drawable\n val drawState: DrawShapeState\n val cameraDistance: Double\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexArray.size, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use triangles mode to draw lines\n drawState.isLine = true\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexArray.size)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n val array = IntArray(interiorElements.size + outlineElements.size + verticalElements.size)\n var index = 0\n for (element in interiorElements) array[index++] = element\n for (element in outlineElements) array[index++] = element\n for (element in verticalElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n // Configure the drawable to use the outline texture when drawing the outline.\n if (activeAttributes.isDrawOutline) {\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n }\n }\n\n // Configure the drawable to display the shape's outline. Increase surface shape line widths by 1/2 pixel. Lines\n // drawn indirectly offscreen framebuffer appear thinner when sampled as a texture.\n if (activeAttributes.isDrawOutline) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth + if (isSurfaceShape) 0.5f else 0f)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, interiorElements.size * Int.SIZE_BYTES\n )\n }\n\n // Disable texturing for the remaining drawable primitives.\n drawState.texture(null)\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawOutline && activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_TRIANGLES, verticalElements.size,\n GL_UNSIGNED_INT, (interiorElements.size + outlineElements.size) * Int.SIZE_BYTES\n )\n }\n\n // Configure the drawable to display the shape's extruded interior.\n if (activeAttributes.isDrawInterior && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, interiorElements.size,\n GL_UNSIGNED_INT, 0\n )\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.enableCullFace = false\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val vertexCount = if (maximumIntermediatePoints <= 0 || pathType == LINEAR) positions.size\n else if (positions.isNotEmpty()) positions.size + (positions.size - 1) * maximumIntermediatePoints else 0\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n verticalIndex = if (isExtrude && !isSurfaceShape) (vertexCount + 2) * VERTEX_STRIDE else 0\n extrudeIndex = if (isExtrude && !isSurfaceShape) verticalIndex + (positions.size * 4) * VERTEX_STRIDE else 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(verticalIndex + extrudeIndex + (vertexCount + 2) * VERTEX_STRIDE)\n else FloatArray((vertexCount + 2) * VERTEX_STRIDE)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Add the first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/, true)\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/, false)\n\n // Add the remaining vertices, inserting vertices along each edge as indicated by the path's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, false /*intermediate*/, false)\n begin = end\n }\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude,false /*intermediate*/, true)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*latitude*/, vertexOrigin.x /*longitude*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, true /*intermediate*/, false /*firstOrLast*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, intermediate: Boolean, firstOrLast : Boolean\n ) {\n val vertex = (vertexIndex / VERTEX_STRIDE - 1) * 2\n val point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (vertexIndex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude)\n else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = -1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = -1.0f\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (!firstOrLast) {\n outlineElements.add(vertex)\n outlineElements.add(vertex.inc())\n }\n if (isExtrude) {\n val vertPoint = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, verticalPoint)\n\n val extrudeVertex = (extrudeIndex / VERTEX_STRIDE - 1) * 2\n\n vertexArray[extrudeIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[extrudeIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[extrudeIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[extrudeIndex++] = 0f\n vertexArray[extrudeIndex++] = 0f\n\n vertexArray[extrudeIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[extrudeIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[extrudeIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[extrudeIndex++] = 0f\n vertexArray[extrudeIndex++] = 0f\n\n if (!firstOrLast) {\n interiorElements.add(extrudeVertex)\n interiorElements.add(extrudeVertex.inc())\n }\n\n if (!intermediate && !firstOrLast) {\n val index = verticalIndex / VERTEX_STRIDE * 2\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = 1f\n vertexArray[verticalIndex++] = 0f\n\n vertexArray[verticalIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n vertexArray[verticalIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n vertexArray[verticalIndex++] = -1f\n vertexArray[verticalIndex++] = 0f\n\n verticalElements.add(index)\n verticalElements.add(index + 1)\n verticalElements.add(index + 2)\n verticalElements.add(index + 2)\n verticalElements.add(index + 1)\n verticalElements.add(index + 3)\n }\n }\n }\n }\n}","package earth.worldwind.shape\n\n/**\n * Path type indicates how WorldWind create a geographic path between two locations.\n * Accepted values are [GREAT_CIRCLE], [LINEAR] and [RHUMB_LINE].\n */\nenum class PathType {\n /**\n * Indicating a great circle arc between two locations.\n */\n GREAT_CIRCLE,\n /**\n * Indicating simple linear interpolation between two locations.\n */\n LINEAR,\n /**\n * Indicating a line of constant bearing between two locations.\n */\n RHUMB_LINE;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableLines\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.sin\n\n/**\n * Represents a Placemark shape. A placemark displays an image, a label and a leader connecting the placemark's\n * geographic position to the ground. All three of these items are optional. By default, the leader is not pickable. See\n * [Placemark.isLeaderPickingEnabled].\n *
\n * Placemarks may be drawn with either an image or as single-color square with a specified size. When the placemark\n * attributes indicate a valid image, the placemark's image is drawn as a rectangle in the image's original dimensions,\n * scaled by the image scale attribute. Otherwise, the placemark is drawn as a square with width and height equal to the\n * value of the image scale attribute, in pixels, and color equal to the image color attribute.\n */\nopen class Placemark @JvmOverloads constructor(\n /**\n * The placemark's geographic position.\n */\n position: Position,\n /**\n * The placemark's normal attributes.\n */\n var attributes: PlacemarkAttributes = PlacemarkAttributes(),\n /**\n * The placemark's display name.\n */\n name: String? = null\n) : AbstractRenderable(if (name?.isEmpty() != false) \"Placemark\" else name), Highlightable, Movable {\n /**\n * The placemark's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The placemark's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * The attributes to use when the placemark is highlighted.\n */\n var highlightAttributes: PlacemarkAttributes? = null\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The label text to draw near the placemark.\n */\n var label: String? = /*name*/null // Do not use display name as label by default\n /**\n * Sets the optional level-of-detail selector used to inject logic for selecting PlacemarkAttributes based on\n * the camera distance and highlighted attribute. If set to null, the normal and highlight attribute bundles used\n * respectfully for the normal and highlighted states.\n */\n var levelOfDetailSelector: LevelOfDetailSelector? = null\n /**\n * Enables or disables the eye distance scaling feature for this placemark. When enabled, the placemark's size is\n * reduced at higher eye distances. If true, this placemark's size is scaled inversely proportional to the eye\n * distance if the eye distance is greater than the value of the [Placemark.eyeDistanceScalingThreshold]\n * property. When the eye distance is below the threshold, this placemark is scaled only according to the [PlacemarkAttributes.imageScale].\n */\n var isEyeDistanceScaling = false\n /**\n * Sets the eye distance above which to reduce the size of this placemark, in meters.\n * If [isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as the eye\n * distance increases beyond this threshold.\n */\n var eyeDistanceScalingThreshold = DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Sets the eye altitude, in meters, above which this placemark's label is not displayed.\n */\n var eyeDistanceScalingLabelThreshold = 1.5 * DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Indicates whether this placemark's leader, if any, is pickable.\n */\n var isLeaderPickingEnabled = false\n /**\n * Enable additional altitude offset (billboarding) to prevent clipping Placamerk by terrain on tilt.\n */\n var isBillboardingEnabled = false\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * The amount of rotation to apply to the image, measured clockwise and relative to this placemark's\n * [Placemark.imageRotationReference].\n */\n var imageRotation = ZERO\n /**eyeDistanceScaling\n * Sets the type of rotation to apply if the [Placemark.imageRotation] is not zero. This value indicates\n * whether to apply this placemark's image rotation relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is rotated in the plane of the screen and its\n * orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is rotated in a plane tangent to the globe at\n * this placemark's position and retains its orientation relative to the globe.\n */\n var imageRotationReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Sets the amount of tilt to apply to the image, measured away from the eye point and relative to this\n * placemark's [Placemark.imageTiltReference]. While any positive or negative number may be specified,\n * values outside the range [0. 90] cause some or all of the image to be clipped.\n */\n var imageTilt = ZERO\n /**\n * Sets the type tilt to apply when [Placemark.imageTilt] is non-zero. This value indicates whether to\n * apply this placemark's image tilt relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is tilted inwards (for positive tilts) relative\n * to the plane of the screen, and its orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is tilted towards the globe's surface, and retains its\n * orientation relative to the surface.\n */\n var imageTiltReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Placemark, this is\n * simply it's position property.\n *\n * @return [Placemark.position]\n */\n override val referencePosition get() = position\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: PlacemarkAttributes\n /**\n * The picked object ID associated with the placemark during the current render pass.\n */\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n /**\n * The distance from the camera to the placemark in meters.\n */\n protected var cameraDistance = 0.0\n\n /**\n * Presents an interfaced for dynamically determining the PlacemarkAttributes based on the distance between the\n * placemark and the camera.\n */\n interface LevelOfDetailSelector {\n /**\n * Gets the active attributes for the current distance to the camera and highlighted state.\n *\n * @param rc The current render context\n * @param placemark The placemark needing a level of detail selection\n * @param cameraDistance The distance from the placemark to the camera (meters)\n *\n * @return if placemark should display or skip its rendering\n */\n fun selectLevelOfDetail(rc: RenderContext, placemark: Placemark, cameraDistance: Double): Boolean\n }\n\n /**\n * Moves the shape over the globe's surface. For a Placemark, this simply set [Placemark.position].\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n /**\n * Performs the rendering; called by the public render method.\n *\n * @param rc the current render context\n */\n override fun doRender(rc: RenderContext) {\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the placemark's Cartesian model point and corresponding distance to the eye point. If the placemark's\n // position is terrain-dependent but off the terrain, then compute it ABSOLUTE so that we have a point for the\n // placemark and are thus able to draw it. Otherwise, its image and label portion that are potentially over the\n // terrain won't get drawn, and would disappear as soon as there is no terrain at the placemark's position. This\n // can occur at the window edges.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the placemark drawable\n // and determining the amount of depth offset to apply.\n cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(placePoint)\n\n // Allow the placemark to adjust the level of detail based on distance to the camera\n if (levelOfDetailSelector?.selectLevelOfDetail(rc, this, cameraDistance) == false) return // skip rendering\n\n // Determine the attributes to use for the current render pass.\n determineActiveAttributes(rc)\n\n // Perform point based culling for placemarks who's textures haven't been loaded yet.\n // If the texture hasn't been loaded yet, then perform point-based culling to avoid\n // loading textures for placemarks that are 'probably' outside the viewing frustum.\n // There are cases where a placemark's texture would be partially visible if it at the\n // edge of the screen were loaded. In these cases the placemark will \"pop\" into view when\n // the placePoint enters the view frustum.\n val activeTexture = activeAttributes.imageSource?.let {\n rc.getTexture(it, null, rc.frustum.containsPoint(placePoint))\n }\n\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n val visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Apply the icon's translation and scale according to the image size, image offset and image scale. The image\n // offset is defined with its origin at the image's bottom-left corner and axes that extend up and to the right\n // from the origin point. When the placemark has no active texture the image scale defines the image size and no\n // other scaling is applied.\n val offsetX: Double\n val offsetY: Double\n val scaleX: Double\n val scaleY: Double\n if (activeTexture != null) {\n val w = activeTexture.width.toDouble()\n val h = activeTexture.height.toDouble()\n val s = activeAttributes.imageScale * visibilityScale\n activeAttributes.imageOffset.offsetForSize(w, h, offset)\n offsetX = offset.x * s\n offsetY = offset.y * s\n scaleX = w * s\n scaleY = h * s\n } else {\n // This branch serves both non-textured attributes and also textures that haven't been loaded yet.\n // We set the size for non-loaded textures to the typical size of a contemporary \"small\" icon (24px)\n var size = if (activeAttributes.imageSource != null) 24.0 else activeAttributes.imageScale\n size *= visibilityScale\n activeAttributes.imageOffset.offsetForSize(size, size, offset)\n offsetX = offset.x\n offsetY = offset.y\n scaleY = size\n scaleX = scaleY\n }\n\n // Offset along the normal vector to avoid collision with terrain.\n if (isBillboardingEnabled && offsetY != 0.0) {\n rc.globe.geographicToCartesianNormal(position.latitude, position.longitude, scratchVector).also {\n // Use real camera distance in billboarding\n val distance = if (isAlwaysOnTop) rc.cameraPoint.distanceTo(placePoint) else cameraDistance\n val altitude = rc.pixelSizeAtDistance(distance) * sin(rc.camera.tilt.inRadians)\n placePoint.add(scratchVector.multiply(offsetY * altitude))\n }\n }\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n val absTilt = abs(rc.camera.tilt.inDegrees)\n if (cameraDistance < rc.horizonDistance && absTilt <= 90) {\n depthOffset = (1 - absTilt / 90) * DEFAULT_DEPTH_OFFSET\n }\n\n // Project the placemark's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(placePoint, depthOffset, screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Keep track of the drawable count to determine whether this placemark has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Prepare a drawable for the placemark's leader, if requested. Enqueue the leader drawable before the icon\n // drawable in order to give the icon visual priority over the leader.\n if (mustDrawLeader(rc)) {\n // Compute the placemark's Cartesian ground point.\n rc.geographicToCartesian(position, AltitudeMode.CLAMP_TO_GROUND, groundPoint)\n\n // If the leader is visible, enqueue a drawable leader for processing on the OpenGL thread.\n if (rc.frustum.intersectsSegment(groundPoint, placePoint)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableLines.obtain(pool)\n prepareDrawableLeader(rc, drawable)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n // Prepare image transformation matrix\n prepareImageTransform(rc.camera, offsetX, offsetY, scaleX, scaleY)\n\n // If the placemark's icon is visible, enqueue a drawable icon for processing on the OpenGL thread.\n boundingRectForUnitSquare(imageTransform, imageBounds)\n if (rc.frustum.intersectsViewport(imageBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableIcon(rc, drawable, activeTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n // If there's a label, perform these same operations for the label texture.\n if ((!isEyeDistanceScaling || cameraDistance <= eyeDistanceScalingLabelThreshold) && mustDrawLabel(rc)) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n rc.getText(label, activeAttributes.labelAttributes, rc.frustum.containsPoint(placePoint))?.let { labelTexture ->\n val w = labelTexture.width.toDouble()\n val h = labelTexture.height.toDouble()\n val s = activeAttributes.labelAttributes.scale * visibilityScale\n activeAttributes.labelAttributes.textOffset.offsetForSize(w, h, offset)\n labelTransform.setTranslation(\n screenPlacePoint.x - offset.x * s,\n screenPlacePoint.y - offset.y * s,\n screenPlacePoint.z\n )\n labelTransform.setScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(labelTransform, labelBounds)\n if (rc.frustum.intersectsViewport(labelBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableLabel(rc, drawable, labelTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n }\n\n // Enqueue a picked object that associates the placemark's icon and leader with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Determines the placemark attributes to use for the current render pass.\n *\n * @param rc the current render context\n */\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n /**\n * Prepare image transform matrix according to specified parameters\n *\n * @param camera current camera view\n * @param offsetX offset along X axis\n * @param offsetY offset along X axis\n * @param scaleX scaled width\n * @param scaleY scaled height\n */\n protected open fun prepareImageTransform(\n camera: Camera, offsetX: Double, offsetY: Double, scaleX: Double, scaleY: Double\n ) {\n // Initialize the unit square transform to the identity matrix.\n imageTransform.setToIdentity()\n\n // Position image on screen\n imageTransform.multiplyByTranslation(\n screenPlacePoint.x, screenPlacePoint.y, screenPlacePoint.z\n )\n\n // Divide Z by 2^24 to prevent texture clipping when tilting (where 24 is depth buffer bit size).\n // Doing so will limit depth range to (diagonal length)/2^24 and make its value within 0..1 range.\n imageTransform.multiplyByScale(1.0, 1.0, 1.0 / (1 shl 24))\n\n // Perform the tilt so that the image tilts back from its base into the view volume\n val actualTilt = if (imageTiltReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.tilt + imageTilt else imageTilt\n if (actualTilt.inDegrees != 0.0) imageTransform.multiplyByRotation(-1.0, 0.0, 0.0, actualTilt)\n\n // Perform image rotation\n val actualRotation = if (imageRotationReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.heading - imageRotation else -imageRotation\n if (actualRotation.inDegrees != 0.0) imageTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n\n // Apply pivot translation\n imageTransform.multiplyByTranslation(-offsetX, -offsetY, 0.0)\n\n // Apply scale\n imageTransform.multiplyByScale(scaleX, scaleY, 1.0)\n }\n\n /**\n * Prepares this placemark's icon or symbol for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableIcon(rc: RenderContext, drawable: DrawableScreenTexture, activeTexture: Texture?) {\n // Use the basic GLSL program to draw the placemark's icon.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the plaemark's unit square transform matrix.\n drawable.unitSquareTransform.copy(imageTransform)\n\n // Configure the drawable according to the placemark's active attributes. Use a color appropriate for the pick\n // mode. When picking use a unique color associated with the picked object ID. Use the texture associated with\n // the active attributes' image source and its associated tex coord transform. If the texture is not specified\n // or not available, draw a simple colored square.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.imageColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = activeTexture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's label for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLabel(rc: RenderContext, drawable: DrawableScreenTexture, labelTexture: Texture) {\n // Use the basic GLSL program to draw the placemark's label.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the label's unit square transform matrix.\n drawable.unitSquareTransform.copy(labelTransform)\n\n // Configure the drawable according to the active label attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(pickColor) else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = labelTexture\n drawable.enableDepthTest = activeAttributes.labelAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's leader for drawing in a subsequent drawing pass. Implementations must be careful not to\n * leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLeader(rc: RenderContext, drawable: DrawableLines) {\n // Use the basic GLSL program to draw the placemark's leader.\n drawable.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n var vertexIndex = 0\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[vertexIndex++] = (placePoint.z - groundPoint.z).toFloat()\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 1f\n drawable.vertexPoints[vertexIndex++] = 0f\n\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = 0.0f\n drawable.vertexPoints[vertexIndex++] = -1f\n drawable.vertexPoints[vertexIndex] = 0f\n\n // Compute the drawable's modelview-projection matrix, relative to the placemark's ground point.\n drawable.mvpMatrix.copy(rc.modelviewProjection)\n drawable.mvpMatrix.multiplyByTranslation(groundPoint.x, groundPoint.y, groundPoint.z)\n\n // Configure the drawable according to the placemark's active leader attributes. Use a color appropriate for the\n // pick mode. When picking use a unique color associated with the picked object ID.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.leaderAttributes.outlineColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.lineWidth = activeAttributes.leaderAttributes.outlineWidth\n drawable.enableDepthTest = activeAttributes.leaderAttributes.isDepthTest\n }\n\n /**\n * Determines if a label should and can be drawn.\n *\n * @return True if there is a valid label and label attributes.\n */\n protected open fun mustDrawLabel(rc: RenderContext) = activeAttributes.isDrawLabel && label?.isNotEmpty() == true\n\n /**\n * Determines if a leader-line should and can be drawn.\n *\n * @return True if leader-line directive is enabled and there are valid leader-line attributes.\n */\n protected open fun mustDrawLeader(rc: RenderContext) =\n activeAttributes.isDrawLeader && (isLeaderPickingEnabled || !rc.isPickMode) &&\n altitudeMode != AltitudeMode.CLAMP_TO_GROUND && !rc.globe.is2D\n\n companion object {\n /**\n * The default eye distance above which to reduce the size of this placemark, in meters.\n * If [Placemark.isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as\n * the eye distance increases beyond this threshold.\n */\n const val DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD = 4e5\n protected const val DEFAULT_DEPTH_OFFSET = -0.03\n private val placePoint = Vec3()\n private val scratchVector = Vec3()\n private val screenPlacePoint = Vec3()\n private val groundPoint = Vec3()\n private val offset = Vec2()\n private val imageTransform = Matrix4()\n private val labelTransform = Matrix4()\n private val imageBounds = Viewport()\n private val labelBounds = Viewport()\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws a simple square\n * centered on the supplied position with the given size and color.\n *\n * @param position The geographic position where the placemark is drawn.\n * @param color The color of the placemark.\n * @param pixelSize The width and height of the placemark.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithColorAndSize(position: Position, color: Color, pixelSize: Int) =\n Placemark(position, PlacemarkAttributes().apply {\n imageColor = color\n imageScale = pixelSize.toDouble()\n })\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws the given image\n * centered on the supplied position.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithImage(position: Position, imageSource: ImageSource) =\n Placemark(position, PlacemarkAttributes.createWithImage(imageSource))\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle (with TextAttributes) that\n * draws the given image centered on the supplied position with a nearby label.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n * @param label The text that is drawn near the image. This parameter becomes the placemark's displayName\n * property.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle containing TextAttributes.\n */\n @JvmStatic\n fun createWithImageAndLabel(\n position: Position, imageSource: ImageSource, label: String\n ) = Placemark(position, PlacemarkAttributes.createWithImage(imageSource), label)\n\n protected fun nextCacheKey() = Any()\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport kotlin.jvm.JvmStatic\n\n/**\n * Holds attributes applied to [Placemark] shapes.\n * The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\nopen class PlacemarkAttributes(\n /**\n * Returns the source of the placemark's image. If null, the placemark is drawn as a square whose width and height\n * are the value of this attribute object's [imageScale] property.\n */\n var imageSource: ImageSource?,\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n imageColor: Color,\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n imageOffset: Offset,\n /**\n * Returns the amount to scale the placemark's image. When this attribute bundle has a valid image path the scale is\n * applied to the image's dimensions. Otherwise, the scale indicates the dimensions in pixels of a square drawn at\n * the placemark's geographic position. A scale of 0 causes the placemark to disappear; however, the placemark's\n * label, if any, is still drawn.\n */\n var imageScale: Double,\n /**\n * Returns the minimum amount to scale the placemark's image. When a [Placemark.isEyeDistanceScaling] is true,\n * this value controls the minimum size of the rendered placemark. A value of 0 allows the placemark to disappear.\n */\n var minimumImageScale: Double,\n /**\n * Returns whether to draw a placemark's label text.\n */\n var isDrawLabel: Boolean,\n /**\n * Returns whether to draw a line from the placemark's geographic position to the ground.\n */\n var isDrawLeader: Boolean,\n /**\n * Returns whether the placemark should be depth-tested against other objects in the scene. If true, the placemark\n * may be occluded by terrain and other objects in certain viewing situations. If false, the placemark will not be\n * occluded by terrain and other objects. If this value is true, the placemark's label, if any, has an independent\n * depth-test control.\n */\n var isDepthTest: Boolean,\n /**\n * Returns the attributes to apply to the placemark's label\n */\n labelAttributes: TextAttributes,\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n leaderAttributes: ShapeAttributes\n) {\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n var imageColor = imageColor\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n var imageOffset = imageOffset\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the placemark's label\n */\n var labelAttributes = labelAttributes\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n var leaderAttributes = leaderAttributes\n set(value) {\n field.copy(value)\n }\n\n /**\n * Constructs a placemark attributes bundle. The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\n constructor(): this(\n imageSource = null,\n imageColor = Color(1f, 1f, 1f, 1f), // white\n imageOffset = Offset.center(),\n imageScale = 1.0,\n minimumImageScale = 0.0,\n isDrawLabel = true,\n isDrawLeader = false,\n isDepthTest = true,\n labelAttributes = TextAttributes(),\n leaderAttributes = ShapeAttributes()\n )\n\n /**\n * Constructs a placemark attribute bundle from the specified attributes. Performs a deep copy of the color, offset,\n * label attributes and leader-line attributes.\n *\n * @param attributes The attributes to be copied.\n */\n constructor(attributes: PlacemarkAttributes): this(\n attributes.imageSource,\n Color(attributes.imageColor),\n Offset(attributes.imageOffset),\n attributes.imageScale,\n attributes.minimumImageScale,\n attributes.isDrawLabel,\n attributes.isDrawLeader,\n attributes.isDepthTest,\n TextAttributes(attributes.labelAttributes),\n ShapeAttributes(attributes.leaderAttributes)\n )\n\n fun copy(attributes: PlacemarkAttributes) = apply {\n imageSource = attributes.imageSource\n imageColor.copy(attributes.imageColor)\n imageOffset.copy(attributes.imageOffset)\n imageScale = attributes.imageScale\n minimumImageScale = attributes.minimumImageScale\n isDrawLabel = attributes.isDrawLabel\n isDrawLeader = attributes.isDrawLeader\n isDepthTest = attributes.isDepthTest\n labelAttributes.copy(attributes.labelAttributes)\n leaderAttributes.copy(attributes.leaderAttributes)\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is PlacemarkAttributes) return false\n if (imageSource != other.imageSource) return false\n if (imageColor != other.imageColor) return false\n if (imageOffset != other.imageOffset) return false\n if (imageScale != other.imageScale) return false\n if (minimumImageScale != other.minimumImageScale) return false\n if (isDrawLabel != other.isDrawLabel) return false\n if (isDrawLeader != other.isDrawLeader) return false\n if (isDepthTest != other.isDepthTest) return false\n if (labelAttributes != other.labelAttributes) return false\n if (leaderAttributes != other.leaderAttributes) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = imageSource?.hashCode() ?: 0\n result = 31 * result + imageColor.hashCode()\n result = 31 * result + imageOffset.hashCode()\n result = 31 * result + imageScale.hashCode()\n result = 31 * result + minimumImageScale.hashCode()\n result = 31 * result + isDrawLabel.hashCode()\n result = 31 * result + isDrawLeader.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + labelAttributes.hashCode()\n result = 31 * result + leaderAttributes.hashCode()\n return result\n }\n\n companion object {\n @JvmStatic\n fun createWithImage(imageSource: ImageSource) = PlacemarkAttributes().apply { this.imageSource = imageSource }\n\n @JvmStatic\n fun createWithImageAndLeader(imageSource: ImageSource) = PlacemarkAttributes().apply {\n this.imageSource = imageSource\n isDrawLeader = true\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.TriangleShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Polygon @JvmOverloads constructor(\n positions: List = emptyList(), attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n protected val boundaries = mutableListOf(positions)\n val boundaryCount get() = boundaries.size\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var lineVertexArray = FloatArray(0)\n protected var lineVertexIndex = 0\n protected var verticalVertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val topElements = mutableListOf()\n protected val sideElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected var vertexBufferKey = nextCacheKey()\n protected var elementBufferKey = nextCacheKey()\n protected var vertexLinesBufferKey = nextCacheKey()\n protected var elementLinesBufferKey = nextCacheKey()\n protected val vertexOrigin = Vec3()\n protected var cameraDistance = 0.0\n protected var texCoord1d = 0.0\n protected val tessCallback = object : GLUtessellatorCallbackAdapter() {\n override fun combineData(\n coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any\n ) = tessCombine(polygonData as RenderContext, coords, data, weight, outData)\n\n override fun vertexData(vertexData: Any, polygonData: Any) = tessVertex(polygonData as RenderContext, vertexData)\n\n override fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) = tessEdgeFlag(polygonData as RenderContext, boundaryEdge)\n\n override fun errorData(errnum: Int, polygonData: Any) = tessError(polygonData as RenderContext, errnum)\n }\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoord2d = Vec3()\n private val texCoordMatrix = Matrix3()\n private val modelToTexCoord = Matrix4()\n private val intermediateLocation = Location()\n private val tessCoords = DoubleArray(3)\n private val tessVertices = IntArray(3)\n private val tessEdgeFlags = BooleanArray(3)\n private var tessEdgeFlag = true\n private var tessVertexCount = 0\n\n companion object {\n protected const val VERTEX_STRIDE = 5\n protected const val LINE_VERTEX_STRIDE = 10\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n protected const val VERTEX_ORIGINAL = 0\n protected const val VERTEX_INTERMEDIATE = 1\n protected const val VERTEX_COMBINED = 2\n protected fun nextCacheKey() = Any()\n }\n\n fun getBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"getBoundary\", \"invalidIndex\")\n }\n return boundaries[index]\n }\n\n fun setBoundary(index: Int, positions: List): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"setBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.set(index, positions)\n }\n\n fun addBoundary(positions: List): Boolean {\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.add(positions)\n }\n\n fun addBoundary(index: Int, positions: List) {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"addBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n boundaries.add(index, positions)\n }\n\n fun removeBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"removeBoundary\", \"invalidIndex\")\n }\n reset()\n return boundaries.removeAt(index)\n }\n\n fun clearBoundaries() {\n boundaries.clear()\n reset()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n lineVertexArray = FloatArray(0)\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (boundaries.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n vertexLinesBufferKey = nextCacheKey()\n elementLinesBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n val drawableLines: Drawable\n val drawStateLines: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n\n drawableLines = DrawableSurfaceShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n drawableLines.offset = rc.globe.offset\n drawableLines.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n\n drawableLines = DrawableShape.obtain(pool)\n drawStateLines = drawableLines.drawState\n\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n val array = IntArray(topElements.size + sideElements.size)\n var index = 0\n for (element in topElements) array[index++] = element\n for (element in sideElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n // Use triangles mode to draw lines\n drawStateLines.isLine = true\n\n // Use the geom lines GLSL program to draw the shape.\n drawStateLines.program = rc.getShaderProgram { TriangleShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawStateLines.vertexBuffer = rc.getBufferObject(vertexLinesBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, lineVertexArray)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawStateLines.elementBuffer = rc.getBufferObject(elementLinesBufferKey) {\n val array = IntArray(outlineElements.size + verticalElements.size)\n var index = 0\n for (element in outlineElements) array[index++] = element\n for (element in verticalElements) array[index++] = element\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, array)\n }\n\n drawInterior(rc, drawState)\n drawOutline(rc, drawStateLines)\n\n // Configure the drawable according to the shape's attributes. Disable triangle backface culling when we're\n // displaying a polygon without extruded sides, so we want to draw the top and the bottom.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Configure the drawable according to the shape's attributes.\n drawStateLines.vertexOrigin.copy(vertexOrigin)\n drawStateLines.enableCullFace = false\n drawStateLines.enableDepthTest = activeAttributes.isDepthTest\n drawStateLines.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape|| activeAttributes.interiorColor.alpha >= 1.0) {\n rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n rc.offerSurfaceDrawable(drawableLines, 0.0 /*zOrder*/)\n } else {\n rc.offerShapeDrawable(drawableLines, cameraDistance)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior top.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n drawState.drawElements(GL_TRIANGLES, topElements.size, GL_UNSIGNED_INT, 0 /*offset*/)\n\n // Configure the drawable to display the shape's interior sides.\n if (isExtrude) {\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLES, sideElements.size, GL_UNSIGNED_INT, topElements.size * Int.SIZE_BYTES /*offset*/)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_TRIANGLES, outlineElements.size,\n GL_UNSIGNED_INT, 0 /*offset*/\n )\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_TRIANGLES, verticalElements.size,\n GL_UNSIGNED_INT, outlineElements.size * Int.SIZE_BYTES /*offset*/\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty() || isExtrude && !isSurfaceShape && lineVertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val noIntermediatePoints = maximumIntermediatePoints <= 0 || pathType == LINEAR\n\n var vertexCount = 0\n var lineVertexCount = 0\n var verticalVertexCount = 0\n for (i in boundaries.indices) {\n val p = boundaries[i]\n\n if (p.isEmpty()) continue\n\n if (noIntermediatePoints) {\n vertexCount += p.size\n lineVertexCount += (p.size + 2)\n verticalVertexCount += p.size\n } else if (p.isNotEmpty() && p[0] == p[p.size - 1]) {\n vertexCount += p.size + (p.size - 1) * maximumIntermediatePoints\n lineVertexCount += 2 + p.size + (p.size - 1) * maximumIntermediatePoints\n verticalVertexCount += p.size\n } else {\n vertexCount += p.size + p.size * maximumIntermediatePoints\n lineVertexCount += 3 + p.size + p.size * maximumIntermediatePoints\n verticalVertexCount += p.size\n }\n }\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else if (!isSurfaceShape) FloatArray(vertexCount * VERTEX_STRIDE)\n else FloatArray((vertexCount + boundaries.size) * VERTEX_STRIDE) // Reserve boundaries.size for combined vertexes\n topElements.clear()\n sideElements.clear()\n lineVertexIndex = 0\n verticalVertexIndex = lineVertexCount * LINE_VERTEX_STRIDE\n lineVertexArray = if (isExtrude && !isSurfaceShape) FloatArray(lineVertexCount * LINE_VERTEX_STRIDE + verticalVertexCount * 4 * LINE_VERTEX_STRIDE)\n else FloatArray(lineVertexCount * LINE_VERTEX_STRIDE)\n outlineElements.clear()\n verticalElements.clear()\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n val tess = rc.tessellator\n GLU.gluTessNormal(tess, 0.0, 0.0, 1.0)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, tessCallback)\n GLU.gluTessBeginPolygon(tess, rc)\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions to assemble\n\n GLU.gluTessBeginContour(tess)\n\n // Add the boundary's first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, VERTEX_ORIGINAL /*type*/)\n\n addLineVertex(rc, begin.latitude, begin.longitude, begin.altitude, true, false)\n addLineVertex(rc, begin.latitude, begin.longitude, begin.altitude, false, false)\n\n // Add the remaining boundary vertices, tessellating each edge as indicated by the polygon's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, VERTEX_ORIGINAL /*type*/)\n addLineVertex(rc, end.latitude, end.longitude, end.altitude, false, true)\n begin = end\n }\n\n // Tessellate the implicit closing edge if the boundary is not already closed.\n if (begin != positions[0]) {\n addIntermediateVertices(rc, begin, positions[0])\n addLineVertex(rc, positions[0].latitude, positions[0].longitude, positions[0].altitude, true, true)\n addLineVertex(rc, positions[0].latitude, positions[0].longitude, positions[0].altitude, true, false)\n } else {\n addLineVertex(rc, begin.latitude, begin.longitude, begin.altitude, true, false)\n }\n GLU.gluTessEndContour(tess)\n }\n GLU.gluTessEndPolygon(tess)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, null)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, VERTEX_INTERMEDIATE /*type*/)\n addLineVertex(rc, loc.latitude, loc.longitude, alt, true, true)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, type: Int): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (type != VERTEX_COMBINED) {\n tessCoords[0] = longitude.inDegrees\n tessCoords[1] = latitude.inDegrees\n tessCoords[2] = altitude\n GLU.gluTessVertex(rc.tessellator, tessCoords, 0 /*coords_offset*/, vertex)\n }\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude) else vertexOrigin.copy(point)\n }\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n }\n }\n return vertex\n }\n\n protected open fun addLineVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, isIntermediate : Boolean, addIndices : Boolean\n ) {\n val vertex = (lineVertexIndex / LINE_VERTEX_STRIDE - 1) * 2\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (lineVertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (addIndices) {\n outlineElements.add(vertex - 2)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex)\n outlineElements.add(vertex)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex + 1)\n }\n } else {\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = 1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n lineVertexArray[lineVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[lineVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[lineVertexIndex++] = -1.0f\n lineVertexArray[lineVertexIndex++] = texCoord1d.toFloat()\n if (addIndices) {\n outlineElements.add(vertex - 2)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex)\n outlineElements.add(vertex)\n outlineElements.add(vertex - 1)\n outlineElements.add(vertex + 1)\n }\n if (isExtrude && !isIntermediate) {\n var vertPoint = Vec3()\n vertPoint = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, vertPoint)\n val index = verticalVertexIndex / LINE_VERTEX_STRIDE * 2\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = 1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n lineVertexArray[verticalVertexIndex++] = (vertPoint.x - vertexOrigin.x).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.y - vertexOrigin.y).toFloat()\n lineVertexArray[verticalVertexIndex++] = (vertPoint.z - vertexOrigin.z).toFloat()\n lineVertexArray[verticalVertexIndex++] = -1f\n lineVertexArray[verticalVertexIndex++] = 0.0f\n\n verticalElements.add(index)\n verticalElements.add(index + 1)\n verticalElements.add(index + 2)\n verticalElements.add(index + 2)\n verticalElements.add(index + 1)\n verticalElements.add(index + 3)\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var numPoints = 0.0\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions\n for (j in positions.indices) {\n val point = rc.geographicToCartesian(positions[j], AltitudeMode.ABSOLUTE, point)\n mx += point.x\n my += point.y\n mz += point.z\n numPoints++\n }\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n rc.globe.cartesianToLocalTransform(mx, my, mz, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n protected open fun tessCombine(rc: RenderContext, coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {\n ensureVertexArrayCapacity() // Increment array size to fit combined vertexes\n outData[0] = addVertex(rc, coords[1].degrees /*lat*/, coords[0].degrees /*lon*/, coords[2] /*alt*/, VERTEX_COMBINED /*type*/)\n }\n\n protected open fun tessVertex(rc: RenderContext, vertexData: Any) {\n tessVertices[tessVertexCount] = vertexData as Int\n tessEdgeFlags[tessVertexCount] = tessEdgeFlag\n if (tessVertexCount < 2) {\n tessVertexCount++ // increment the vertex count and wait for more vertices\n return\n } else {\n tessVertexCount = 0 // reset the vertex count and process one triangle\n }\n val v0 = tessVertices[0]\n val v1 = tessVertices[1]\n val v2 = tessVertices[2]\n topElements.add(v0)\n topElements.add(v1)\n topElements.add(v2)\n if (tessEdgeFlags[0] && isExtrude && !isSurfaceShape) {\n sideElements.add(v0)\n sideElements.add(v0.inc())\n sideElements.add(v1)\n sideElements.add(v1)\n sideElements.add(v0.inc())\n sideElements.add(v1.inc())\n }\n if (tessEdgeFlags[1] && isExtrude && !isSurfaceShape) {\n sideElements.add(v1)\n sideElements.add(v1.inc())\n sideElements.add(v2)\n sideElements.add(v2)\n sideElements.add(v1.inc())\n sideElements.add(v2.inc())\n }\n if (tessEdgeFlags[2] && isExtrude && !isSurfaceShape) {\n sideElements.add(v2)\n sideElements.add(v2.inc())\n sideElements.add(v0)\n sideElements.add(v0)\n sideElements.add(v2.inc())\n sideElements.add(v0.inc())\n }\n }\n\n protected open fun tessEdgeFlag(rc: RenderContext, boundaryEdge: Boolean) { tessEdgeFlag = boundaryEdge }\n\n protected open fun tessError(rc: RenderContext, errNum: Int) {\n val errStr = GLU.gluErrorString(errNum)\n logMessage(\n WARN, \"Polygon\", \"assembleGeometry\", \"Error attempting to tessellate polygon '$errStr'\"\n )\n }\n\n protected open fun ensureVertexArrayCapacity() {\n val size = vertexArray.size\n if (size == vertexIndex) {\n val increment = (size shr 1).coerceAtLeast(12)\n val newArray = FloatArray(size + increment)\n vertexArray.copyInto(newArray)\n vertexArray = newArray\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\n\n/**\n * Holds attributes applied to geographic shapes.\n */\nopen class ShapeAttributes(\n /**\n * Indicates whether shape interiors are enabled.\n */\n var isDrawInterior: Boolean,\n /**\n * Indicates whether shape outlines are enabled.\n */\n var isDrawOutline: Boolean,\n /**\n * Indicates whether shape vertical outlines are enabled. Not all shapes display vertical outlines. Those that do\n * not ignore this property. When enabled, those that do display vertical lines extending from the shape's specified\n * positions to the ground.\n */\n var isDrawVerticals: Boolean,\n /**\n * Indicates whether shape depth-testing is enabled. When true, shapes may be occluded by terrain and other shapes\n * in certain viewing situations. When false, shapes will not be occluded by terrain and other shapes.\n */\n var isDepthTest: Boolean,\n /**\n * Indicates whether depth write enabled.\n */\n var isDepthWrite: Boolean,\n /**\n * Sets whether shape lighting is enabled. When true, the appearance of a shape's color and image source may be\n * modified by shading applied from a global light source.\n */\n var isLightingEnabled: Boolean,\n /**\n * Indicates the color and opacity of shape interiors.\n */\n interiorColor: Color,\n /**\n * Indicates the color and opacity of shape outlines.\n */\n outlineColor: Color,\n /**\n * Indicates the width of shape outlines.\n */\n var outlineWidth: Float,\n /**\n * Indicates the image source applied to shape interiors. When null, shape interiors are displayed in the interior\n * color. When non-null, image pixels appear in shape interiors, with each image pixel multiplied by the interior\n * RGBA color. Use a white interior color to display unmodified image pixels.\n *
\n * By default, interior image sources are displayed as a repeating pattern across shape interiors. The pattern\n * matches image pixels to screen pixels, such that the image appears to repeat in screen coordinates.\n */\n var interiorImageSource: ImageSource?,\n /**\n * Indicates the image source applied to shape outlines.\n */\n var outlineImageSource: ImageSource?\n) {\n /**\n * Indicates the color and opacity of shape interiors.\n */\n var interiorColor = interiorColor\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates the color and opacity of shape outlines.\n */\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n isDrawInterior = true,\n isDrawOutline = true,\n isDrawVerticals = false,\n isDepthTest = true,\n isDepthWrite = true,\n isLightingEnabled = false,\n interiorColor = Color(1f, 1f, 1f, 1f), // white\n outlineColor = Color(1f, 0f, 0f, 1f), // red\n outlineWidth = 1.0f,\n interiorImageSource = null,\n outlineImageSource = null\n )\n\n constructor(attributes: ShapeAttributes): this(\n attributes.isDrawInterior,\n attributes.isDrawOutline,\n attributes.isDrawVerticals,\n attributes.isDepthTest,\n attributes.isDepthWrite,\n attributes.isLightingEnabled,\n Color(attributes.interiorColor),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.interiorImageSource,\n attributes.outlineImageSource\n )\n\n fun copy(attributes: ShapeAttributes) = apply {\n isDrawInterior = attributes.isDrawInterior\n isDrawOutline = attributes.isDrawOutline\n isDrawVerticals = attributes.isDrawVerticals\n isDepthTest = attributes.isDepthTest\n isDepthWrite = attributes.isDepthWrite\n isLightingEnabled = attributes.isLightingEnabled\n interiorColor.copy(attributes.interiorColor)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n interiorImageSource = attributes.interiorImageSource\n outlineImageSource = attributes.outlineImageSource\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is ShapeAttributes) return false\n if (isDrawInterior != other.isDrawInterior) return false\n if (isDrawOutline != other.isDrawOutline) return false\n if (isDrawVerticals != other.isDrawVerticals) return false\n if (isDepthTest != other.isDepthTest) return false\n if (isDepthWrite != other.isDepthWrite) return false\n if (isLightingEnabled != other.isLightingEnabled) return false\n if (interiorColor != other.interiorColor) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (interiorImageSource != other.interiorImageSource) return false\n if (outlineImageSource != other.outlineImageSource) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = isDrawInterior.hashCode()\n result = 31 * result + isDrawOutline.hashCode()\n result = 31 * result + isDrawVerticals.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + isDepthWrite.hashCode()\n result = 31 * result + isLightingEnabled.hashCode()\n result = 31 * result + interiorColor.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + (interiorImageSource?.hashCode() ?: 0)\n result = 31 * result + (outlineImageSource?.hashCode() ?: 0)\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractSurfaceRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.SurfaceTextureProgram\n\nopen class SurfaceImage(sector: Sector, var imageSource: ImageSource): AbstractSurfaceRenderable(sector, \"Surface Image\") {\n var imageOptions: ImageOptions? = null\n protected val terrainSector = Sector()\n\n override fun doRender(rc: RenderContext) {\n terrainSector.copy(sector)\n if (terrainSector.isEmpty || !terrainSector.intersect(rc.terrain.sector) || !getExtent(rc).intersectsFrustum(rc.frustum)) return\n val texture = rc.getTexture(imageSource, imageOptions) ?: return // no texture to draw\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n\n // Enqueue a drawable surface texture for processing on the OpenGL thread.\n val program = getShaderProgram(rc)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n program, sector, opacity, texture, texture.coordTransform, rc.globe.offset, terrainSector\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n\n // Enqueue a picked object that associates the drawable surface texture with this surface image.\n if (rc.isPickMode) {\n val pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, drawable.color)\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun getShaderProgram(rc: RenderContext) = rc.getShaderProgram { SurfaceTextureProgram() }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\n/**\n * Holds attributes applied to text shapes and [Placemark] labels.\n */\nopen class TextAttributes protected constructor(\n font: Font,\n textColor: Color,\n textOffset: Offset,\n outlineColor: Color,\n var outlineWidth: Float,\n var isOutlineEnabled: Boolean,\n var isDepthTest: Boolean,\n var scale: Double\n) {\n var font = font\n set(value) {\n field.copy(value)\n }\n var textColor = textColor\n set(value) {\n field.copy(value)\n }\n var textOffset = textOffset\n set(value) {\n field.copy(value)\n }\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n font = Font(),\n textColor = Color(1f, 1f, 1f, 1f),\n textOffset = Offset.bottomCenter(),\n outlineColor = Color(0f, 0f, 0f, 1f),\n outlineWidth = 3f,\n isOutlineEnabled = true,\n isDepthTest = true,\n scale = 1.0\n )\n\n constructor(attributes: TextAttributes): this(\n attributes.font,\n Color(attributes.textColor),\n Offset(attributes.textOffset),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.isOutlineEnabled,\n attributes.isDepthTest,\n attributes.scale\n )\n\n fun copy(attributes: TextAttributes) = apply {\n font.copy(attributes.font)\n textColor.copy(attributes.textColor)\n textOffset.copy(attributes.textOffset)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n isOutlineEnabled = attributes.isOutlineEnabled\n isDepthTest = attributes.isDepthTest\n scale = attributes.scale\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is TextAttributes) return false\n if (font != other.font) return false\n if (textColor != other.textColor) return false\n if (textOffset != other.textOffset) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (isOutlineEnabled != other.isOutlineEnabled) return false\n if (isDepthTest != other.isDepthTest) return false\n if (scale != other.scale) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = font.hashCode()\n result = 31 * result + textColor.hashCode()\n result = 31 * result + textOffset.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + isOutlineEnabled.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + scale.hashCode()\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.*\nimport kotlinx.coroutines.*\nimport kotlin.time.Duration.Companion.seconds\n\nopen class TiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet): AbstractRenderable(\"Tiled Surface Image\") {\n /**\n * Tile factory implementation.\n */\n var tileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Tile pyramid representation.\n */\n var levelSet = levelSet\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Additional image texture options.\n */\n var imageOptions: ImageOptions? = null\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Define imagery level of details. It controls tile pixel density on the screen.\n */\n var detailControl = 1.0\n /**\n * Retrieve top level tiles to avoid black holes when navigating and zooming out camera\n */\n var retrieveTopLevelTiles = true\n /**\n * Use ancestor tile texture as a fallback for descendants\n */\n var useAncestorTileTexture = true\n /**\n * Define cache tiles factory implementation.\n */\n var cacheTileFactory: CacheTileFactory? = null\n /**\n * Configures tiled surface image to retrieve only the cache source.\n */\n var isCacheOnly = false\n\n /**\n * Memory cache for this layer's subdivision tiles. Each entry contains an array of four image tiles corresponding\n * to the subdivision of the group's common parent tile. The cache is configured to hold 1200 groups, a number\n * empirically determined to be sufficient for storing the tiles needed to navigate a small region.\n */\n protected var tileCache = LruMemoryCache>(1200)\n protected var activeProgram: SurfaceTextureProgram? = null\n protected var ancestorTile: ImageTile? = null\n protected var ancestorTexture: Texture? = null\n protected val ancestorTexCoordMatrix = Matrix3()\n protected val topLevelTiles = mutableListOf()\n protected var lastGlobeState: Globe.State? = null\n\n /**\n * Makes a copy of this tiled surface image\n */\n open fun clone() = TiledSurfaceImage(tileFactory, LevelSet(levelSet)).also {\n it.imageOptions = imageOptions\n }\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n checkGlobeState(rc)\n determineActiveProgram(rc)\n assembleTiles(rc)\n activeProgram = null // clear the active program to avoid leaking render resources\n ancestorTile = null // clear the ancestor tile and texture\n ancestorTexture = null\n }\n\n @Throws(IllegalStateException::class, IllegalArgumentException::class)\n open fun launchBulkRetrieval(\n scope: CoroutineScope, sector: Sector, resolution: ClosedRange, onProgress: ((Long, Long, Long) -> Unit)?,\n retrieveTile: suspend (imageSource: ImageSource, cacheSource: ImageSource, options: ImageOptions?) -> Boolean\n ): Job {\n val cacheTileFactory = cacheTileFactory ?: error(\"Cache not configured\")\n require(sector.intersect(levelSet.sector)) { \"Sector does not intersect tiled surface image sector\" }\n return scope.launch(Dispatchers.Default) {\n val minLevel = levelSet.levelForResolution(resolution.endInclusive)\n val maxLevel = levelSet.levelForResolution(resolution.start)\n val tileCount = levelSet.tileCount(sector, minLevel, maxLevel)\n var downloaded = 0L\n var skipped = 0L\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n topLevelTiles.forEach { topLevelTile ->\n processAndSubdivideTile(topLevelTile as ImageTile, sector, minLevel, maxLevel) { tile ->\n var attempt = 0\n // Retry download attempts till success or 404 not fond or job canceled\n while(true) {\n // Check if a job canceled\n ensureActive()\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: break\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource\n ?: (cacheTileFactory.createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile)\n .imageSource?.also { tile.cacheSource = it } ?: break\n // Attempt to download tile\n try {\n ++attempt\n if (retrieveTile(imageSource, cacheSource, imageOptions)) {\n // Tile successfully downloaded\n onProgress?.invoke(++downloaded, skipped, tileCount)\n } else {\n // Received data cannot be decoded as image\n onProgress?.invoke(downloaded, ++skipped, tileCount)\n }\n break // Continue downloading the next tile\n } catch (throwable: Throwable) {\n delay(if (attempt % makeLocalRetries == 0) makeLocalTimeoutLong else makeLocalTimeoutShort)\n }\n }\n }\n }\n }\n }\n\n protected open suspend fun processAndSubdivideTile(\n tile: ImageTile, sector: Sector, minLevel: Level, maxLevel: Level, process: suspend (ImageTile) -> Unit\n ) {\n if (!tile.intersectsSector(sector)) return // Ignore tiles and its descendants outside the specified sector\n val levelNumber = tile.level.levelNumber\n // Skip tiles with level less than specified offset from the process\n if (levelNumber >= minLevel.levelNumber && levelNumber >= levelSet.levelOffset) process(tile)\n // Do not subdivide if specified level or last available level reached\n if (levelNumber < maxLevel.levelNumber && !tile.level.isLastLevel) {\n tile.subdivide(tileFactory).forEach { processAndSubdivideTile(it as ImageTile, sector, minLevel, maxLevel, process) }\n }\n }\n\n protected open fun determineActiveProgram(rc: RenderContext) {\n activeProgram = rc.getShaderProgram { SurfaceTextureProgram() }\n }\n\n protected open fun assembleTiles(rc: RenderContext) {\n // TODO\n // The need to create Tiles with a defined image source couples the need to determine a tile's visibility with\n // he need to know its image source. Decoupling the two would mean we only need to know the image source when\n // the texture is actually requested Could the tile-based operations done here be implicit on level/row/column,\n // or use transient pooled tile objects not tied to an image source?\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as ImageTile)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: ImageTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsSector(rc.terrain.sector) || !tile.intersectsFrustum(rc)) return\n val retrieveCurrentLevel = tile.level.levelNumber >= levelSet.levelOffset\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n if (retrieveCurrentLevel) addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val currentAncestorTile = ancestorTile\n val currentAncestorTexture = ancestorTexture\n getTexture(rc, tile, retrieveTopLevelTiles && retrieveCurrentLevel)?.let { tileTexture ->\n // tile has a texture; use it as a fallback tile for descendants\n if (useAncestorTileTexture) {\n ancestorTile = tile\n ancestorTexture = tileTexture\n }\n }\n // each tile has a cached size of 1, recursively process the tile's children\n val children = tile.subdivideToCache(tileFactory, tileCache, 4)\n for (i in children.indices) addTileOrDescendants(rc, children[i] as ImageTile)\n ancestorTile = currentAncestorTile // restore the last fallback tile, even if it was null\n ancestorTexture = currentAncestorTexture\n }\n\n protected open fun addTile(rc: RenderContext, tile: ImageTile) {\n val texture = getTexture(rc, tile)\n val ancestorTile = ancestorTile\n val ancestorTexture = ancestorTexture\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n if (texture != null) { // use the tile's own texture\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, texture, texture.coordTransform, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n } else if (ancestorTile != null && ancestorTexture != null) { // use the ancestor tile's texture, transformed to fill the tile sector\n ancestorTexCoordMatrix.copy(ancestorTexture.coordTransform)\n ancestorTexCoordMatrix.multiplyByTileTransform(tile.sector, ancestorTile.sector)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, ancestorTexture, ancestorTexCoordMatrix, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n }\n\n // TODO If cache source retrieved but it is outdated, than try to retrieve original image source anyway to refresh cache\n protected open fun getTexture(rc: RenderContext, tile: ImageTile, retrieve: Boolean = true): Texture? {\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: return null\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource ?: cacheTileFactory?.run {\n (createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile).imageSource?.also { tile.cacheSource = it }\n }\n // Read cache only in case of tile factory and cache factory are the same\n val isCacheOnly = isCacheOnly || tileFactory == cacheTileFactory\n // If a cache source is not absent, then retrieve it instead of an original image source\n val isCacheAbsent = cacheSource == null || rc.renderResourceCache.absentResourceList.isResourceAbsent(cacheSource.hashCode())\n return rc.getTexture(\n if (isCacheAbsent) imageSource else cacheSource!!, imageOptions, retrieve && (!isCacheOnly || !isCacheAbsent)\n )\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n open fun invalidateTiles() {\n topLevelTiles.clear()\n tileCache.clear()\n }\n\n companion object {\n /**\n * Number of reties of bulk tile retrieval before long timeout\n */\n var makeLocalRetries = 3\n /**\n * Short timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutShort = 5.seconds\n /**\n * Long timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutLong = 15.seconds\n }\n}","package earth.worldwind.util\n\nimport kotlinx.datetime.Clock\nimport kotlin.time.Duration\nimport kotlin.time.Duration.Companion.seconds\n\n/**\n * Provides a collection to keep track of resources whose retrieval failed and when retrieval may be tried again.\n */\nopen class AbsentResourceList(\n /**\n * The number of attempts to make before the resource is marked as absent.\n */\n private val maxTrys: Int,\n /**\n * The amount of time to wait between attempts, in milliseconds.\n */\n private val minCheckInterval: Duration\n) {\n /**\n * The amount of time, in milliseconds, beyond which retrieval attempts should again be allowed.\n * When this time has elapsed from the most recent failed attempt the number of try's attempted is\n * reset to 0. This prevents the resource from being permanently blocked.\n */\n var tryAgainInterval = 60.seconds\n\n private val possiblyAbsent = mutableMapOf()\n\n fun clear() { possiblyAbsent.clear() }\n\n /**\n * Indicates whether a specified resource is marked as absent.\n * @param resourceId The resource identifier.\n * @returns true if the resource is marked as absent, otherwise false.\n */\n fun isResourceAbsent(resourceId: T): Boolean {\n val entry = possiblyAbsent[resourceId] ?: return false\n if (entry.permanent) return true\n\n val timeSinceLastMark = Clock.System.now() - entry.timeOfLastMark\n\n if (timeSinceLastMark > tryAgainInterval) {\n possiblyAbsent.remove(resourceId)\n return false\n }\n\n return timeSinceLastMark < minCheckInterval || entry.numTrys > maxTrys\n }\n\n /**\n * Marks a resource attempt as having failed. This increments the number-of-tries counter and sets the time\n * of the last attempt. When this method has been called [AbsentResourceList.maxTrys] times the resource is marked\n * as absent until this absent resource list's [AbsentResourceList.tryAgainInterval] is reached.\n *\n * @param resourceId The resource identifier.\n * @param permanent Marks a resource attempt as having failed permanently. No attempt will ever again be made to retrieve the resource.\n */\n fun markResourceAbsent(resourceId: T, permanent: Boolean = false) {\n (possiblyAbsent[resourceId] ?: AbsentResourceEntry().also { possiblyAbsent[resourceId] = it }).makeTry(permanent)\n }\n\n /**\n * Removes the specified resource from this absent resource list. Call this method when retrieval attempt succeeded.\n * @param resourceId The resource identifier.\n */\n fun unmarkResourceAbsent(resourceId: T) { possiblyAbsent.remove(resourceId) }\n\n private inner class AbsentResourceEntry {\n var timeOfLastMark = Clock.System.now()\n private set\n var numTrys = 0\n private set\n var permanent = false\n private set\n\n fun makeTry(permanent: Boolean = false) {\n numTrys++\n timeOfLastMark = Clock.System.now()\n this.permanent = permanent\n }\n }\n}","package earth.worldwind.util\n\n/**\n * AbstractSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded resources.\n */\nabstract class AbstractSource protected constructor(protected val source: Any) {\n /**\n * Resource post-processing routine.\n */\n var postprocessor: ResourcePostprocessor? = null\n\n /**\n * @return generic image source as unrecognized object.\n */\n fun asUnrecognized() = source\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is AbstractSource) return false\n if (source != other.source) return false\n return true\n }\n\n override fun hashCode() = source.hashCode()\n\n override fun toString() = source.toString()\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.min\n\nabstract class AbstractTile(\n /**\n * The sector spanned by this tile.\n */\n val sector: Sector\n) {\n /**\n * The tile's Cartesian bounding box.\n */\n protected val extent by lazy { BoundingBox() }\n protected open val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n private val nearestPoint = Vec3()\n\n /**\n * Indicates whether this tile's Cartesian extent intersects a frustum.\n *\n * @param rc the current render context\n *\n * @return true if the frustum intersects this tile's extent, otherwise false\n */\n fun intersectsFrustum(rc: RenderContext) = getExtent(rc).intersectsFrustum(rc.frustum)\n\n /**\n * Indicates whether this tile intersects a specified sector.\n *\n * @param sector the sector of interest\n *\n * @return true if the specified sector intersects this tile's sector, otherwise false\n */\n fun intersectsSector(sector: Sector) = this.sector.intersects(sector)\n\n /**\n * Calculates the distance from this tile to the camera point which ensures front to back sorting.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the L1 distance in degrees\n */\n protected open fun drawSortOrder(rc: RenderContext): Double {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val latAbsDifference = abs(cameraPosition.latitude.inDegrees - sector.centroidLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonAbsDifference = abs(cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees)\n val lonAbsDifferenceCorrected = min(lonAbsDifference, 360.0 - lonAbsDifference)\n\n return latAbsDifference + lonAbsDifferenceCorrected // L1 distance on cylinder\n }\n\n /**\n * Calculates nearest point of this tile to the camera position associated with the specified render context.\n * Altitude value is based on the minimum height for the tile.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the nearest point\n */\n protected open fun nearestPoint(rc: RenderContext): Vec3 {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val nearestLat = cameraPosition.latitude.inDegrees.coerceIn(sector.minLatitude.inDegrees, sector.maxLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonDifference = cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees\n val nearestLon = when {\n lonDifference < -180.0 -> sector.maxLongitude.inDegrees\n lonDifference > 180.0 -> sector.minLongitude.inDegrees\n else -> cameraPosition.longitude.inDegrees.coerceIn(sector.minLongitude.inDegrees, sector.maxLongitude.inDegrees)\n }\n val minHeight = heightLimits[0] * rc.verticalExaggeration\n return rc.globe.geographicToCartesian(nearestLat.degrees, nearestLon.degrees, minHeight, nearestPoint)\n }\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n}","package earth.worldwind.util\n\nimport kotlin.math.max\n\n@Suppress(\"UNCHECKED_CAST\")\nopen class BasicPool: Pool {\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n protected var size = 0\n protected var entries = arrayOfNulls(size)\n\n override fun acquire(): T? {\n if (size > 0) {\n val last = --size\n val instance = entries[last]\n entries[last] = null\n return instance as T?\n }\n return null\n }\n\n override fun release(instance: T?) {\n // TODO reduce the pool size when excess entries may not be needed\n // TODO use a keep alive time to indicate how long to keep stale instances\n if (instance != null) {\n val capacity = entries.size\n if (capacity == size) {\n // increase the pool size by the larger of 50% or the minimum increment\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries, 0, 0, capacity)\n entries = newEntries\n }\n entries[size++] = instance\n }\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport kotlin.math.roundToInt\n\n/**\n * Represents a level of a specific resolution in a [LevelSet].\n */\nopen class Level internal constructor(\n /**\n * The LevelSet that this level is a member of.\n */\n val parent: LevelSet,\n /**\n * The level's ordinal in its parent level set.\n */\n val levelNumber: Int,\n /**\n * The geographic width and height of tiles within this level.\n */\n val tileDelta: Location\n) {\n /**\n * The width in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the longitudinal direction of this level set.\n */\n val levelWidth = (parent.tileWidth * parent.tileOrigin.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).roundToInt()\n /**\n * The height in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the latitudinal direction of this level set.\n */\n val levelHeight = (parent.tileHeight * parent.tileOrigin.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).roundToInt()\n /**\n * The parent LevelSet's tileWidth.\n */\n val tileWidth = parent.tileWidth\n /**\n * The parent LevelSet's tileHeight.\n */\n val tileHeight = parent.tileHeight\n /**\n * The size of pixels or elevation cells within this level, in radians per pixel or per cell.\n */\n val texelSize = tileDelta.longitude.inRadians / parent.tileWidth\n /**\n * Indicates whether this level is the lowest resolution level (level 0) within the parent level set.\n */\n val isFirstLevel get() = levelNumber == 0\n /**\n * Indicates whether this level is the highest resolution level within the parent level set.\n */\n val isLastLevel get() = levelNumber == parent.numLevels - 1\n /**\n * Returns the level whose ordinal occurs immediately before this level's ordinal in the parent level set, or null\n * if this is the fist level.\n */\n val previousLevel get() = parent.level(levelNumber - 1)\n /**\n * Returns the level whose ordinal occurs immediately after this level's ordinal in the parent level set, or null if\n * this is the last level.\n */\n val nextLevel get() = parent.level(levelNumber + 1)\n\n /**\n * Calculates number of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector) = with(parent.tileOrigin) {\n val firstRow = computeRow(tileDelta.latitude, sector.minLatitude)\n val lastRow = computeLastRow(tileDelta.latitude, sector.maxLatitude)\n val firstCol = computeColumn(tileDelta.longitude, sector.minLongitude)\n val lastCol = computeLastColumn(tileDelta.longitude, sector.maxLongitude)\n (lastRow - firstRow + 1).toLong() * (lastCol - firstCol + 1).toLong()\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.ln\n\n/**\n * Configuration values for a multi-resolution, hierarchical collection of tiles organized into levels of increasing\n * resolution.\n */\nopen class LevelSetConfig {\n /**\n * The sector spanned by the level set.\n */\n val sector = Sector().setFullSphere()\n /**\n * Tile origin for the level set\n */\n val tileOrigin = Sector().setFullSphere()\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of the level set.\n */\n var firstLevelDelta = Location(POS90, POS90)\n /**\n * The number of levels in the level set.\n */\n var numLevels = 1\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset = 0\n /**\n * The width in pixels of images associated with tiles in the level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with the level set.\n */\n var tileWidth = 256\n /**\n * The height in pixels of images associated with tiles in the level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with the level set.\n */\n var tileHeight = 256\n\n /**\n * Returns the number of levels necessary to achieve the specified resolution. The result is correct for this\n * configuration's current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = ceil(level).toInt() // ceiling captures the resolution\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n\n /**\n * Returns the number of levels closest to the specified resolution, but does not exceed it. May be used to\n * configure level sets where a not to exceed resolution is mandated. The result is correct for this configuration's\n * current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired not to exceed resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForMinResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForMinResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = floor(level).toInt() // floor prevents exceeding the min scale\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class LruMemoryCache @JvmOverloads constructor(\n val capacity: Long, protected val lowWater: Long = (capacity * 0.75).toLong()\n) {\n var usedCapacity = 0L\n protected set\n val entryCount get() = entries.size\n // sorts entries from least recently used to most recently used\n protected open val lruComparator = Comparator> { lhs, rhs -> lhs.lastUsed.compareTo(rhs.lastUsed) }\n protected val entries = mutableMapOf>()\n protected open var age = 0L\n get() = ++field // Auto increment cache age on each access to its entries\n\n protected open class Entry(val key: K, val value: V, val size: Int) { var lastUsed = 0L }\n\n init {\n require(capacity >= 1) {\n logMessage(ERROR, \"LruMemoryCache\", \"constructor\", \"invalidCapacity\")\n }\n require(lowWater in 0 until capacity) {\n logMessage(\n ERROR, \"LruMemoryCache\", \"constructor\",\n \"The specified low-water value is greater than or equal to the capacity, or less than 1\"\n )\n }\n }\n\n open operator fun get(key: K) = entries[key]?.run {\n lastUsed = age\n value\n }\n\n open fun put(key: K, value: V, size: Int): V? {\n if (usedCapacity + size > capacity) makeSpace(size)\n val newEntry = Entry(key, value, size)\n newEntry.lastUsed = age\n usedCapacity += newEntry.size\n val oldEntry = entries.put(key, newEntry)\n if (oldEntry != null) {\n usedCapacity -= oldEntry.size\n if (newEntry.value !== oldEntry.value) {\n entryRemoved(oldEntry.key, oldEntry.value, newEntry.value, false)\n return oldEntry.value\n }\n }\n return null\n }\n\n open fun remove(key: K) = entries.remove(key)?.run {\n usedCapacity -= size\n entryRemoved(key, value, null, false)\n value\n }\n\n open fun trimToAge(maxAge: Long): Int {\n var trimmedCapacity = 0\n\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the entry's age is within the specified maximum age.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (entry.lastUsed < maxAge) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n trimmedCapacity += entry.size\n entryRemoved(entry.key, entry.value, null, false)\n } else break\n }\n return trimmedCapacity\n }\n\n open fun containsKey(key: K) = entries.containsKey(key)\n\n open fun clear() {\n // NOTE Entities cleared without entryRemoved call\n // for (entry in entries.values) entryRemoved(entry.key, entry.value, null, false)\n entries.clear()\n usedCapacity = 0\n }\n\n protected open fun makeSpace(spaceRequired: Int) {\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the cache capacity reaches the low water and the cache has\n // enough free capacity for the required space.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (usedCapacity > lowWater || capacity - usedCapacity < spaceRequired) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n entryRemoved(entry.key, entry.value, null, true)\n } else break\n }\n }\n\n /*\n * Sort the entries from least recently used to most recently used.\n */\n protected open fun assembleSortedEntries() = entries.values.sortedWith(lruComparator)\n\n protected open fun entryRemoved(key: K, oldValue: V, newValue: V?, evicted: Boolean) {}\n}","package earth.worldwind.util\n\nval messageTable = mapOf(\n \"errorReadingProgramSource\" to \"Error reading program sources\",\n \"exceptionParsingText\" to \"Exception parsing text\",\n \"invalidBitmap\" to \"The bitmap is recycled\",\n \"invalidCapacity\" to \"The capacity is less than 1\",\n \"invalidCount\" to \"The count is invalid\",\n \"invalidClipDistance\" to \"The clip distance is invalid\",\n \"invalidFieldOfView\" to \"The field of view is invalid\",\n \"invalidHeight\" to \"The height is invalid\",\n \"invalidIndex\" to \"The index is invalid\",\n \"invalidNumIntervals\" to \"The number of intervals is invalid\",\n \"invalidNumLevels\" to \"The number of levels is invalid\",\n \"invalidRadius\" to \"The radius is invalid\",\n \"invalidRange\" to \"The range is invalid\",\n \"invalidResolution\" to \"The resolution is invalid\",\n \"invalidStride\" to \"The stride is invalid\",\n \"invalidTileDelta\" to \"The tile delta is invalid\",\n \"invalidWidth\" to \"The width is invalid\",\n \"invalidWidthOrHeight\" to \"The width or the height is invalid\",\n \"missingArray\" to \"The array insufficient length\",\n \"missingLayerNames\" to \"The layer names are empty\",\n \"singularMatrix\" to \"The matrix cannot be inverted\"\n)","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport kotlinx.datetime.Instant\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.toLocalDateTime\nimport kotlin.math.*\n\n/**\n * Provides utilities for determining the Sun geographic and celestial location.\n */\nobject SunPosition {\n class CelestialLocation(val declination: Angle, val rightAscension: Angle)\n\n /**\n * Computes the geographic location of the sun for a given date\n * @param instant Input instant\n * @return the geographic location\n */\n fun getAsGeographicLocation(instant: Instant) = celestialToGeographic(getAsCelestialLocation(instant), instant)\n\n /**\n * Computes the celestial location of the sun for a given julianDate\n * @param instant Input instant\n * @return the celestial location\n */\n fun getAsCelestialLocation(instant: Instant): CelestialLocation {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n val meanLongitude = Angle.normalizeAngle360(280.460 + 0.9856474 * numDays)\n val meanAnomaly = Angle.toRadians(Angle.normalizeAngle360(357.528 + 0.9856003 * numDays))\n val eclipticLongitude = meanLongitude + 1.915 * sin(meanAnomaly) + 0.02 * sin(2 * meanAnomaly)\n val eclipticLongitudeRad = Angle.toRadians(eclipticLongitude)\n val obliquityOfTheEcliptic = Angle.toRadians(23.439 - 0.0000004 * numDays)\n val declination = asin(sin(obliquityOfTheEcliptic) * sin(eclipticLongitudeRad)).radians\n var rightAscension = atan(cos(obliquityOfTheEcliptic) * tan(eclipticLongitudeRad)).radians\n if (eclipticLongitude >= 90 && eclipticLongitude < 270) rightAscension += Angle.POS180\n return CelestialLocation(declination, rightAscension.normalize360())\n }\n\n /**\n * Converts from celestial coordinates (declination and right ascension) to geographic coordinates\n * (latitude, longitude) for a given julian date\n * @param celestialLocation Celestial location\n * @param instant Input instant\n * @return the geographic location\n */\n fun celestialToGeographic(celestialLocation: CelestialLocation, instant: Instant): Location {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n\n //Greenwich Mean Sidereal Time\n val GMST = Angle.normalizeAngle360(280.46061837 + 360.98564736629 * numDays)\n\n //Greenwich Hour Angle\n val GHA = Angle.normalizeAngle360(GMST - celestialLocation.rightAscension.inDegrees)\n\n val longitude = (-GHA).degrees.normalizeLongitude()\n\n return Location(celestialLocation.declination, longitude)\n }\n\n /**\n * Computes the julian date from a javascript date object\n * @param instant Input instant\n * @return the julian date\n */\n fun computeJulianDate(instant: Instant): Double {\n val date = instant.toLocalDateTime(TimeZone.UTC)\n var year = date.year\n var month = date.monthNumber + 1\n val day = date.dayOfMonth\n val hour = date.hour\n val minute = date.minute\n val second = date.second\n val dayFraction = (hour + minute / 60.0 + second / 3600.0) / 24.0\n if (month <= 2) {\n year -= 1\n month += 12\n }\n val a = floor(year / 100.0)\n val b = 2 - a + floor(a / 4.0)\n val JD0h = floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524.5\n return JD0h + dayFraction\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.cos\n\n/**\n * Geographically rectangular tile within a [LevelSet], typically representing terrain or imagery. Provides a base\n * class for tiles used by tiled image layers and elevation models. Applications typically do not interact with this\n * class.\n */\nopen class Tile protected constructor(\n /**\n * The sector spanned by this tile.\n */\n sector: Sector,\n /**\n * The level at which this tile lies within a [LevelSet].\n */\n val level: Level,\n /**\n * The tile's row within its level.\n */\n val row: Int,\n /**\n * The tile's column within its level.\n */\n val column: Int\n) : AbstractTile(sector) {\n /**\n * A key that uniquely identifies this tile within a level set. Tile keys are not unique to a specific level set.\n */\n val tileKey = \"${level.levelNumber}.$row.$column\"\n private val scratchVector = Vec3()\n\n /**\n * Indicates whether this tile should be subdivided based on the current navigation state and a specified detail\n * factor.\n *\n * @param rc the current render context\n * @param detailFactor the detail factor to consider\n *\n * @return true if the tile should be subdivided, otherwise false\n */\n open fun mustSubdivide(rc: RenderContext, detailFactor: Double): Boolean {\n var texelSize = level.texelSize * rc.globe.equatorialRadius // Compute texel size in meters\n\n val pixelSize = if (rc.globe.is2D) rc.pixelSize else {\n // Consider that texels are laid out continuously on the arc of constant latitude connecting the tile's\n // east and west edges and passing through its centroid.\n texelSize *= cos(sector.centroidLatitude.inRadians)\n\n // Get distance from nearest tile point to camera\n val nearestPoint = nearestPoint(rc)\n val distanceToCamera = nearestPoint.distanceTo(rc.cameraPoint)\n\n // Accelerate the degradation of tile details depending on the viewing angle to tile normal\n if (isAccelerateDegradation && level.tileDelta.latitude.inDegrees <= 5.625) {\n val viewingVector = nearestPoint.subtract(rc.cameraPoint)\n val normalVector =\n rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n texelSize *= abs(dot / (viewingVector.magnitude * normalVector.magnitude))\n }\n\n // Use individual pixel size based on tile distance to camera\n rc.pixelSizeAtDistance(distanceToCamera)\n }\n\n // Adjust the subdivision factory when the display density is low.\n return texelSize > pixelSize * detailFactor * rc.densityFactor\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its [LevelSet].\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n\n val latMin = sector.minLatitude\n val lonMin = sector.minLongitude\n val latMid = sector.centroidLatitude\n val lonMid = sector.centroidLongitude\n val latMax = sector.maxLatitude\n val lonMax = sector.maxLongitude\n\n var childRow = 2 * row\n var childCol = 2 * column\n var childSector = Sector(latMin, latMid, lonMin, lonMid)\n val child0 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southwest\n\n childRow = 2 * row\n childCol = 2 * column + 1\n childSector = Sector(latMin, latMid, lonMid, lonMax)\n val child1 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southeast\n\n childRow = 2 * row + 1\n childCol = 2 * column\n childSector = Sector(latMid, latMax, lonMin, lonMid)\n val child2 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northwest\n\n childRow = 2 * row + 1\n childCol = 2 * column + 1\n childSector = Sector(latMid, latMax, lonMid, lonMax)\n val child3 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northeast\n\n return arrayOf(child0, child1, child2, child3)\n }\n\n /**\n * Returns the four children formed by subdividing this tile, drawing those children from a specified cache. The\n * cache is checked for a child collection prior to subdividing. If one exists in the cache it is returned rather\n * than creating a new collection of children. If a new collection is created in the same manner as [subdivide] and added to the cache.\n *\n * @param tileFactory the tile factory to use to create the children\n * @param cache a memory cache that may contain pre-existing child tiles.\n * @param cacheSize the cached size of the four child tiles\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivideToCache(\n tileFactory: TileFactory, cache: LruMemoryCache>, cacheSize: Int\n ) = cache[tileKey] ?: subdivide(tileFactory).also { cache.put(tileKey, it, cacheSize) }\n\n companion object {\n /**\n * Accelerate the degradation of tile details depending on the viewing angle to tile normal.\n * This option dramatically increases performance, but degrades scene background level of details.\n */\n var isAccelerateDegradation = true\n\n /**\n * Creates all tiles for a specified level within a [LevelSet].\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result an pre-allocated Collection in which to store the results\n *\n * @return the result argument populated with the tiles for the specified level\n */\n @JvmStatic\n fun assembleTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = level.parent.sector\n val tileOrigin = level.parent.tileOrigin\n val tileDelta = level.tileDelta\n val firstRow = tileOrigin.computeRow(tileDelta.latitude, sector.minLatitude)\n val lastRow = tileOrigin.computeLastRow(tileDelta.latitude, sector.maxLatitude)\n val firstCol = tileOrigin.computeColumn(tileDelta.longitude, sector.minLongitude)\n val lastCol = tileOrigin.computeLastColumn(tileDelta.longitude, sector.maxLongitude)\n val firstRowLat = tileOrigin.minLatitude.plusDegrees(firstRow * tileDelta.latitude.inDegrees)\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * tileDelta.longitude.inDegrees)\n var minLat = firstRowLat\n for (row in firstRow..lastRow) {\n val maxLat = minLat + tileDelta.latitude\n var minLon = firstColLon\n for (col in firstCol..lastCol) {\n val maxLon = minLon + tileDelta.longitude\n val tileSector = Sector(minLat, maxLat, minLon, maxLon)\n result.add(tileFactory.createTile(tileSector, level, row, col))\n minLon = maxLon\n }\n minLat = maxLat\n }\n return result\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlin.math.*\n\nclass ExponentFormatter(val value: Double) {\n var mantissa: Double\n private set\n var exponent: Int = 0\n private set(value) {\n field = value\n strExponent = \"e$exponent\"\n }\n\n private val mstr: String\n private var strExponent: String\n\n init {\n val x = abs(value)\n exponent = log10(x).toInt()\n if (exponent < 0) exponent--\n mantissa = x / 10.0.pow(exponent)\n if (value < 0) mantissa = -mantissa\n mstr = mantissa.toString()\n strExponent = \"e$exponent\"\n }\n\n fun scientific(width: Int, fractionWidth: Int = -1): String {\n val minLength = if (mantissa < 0) 2 else 1\n\n // Get the desired part of mantissa with proper bounding and rounding\n // it works only for \"normalized\" mantissa that is always has d[.ddddd] form, e.g. integer\n // part is always 1 digit long\n //\n // ERROR: this rounding does not work with trailint (***9)8 - like variants\n //\n fun mpart(length: Int): String {\n var l = length\n if (l > mstr.length) l = mstr.length\n val result = StringBuilder(mstr.slice(0 until l))\n // exact value, no rounding:\n if (result.length == mstr.length) return result.toString()\n\n // next significant digit\n var nextDigit = mstr[result.length]\n if (nextDigit == '.') {\n if (result.length + 1 >= mstr.length) return result.toString()\n nextDigit = mstr[result.length + 1]\n }\n if (nextDigit in \"56789\") {\n val (m, ovf) = roundUp(result)\n if (!ovf) return m\n // overflow: exponent should grow\n exponent++\n // and the point position should be fixed\n val pointPos = m.indexOf('.')\n val mb = StringBuilder(m)\n if (pointPos == -1)\n return m // it was the last letter and was therefore removed by roundUp\n return mb.deleteAt(pointPos).insert(pointPos - 1, '.').toString()\n }\n return result.toString()\n }\n\n if (width == 0) return mstr + strExponent\n\n if (fractionWidth < 0 && width > 0) {\n var l = width - strExponent.length\n if (l < minLength) l = minLength\n return mpart(l) + strExponent\n }\n\n if (fractionWidth < 0 && width < 0) return mstr + strExponent\n\n // fractionWidth >= 0\n if (fractionWidth == 0) return \"${mstr[0]}$strExponent\"\n\n // fractionWidth > 0, +1 for decimal dot\n return mpart(minLength + 1 + fractionWidth) + strExponent\n }\n\n\n override fun toString() = \"${mantissa}e${exponent}\"\n}\n\ninternal fun scientificFormat(value: Double, width: Int, fractionPartLength: Int = -1) =\n ExponentFormatter(value).scientific(width, fractionPartLength)\n\ninternal fun fractionalFormat(_value: Double, width: Int, fractionPartLength: Int = -1): String {\n var value = _value\n val result = StringBuilder()\n\n if (abs(value) >= 1) {\n val i = if (fractionPartLength == 0) value.roundToLong() else value.toLong()\n result.append(i)\n value -= i\n } else result.append((if (value < 0) \"-0\" else \"0\"))\n\n var fl = if (fractionPartLength < 0) {\n if (width < 0) 6\n else width - result.length - 1\n } else fractionPartLength\n\n if (fl != 0) result.append('.')\n\n var rest = value * 10\n while (fl-- > 0) {\n val d = rest.toInt()\n result.append(abs(d))\n rest = (rest - d) * 10\n }\n // now we might need to round it up:\n return if (rest.toInt().absoluteValue < 5) result.toString() else roundUp(result, keepWidth = false).first\n}\n\n/**\n * Round up the mantissa part (call it with default arguments to start).\n * @return rounded mantissa and overflow flag (set when 9,99 -> 10,00 and like)\n */\nprivate fun roundUp(\n result: StringBuilder,\n length: Int = result.length,\n pos: Int = result.length - 1,\n keepWidth: Boolean = true\n): Pair {\n if (pos < 0) {\n // if we get there, it means the number of digits should grow, like \"9.99\" -> \"10.00\"\n // but we need to keep the length so \"10.0\":\n result.insert(0, '1')\n if (keepWidth) result.deleteAt(length)\n return result.toString() to true\n }\n // not the first digit: perform rounding:\n val d = result[pos]\n // it could be a decimal point we ignore and continue with rounding\n if (d == '.') return roundUp(result, length, pos - 1, keepWidth)\n\n // Small number add one \"0.19\" -> \"0.2\"\n // Simple case: alter only the current digit\n if (d != '9') {\n result[pos] = d + 1\n return result.toString() to false\n }\n // Complex case: 9->0 and propagate changes up.\n result[pos] = '0'\n return roundUp(result, length, pos - 1, keepWidth)\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal enum class Positioning { LEFT, RIGHT, CENTER; }\n\ninternal class Specification(val parent: StringFormat, var index: Int) {\n enum class Stage { FLAGS, LENGTH, FRACTION; }\n\n private var stage = Stage.FLAGS\n private var size: Int = -1\n private var fractionalPartSize: Int = -1\n private var positioninig = Positioning.RIGHT\n private var fillChar = ' '\n private var currentPart = StringBuilder()\n // private var pos = 0\n private var explicitPlus = false\n private var done = false\n private var indexIsOverride = false\n private val isScanningFlags: Boolean\n get() = stage == Stage.FLAGS\n\n internal fun scan() {\n while (!done) {\n when (val ch = parent.nextChar()) {\n '-', '^' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n positioninig = if (ch == '-') Positioning.LEFT else Positioning.CENTER\n }\n '+' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n explicitPlus = true\n }\n in \"*#_=\" -> {\n if (!isScanningFlags) invalidFormat(\"bad fill char $ch position\")\n fillChar = ch\n }\n '0' -> {\n if (isScanningFlags) fillChar = '0'\n else currentPart.append(ch)\n }\n in \"123456789\" -> {\n if (stage == Stage.FLAGS) stage = Stage.LENGTH\n currentPart.append(ch)\n }\n '$', '!' -> {\n if (stage != Stage.LENGTH) invalidFormat(\"unexpected $ch position\")\n if (indexIsOverride) invalidFormat(\"argument number '$ch' should occur only once\")\n indexIsOverride = true\n index = currentPart.toString().toInt() - 1\n parent.pushbackArgumentIndex()\n currentPart.clear()\n }\n 's' -> createStringField()\n 'd', 'i' -> createIntegerField()\n 'o' -> createOctalField()\n 'x' -> createHexField(false)\n 'X' -> createHexField(true)\n 'f', 'F' -> createFloat()\n 'E' -> createScientific(true)\n 'e' -> createScientific(false)\n 'g' -> createAutoFloat(true)\n 'G' -> createAutoFloat(false)\n 'c', 'C' -> createCharacter()\n 't' -> createTimeField(false)\n 'T' -> createTimeField(true)\n '.' -> {\n stage = when (stage) {\n Stage.FLAGS -> Stage.FRACTION\n Stage.LENGTH -> {\n endStage(false)\n Stage.FRACTION\n }\n else -> invalidFormat(\"can't parse specification: unexpected '.'\")\n }\n }\n else -> invalidFormat(\"unexpected character '$ch'\")\n }\n }\n }\n\n private fun invalidFormat(message: String): Nothing { parent.invalidFormat(message) }\n\n private val time get() = parent.getLocalDateTime(index)\n\n private fun createTimeField(upperCase: Boolean) {\n val ch = parent.nextChar()\n endStage()\n val result: String = when (ch) {\n 'H' -> \"%02d\".format(time.hour)\n 'k' -> \"%d\".format(time.hour)\n 'I', 'l' -> {\n var t = time.hour\n if (t > 12) t -= 12\n if (ch == 'I') \"%02d\".format(t)\n else t.toString()\n }\n 'M' -> \"%02d\".format(time.minute)\n 'S' -> \"%02d\".format(time.second)\n 'L' -> \"%03d\".format(time.nanosecond / 1_000_000)\n 'N' -> \"%09d\".format(time.nanosecond)\n 'p' -> {\n if (upperCase) if (time.hour > 12) \"PM\" else \"AM\"\n else if (time.hour > 12) \"pm\" else \"am\"\n }\n 'z' -> {\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString().replace(\":\", \"\")\n }\n 'Z' -> {\n // There us yet no abbreviations like 'CET', so we put there string representation like +01:00\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString()\n }\n 's' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).epochSeconds.toString()\n }\n 'Q' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).toEpochMilliseconds().toString()\n }\n // Date fields\n 'B' -> getMonthName(time.month.number)\n 'b', 'h' -> getAbbreviatedMonthName(time.month.number)\n 'e' -> time.dayOfMonth.toString()\n 'd' -> \"%02s\".format(time.dayOfMonth)\n 'm' -> \"%02s\".format(time.month.number)\n 'A' -> getWeekDayName(time.dayOfWeek)\n 'a' -> getAbbreviatedWeekDayName(time.dayOfWeek)\n 'y' -> time.year.toString().takeLast(2)\n 'Y' -> \"%04d\".format(time.year)\n 'j' -> \"%03d\".format(time.dayOfYear)\n // shortcuts\n 'R' -> \"%1!tH:%1!tM\".format(time)\n 'r' ->\n if (upperCase) \"%1!tI:%1!tM:%1!tS %1!Tp\".format(time)\n else \"%1!tI:%1!tM:%1!tS %1!tp\".format(time)\n 'T' -> \"%tH:%1!tM:%1!tS\".format(time)\n 'D' -> \"%tm/%1!td/%1!ty\".format(time)\n 'F' -> \"%tY-%1!tm-%1!td\".format(time)\n 'c' -> \"%ta %1!tb %1!td %1!tT %1!tZ %1!tY\".format(time)\n 'O' -> {\n val tz = TimeZone.currentSystemDefault()\n val offset = tz.offsetAt(time.toInstant(tz)).toString()\n \"%tFT%1!tT%s\".format(time, offset)\n }\n '#' -> \"%tY%1!tm%1!td%1!tH%1!tM%1!tS\".format(time.toInstant(TimeZone.UTC))\n else -> invalidFormat(\"unknown time field specificator: 't$ch'\")\n }\n insertField(result)\n }\n\n private fun createStringField() {\n endStage()\n insertField(parent.getText(index))\n }\n\n private fun createIntegerField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus && fillChar == '0' && number > 0) insertField(number.toString(), \"+\")\n else insertField(if (explicitPlus) \"+$number\" else \"$number\")\n }\n\n private fun createHexField(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with hex format\")\n val text = number.toString(16)\n insertField(if (upperCase) text.uppercase() else text.lowercase())\n }\n\n private fun createOctalField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with oct format\")\n insertField(number.toString(8))\n }\n\n private fun createCharacter() {\n endStage()\n insertField(parent.getCharacter(index).toString())\n }\n\n private fun endStage(setDone: Boolean = true) {\n if (setDone) done = true\n if (currentPart.isNotEmpty()) {\n when (stage) {\n Stage.LENGTH -> size = currentPart.toString().toInt()\n Stage.FRACTION -> fractionalPartSize = currentPart.toString().toInt()\n Stage.FLAGS -> invalidFormat(\"can't parse format specifier (error 7)\")\n }\n currentPart.clear()\n }\n }\n\n private fun insertField(text: String, prefix: String = \"\") {\n val l = text.length + prefix.length\n if (size < 0 || size < l) parent.specificationDone(prefix + text)\n else {\n var padStart = 0\n var padEnd = 0\n when (positioninig) {\n Positioning.LEFT -> padEnd = size - l\n Positioning.RIGHT -> padStart = size - l\n Positioning.CENTER -> {\n padStart = (size - l) / 2\n padEnd = size - padStart - l\n }\n }\n val result = StringBuilder(prefix)\n while (padStart-- > 0) result.append(fillChar)\n result.append(text)\n while (padEnd-- > 0) result.append(fillChar)\n parent.specificationDone(result.toString())\n }\n }\n\n private fun createFloat() {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = fractionalFormat(number, size, fractionalPartSize)\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createScientific(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = scientificFormat(number, size, fractionalPartSize).let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createAutoFloat(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index)\n val t = number.toString().let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number.toDouble() > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n companion object {\n private val englishMonthNames: List by lazy {\n \"January February March April May June July August September October November December\".split(' ')\n }\n private val englishWeekDayNames: List by lazy {\n \"Monday Tuesday Wednesday Thursday Friday Saturday Sunday\".split(' ')\n }\n\n fun getAbbreviatedMonthName(monthNumber: Int) = getMonthName(monthNumber).take(3)\n\n fun getMonthName(monthNumber: Int) = englishMonthNames[monthNumber - 1]\n\n fun getWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1]\n }\n\n fun getAbbreviatedWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1].take(3)\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal class StringFormat(val format: String, val args: Array) {\n\n private var pos = 0\n private var specStart = -1\n private val result = StringBuilder()\n private var currentIndex = 0\n\n fun process(): StringFormat {\n while (pos < format.length) {\n val ch = format[pos++]\n if (ch == '%') {\n specStart = when {\n specStart == pos - 1 -> {\n result.append(ch)\n -1\n }\n specStart < 0 -> pos\n else -> invalidFormat(\"unexpected %\")\n }\n } else {\n if (specStart >= 0) {\n pos--\n Specification(this, currentIndex++).scan()\n } else result.append(ch)\n }\n }\n return this\n }\n\n internal fun nextChar(): Char {\n if (pos >= format.length) invalidFormat(\"unexpected end of string inside format specification\")\n return format[pos++]\n }\n\n internal fun invalidFormat(reason: String): Nothing {\n throw IllegalArgumentException(\"bad format: $reason at ofset ${pos - 1} of \\\"$format\\\"\")\n }\n\n override fun toString() = result.toString()\n\n internal fun getNumber(index: Int): Number = notNullArg(index)\n\n internal fun getText(index: Int) = args[index]!!.toString()\n\n internal fun getCharacter(index: Int): Char = notNullArg(index)\n\n internal fun specificationDone(text: String) {\n result.append(text)\n specStart = -1\n }\n\n fun getLocalDateTime(index: Int): LocalDateTime {\n val t = notNullArg(index)\n return when(t) {\n is Instant -> t.toLocalDateTime(TimeZone.currentSystemDefault())\n is LocalDateTime -> t\n is LocalDate -> t.atTime(0,0,0)\n else -> convertToInstant(t).toLocalDateTime(TimeZone.currentSystemDefault())\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun notNullArg(index: Int) = args[index]!! as T\n\n fun pushbackArgumentIndex() { currentIndex-- }\n}\n\nfun String.format(vararg args: Any?): String = StringFormat(this, args).process().toString()\n\nexpect fun convertToInstant(t: Any): Instant","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\nimport earth.worldwind.util.glu.error.Error\nimport earth.worldwind.util.glu.tessellator.GLUtessellatorImpl\n\n/**\n * Provides access to the OpenGL Utility Library (GLU). This library\n * provides standard methods for setting up view volumes, building\n * mipmaps and performing other common operations. The GLU NURBS\n * routines are not currently exposed.\n *

\n * Notes from the Reference Implementation for this class:\n * Thanks to the contributions of many individuals, this class is a\n * pure Java port of SGI's original C sources. All of the projection,\n * mipmap, scaling, and tessellation routines that are exposed are\n * compatible with the GLU 1.3 specification. The GLU NURBS routines\n * are not currently exposed.\n */\nobject GLU {\n fun gluErrorString(errorCode: Int) = Error.gluErrorString(errorCode)\n /**\n * **gluNewTess** creates and returns a new tessellation object. This\n * object must be referred to when calling tesselation methods. A return\n * value of null means that there was not enough memeory to allocate the\n * object.\n *\n * @return A new tessellation object.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluDeleteTess gluDeleteTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluNewTess() = GLUtessellatorImpl.gluNewTess()\n\n /**\n * **gluDeleteTess** destroys the indicated tessellation object (which was\n * created with [gluNewTess][.gluNewTess]).\n *\n * @param tessellator\n * Specifies the tessellation object to destroy.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluDeleteTess(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluDeleteTess()\n }\n\n /**\n * **gluTessProperty** is used to control properites stored in a\n * tessellation object. These properties affect the way that the polygons are\n * interpreted and rendered. The legal value for *which* are as\n * follows:\n *
    \n *
  • **GLU_TESS_WINDING_RULE**\n *

    \n * Determines which parts of the polygon are on the \"interior\".\n * *value* may be set to one of\n *

    **GLU_TESS_WINDING_ODD**,\n *

    **GLU_TESS_WINDING_NONZERO**,\n *

    **GLU_TESS_WINDING_POSITIVE**, or\n *

    **GLU_TESS_WINDING_NEGATIVE**, or\n *

    **GLU_TESS_WINDING_ABS_GEQ_TWO**.\n *

    \n * To understand how the winding rule works, consider that the input\n * contours partition the plane into regions. The winding rule determines\n * which of these regions are inside the polygon.\n *

    \n * For a single contour C, the winding number of a point x is simply the\n * signed number of revolutions we make around x as we travel once around C\n * (where CCW is positive). When there are several contours, the individual\n * winding numbers are summed. This procedure associates a signed integer\n * value with each point x in the plane. Note that the winding number is\n * the same for all points in a single region.\n *

    \n * The winding rule classifies a region as \"inside\" if its winding number\n * belongs to the chosen category (odd, nonzero, positive, negative, or\n * absolute value of at least two). The previous GLU tessellator (prior to\n * GLU 1.2) used the \"odd\" rule. The \"nonzero\" rule is another common way\n * to define the interior. The other three rules are useful for polygon CSG\n * operations.\n
  • *\n *
  • **GLU_TESS_BOUNDARY_ONLY**\n *

    \n * Is a boolean value (\"value\" should be set to GL_TRUE or GL_FALSE). When\n * set to GL_TRUE, a set of closed contours separating the polygon interior\n * and exterior are returned instead of a tessellation. Exterior contours\n * are oriented CCW with respect to the normal; interior contours are\n * oriented CW. The **GLU_TESS_BEGIN** and **GLU_TESS_BEGIN_DATA**\n * callbacks use the type GL_LINE_LOOP for each contour.\n
  • *\n *
  • **GLU_TESS_TOLERANCE**\n *

    \n * Specifies a tolerance for merging features to reduce the size of the\n * output. For example, two vertices that are very close to each other\n * might be replaced by a single vertex. The tolerance is multiplied by the\n * largest coordinate magnitude of any input vertex; this specifies the\n * maximum distance that any feature can move as the result of a single\n * merge operation. If a single feature takes part in several merge\n * operations, the toal distance moved could be larger.\n *

    \n * Feature merging is completely optional; the tolerance is only a hint.\n * The implementation is free to merge in some cases and not in others, or\n * to never merge features at all. The initial tolerance is 0.\n *

    \n * The current implementation merges vertices only if they are exactly\n * coincident, regardless of the current tolerance. A vertex is spliced\n * into an edge only if the implementation is unable to distinguish which\n * side of the edge the vertex lies on. Two edges are merged only when both\n * endpoints are identical.\n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object created with\n * [gluNewTess][.gluNewTess]\n * @param which\n * Specifies the property to be set. Valid values are\n * **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARDY_ONLY**,\n * **GLU_TESS_TOLERANCE**.\n * @param value\n * Specifices the value of the indicated property.\n *\n * @see .gluGetTessProperty gluGetTessProperty\n *\n * @see .gluNewTess gluNewTess\n */\n fun gluTessProperty(tessellator: GLUtessellator, which: Int, value: Double) {\n (tessellator as GLUtessellatorImpl).gluTessProperty(which, value)\n }\n\n /**\n * **gluGetTessProperty** retrieves properties stored in a tessellation\n * object. These properties affect the way that tessellation objects are\n * interpreted and rendered. See the\n * [gluTessProperty][.gluTessProperty] reference\n * page for information about the properties and what they do.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the property whose value is to be fetched. Valid values\n * are **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARY_ONLY**,\n * and **GLU_TESS_TOLERANCES**.\n * @param value\n * Specifices an array into which the value of the named property is\n * written.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessProperty gluTessProperty\n */\n fun gluGetTessProperty(\n tessellator: GLUtessellator, which: Int, value: DoubleArray, value_offset: Int\n ) {\n (tessellator as GLUtessellatorImpl).gluGetTessProperty(which, value, value_offset)\n }\n\n /**\n * **gluTessNormal** describes a normal for a polygon that the program is\n * defining. All input data will be projected onto a plane perpendicular to\n * the one of the three coordinate axes before tessellation and all output\n * triangles will be oriented CCW with repsect to the normal (CW orientation\n * can be obtained by reversing the sign of the supplied normal). For\n * example, if you know that all polygons lie in the x-y plane, call\n * **gluTessNormal**(tess, 0.0, 0.0, 0.0) before rendering any polygons.\n *

\n * If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal\n * is determined as follows. The direction of the normal, up to its sign, is\n * found by fitting a plane to the vertices, without regard to how the\n * vertices are connected. It is expected that the input data lies\n * approximately in the plane; otherwise, projection perpendicular to one of\n * the three coordinate axes may substantially change the geometry. The sign\n * of the normal is chosen so that the sum of the signed areas of all input\n * contours is nonnegative (where a CCW contour has positive area).\n *

\n * The supplied normal persists until it is changed by another call to\n * **gluTessNormal**.\n *\n * @param tessellator\n * Specifies the tessellation object (created by\n * [gluNewTess][.gluNewTess]).\n * @param x\n * Specifies the first component of the normal.\n * @param y\n * Specifies the second component of the normal.\n * @param z\n * Specifies the third component of the normal.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessNormal(tessellator: GLUtessellator, x: Double, y: Double, z: Double) {\n (tessellator as GLUtessellatorImpl).gluTessNormal(x, y, z)\n }\n\n /**\n * **gluTessCallback** is used to indicate a callback to be used by a\n * tessellation object. If the specified callback is already defined, then it\n * is replaced. If *aCallback* is null, then the existing callback\n * becomes undefined.\n *

\n * These callbacks are used by the tessellation object to describe how a\n * polygon specified by the user is broken into triangles. Note that there are\n * two versions of each callback: one with user-specified polygon data and one\n * without. If both versions of a particular callback are specified, then the\n * callback with user-specified polygon data will be used. Note that the\n * polygonData parameter used by some of the methods is a copy of the\n * reference that was specified when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The legal callbacks are as follows:\n *
    \n *
  • **GLU_TESS_BEGIN**\n *

    \n * The begin callback is invoked like\n * glBegin to indicate the start of a (triangle) primitive. The method\n * takes a single argument of type int. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_FALSE**, then\n * the argument is set to either **GL_TRIANGLE_FAN**,\n * **GL_TRIANGLE_STRIP**, or **GL_TRIANGLES**. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_TRUE**, then the\n * argument will be set to **GL_LINE_LOOP**. The method prototype for\n * this callback is:\n *
    void begin(int type);
    \n
  • *\n *
  • **GLU_TESS_BEGIN_DATA**\n *

    \n * The same as the **GLU_TESS_BEGIN** callback except\n * that it takes an additional reference argument. This reference is\n * identical to the opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void beginData(int type, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG**\n *

    \n * The edge flag callback is similar to\n * glEdgeFlag. The method takes\n * a single boolean boundaryEdge that indicates which edges lie on the\n * polygon boundary. If the boundaryEdge is **GL_TRUE**, then each vertex\n * that follows begins an edge that lies on the polygon boundary, that is,\n * an edge that separates an interior region from an exterior one. If the\n * boundaryEdge is **GL_FALSE**, then each vertex that follows begins an\n * edge that lies in the polygon interior. The edge flag callback (if\n * defined) is invoked before the first vertex callback.\n *

    \n * Since triangle fans and triangle strips do not support edge flags, the\n * begin callback is not called with **GL_TRIANGLE_FAN** or\n * **GL_TRIANGLE_STRIP** if a non-null edge flag callback is provided.\n * (If the callback is initialized to null, there is no impact on\n * performance). Instead, the fans and strips are converted to independent\n * triangles. The method prototype for this callback is:\n *
    void edgeFlag(boolean boundaryEdge);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG_DATA**\n *

    \n * The same as the **GLU_TESS_EDGE_FLAG** callback except that it takes\n * an additional reference argument. This reference is identical to the\n * opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void edgeFlagData(boolean boundaryEdge, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX**\n *

    \n * The vertex callback is invoked between the begin and end callbacks. It is\n * similar to glVertex3f, and it\n * defines the vertices of the triangles created by the tessellation\n * process. The method takes a reference as its only argument. This\n * reference is identical to the opaque reference provided by the user when\n * the vertex was described (see\n * [gluTessVertex][.gluTessVertex]). The method\n * prototype for this callback is:\n *
    void vertex(Object vertexData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX_DATA**\n *

    \n * The same as the **GLU_TESS_VERTEX** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void vertexData(Object vertexData, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_END**\n *

    \n * The end callback serves the same purpose as\n * glEnd. It indicates the end of a\n * primitive and it takes no arguments. The method prototype for this\n * callback is:\n *
    void end();
    \n
  • *\n *
  • **GLU_TESS_END_DATA**\n *

    \n * The same as the **GLU_TESS_END** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void endData(Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_COMBINE**\n *

    \n * The combine callback is called to create a new vertex when the\n * tessellation detects an intersection, or wishes to merge features. The\n * method takes four arguments: an array of three elements each of type\n * double, an array of four references, an array of four elements each of\n * type float, and a reference to a reference. The prototype is:\n *
    void combine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData);
    \n * The vertex is defined as a linear combination of up to four existing\n * vertices, stored in *data*. The coefficients of the linear\n * combination are given by *weight*; these weights always add up to 1.\n * All vertex pointers are valid even when some of the weights are 0.\n * *coords* gives the location of the new vertex.\n *

    \n * The user must allocate another vertex, interpolate parameters using\n * *data* and *weight*, and return the new vertex pointer\n * in *outData*. This handle is supplied during rendering callbacks.\n * The user is responsible for freeing the memory some time after\n * [gluTessEndPolygon][.gluTessEndPolygon] is\n * called.\n *

    \n * For example, if the polygon lies in an arbitrary plane in 3-space, and a\n * color is associated with each vertex, the **GLU_TESS_COMBINE**\n * callback might look like this:\n *
    \n     * void myCombine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData)\n     * {\n     * MyVertex newVertex = new MyVertex();\n     *\n     * newVertex.x = coords[0];\n     * newVertex.y = coords[1];\n     * newVertex.z = coords[2];\n     * newVertex.r = weight[0]*data[0].r +\n     * weight[1]*data[1].r +\n     * weight[2]*data[2].r +\n     * weight[3]*data[3].r;\n     * newVertex.g = weight[0]*data[0].g +\n     * weight[1]*data[1].g +\n     * weight[2]*data[2].g +\n     * weight[3]*data[3].g;\n     * newVertex.b = weight[0]*data[0].b +\n     * weight[1]*data[1].b +\n     * weight[2]*data[2].b +\n     * weight[3]*data[3].b;\n     * newVertex.a = weight[0]*data[0].a +\n     * weight[1]*data[1].a +\n     * weight[2]*data[2].a +\n     * weight[3]*data[3].a;\n     * outData = newVertex;\n     * }
    \n * If the tessellation detects an intersection, then the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback (see\n * below) must be defined, and it must write a non-null reference into\n * *outData*. Otherwise the **GLU_TESS_NEED_COMBINE_CALLBACK** error\n * occurs, and no output is generated.\n
  • *\n *
  • **GLU_TESS_COMBINE_DATA**\n *

    \n * The same as the **GLU_TESS_COMBINE** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void combineData(double[] coords, Object[] data,\n     * float[] weight, Object[] outData,\n     * Object polygonData);
    \n *\n
  • *\n *
  • **GLU_TESS_ERROR**\n *

    \n * The error callback is called when an error is encountered. The one\n * argument is of type int; it indicates the specific error that occurred\n * and will be set to one of **GLU_TESS_MISSING_BEGIN_POLYGON**,\n * **GLU_TESS_MISSING_END_POLYGON**,\n * **GLU_TESS_MISSING_BEGIN_CONTOUR**,\n * **GLU_TESS_MISSING_END_CONTOUR**, **GLU_TESS_COORD_TOO_LARGE**,\n * **GLU_TESS_NEED_COMBINE_CALLBACK** or **GLU_OUT_OF_MEMORY**.\n * Character strings describing these errors can be retrieved with the\n * [gluErrorString][.gluErrorString] call. The\n * method prototype for this callback is:\n *
    \n     * void error(int errnum);
    \n * The GLU library will recover from the first four errors by inserting the\n * missing call(s). **GLU_TESS_COORD_TOO_LARGE** indicates that some\n * vertex coordinate exceeded the predefined constant\n * **GLU_TESS_MAX_COORD** in absolute value, and that the value has been\n * clamped. (Coordinate values must be small enough so that two can be\n * multiplied together without overflow.)\n * **GLU_TESS_NEED_COMBINE_CALLBACK** indicates that the tessellation\n * detected an intersection between two edges in the input data, and the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback was not\n * provided. No output is generated. **GLU_OUT_OF_MEMORY** indicates that\n * there is not enough memory so no output is generated.\n
  • *\n *
  • **GLU_TESS_ERROR_DATA**\n *

    \n * The same as the GLU_TESS_ERROR callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void errorData(int errnum, Object polygonData);
    \n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the callback being defined. The following values are\n * valid: **GLU_TESS_BEGIN**, **GLU_TESS_BEGIN_DATA**,\n * **GLU_TESS_EDGE_FLAG**, **GLU_TESS_EDGE_FLAG_DATA**,\n * **GLU_TESS_VERTEX**, **GLU_TESS_VERTEX_DATA**,\n * **GLU_TESS_END**, **GLU_TESS_END_DATA**,\n * **GLU_TESS_COMBINE**, **GLU_TESS_COMBINE_DATA**,\n * **GLU_TESS_ERROR**, and **GLU_TESS_ERROR_DATA**.\n * @param aCallback\n * Specifies the callback object to be called.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluErrorString gluErrorString\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n */\n fun gluTessCallback(\n tessellator: GLUtessellator, which: Int, aCallback: GLUtessellatorCallback?\n ) {\n (tessellator as GLUtessellatorImpl).gluTessCallback(which, aCallback)\n }\n\n /**\n * **gluTessVertex** describes a vertex on a polygon that the program\n * defines. Successive **gluTessVertex** calls describe a closed contour.\n * For example, to describe a quadrilateral **gluTessVertex** should be\n * called four times. **gluTessVertex** can only be called between\n * [gluTessBeginContour][.gluTessBeginContour] and\n * [gluTessEndContour][.gluTessBeginContour].\n *

\n * **data** normally references to a structure containing the vertex\n * location, as well as other per-vertex attributes such as color and normal.\n * This reference is passed back to the user through the\n * **GLU_TESS_VERTEX** or **GLU_TESS_VERTEX_DATA** callback after\n * tessellation (see the [ gluTessCallback][.gluTessCallback] reference page).\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param coords\n * Specifies the coordinates of the vertex.\n * @param data\n * Specifies an opaque reference passed back to the program with the\n * vertex callback (as specified by\n * [gluTessCallback][.gluTessCallback]).\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessVertex(\n tessellator: GLUtessellator, coords: DoubleArray, coords_offset: Int, data: Any\n ) {\n (tessellator as GLUtessellatorImpl).gluTessVertex(coords, coords_offset, data)\n }\n\n /**\n * **gluTessBeginPolygon** and\n * [gluTessEndPolygon][.gluTessEndPolygon] delimit\n * the definition of a convex, concave or self-intersecting polygon. Within\n * each **gluTessBeginPolygon**\n * [gluTessEndPolygon][.gluTessEndPolygon] pair,\n * there must be one or more calls to\n * [gluTessBeginContour][.gluTessBeginContour]/\n * [gluTessEndContour][.gluTessEndContour]. Within\n * each contour, there are zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex], [ gluTessBeginContour][.gluTessBeginContour], and [ gluTessEndContour][.gluTessEndContour] reference pages for more details.\n *

\n * **data ** is a reference to a user-defined data structure. If the\n * appropriate callback(s) are specified (see\n * [gluTessCallback][.gluTessCallback]), then this\n * reference is returned to the callback method(s). Thus, it is a convenient\n * way to store per-polygon information.\n *

\n * Once [gluTessEndPolygon][.gluTessEndPolygon] is\n * called, the polygon is tessellated, and the resulting triangles are\n * described through callbacks. See\n * [gluTessCallback][.gluTessCallback] for\n * descriptions of the callback methods.\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n * @param data\n * Specifies a reference to user polygon data .\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginContour gluTessBeginContour\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginPolygon(tessellator: GLUtessellator, data: Any) {\n (tessellator as GLUtessellatorImpl).gluTessBeginPolygon(data)\n }\n\n /**\n * **gluTessBeginContour** and\n * [gluTessEndContour][.gluTessEndContour] delimit\n * the definition of a polygon contour. Within each\n * **gluTessBeginContour**\n * [gluTessEndContour][.gluTessEndContour] pair,\n * there can be zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex] reference page for more details. **gluTessBeginContour**\n * can only be called between\n * [gluTessBeginPolygon][.gluTessBeginPolygon] and\n * [gluTessEndPolygon][.gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessBeginContour()\n }\n\n /**\n * **gluTessEndContour** and\n * [gluTessBeginContour][gluTessBeginContour]\n * delimit the definition of a polygon contour. Within each\n * [gluTessBeginContour][gluTessBeginContour]/\n * **gluTessEndContour** pair, there can be zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex] reference page for more details.\n * [gluTessBeginContour][gluTessBeginContour] can\n * only be called between [ gluTessBeginPolygon][gluTessBeginPolygon] and\n * [gluTessEndPolygon][gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessEndContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndContour()\n }\n\n /**\n * **gluTessEndPolygon** and\n * [gluTessBeginPolygon][gluTessBeginPolygon]\n * delimit the definition of a convex, concave or self-intersecting polygon.\n * Within each [ gluTessBeginPolygon][gluTessBeginPolygon]/ **gluTessEndPolygon** pair, there must be one or\n * more calls to [ gluTessBeginContour][gluTessBeginContour]/[ gluTessEndContour][gluTessEndContour]. Within each contour, there are zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex], [ gluTessBeginContour][gluTessBeginContour] and [ gluTessEndContour][gluTessEndContour] reference pages for more details.\n *

\n * Once **gluTessEndPolygon** is called, the polygon is tessellated, and\n * the resulting triangles are described through callbacks. See\n * [gluTessCallback][gluTessCallback] for\n * descriptions of the callback functions.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n */\n fun gluTessEndPolygon(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndPolygon()\n }\n\n //----------------------------------------------------------------------\n // GLU constants\n // Boolean\n const val GLU_FALSE = 0\n const val GLU_TRUE = 1\n\n // String Name\n const val GLU_VERSION = 100800\n const val GLU_EXTENSIONS = 100801\n\n // Extensions\n const val versionString = \"1.3\"\n const val extensionString = \"GLU_EXT_object_space_tess \"\n\n // ErrorCode\n const val GLU_INVALID_ENUM = 100900\n const val GLU_INVALID_VALUE = 100901\n const val GLU_OUT_OF_MEMORY = 100902\n const val GLU_INVALID_OPERATION = 100904\n\n // TessCallback\n const val GLU_TESS_BEGIN = 100100\n const val GLU_TESS_VERTEX = 100101\n const val GLU_TESS_END = 100102\n const val GLU_TESS_ERROR = 100103\n const val GLU_TESS_EDGE_FLAG = 100104\n const val GLU_TESS_COMBINE = 100105\n const val GLU_TESS_BEGIN_DATA = 100106\n const val GLU_TESS_VERTEX_DATA = 100107\n const val GLU_TESS_END_DATA = 100108\n const val GLU_TESS_ERROR_DATA = 100109\n const val GLU_TESS_EDGE_FLAG_DATA = 100110\n const val GLU_TESS_COMBINE_DATA = 100111\n\n // TessContour\n const val GLU_CW = 100120\n const val GLU_CCW = 100121\n const val GLU_INTERIOR = 100122\n const val GLU_EXTERIOR = 100123\n const val GLU_UNKNOWN = 100124\n\n // TessProperty\n const val GLU_TESS_WINDING_RULE = 100140\n const val GLU_TESS_BOUNDARY_ONLY = 100141\n const val GLU_TESS_TOLERANCE = 100142\n\n // TessError\n const val GLU_TESS_ERROR1 = 100151\n const val GLU_TESS_ERROR2 = 100152\n const val GLU_TESS_ERROR3 = 100153\n const val GLU_TESS_ERROR4 = 100154\n const val GLU_TESS_ERROR5 = 100155\n const val GLU_TESS_ERROR6 = 100156\n const val GLU_TESS_ERROR7 = 100157\n const val GLU_TESS_ERROR8 = 100158\n const val GLU_TESS_MISSING_BEGIN_POLYGON = 100151\n const val GLU_TESS_MISSING_BEGIN_CONTOUR = 100152\n const val GLU_TESS_MISSING_END_POLYGON = 100153\n const val GLU_TESS_MISSING_END_CONTOUR = 100154\n const val GLU_TESS_COORD_TOO_LARGE = 100155\n const val GLU_TESS_NEED_COMBINE_CALLBACK = 100156\n\n // TessWinding\n const val GLU_TESS_WINDING_ODD = 100130\n const val GLU_TESS_WINDING_NONZERO = 100131\n const val GLU_TESS_WINDING_POSITIVE = 100132\n const val GLU_TESS_WINDING_NEGATIVE = 100133\n const val GLU_TESS_WINDING_ABS_GEQ_TWO = 100134\n const val GLU_TESS_MAX_COORD = 1.0e150\n}\n","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\n/**\n * The **GLUtessellatorCallbackAdapter** provides a default implementation of\n * [GLUtessellatorCallback]\n * with empty callback methods. This class can be extended to provide user\n * defined callback methods.\n *\n * @author Eric Veach, July 1994\n * @author Java Port: Pepijn Van Eechhoudt, July 2003\n * @author Java Port: Nathan Parker Burg, August 2003\n * @author Kotlin Port: Eugene Maksymenko, April 2022\n */\nopen class GLUtessellatorCallbackAdapter : GLUtessellatorCallback {\n\toverride fun begin(type: Int) {}\n\toverride fun edgeFlag(boundaryEdge: Boolean) {}\n\toverride fun vertex(vertexData: Any) {}\n\toverride fun end() {}\n\toverride fun error(errnum: Int) {}\n\toverride fun combine(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {}\n\n\toverride fun beginData(type: Int, polygonData: Any) {}\n\toverride fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) {}\n\n\toverride fun vertexData(vertexData: Any, polygonData: Any) {}\n\toverride fun endData(polygonData: Any) {}\n\toverride fun errorData(errnum: Int, polygonData: Any) {}\n\toverride fun combineData(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any) {}\n}","/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n * \n * http://oss.sgi.com/projects/FreeB\n * \n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n * \n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n * \n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n */\npackage earth.worldwind.util.glu.error\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.jvm.JvmStatic\n\nobject Error {\n\tprivate val gluErrorStrings = arrayOf(\n\t\t\"invalid enumerant\",\n\t\t\"invalid value\",\n\t\t\"out of memory\",\n\t\t\"\",\n\t\t\"invalid operation\"\n\t)\n\n\t@JvmStatic\n\tfun gluErrorString(errorCode: Int): String? {\n\t\tif (errorCode == 0) return \"no error\"\n\t\tif (errorCode >= GLU.GLU_INVALID_ENUM && errorCode <= GLU.GLU_INVALID_OPERATION)\n\t\t\treturn gluErrorStrings[errorCode - GLU.GLU_INVALID_ENUM]\n\t\treturn if (errorCode >= GLU.GLU_TESS_ERROR1 && errorCode <= GLU.GLU_TESS_ERROR8)\n\t\t\tgluErrorStrings[errorCode - (GLU.GLU_TESS_ERROR1 - 1)] else null\n\t}\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal class ActiveRegion(\n /**\n * upper edge, directed right to left\n */\n var eUp: GLUhalfEdge\n) {\n /**\n * dictionary node corresponding to eUp\n */\n var nodeUp: DictNode? = null\n /**\n * used to determine which regions are inside the polygon\n */\n var windingNumber = 0\n /**\n * is this region inside the polygon?\n */\n var inside = false\n /**\n * marks fake edges at t = +/-infinity\n */\n var sentinel = false\n /**\n * marks regions where the upper or lower\n * edge has changed, but we haven't checked\n * whether they intersect yet\n */\n var dirty = false\n /**\n * marks temporary edges introduced when\n * we process a \"right vertex\" (one without\n * any edges leaving to the right)\n */\n var fixUpperEdge = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass CachedVertex {\n val coords = DoubleArray(3)\n var data: Any? = null\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass Dict private constructor(\n var head: DictNode,\n var frame: Any,\n var leq: DictLeq\n) {\n\n interface DictLeq {\n fun leq(frame: Any, key1: Any?, key2: Any?): Boolean\n }\n\n companion object {\n fun dictNewDict(frame: Any, leq: DictLeq): Dict {\n return Dict(DictNode(), frame, leq)\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun dictDeleteDict(dict: Dict) {\n// Memory will clear automatically\n// dict.head = null\n// dict.frame = null\n// dict.leq = null\n }\n\n fun dictInsert(dict: Dict, key: Any?): DictNode {\n return dictInsertBefore(dict, dict.head, key)\n }\n\n fun dictInsertBefore(dict: Dict, node: DictNode, key: Any?): DictNode {\n var n = node\n do {\n n = n.prev\n } while (n.key != null && !dict.leq.leq(dict.frame, n.key, key))\n val newNode = DictNode(key).apply {\n prev = n\n next = n.next\n }\n n.next.prev = newNode\n n.next = newNode\n return newNode\n }\n\n fun dictKey(aNode: DictNode) = aNode.key\n\n fun dictSucc(aNode: DictNode) = aNode.next\n\n fun dictPred(aNode: DictNode) = aNode.prev\n\n fun dictMin(aDict: Dict) = aDict.head.next\n\n fun dictMax(aDict: Dict) = aDict.head.prev\n\n fun dictDelete(node: DictNode) {\n node.next.prev = node.prev\n node.prev.next = node.next\n }\n\n fun dictSearch(dict: Dict, key: Any?): DictNode {\n var node = dict.head\n do {\n node = node.next\n } while (node.key != null && !dict.leq.leq(dict.frame, key, node.key))\n return node\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass DictNode(\n var key: Any? = null,\n) {\n var next = this\n var prev = this\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUface {\n /**\n * next face (never NULL)\n */\n var next: GLUface? = null\n /**\n * previous face (never NULL)\n */\n var prev: GLUface? = null\n /**\n * a half edge with this left face\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * room for client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * \"stack\" for conversion to strips\n */\n var trail: GLUface? = null\n /**\n * flag for conversion to strips\n */\n var marked = false\n /**\n * this face is in the polygon interior\n */\n var inside = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUhalfEdge(val first: Boolean) {\n /**\n * doubly-linked list (prev==Sym->next)\n */\n var next: GLUhalfEdge? = null\n /**\n * same edge, opposite direction\n */\n var sym: GLUhalfEdge? = null\n /**\n * next edge CCW around origin\n */\n var oNext: GLUhalfEdge? = null\n /**\n * next edge CCW around left face\n */\n var lNext: GLUhalfEdge? = null\n /**\n * origin vertex (Overtex too long)\n */\n var org: GLUvertex? = null\n /**\n * left face\n */\n var lFace: GLUface? = null\n\n /* Internal data (keep hidden) */\n /**\n * a region with this upper edge (sweep.c)\n */\n internal var activeRegion: ActiveRegion? = null\n /**\n * change in winding number when crossing\n */\n var winding = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUmesh {\n /**\n * dummy header for vertex list\n */\n val vHead = GLUvertex()\n /**\n * dummy header for face list\n */\n val fHead = GLUface()\n /**\n * dummy header for edge list\n */\n internal val eHead = GLUhalfEdge(true)\n /**\n * and its symmetric counterpart\n */\n internal val eHeadSym = GLUhalfEdge(false)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport earth.worldwind.util.glu.GLUtessellatorCallback\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\n\nclass GLUtessellatorImpl private constructor() : GLUtessellator {\n /**\n * what begin/end calls have we seen?\n */\n private var state = TessState.T_DORMANT\n /**\n * lastEdge->Org is the most recent vertex\n */\n private var lastEdge: GLUhalfEdge? = null\n /**\n * stores the input contours, and eventually the tessellation itself\n */\n var mesh: GLUmesh? = null\n\n /*** state needed for projecting onto the sweep plane */\n /**\n * user-specified normal (if provided)\n */\n val normal = DoubleArray(3)\n /**\n * unit vector in s-direction (debugging)\n */\n val sUnit = DoubleArray(3)\n /**\n * unit vector in t-direction (debugging)\n */\n val tUnit = DoubleArray(3)\n\n /*** state needed for the line sweep */\n /**\n * tolerance for merging features\n */\n private var relTolerance = GLU_TESS_DEFAULT_TOLERANCE\n /**\n * rule for determining polygon interior\n */\n var windingRule = GLU.GLU_TESS_WINDING_ODD\n /**\n * fatal error: needed combine callback\n */\n var fatalError = false\n /**\n * edge dictionary for sweep line\n */\n var dict: Dict? = null\n /**\n * priority queue of vertex events\n */\n var pq: PriorityQ? = null\n /**\n * current sweep event being processed\n */\n var event: GLUvertex? = null\n\n /*** state needed for rendering callbacks (see render.c) */\n /**\n * mark boundary edges (use EdgeFlag)\n */\n var flagBoundary = false\n /**\n * Extract contours, not triangles\n */\n var boundaryOnly = false\n /**\n * list of triangles which could not be rendered as strips or fans\n */\n var lonelyTriList: GLUface? = null\n /*** state needed to cache single-contour polygons for renderCache() */\n /**\n * empty cache on next vertex() call\n */\n private var flushCacheOnNextVertex = false\n /**\n * number of cached vertices\n */\n var cacheCount = 0\n /**\n * the vertex data\n */\n val cache = Array(TESS_MAX_CACHE) { CachedVertex() }\n\n /*** rendering callbacks that also pass polygon data */\n /**\n * client data for current polygon\n */\n private var polygonData: Any? = null\n private var callBegin: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlag: GLUtessellatorCallback = NULL_CB\n private var callVertex: GLUtessellatorCallback = NULL_CB\n private var callEnd: GLUtessellatorCallback = NULL_CB\n\n //private var callMesh: GLUtessellatorCallback = NULL_CB\n private var callError: GLUtessellatorCallback = NULL_CB\n private var callCombine: GLUtessellatorCallback = NULL_CB\n private var callBeginData: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlagData: GLUtessellatorCallback = NULL_CB\n private var callVertexData: GLUtessellatorCallback = NULL_CB\n private var callEndData: GLUtessellatorCallback = NULL_CB\n\n //private GLUtessellatorCallback callMeshData;\n private var callErrorData: GLUtessellatorCallback = NULL_CB\n private var callCombineData: GLUtessellatorCallback = NULL_CB\n\n private fun makeDormant() {\n /**\n * Return the tessellator to its original dormant state.\n */\n mesh?.let { Mesh.glMeshDeleteMesh(it) }\n state = TessState.T_DORMANT\n lastEdge = null\n mesh = null\n }\n\n private fun requireState(newState: Int) {\n if (state != newState) gotoState(newState)\n }\n\n private fun gotoState(newState: Int) {\n while (state != newState) {\n /**\n * We change the current state one level at a time, to get to the desired state.\n */\n if (state < newState) {\n if (state == TessState.T_DORMANT) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_POLYGON)\n gluTessBeginPolygon(null)\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_CONTOUR)\n gluTessBeginContour()\n }\n } else {\n if (state == TessState.T_IN_CONTOUR) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_CONTOUR)\n gluTessEndContour()\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_POLYGON)\n /* gluTessEndPolygon( tess ) is too much work! */\n makeDormant()\n }\n }\n }\n }\n\n fun gluDeleteTess() {\n requireState(TessState.T_DORMANT)\n }\n\n fun gluTessProperty(which: Int, value: Double) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> {\n if (value < 0.0 || value > 1.0) callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n else relTolerance = value\n }\n GLU.GLU_TESS_WINDING_RULE -> {\n val windingRule = value.toInt()\n if (windingRule.toDouble() != value) {\n /* not an integer */\n callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n } else {\n when (windingRule) {\n GLU.GLU_TESS_WINDING_ODD,\n GLU.GLU_TESS_WINDING_NONZERO,\n GLU.GLU_TESS_WINDING_POSITIVE,\n GLU.GLU_TESS_WINDING_NEGATIVE,\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> this.windingRule = windingRule\n else -> callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n }\n }\n }\n GLU.GLU_TESS_BOUNDARY_ONLY -> boundaryOnly = value != 0.0\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n /**\n * Returns tessellator property\n */\n fun gluGetTessProperty(which: Int, value: DoubleArray, value_offset: Int) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> value[value_offset] = relTolerance\n GLU.GLU_TESS_WINDING_RULE -> value[value_offset] = windingRule.toDouble()\n GLU.GLU_TESS_BOUNDARY_ONLY -> value[value_offset] = if (boundaryOnly) 1.0 else 0.0\n else -> {\n value[value_offset] = 0.0\n callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n }\n\n fun gluTessNormal(x: Double, y: Double, z: Double) {\n normal[0] = x\n normal[1] = y\n normal[2] = z\n }\n\n fun gluTessCallback(which: Int, aCallback: GLUtessellatorCallback?) {\n when (which) {\n GLU.GLU_TESS_BEGIN -> callBegin = aCallback ?: NULL_CB\n GLU.GLU_TESS_BEGIN_DATA -> callBeginData = aCallback ?: NULL_CB\n GLU.GLU_TESS_EDGE_FLAG -> {\n callEdgeFlag = aCallback ?: NULL_CB\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_EDGE_FLAG_DATA -> {\n run {\n callBegin = aCallback ?: NULL_CB\n callEdgeFlagData = callBegin\n }\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_VERTEX -> callVertex = aCallback ?: NULL_CB\n GLU.GLU_TESS_VERTEX_DATA -> callVertexData = aCallback ?: NULL_CB\n GLU.GLU_TESS_END -> callEnd = aCallback ?: NULL_CB\n GLU.GLU_TESS_END_DATA -> callEndData = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR -> callError = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR_DATA -> callErrorData = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE -> callCombine = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE_DATA -> callCombineData = aCallback ?: NULL_CB\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n private fun addVertex(coords: DoubleArray, vertexData: Any?): Boolean {\n var e = lastEdge\n if (e == null) {\n /* Make a self-loop (one vertex, one edge). */\n e = Mesh.glMeshMakeEdge(mesh!!)\n if (!Mesh.glMeshSplice(e, e.sym!!)) return false\n } else {\n /**\n * Create a new vertex and edge which immediately follow e\n * in the ordering around the left face.\n */\n Mesh.glMeshSplitEdge(e)\n e = e.lNext!!\n }\n\n /* The new vertex is now e.Org. */\n e.org?.data = vertexData\n e.org!!.coords[0] = coords[0]\n e.org!!.coords[1] = coords[1]\n e.org!!.coords[2] = coords[2]\n\n /**\n * The winding of an edge says how the winding number changes as we\n * cross from the edge''s right face to its left face. We add the\n * vertices in such an order that a CCW contour will add +1 to\n * the winding number of the region inside the contour.\n */\n e.winding = 1\n e.sym?.winding = -1\n lastEdge = e\n return true\n }\n\n private fun cacheVertex(coords: DoubleArray, vertexData: Any?) {\n val v = cache[cacheCount]\n v.data = vertexData\n v.coords[0] = coords[0]\n v.coords[1] = coords[1]\n v.coords[2] = coords[2]\n ++cacheCount\n }\n\n private fun flushCache(): Boolean {\n mesh = Mesh.glMeshNewMesh()\n for (i in 0 until cacheCount) {\n val vertex = cache[i]\n if (!addVertex(vertex.coords, vertex.data)) return false\n }\n cacheCount = 0\n flushCacheOnNextVertex = false\n return true\n }\n\n fun gluTessVertex(coords: DoubleArray, coords_offset: Int, vertexData: Any?) {\n var tooLarge = false\n val clamped = DoubleArray(3)\n requireState(TessState.T_IN_CONTOUR)\n if (flushCacheOnNextVertex) {\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n lastEdge = null\n }\n var i = 0\n while (i < 3) {\n var x = coords[i + coords_offset]\n if (x < -GLU.GLU_TESS_MAX_COORD) {\n x = -GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n if (x > GLU.GLU_TESS_MAX_COORD) {\n x = GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n clamped[i] = x\n ++i\n }\n if (tooLarge) {\n callErrorOrErrorData(GLU.GLU_TESS_COORD_TOO_LARGE)\n }\n if (mesh == null) {\n if (cacheCount < TESS_MAX_CACHE) {\n cacheVertex(clamped, vertexData)\n return\n }\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n }\n if (!addVertex(clamped, vertexData)) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun gluTessBeginPolygon(data: Any?) {\n requireState(TessState.T_DORMANT)\n state = TessState.T_IN_POLYGON\n cacheCount = 0\n flushCacheOnNextVertex = false\n mesh = null\n polygonData = data\n }\n\n fun gluTessBeginContour() {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_IN_CONTOUR\n lastEdge = null\n if (cacheCount > 0) {\n /**\n * Just set a flag so we don't get confused by empty contours\n * -- these can be generated accidentally with the obsolete\n * NextContour() interface.\n */\n flushCacheOnNextVertex = true\n }\n }\n\n fun gluTessEndContour() {\n requireState(TessState.T_IN_CONTOUR)\n state = TessState.T_IN_POLYGON\n }\n\n fun gluTessEndPolygon() {\n try {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_DORMANT\n if (this.mesh == null) {\n if (!flagBoundary /*&& callMesh == NULL_CB*/) {\n /**\n * Try some special code to make the easy cases go quickly\n * (eg. convex polygons). This code does NOT handle multiple contours,\n * intersections, edge flags, and of course it does not generate\n * an explicit mesh either.\n */\n if (Render.glRenderCache(this)) {\n polygonData = null\n return\n }\n }\n if (!flushCache()) throw RuntimeException() /* could've used a label*/\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n Normal.glProjectPolygon(this)\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by windingRule.\n * Each interior region is guaranteed be monotone.\n */\n if (!Sweep.glComputeInterior(this)) {\n throw RuntimeException() /* could've used a label */\n }\n val mesh = this.mesh!!\n if (!fatalError) {\n /**\n * If the user wants only the boundary contours, we throw away all edges\n * except those which separate the interior from the exterior.\n * Otherwise we tessellate all the regions marked \"inside\".\n */\n val rc = if (boundaryOnly) {\n TessMono.glMeshSetWindingNumber(mesh, 1, true)\n } else {\n TessMono.glMeshTessellateInterior(mesh)\n }\n if (!rc) throw RuntimeException() /* could've used a label */\n Mesh.glMeshCheckMesh(mesh)\n if (callBegin !== NULL_CB || callEnd !== NULL_CB || callVertex !== NULL_CB || callEdgeFlag !== NULL_CB || callBeginData !== NULL_CB || callEndData !== NULL_CB || callVertexData !== NULL_CB || callEdgeFlagData !== NULL_CB) {\n if (boundaryOnly) {\n Render.glRenderBoundary(this, mesh) /* output boundary contours */\n } else {\n Render.glRenderMesh(this, mesh) /* output strips and fans */\n }\n }\n // if (callMesh != NULL_CB) {\n// /**\n// * Throw away the exterior faces, so that all faces are interior.\n// * This way the user doesn't have to check the \"inside\" flag,\n// * and we don't need to even reveal its existence. It also leaves\n// * the freedom for an implementation to not generate the exterior\n// * faces in the first place.\n// */\n// TessMono.__gl_meshDiscardExterior(mesh);\n// callMesh.mesh(mesh);\t\t/* user wants the mesh itself */\n// mesh = null;\n// polygonData = null;\n// return;\n// }\n }\n Mesh.glMeshDeleteMesh(mesh)\n polygonData = null\n } catch (e: Exception) {\n e.printStackTrace()\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun callBeginOrBeginData(a: Int) {\n if (callBeginData !== NULL_CB) callBeginData.beginData(a, polygonData!!) else callBegin.begin(a)\n }\n\n fun callVertexOrVertexData(a: Any) {\n if (callVertexData !== NULL_CB) callVertexData.vertexData(a, polygonData!!) else callVertex.vertex(a)\n }\n\n fun callEdgeFlagOrEdgeFlagData(a: Boolean) {\n if (callEdgeFlagData !== NULL_CB) callEdgeFlagData.edgeFlagData(a, polygonData!!) else callEdgeFlag.edgeFlag(a)\n }\n\n fun callEndOrEndData() {\n if (callEndData !== NULL_CB) callEndData.endData(polygonData!!) else callEnd.end()\n }\n\n fun callCombineOrCombineData(\n coords: DoubleArray,\n vertexData: Array,\n weights: FloatArray,\n outData: Array\n ) {\n if (callCombineData !== NULL_CB) callCombineData.combineData(coords, vertexData, weights, outData, polygonData!!)\n else callCombine.combine(coords, vertexData, weights, outData)\n }\n\n fun callErrorOrErrorData(a: Int) {\n if (callErrorData !== NULL_CB) callErrorData.errorData(a, polygonData!!) else callError.error(a)\n }\n\n companion object {\n const val TESS_MAX_CACHE = 100\n private const val GLU_TESS_DEFAULT_TOLERANCE = 0.0\n\n //private static final int GLU_TESS_MESH = 100112;\t/* void (*)(GLUmesh *mesh)\t */\n private val NULL_CB = GLUtessellatorCallbackAdapter()\n\n fun gluNewTess(): GLUtessellator = GLUtessellatorImpl()\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUvertex {\n /**\n * next vertex (never NULL)\n */\n var next: GLUvertex? = null\n /**\n * previous vertex (never NULL)\n */\n var prev: GLUvertex? = null\n /**\n * a half-edge with this origin\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * vertex location in 3D\n */\n val coords = DoubleArray(3)\n var s = 0.0\n /**\n * projection onto the sweep plane\n */\n var t = 0.0\n /**\n * to allow deletion from priority queue\n */\n var pqHandle = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Geom {\n /* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->t = 0 and\n * let r be the negated result (this evaluates (uw)(v->s)), then\n * r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n */\n fun edgeEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.t - u.t + (u.t - w.t) * (gapL / (gapL + gapR))\n else v.t - w.t + (w.t - u.t) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n fun edgeSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) (v.t - w.t) * gapL + (v.t - u.t) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * Define versions of EdgeSign, EdgeEval with s and t transposed.\n */\n fun transEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n /* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->s = 0 and\n * let r be the negated result (this evaluates (uw)(v->t)), then\n * r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n */\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.s - u.s + (u.s - w.s) * (gapL / (gapL + gapR))\n else v.s - w.s + (w.s - u.s) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n /**\n * Returns a number whose sign matches TransEval(u,v,w) but which\n * is cheaper to evaluate. Returns > 0, == 0 , or < 0\n * as v is above, on, or below the edge uw.\n */\n fun transSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) (v.s - w.s) * gapL + (v.s - u.s) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * For almost-degenerate situations, the results are not reliable.\n * Unless the floating-point arithmetic can be performed without\n * rounding errors, *any* implementation will give incorrect results\n * on some degenerate inputs, so the client must have some way to\n * handle this situation.\n */\n fun vertCCW(u: GLUvertex, v: GLUvertex, w: GLUvertex) =\n u.s * (v.t - w.t) + v.s * (w.t - u.t) + w.s * (u.t - v.t) >= 0\n\n /**\n * Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n * or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n * this in the rare case that one argument is slightly negative.\n * The implementation is extremely stable numerically.\n * In particular it guarantees that the result r satisfies\n * MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n * even when a and b differ greatly in magnitude.\n */\n fun interpolate(a: Double, x: Double, b: Double, y: Double): Double {\n val a = if (a < 0) 0.0 else a\n val b = if (b < 0) 0.0 else b\n return if (a <= b) {\n if (b == 0.0) (x + y) / 2.0\n else x + (y - x) * (a / (a + b))\n } else y + (x - y) * (b / (a + b))\n }\n\n /**\n * Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n * The computed point is guaranteed to lie in the intersection of the\n * bounding rectangles defined by each edge.\n */\n fun edgeIntersect(\n o1: GLUvertex, d1: GLUvertex, o2: GLUvertex, d2: GLUvertex, v: GLUvertex\n ) {\n var o1 = o1\n var d1 = d1\n var o2 = o2\n var d2 = d2\n\n /**\n * This is certainly not the most efficient way to find the intersection\n * of two line segments, but it is very numerically stable.\n *\n * Strategy: find the two middle vertices in the VertLeq ordering,\n * and interpolate the intersection s-value from these. Then repeat\n * using the TransLeq ordering to find the intersection t-value.\n */\n if (!vertLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!vertLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!vertLeq(o1, o2)) {\n var temp = o1\n o1 = o2\n o2 = temp\n temp = d1\n d1 = d2\n d2 = temp\n }\n if (!vertLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.s = (o2.s + d1.s) / 2.0\n } else if (vertLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = edgeEval(o1, o2, d1)\n var z2 = edgeEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d1.s)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = edgeSign(o1, o2, d1)\n var z2 = -edgeSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d2.s)\n }\n\n /* Now repeat the process for t */\n if (!transLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!transLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!transLeq(o1, o2)) {\n var temp = o2\n o2 = o1\n o1 = temp\n temp = d2\n d2 = d1\n d1 = temp\n }\n if (!transLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.t = (o2.t + d1.t) / 2.0\n } else if (transLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = transEval(o1, o2, d1)\n var z2 = transEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d1.t)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = transSign(o1, o2, d1)\n var z2 = -transSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d2.t)\n }\n }\n\n fun vertEq(u: GLUvertex, v: GLUvertex) = u.s == v.s && u.t == v.t\n\n fun vertLeq(u: GLUvertex, v: GLUvertex) = u.s < v.s || u.s == v.s && u.t <= v.t\n\n /* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n fun transLeq(u: GLUvertex, v: GLUvertex) = u.t < v.t || u.t == v.t && u.s <= v.s\n\n fun edgeGoesLeft(e: GLUhalfEdge) = vertLeq(e.sym?.org!!, e.org!!)\n\n fun edgeGoesRight(e: GLUhalfEdge) = vertLeq(e.org!!, e.sym?.org!!)\n\n fun vertL1dist(u: GLUvertex, v: GLUvertex) = abs(u.s - v.s) + abs(u.t - v.t)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object Mesh {\n /************************ Utility Routines */\n /**\n * MakeEdge creates a new pair of half-edges which form their own loop.\n * No vertex or face structures are allocated, but these must be assigned\n * before the current edge operation is completed.\n */\n fun makeEdge(eNext: GLUhalfEdge): GLUhalfEdge {\n var next = eNext\n val e = GLUhalfEdge(true)\n val eSym = GLUhalfEdge(false)\n\n /* Make sure eNext points to the first edge of the edge pair */\n if (!next.first) {\n next = next.sym!!\n }\n\n /**\n * Insert in circular doubly-linked list before eNext.\n * Note that the prev pointer is stored in Sym->next.\n */\n val ePrev = next.sym?.next!!\n eSym.next = ePrev\n ePrev.sym?.next = e\n e.next = next\n next.sym?.next = eSym\n e.sym = eSym\n e.oNext = e\n e.lNext = eSym\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.sym = e\n eSym.oNext = eSym\n eSym.lNext = e\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return e\n }\n\n /**\n * Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n * CS348a notes (see mesh.h). Basically it modifies the mesh so that\n * a->Onext and b->Onext are exchanged. This can have various effects\n * depending on whether a and b belong to different face or vertex rings.\n * For more explanation see __gl_meshSplice() below.\n */\n fun splice(a: GLUhalfEdge, b: GLUhalfEdge) {\n val aONext = a.oNext!!\n val bONext = b.oNext!!\n aONext.sym?.lNext = b\n bONext.sym?.lNext = a\n a.oNext = bONext\n b.oNext = aONext\n }\n\n /**\n * MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n * origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n * a place to insert the new vertex in the global vertex list. We insert\n * the new vertex *before* vNext so that algorithms which walk the vertex\n * list will not see the newly created vertices.\n */\n fun makeVertex(newVertex: GLUvertex, eOrig: GLUhalfEdge, vNext: GLUvertex) {\n /* insert in circular doubly-linked list before vNext */\n val vPrev = vNext.prev!!\n newVertex.prev = vPrev\n vPrev.next = newVertex\n newVertex.next = vNext\n vNext.prev = newVertex\n newVertex.anEdge = eOrig\n newVertex.data = null\n /* leave coords, s, t undefined */\n\n /* fix other edges on this vertex loop */\n var e = eOrig\n do {\n e.org = newVertex\n e = e.oNext!!\n } while (e !== eOrig)\n }\n\n /**\n * MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n * face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n * a place to insert the new face in the global face list. We insert\n * the new face *before* fNext so that algorithms which walk the face\n * list will not see the newly created faces.\n */\n fun makeFace(newFace: GLUface, eOrig: GLUhalfEdge, fNext: GLUface) {\n /* insert in circular doubly-linked list before fNext */\n val fPrev = fNext.prev!!\n newFace.prev = fPrev\n fPrev.next = newFace\n newFace.next = fNext\n fNext.prev = newFace\n newFace.anEdge = eOrig\n newFace.data = null\n newFace.trail = null\n newFace.marked = false\n\n /**\n * The new face is marked \"inside\" if the old one was. This is a\n * convenience for the common case where a face has been split in two.\n */\n newFace.inside = fNext.inside\n\n /* fix other edges on this face loop */\n var e = eOrig\n do {\n e.lFace = newFace\n e = e.lNext!!\n } while (e !== eOrig)\n }\n\n /**\n * KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n * and removes from the global edge list.\n */\n fun killEdge(eDel: GLUhalfEdge) {\n var del = eDel\n\n /* Half-edges are allocated in pairs, see EdgePair above */\n if (!del.first) {\n del = del.sym!!\n }\n\n /* delete from circular doubly-linked list */\n val eNext = del.next!!\n val ePrev = del.sym?.next!!\n eNext.sym?.next = ePrev\n ePrev.sym?.next = eNext\n }\n\n /**\n * KillVertex( vDel ) destroys a vertex and removes it from the global\n * vertex list. It updates the vertex loop to point to a given new vertex.\n */\n fun killVertex(vDel: GLUvertex, newOrg: GLUvertex?) {\n val eStart = vDel.anEdge!!\n\n /* change the origin of all affected edges */\n var e = eStart\n do {\n e.org = newOrg\n e = e.oNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val vPrev = vDel.prev!!\n val vNext = vDel.next!!\n vNext.prev = vPrev\n vPrev.next = vNext\n }\n\n /**\n * KillFace( fDel ) destroys a face and removes it from the global face\n * list. It updates the face loop to point to a given new face.\n */\n fun killFace(fDel: GLUface, newLface: GLUface?) {\n val eStart = fDel.anEdge!!\n\n /* change the left face of all affected edges */\n var e = eStart\n do {\n e.lFace = newLface\n e = e.lNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fDel.prev!!\n val fNext = fDel.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /****************** Basic Edge Operations */\n /**\n * __gl_meshMakeEdge creates one edge, two vertices, and a loop (face).\n * The loop consists of the two new half-edges.\n */\n fun glMeshMakeEdge(mesh: GLUmesh): GLUhalfEdge {\n val newVertex1 = GLUvertex()\n val newVertex2 = GLUvertex()\n val newFace = GLUface()\n val e = makeEdge(mesh.eHead)\n makeVertex(newVertex1, e, mesh.vHead)\n makeVertex(newVertex2, e.sym!!, mesh.vHead)\n makeFace(newFace, e, mesh.fHead)\n return e\n }\n\n /**\n * __gl_meshSplice( eOrg, eDst ) is the basic operation for changing the\n * mesh connectivity and topology. It changes the mesh so that\n *\teOrg->Onext <- OLD( eDst->Onext )\n *\teDst->Onext <- OLD( eOrg->Onext )\n * where OLD(...) means the value before the meshSplice operation.\n *\n * This can have two effects on the vertex structure:\n * - if eOrg->Org != eDst->Org, the two vertices are merged together\n * - if eOrg->Org == eDst->Org, the origin is split into two vertices\n * In both cases, eDst->Org is changed and eOrg->Org is untouched.\n *\n * Similarly (and independently) for the face structure,\n * - if eOrg->Lface == eDst->Lface, one loop is split into two\n * - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n * In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n *\n * Some special cases:\n * If eDst == eOrg, the operation has no effect.\n * If eDst == eOrg->Lnext, the new face will have a single edge.\n * If eDst == eOrg->Lprev, the old face will have a single edge.\n * If eDst == eOrg->Onext, the new vertex will have a single edge.\n * If eDst == eOrg->Oprev, the old vertex will have a single edge.\n */\n fun glMeshSplice(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): Boolean {\n var joiningLoops = false\n var joiningVertices = false\n if (eOrg === eDst) return true\n if (eDst.org !== eOrg.org) {\n /* We are merging two disjoint vertices -- destroy eDst->Org */\n joiningVertices = true\n killVertex(eDst.org!!, eOrg.org)\n }\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Change the edge structure */\n splice(eDst, eOrg)\n if (!joiningVertices) {\n val newVertex = GLUvertex()\n\n /**\n * We split one vertex into two -- the new vertex is eDst.Org.\n * Make sure the old vertex points to a valid half-edge.\n */\n makeVertex(newVertex, eDst, eOrg.org!!)\n eOrg.org?.anEdge = eOrg\n }\n if (!joiningLoops) {\n val newFace = GLUface()\n\n /**\n * We split one loop into two -- the new loop is eDst.Lface.\n * Make sure the old face points to a valid half-edge.\n */\n makeFace(newFace, eDst, eOrg.lFace!!)\n eOrg.lFace?.anEdge = eOrg\n }\n return true\n }\n\n /**\n * __gl_meshDelete( eDel ) removes the edge eDel. There are several cases:\n * if (eDel.Lface != eDel.Rface), we join two loops into one; the loop\n * eDel.Lface is deleted. Otherwise, we are splitting one loop into two;\n * the newly created loop will contain eDel.Dst. If the deletion of eDel\n * would create isolated vertices, those are deleted as well.\n *\n * This function could be implemented as two calls to __gl_meshSplice\n * plus a few calls to memFree, but this would allocate and delete\n * unnecessary vertices and faces.\n */\n fun glMeshDelete(eDel: GLUhalfEdge): Boolean {\n val eDelSym = eDel.sym!!\n var joiningLoops = false\n\n /** First step: disconnect the origin vertex eDel.Org. We make all\n * changes to get a consistent mesh in this \"intermediate\" state.\n */\n if (eDel.lFace !== eDel.sym?.lFace) {\n /* We are joining two loops into one -- remove the left face */\n joiningLoops = true\n killFace(eDel.lFace!!, eDel.sym?.lFace)\n }\n if (eDel.oNext === eDel) {\n killVertex(eDel.org!!, null)\n } else {\n /* Make sure that eDel.Org and eDel.Sym.Lface point to valid half-edges */\n eDel.sym?.lFace?.anEdge = eDel.sym?.lNext\n eDel.org?.anEdge = eDel.oNext\n splice(eDel, eDel.sym?.lNext!!)\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We are splitting one loop into two -- create a new loop for eDel. */\n makeFace(newFace, eDel, eDel.lFace!!)\n }\n }\n\n /**\n * Claim: the mesh is now in a consistent state, except that eDel.Org\n * may have been deleted. Now we disconnect eDel.Dst.\n */\n if (eDelSym.oNext === eDelSym) {\n killVertex(eDelSym.org!!, null)\n killFace(eDelSym.lFace!!, null)\n } else {\n /* Make sure that eDel.Dst and eDel.Lface point to valid half-edges */\n eDel.lFace?.anEdge = eDelSym.sym?.lNext\n eDelSym.org?.anEdge = eDelSym.oNext\n splice(eDelSym, eDelSym.sym?.lNext!!)\n }\n\n /* Any isolated vertices or faces have already been freed. */\n killEdge(eDel)\n return true\n }\n\n /******************** Other Edge Operations */\n /**\n * All these routines can be implemented with the basic edge\n * operations above. They are provided for convenience and efficiency.\n */\n /**\n * __gl_meshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n * eNew == eOrg.Lnext, and eNew.Dst is a newly created vertex.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshAddEdgeVertex(eOrg: GLUhalfEdge): GLUhalfEdge {\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n run {\n val newVertex = GLUvertex()\n makeVertex(newVertex, eNewSym, eNew.org!!)\n }\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n return eNew\n }\n\n /**\n * __gl_meshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n * such that eNew == eOrg.Lnext. The new vertex is eOrg.Sym.Org == eNew.Org.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshSplitEdge(eOrg: GLUhalfEdge): GLUhalfEdge {\n val tempHalfEdge = glMeshAddEdgeVertex(eOrg)\n val eNew = tempHalfEdge.sym!!\n\n /* Disconnect eOrg from eOrg.Sym.Org and connect it to eNew.Org */\n splice(eOrg.sym!!, eOrg.sym?.sym?.lNext!!)\n splice(eOrg.sym!!, eNew)\n\n /* Set the vertex and face information */\n eOrg.sym?.org = eNew.org\n eNew.sym?.org?.anEdge = eNew.sym /* may have pointed to eOrg.Sym */\n eNew.sym?.lFace = eOrg.sym?.lFace\n eNew.winding = eOrg.winding /* copy old winding information */\n eNew.sym?.winding = eOrg.sym!!.winding\n return eNew\n }\n\n /**\n * __gl_meshConnect( eOrg, eDst ) creates a new edge from eOrg.Sym.Org\n * to eDst.Org, and returns the corresponding half-edge eNew.\n * If eOrg.Lface == eDst.Lface, this splits one loop into two,\n * and the newly created loop is eNew.Lface. Otherwise, two disjoint\n * loops are merged into one, and the loop eDst.Lface is destroyed.\n *\n * If (eOrg == eDst), the new face will have only two edges.\n * If (eOrg.Lnext == eDst), the old face is reduced to a single edge.\n * If (eOrg.Lnext.Lnext == eDst), the old face is reduced to two edges.\n */\n fun glMeshConnect(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): GLUhalfEdge {\n var joiningLoops = false\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n splice(eNewSym, eDst)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n eNewSym.org = eDst.org\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n\n /* Make sure the old face points to a valid half-edge */\n eOrg.lFace?.anEdge = eNewSym\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We split one loop into two -- the new loop is eNew.Lface */\n makeFace(newFace, eNew, eOrg.lFace!!)\n }\n return eNew\n }\n\n /******************** Other Operations */\n /**\n * __gl_meshZapFace( fZap ) destroys a face and removes it from the\n * global face list. All edges of fZap will have a null pointer as their\n * left face. Any edges which also have a null pointer as their right face\n * are deleted entirely (along with any isolated vertices this produces).\n * An entire mesh can be deleted by zapping its faces, one at a time,\n * in any order. Zapped faces cannot be used in further mesh operations!\n */\n fun glMeshZapFace(fZap: GLUface) {\n val eStart = fZap.anEdge!!\n\n /* walk around face, deleting edges whose right face is also null */\n var eNext = eStart.lNext!!\n do {\n val e = eNext\n eNext = e.lNext!!\n e.lFace = null\n if (e.sym?.lFace == null) {\n /* delete the edge -- see __gl_MeshDelete above */\n if (e.oNext === e) {\n killVertex(e.org!!, null)\n } else {\n /* Make sure that e.Org points to a valid half-edge */\n e.org?.anEdge = e.oNext\n splice(e, e.sym?.lNext!!)\n }\n val eSym = e.sym!!\n if (eSym.oNext === eSym) {\n killVertex(eSym.org!!, null)\n } else {\n /* Make sure that eSym.Org points to a valid half-edge */\n eSym.org?.anEdge = eSym.oNext\n splice(eSym, eSym.sym?.lNext!!)\n }\n killEdge(e)\n }\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fZap.prev!!\n val fNext = fZap.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /**\n * __gl_meshNewMesh() creates a new mesh with no edges, no vertices,\n * and no loops (what we usually call a \"face\").\n */\n fun glMeshNewMesh(): GLUmesh {\n val mesh = GLUmesh()\n val v = mesh.vHead\n val f = mesh.fHead\n val e = mesh.eHead\n val eSym = mesh.eHeadSym\n v.prev = v\n v.next = v.prev\n v.anEdge = null\n v.data = null\n f.prev = f\n f.next = f.prev\n f.anEdge = null\n f.data = null\n f.trail = null\n f.marked = false\n f.inside = false\n e.next = e\n e.sym = eSym\n e.oNext = null\n e.lNext = null\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.next = eSym\n eSym.sym = e\n eSym.oNext = null\n eSym.lNext = null\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return mesh\n }\n\n /**\n * glMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n * both meshes, and returns the new mesh (the old meshes are destroyed).\n */\n fun glMeshUnion(mesh1: GLUmesh, mesh2: GLUmesh): GLUmesh {\n val f1 = mesh1.fHead\n val v1 = mesh1.vHead\n val e1 = mesh1.eHead\n val f2 = mesh2.fHead\n val v2 = mesh2.vHead\n val e2 = mesh2.eHead\n\n /* Add the faces, vertices, and edges of mesh2 to those of mesh1 */\n if (f2.next !== f2) {\n f1.prev?.next = f2.next\n f2.next?.prev = f1.prev\n f2.prev?.next = f1\n f1.prev = f2.prev\n }\n if (v2.next !== v2) {\n v1.prev?.next = v2.next\n v2.next?.prev = v1.prev\n v2.prev?.next = v1\n v1.prev = v2.prev\n }\n if (e2.next !== e2) {\n e1.sym?.next?.sym?.next = e2.next\n e2.next?.sym?.next = e1.sym?.next\n e2.sym?.next?.sym?.next = e1\n e1.sym?.next = e2.sym?.next\n }\n return mesh1\n }\n\n /**\n * glMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMeshZap(mesh: GLUmesh) {\n val fHead = mesh.fHead\n while (fHead.next !== fHead) {\n glMeshZapFace(fHead.next!!)\n }\n }\n\n /**\n * __gl_meshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMesh(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n f = fNext\n }\n var v = mesh.vHead.next!!\n while (v !== mesh.vHead) {\n val vNext = v.next!!\n v = vNext\n }\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n /* One call frees both e and e.Sym (see EdgePair above) */\n val eNext = e.next!!\n e = eNext\n }\n }\n\n /**\n * __gl_meshCheckMesh( mesh ) checks a mesh for self-consistency.\n */\n fun glMeshCheckMesh(mesh: GLUmesh) {\n val fHead = mesh.fHead\n val vHead = mesh.vHead\n val eHead = mesh.eHead\n var fPrev = fHead\n while (true) {\n val f = fPrev.next!!\n if (f === fHead) break\n var e = f.anEdge!!\n do e = e.lNext!! while (e !== f.anEdge)\n fPrev = f\n }\n var vPrev = vHead\n while (true) {\n val v = vPrev.next!!\n if (v === vHead) break\n var e = v.anEdge!!\n do {\n e = e.oNext!!\n } while (e !== v.anEdge)\n vPrev = v\n }\n var ePrev = eHead\n while (true) {\n val e = ePrev.next!!\n if (e === eHead) break\n ePrev = e\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\ninternal object Normal {\n private const val SLANTED_SWEEP = false\n private var S_UNIT_X = 0.0 /* Pre-normalized */\n private var S_UNIT_Y = 0.0\n private const val TRUE_PROJECT = false\n\n init {\n if (SLANTED_SWEEP) {\n /**\n * The \"feature merging\" is not intended to be complete. There are\n * special cases where edges are nearly parallel to the sweep line\n * which are not implemented. The algorithm should still behave\n * robustly (ie. produce a reasonable tesselation) in the presence\n * of such edges, however it may miss features which could have been\n * merged. We could minimize this effect by choosing the sweep line\n * direction to be something unusual (ie. not parallel to one of the\n * coordinate axes).\n */\n S_UNIT_X = 0.5094153956495538 /* Pre-normalized */\n S_UNIT_Y = 0.8605207462201063\n } else {\n S_UNIT_X = 1.0\n S_UNIT_Y = 0.0\n }\n }\n\n private fun dot(u: DoubleArray, v: DoubleArray): Double {\n return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]\n }\n\n fun normalize(v: DoubleArray) {\n var len = v[0] * v[0] + v[1] * v[1] + v[2] * v[2]\n len = sqrt(len)\n v[0] /= len\n v[1] /= len\n v[2] /= len\n }\n\n fun longAxis(v: DoubleArray): Int {\n var i = 0\n if (abs(v[1]) > abs(v[0])) {\n i = 1\n }\n if (abs(v[2]) > abs(v[i])) {\n i = 2\n }\n return i\n }\n\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray) {\n val vHead = tess.mesh?.vHead!!\n val maxVal = DoubleArray(3)\n val minVal = DoubleArray(3)\n val minVert = arrayOfNulls(3)\n val maxVert = arrayOfNulls(3)\n val d1 = DoubleArray(3)\n val d2 = DoubleArray(3)\n val tNorm = DoubleArray(3)\n maxVal[2] = -2 * GLU.GLU_TESS_MAX_COORD\n maxVal[1] = maxVal[2]\n maxVal[0] = maxVal[1]\n minVal[2] = 2 * GLU.GLU_TESS_MAX_COORD\n minVal[1] = minVal[2]\n minVal[0] = minVal[1]\n var v = vHead.next!!\n while (v !== vHead) {\n var i = 0\n while (i < 3) {\n val c = v.coords[i]\n if (c < minVal[i]) {\n minVal[i] = c\n minVert[i] = v\n }\n if (c > maxVal[i]) {\n maxVal[i] = c\n maxVert[i] = v\n }\n ++i\n }\n v = v.next!!\n }\n\n /**\n * Find two vertices separated by at least 1/sqrt(3) of the maximum\n * distance between any two vertices\n */\n var i = 0\n if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {\n i = 1\n }\n if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {\n i = 2\n }\n if (minVal[i] >= maxVal[i]) {\n /* All vertices are the same -- normal doesn't matter */\n norm[0] = 0.0\n norm[1] = 0.0\n norm[2] = 1.0\n return\n }\n\n /**\n * Look for a third vertex which forms the triangle with maximum area\n * (Length of normal == twice the triangle area)\n */\n var maxLen2 = 0.0\n val v1 = minVert[i]!!\n val v2 = maxVert[i]!!\n d1[0] = v1.coords[0] - v2.coords[0]\n d1[1] = v1.coords[1] - v2.coords[1]\n d1[2] = v1.coords[2] - v2.coords[2]\n v = vHead.next!!\n while (v !== vHead) {\n d2[0] = v.coords[0] - v2.coords[0]\n d2[1] = v.coords[1] - v2.coords[1]\n d2[2] = v.coords[2] - v2.coords[2]\n tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1]\n tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2]\n tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0]\n val tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2]\n if (tLen2 > maxLen2) {\n maxLen2 = tLen2\n norm[0] = tNorm[0]\n norm[1] = tNorm[1]\n norm[2] = tNorm[2]\n }\n v = v.next!!\n }\n if (maxLen2 <= 0) {\n /* All points lie on a single line -- any decent normal will do */\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n norm[longAxis(d1)] = 1.0\n }\n }\n\n fun checkOrientation(tess: GLUtessellatorImpl) {\n val fHead = tess.mesh?.fHead!!\n val vHead = tess.mesh?.vHead!!\n\n /**\n * When we compute the normal automatically, we choose the orientation\n * so that the the sum of the signed areas of all contours is non-negative.\n */\n var area = 0.0\n var f = fHead.next!!\n while (f !== fHead) {\n var e = f.anEdge!!\n if (e.winding <= 0) {\n f = f.next!!\n continue\n }\n do {\n area += (e.org!!.s - e.sym!!.org!!.s) * (e.org!!.t + e.sym!!.org!!.t)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.next!!\n }\n if (area < 0) {\n /* Reverse the orientation by flipping all the t-coordinates */\n var v = vHead.next!!\n while (v !== vHead) {\n v.t = -v.t\n v = v.next!!\n }\n tess.tUnit[0] = -tess.tUnit[0]\n tess.tUnit[1] = -tess.tUnit[1]\n tess.tUnit[2] = -tess.tUnit[2]\n }\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n fun glProjectPolygon(tess: GLUtessellatorImpl) {\n val vHead = tess.mesh?.vHead!!\n val norm = DoubleArray(3)\n var computedNormal = false\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm)\n computedNormal = true\n }\n val sUnit = tess.sUnit\n val tUnit = tess.tUnit\n val i = longAxis(norm)\n if (TRUE_PROJECT) {\n /**\n * Choose the initial sUnit vector to be approximately perpendicular\n * to the normal.\n */\n normalize(norm)\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n\n /* Now make it exactly perpendicular */\n val w = dot(sUnit, norm)\n sUnit[0] -= w * norm[0]\n sUnit[1] -= w * norm[1]\n sUnit[2] -= w * norm[2]\n normalize(sUnit)\n\n /* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */\n tUnit[0] = norm[1] * sUnit[2] - norm[2] * sUnit[1]\n tUnit[1] = norm[2] * sUnit[0] - norm[0] * sUnit[2]\n tUnit[2] = norm[0] * sUnit[1] - norm[1] * sUnit[0]\n normalize(tUnit)\n } else {\n /* Project perpendicular to a coordinate axis -- better numerically */\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n tUnit[i] = 0.0\n tUnit[(i + 1) % 3] = if (norm[i] > 0) -S_UNIT_Y else S_UNIT_Y\n tUnit[(i + 2) % 3] = if (norm[i] > 0) S_UNIT_X else -S_UNIT_X\n }\n\n /* Project the vertices onto the sweep plane */\n var v = vHead.next!!\n while (v !== vHead) {\n v.s = dot(v.coords, sUnit)\n v.t = dot(v.coords, tUnit)\n v = v.next!!\n }\n if (computedNormal) {\n checkOrientation(tess)\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nabstract class PriorityQ {\n class PQnode {\n var handle = 0\n }\n\n class PQhandleElem {\n var key: Any? = null\n var node = 0\n }\n\n interface Leq {\n fun leq(key1: Any?, key2: Any?): Boolean\n }\n\n abstract fun pqDeletePriorityQ()\n abstract fun pqInit(): Boolean\n abstract fun pqInsert(keyNew: Any?): Int\n abstract fun pqExtractMin(): Any?\n abstract fun pqDelete(hCurr: Int)\n abstract fun pqMinimum(): Any?\n abstract fun pqIsEmpty(): Boolean // #endif\n\n companion object {\n const val INIT_SIZE = 32\n\n fun leq(x: Any, y: Any) = Geom.vertLeq(x as GLUvertex, y as GLUvertex)\n\n fun pqNewPriorityQ(): PriorityQ = PriorityQSort()\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal class PriorityQHeap : PriorityQ() {\n var nodes = Array(INIT_SIZE + 1) { PQnode() }\n var handles = Array(INIT_SIZE + 1) { PQhandleElem() }\n var size = 0\n var max = INIT_SIZE\n var freeList = 0\n var initialized = false\n\n init {\n nodes[1].handle = 1\n handles[1].key = null\n }\n\n /* really __gl_pqHeapDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n handles = emptyArray()\n nodes = emptyArray()\n }\n\n fun floatDown(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n var child = c shl 1\n if (child < size && leq(h[n[child + 1].handle].key!!, h[n[child].handle].key!!)) {\n ++child\n }\n val hChild = n[child].handle\n if (child > size || leq(h[hCurr].key!!, h[hChild].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hChild\n h[hChild].node = c\n c = child\n }\n }\n\n fun floatUp(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n val parent = c shr 1\n val hParent = n[parent].handle\n if (parent == 0 || leq(h[hParent].key!!, h[hCurr].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hParent\n h[hParent].node = c\n c = parent\n }\n }\n\n /* really __gl_pqHeapInit */\n override fun pqInit(): Boolean {\n /* This method of building a heap is O(n), rather than O(n lg n). */\n var i = size\n while (i >= 1) {\n floatDown(i)\n --i\n }\n initialized = true\n return true\n }\n\n /* really __gl_pqHeapInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n val free: Int\n val curr = ++size\n if (curr * 2 > max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n nodes = Array(max + 1) { if (it < nodes.size) nodes[it] else PQnode() }\n handles = Array(max + 1) { if (it < handles.size) handles[it] else PQhandleElem() }\n }\n if (freeList == 0) {\n free = curr\n } else {\n free = freeList\n freeList = handles[free].node\n }\n nodes[curr].handle = free\n handles[free].node = curr\n handles[free].key = keyNew\n if (initialized) {\n floatUp(curr)\n }\n return free\n }\n\n /* really __gl_pqHeapExtractMin */\n override fun pqExtractMin(): Any? {\n val n = nodes\n val h = handles\n val hMin = n[1].handle\n val min = h[hMin].key\n if (size > 0) {\n n[1].handle = n[size].handle\n h[n[1].handle].node = 1\n h[hMin].key = null\n h[hMin].node = freeList\n freeList = hMin\n if (--size > 0) {\n floatDown(1)\n }\n }\n return min\n }\n\n /* really __gl_pqHeapDelete */\n override fun pqDelete(hCurr: Int) {\n val n = nodes\n val h = handles\n val curr = h[hCurr].node\n n[curr].handle = n[size].handle\n h[n[curr].handle].node = curr\n if (curr <= --size) {\n if (curr <= 1 || leq(h[n[curr shr 1].handle].key!!, h[n[curr].handle].key!!)) {\n floatDown(curr)\n } else {\n floatUp(curr)\n }\n }\n h[hCurr].key = null\n h[hCurr].node = freeList\n freeList = hCurr\n }\n\n override fun pqMinimum(): Any? {\n return handles[nodes[1].handle].key\n }\n\n override fun pqIsEmpty(): Boolean {\n return size == 0\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\ninternal class PriorityQSort: PriorityQ() {\n val heap = PriorityQHeap()\n var keys: Array? = arrayOfNulls(INIT_SIZE)\n\n // JAVA: 'order' contains indices into the keys array.\n // This simulates the indirect pointers used in the original C code\n // (from Frank Suykens, Luciad.com).\n var order: IntArray? = null\n var size = 0\n var max = INIT_SIZE\n var initialized = false\n\n /* really __gl_pqSortDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n heap.pqDeletePriorityQ()\n order = null\n keys = null\n }\n\n private class Stack {\n var p = 0\n var r = 0\n }\n\n /* really __gl_pqSortInit */\n override fun pqInit(): Boolean {\n val stack = arrayOfNulls(50)\n for (k in stack.indices) {\n stack[k] = Stack()\n }\n var top = 0\n var seed = 2016473283\n\n /**\n * Create an array of indirect pointers to the keys, so that we\n * the handles we have returned are still valid.\n */\n order = IntArray(size + 1)\n /* the previous line is a patch to compensate for the fact that IBM */\n /* machines return a null on a malloc of zero bytes (unlike SGI), */\n /* so we have to put in this defense to guard against a memory */\n /* fault four lines down. from fossum@austin.ibm.com. */\n var p = 0\n var r = size - 1\n var piv = 0\n var i = p\n while (i <= r) {\n // indirect pointers: keep an index into the keys array, not a direct pointer to its contents\n order!![i] = piv\n ++piv\n ++i\n }\n\n /**\n * Sort the indirect pointers in descending order,\n * using randomized Quicksort\n */\n stack[top]?.p = p\n stack[top]?.r = r\n ++top\n while (--top >= 0) {\n p = stack[top]!!.p\n r = stack[top]!!.r\n while (r > p + 10) {\n seed = abs(seed * 1539415821 + 1)\n i = p + seed % (r - p + 1)\n piv = order!![i]\n order!![i] = order!![p]\n order!![p] = piv\n i = p - 1\n var j = r + 1\n do {\n do {\n ++i\n } while (gt(keys!![order!![i]]!!, keys!![piv]!!))\n do {\n --j\n } while (lt(keys!![order!![j]]!!, keys!![piv]!!))\n swap(order!!, i, j)\n } while (i < j)\n swap(order!!, i, j) /* Undo last swap */\n if (i - p < r - j) {\n stack[top]?.p = j + 1\n stack[top]?.r = r\n ++top\n r = i - 1\n } else {\n stack[top]?.p = p\n stack[top]?.r = i - 1\n ++top\n p = j + 1\n }\n }\n /* Insertion sort small lists */\n i = p + 1\n while (i <= r) {\n piv = order!![i]\n var j = i\n while (j > p && lt(keys!![order!![j - 1]]!!, keys!![piv]!!)) {\n order!![j] = order!![j - 1]\n --j\n }\n order!![j] = piv\n ++i\n }\n }\n max = size\n initialized = true\n heap.pqInit() /* always succeeds */\n\n/* #ifndef NDEBUG\n p = order;\n r = p + size - 1;\n for (i = p; i < r; ++i) {\n Assertion.doAssert(LEQ( * * (i + 1), **i ));\n }\n #endif*/\n return true\n }\n\n /* really __gl_pqSortInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n if (initialized) {\n return heap.pqInsert(keyNew)\n }\n val curr = size\n if (++size >= max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n // pq->keys = (PQHeapKey *)memRealloc( pq->keys,(size_t)(pq->max * sizeof( pq->keys[0] )));\n val pqKeys = arrayOfNulls(max)\n keys?.copyInto(pqKeys)\n keys = pqKeys\n }\n keys!![curr] = keyNew\n\n /* Negative handles index the sorted array. */\n return -(curr + 1)\n }\n\n /* really __gl_pqSortExtractMin */\n override fun pqExtractMin(): Any? {\n if (size == 0) {\n return heap.pqExtractMin()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heap.pqExtractMin()\n }\n }\n do {\n --size\n } while (size > 0 && keys!![order!![size - 1]] == null)\n return sortMin\n }\n\n /* really __gl_pqSortMinimum */\n override fun pqMinimum(): Any? {\n if (size == 0) {\n return heap.pqMinimum()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heapMin\n }\n }\n return sortMin\n }\n\n /* really __gl_pqSortIsEmpty */\n override fun pqIsEmpty(): Boolean {\n return size == 0 && heap.pqIsEmpty()\n }\n\n /* really __gl_pqSortDelete */\n override fun pqDelete(hCurr: Int) {\n var curr = hCurr\n if (curr >= 0) {\n heap.pqDelete(curr)\n return\n }\n curr = -(curr + 1)\n keys!![curr] = null\n while (size > 0 && keys!![order!![size - 1]] == null) {\n --size\n }\n }\n\n companion object {\n private fun lt(x: Any, y: Any): Boolean {\n return !leq(y, x)\n }\n\n private fun gt(x: Any, y: Any): Boolean {\n return !leq(x, y)\n }\n\n private fun swap(array: IntArray, a: Int, b: Int) {\n val tmp = array[a]\n array[a] = array[b]\n array[b] = tmp\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.kgl.GL_LINE_LOOP\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_FAN\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Render {\n private const val USE_OPTIMIZED_CODE_PATH = false\n private val renderFan = RenderFan()\n private val renderStrip = RenderStrip()\n private val renderTriangle = RenderTriangle()\n\n /************************ Strips and Fans decomposition */\n /**\n * __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle\n * fans, strips, and separate triangles. A substantial effort is made\n * to use as few rendering primitives as possible (ie. to make the fans\n * and strips as large as possible).\n *\n * The rendering output is provided as callbacks (see the api).\n */\n fun glRenderMesh(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n /* Make a list of separate triangles so we can render them all at once */\n tess.lonelyTriList = null\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n f.marked = false\n f = f.next!!\n }\n f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /**\n * We examine all faces in an arbitrary order. Whenever we find\n * an unprocessed face F, we output a group of faces including F\n * whose size is maximum.\n */\n if (f.inside && !f.marked) {\n renderMaximumFaceGroup(tess, f)\n }\n f = f.next!!\n }\n if (tess.lonelyTriList != null) {\n renderLonelyTriangles(tess, tess.lonelyTriList)\n tess.lonelyTriList = null\n }\n }\n\n /**\n * We want to find the largest triangle fan or strip of unmarked faces\n * which includes the given face fOrig. There are 3 possible fans\n * passing through fOrig (one centered at each vertex), and 3 possible\n * strips (one for each CCW permutation of the vertices). Our strategy\n * is to try all of these, and take the primitive which uses the most\n * triangles (a greedy approach).\n */\n fun renderMaximumFaceGroup(tess: GLUtessellatorImpl, fOrig: GLUface) {\n val e = fOrig.anEdge!!\n var max = FaceCount()\n max.size = 1\n max.eStart = e\n max.render = renderTriangle\n if (!tess.flagBoundary) {\n var newFace = maximumFan(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n }\n max.render?.render(tess, max.eStart!!, max.size)\n }\n\n /* Macros which keep track of faces we have marked temporarily, and allow\n * us to backtrack when necessary. With triangle fans, this is not\n * really necessary, since the only awkward case is a loop of triangles\n * around a single origin vertex. However with strips the situation is\n * more complicated, and we need a general tracking method like the\n * one here.\n */\n private fun marked(f: GLUface): Boolean {\n return !f.inside || f.marked\n }\n\n private fun addToTrail(f: GLUface, t: GLUface?): GLUface {\n f.trail = t\n f.marked = true\n return f\n }\n\n private fun freeTrail(t: GLUface?) {\n var t = t\n while (t != null) {\n t.marked = false\n t = t.trail\n }\n }\n\n /**\n * eOrig.Lface is the face we want to render. We want to find the size\n * of a maximal fan around eOrig.Org. To do this we just walk around\n * the origin vertex as far as possible in both directions.\n */\n fun maximumFan(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderFan)\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++newFace.size\n e = e.oNext!!\n }\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++newFace.size\n e = e.sym?.lNext!!\n }\n newFace.eStart = e\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n private fun isEven(n: Long): Boolean {\n return n and 0x1L == 0L\n }\n\n /**\n * Here we are looking for a maximal strip that contains the vertices\n * eOrig.Org, eOrig.Dst, eOrig.Lnext.Dst (in that order or the\n * reverse, such that all triangles are oriented CCW).\n *\n * Again we walk forward and backward as far as possible. However for\n * strips there is a twist: to get CCW orientations, there must be\n * an *even* number of triangles in the strip on one side of eOrig.\n * We walk the strip starting on a side with an even number of triangles;\n * if both side have an odd number, we are forced to shorten one side.\n */\n fun maximumStrip(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderStrip)\n var headSize = 0L\n var tailSize = 0L\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.lNext?.sym!!\n if (marked(e.lFace!!)) break\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.oNext!!\n }\n val eTail = e\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.lNext!!\n if (marked(e.sym?.lFace!!)) break\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.oNext?.sym!!\n }\n val eHead = e\n newFace.size = tailSize + headSize\n when {\n isEven(tailSize) -> {\n newFace.eStart = eTail.sym\n }\n isEven(headSize) -> {\n newFace.eStart = eHead\n }\n else -> {\n /**\n * Both sides have odd length, we must shorten one of them. In fact,\n * we must start from eHead to guarantee inclusion of eOrig.Lface.\n */\n --newFace.size\n newFace.eStart = eHead.oNext\n }\n }\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n /**\n * Now we render all the separate triangles which could not be\n * grouped into a triangle fan or strip.\n */\n fun renderLonelyTriangles(tess: GLUtessellatorImpl, f: GLUface?) {\n var f = f\n var edgeState = -1 /* force edge state output for first vertex */\n tess.callBeginOrBeginData(GL_TRIANGLES)\n while (f != null) {\n /* Loop once for each edge (there will always be 3 edges) */\n var e = f.anEdge!!\n do {\n if (tess.flagBoundary) {\n /**\n * Set the \"edge state\" to true just before we output the\n * first vertex of each edge on the polygon boundary.\n */\n val newState = if (!e.sym!!.lFace!!.inside) 1 else 0\n if (edgeState != newState) {\n edgeState = newState\n tess.callEdgeFlagOrEdgeFlagData(edgeState != 0)\n }\n }\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.trail\n }\n tess.callEndOrEndData()\n }\n\n /************************ Boundary contour decomposition */\n /**\n * __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one\n * contour for each face marked \"inside\". The rendering output is\n * provided as callbacks (see the api).\n */\n fun glRenderBoundary(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n if (f.inside) {\n tess.callBeginOrBeginData(GL_LINE_LOOP)\n var e = f.anEdge!!\n do {\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n tess.callEndOrEndData()\n }\n f = f.next!!\n }\n }\n\n /************************ Quick-and-dirty decomposition */\n private const val SIGN_INCONSISTENT = 2\n /**\n * If check==false, we compute the polygon normal and place it in norm[].\n * If check==true, we check that each triangle in the fan from v0 has a\n * consistent orientation with respect to norm[]. If triangles are\n * consistently oriented CCW, return 1; if CW, return -1; if all triangles\n * are degenerate return 0; otherwise (no consistent orientation) return\n * SIGN_INCONSISTENT.\n */\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray, check: Boolean): Int {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val n = DoubleArray(3)\n var sign = 0\n\n /**\n * Find the polygon normal. It is important to get a reasonable\n * normal even when the polygon is self-intersecting (eg. a bowtie).\n * Otherwise, the computed normal could be very tiny, but perpendicular\n * to the true plane of the polygon due to numerical noise. Then all\n * the triangles would appear to be degenerate and we would incorrectly\n * decompose the polygon as a fan (or simply not render it at all).\n *\n * We use a sum-of-triangles normal algorithm rather than the more\n * efficient sum-of-trapezoids method (used in CheckOrientation()\n * in normal.c). This lets us explicitly reverse the signed area\n * of some triangles to get a reasonable normal in the self-intersecting\n * case.\n */\n if (!check) {\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n }\n var vc = 1\n var xc = v[vc].coords[0] - v[0].coords[0]\n var yc = v[vc].coords[1] - v[0].coords[1]\n var zc = v[vc].coords[2] - v[0].coords[2]\n while (++vc < vn) {\n val xp = xc\n val yp = yc\n val zp = zc\n xc = v[vc].coords[0] - v[0].coords[0]\n yc = v[vc].coords[1] - v[0].coords[1]\n zc = v[vc].coords[2] - v[0].coords[2]\n\n /* Compute (vp - v0) cross (vc - v0) */\n n[0] = yp * zc - zp * yc\n n[1] = zp * xc - xp * zc\n n[2] = xp * yc - yp * xc\n val dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2]\n if (!check) {\n /**\n * Reverse the contribution of back-facing triangles to get\n * a reasonable normal for self-intersecting polygons (see above)\n */\n if (dot >= 0) {\n norm[0] += n[0]\n norm[1] += n[1]\n norm[2] += n[2]\n } else {\n norm[0] -= n[0]\n norm[1] -= n[1]\n norm[2] -= n[2]\n }\n } else if (dot != 0.0) {\n /* Check the new orientation for consistency with previous triangles */\n sign = if (dot > 0) {\n if (sign < 0) return SIGN_INCONSISTENT\n 1\n } else {\n if (sign > 0) return SIGN_INCONSISTENT\n -1\n }\n }\n }\n return sign\n }\n\n /**\n * __gl_renderCache( tess ) takes a single contour and tries to render it\n * as a triangle fan. This handles convex polygons, as well as some\n * non-convex polygons if we get lucky.\n *\n * Returns true if the polygon was successfully rendered. The rendering\n * output is provided as callbacks (see the api).\n */\n fun glRenderCache(tess: GLUtessellatorImpl): Boolean {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val norm = DoubleArray(3)\n if (tess.cacheCount < 3) {\n /* Degenerate contour -- no output */\n return true\n }\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm, false)\n }\n val sign = computeNormal(tess, norm, true)\n if (sign == SIGN_INCONSISTENT) {\n /* Fan triangles did not have a consistent orientation */\n return false\n }\n if (sign == 0) {\n /* All triangles were degenerate */\n return true\n }\n return if (!USE_OPTIMIZED_CODE_PATH) {\n false\n } else {\n /* Make sure we do the right thing for each winding rule */\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD, GLU.GLU_TESS_WINDING_NONZERO -> {}\n GLU.GLU_TESS_WINDING_POSITIVE -> if (sign < 0) return true\n GLU.GLU_TESS_WINDING_NEGATIVE -> if (sign > 0) return true\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return true\n }\n tess.callBeginOrBeginData(if (tess.boundaryOnly) GL_LINE_LOOP else if (tess.cacheCount > 3) GL_TRIANGLE_FAN else GL_TRIANGLES)\n tess.callVertexOrVertexData(v[0].data!!)\n if (sign > 0) {\n var vc = 1\n while (vc < vn) {\n tess.callVertexOrVertexData(v[vc].data!!)\n ++vc\n }\n } else {\n var vc = vn - 1\n while (vc > 0) {\n tess.callVertexOrVertexData(v[vc].data!!)\n --vc\n }\n }\n tess.callEndOrEndData()\n true\n }\n }\n\n /**\n * This structure remembers the information we need about a primitive\n * to be able to render it later, once we have determined which\n * primitive is able to use the most triangles.\n */\n internal class FaceCount {\n constructor()\n constructor(size: Long, eStart: GLUhalfEdge?, render: RenderCallBack?) {\n this.size = size\n this.eStart = eStart\n this.render = render\n }\n\n /**\n * number of triangles used\n */\n var size = 0L\n /**\n * edge where this primitive starts\n */\n var eStart: GLUhalfEdge? = null\n var render: RenderCallBack? = null\n }\n\n internal interface RenderCallBack {\n fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long)\n }\n\n private class RenderTriangle : RenderCallBack {\n /**\n * Just add the triangle to a triangle list, so we can render all\n * the separate triangles at once.\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n tess.lonelyTriList = addToTrail(e.lFace!!, tess.lonelyTriList)\n }\n }\n\n private class RenderFan : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a fan starting from\n * edge \"e\". The fan *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_FAN)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n\n private class RenderStrip : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a strip starting from\n * edge \"e\". The strip *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_STRIP)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.lNext?.sym!!\n tess.callVertexOrVertexData(e.org?.data!!)\n if (marked(e.lFace!!)) break\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.tessellator.Dict.DictLeq\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Sweep {\n // #ifdef FOR_TRITE_TEST_PROGRAM\n // extern void DebugEvent( GLUtessellator *tess );\n // #else\n @Suppress(\"UNUSED_PARAMETER\")\n private fun debugEvent(tess: GLUtessellatorImpl) {}\n\n // #endif\n /*\n * Invariants for the Edge Dictionary.\n * - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n * at any valid location of the sweep event\n * - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n * share a common endpoint\n * - for each e, e.Dst has been processed, but not e.Org\n * - each edge e satisfies VertLeq(e.Dst,event) && VertLeq(event,e.Org)\n * where \"event\" is the current sweep line event.\n * - no edge e has zero length\n *\n * Invariants for the Mesh (the processed portion).\n * - the portion of the mesh left of the sweep line is a planar graph,\n * ie. there is *some* way to embed it in the plane\n * - no processed edge has zero length\n * - no two processed vertices have identical coordinates\n * - each \"inside\" region is monotone, ie. can be broken into two chains\n * of monotonically increasing vertices according to VertLeq(v1,v2)\n * - a non-invariant: these chains may intersect (very slightly)\n *\n * Invariants for the Sweep.\n * - if none of the edges incident to the event vertex have an activeRegion\n * (ie. none of these edges are in the edge dictionary), then the vertex\n * has only right-going edges.\n * - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n * by ConnectRightVertex), then it is the only right-going edge from\n * its associated vertex. (This says that these edges exist only\n * when it is necessary.)\n */\n /**\n * When we merge two edges into one, we need to compute the combined\n * winding of the new edge.\n */\n private fun addWinding(eDst: GLUhalfEdge, eSrc: GLUhalfEdge) {\n eDst.winding += eSrc.winding\n eDst.sym!!.winding += eSrc.sym!!.winding\n }\n\n private fun regionBelow(r: ActiveRegion): ActiveRegion {\n return Dict.dictKey(Dict.dictPred(r.nodeUp!!)) as ActiveRegion\n }\n\n private fun regionAbove(r: ActiveRegion): ActiveRegion? {\n return Dict.dictKey(Dict.dictSucc(r.nodeUp!!)) as ActiveRegion?\n }\n\n /**\n * Both edges must be directed from right to left (this is the canonical\n * direction for the upper edge of each region).\n *\n * The strategy is to evaluate a \"t\" value for each edge at the\n * current sweep line position, given by tess.event. The calculations\n * are designed to be very stable, but of course they are not perfect.\n *\n * Special case: if both edge destinations are at the sweep event,\n * we sort the edges by slope (they would otherwise compare equally).\n */\n fun edgeLeq(tess: GLUtessellatorImpl, reg1: ActiveRegion, reg2: ActiveRegion): Boolean {\n val event = tess.event!!\n val e1 = reg1.eUp\n val e2 = reg2.eUp\n if (e1.sym?.org === event) {\n return if (e2.sym?.org === event) {\n /**\n * Two edges right of the sweep line which meet at the sweep event.\n * Sort them by slope.\n */\n if (Geom.vertLeq(e1.org!!, e2.org!!)) {\n Geom.edgeSign(e2.sym?.org!!, e1.org!!, e2.org!!) <= 0\n } else Geom.edgeSign(e1.sym?.org!!, e2.org!!, e1.org!!) >= 0\n } else Geom.edgeSign(e2.sym?.org!!, event, e2.org!!) <= 0\n }\n if (e2.sym?.org === event) {\n return Geom.edgeSign(e1.sym?.org!!, event, e1.org!!) >= 0\n }\n\n /* General case - compute signed distance *from* e1, e2 to event */\n val t1 = Geom.edgeEval(e1.sym?.org!!, event, e1.org!!)\n val t2 = Geom.edgeEval(e2.sym?.org!!, event, e2.org!!)\n return t1 >= t2\n }\n\n fun deleteRegion(reg: ActiveRegion) {\n reg.eUp.activeRegion = null\n Dict.dictDelete(reg.nodeUp!!) /* __gl_dictListDelete */\n }\n\n /**\n * Replace an upper edge which needs fixing (see ConnectRightVertex).\n */\n fun fixUpperEdge(reg: ActiveRegion, newEdge: GLUhalfEdge): Boolean {\n if (!Mesh.glMeshDelete(reg.eUp)) return false\n reg.fixUpperEdge = false\n reg.eUp = newEdge\n newEdge.activeRegion = reg\n return true\n }\n\n fun topLeftRegion(reg: ActiveRegion): ActiveRegion? {\n var reg = reg\n val org = reg.eUp.org\n\n /* Find the region above the uppermost edge with the same origin */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.org === org)\n\n /**\n * If the edge above was a temporary edge introduced by ConnectRightVertex,\n * now is the time to fix it.\n */\n if (reg.fixUpperEdge) {\n val e = Mesh.glMeshConnect(regionBelow(reg).eUp.sym!!, reg.eUp.lNext!!)\n if (!fixUpperEdge(reg, e)) return null\n reg = regionAbove(reg)!!\n }\n return reg\n }\n\n fun topRightRegion(reg: ActiveRegion): ActiveRegion {\n var reg = reg\n val dst = reg.eUp.sym?.org\n\n /* Find the region above the uppermost edge with the same destination */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.sym?.org === dst)\n return reg\n }\n\n /**\n * Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n * (according to where the new edge belongs in the sweep-line dictionary).\n * The upper edge of the new region will be \"eNewUp\".\n * Winding number and \"inside\" flag are not updated.\n */\n fun addRegionBelow(\n tess: GLUtessellatorImpl,\n regAbove: ActiveRegion,\n eNewUp: GLUhalfEdge\n ): ActiveRegion {\n val regNew = ActiveRegion(eNewUp)\n /* __gl_dictListInsertBefore */\n regNew.nodeUp = Dict.dictInsertBefore(tess.dict!!, regAbove.nodeUp!!, regNew)\n regNew.fixUpperEdge = false\n regNew.sentinel = false\n regNew.dirty = false\n eNewUp.activeRegion = regNew\n return regNew\n }\n\n fun isWindingInside(tess: GLUtessellatorImpl, n: Int): Boolean {\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD -> return n and 1 != 0\n GLU.GLU_TESS_WINDING_NONZERO -> return n != 0\n GLU.GLU_TESS_WINDING_POSITIVE -> return n > 0\n GLU.GLU_TESS_WINDING_NEGATIVE -> return n < 0\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return n >= 2 || n <= -2\n }\n throw RuntimeException()\n /*NOTREACHED*/\n }\n\n fun computeWinding(tess: GLUtessellatorImpl, reg: ActiveRegion) {\n reg.windingNumber = regionAbove(reg)!!.windingNumber + reg.eUp.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n }\n\n /**\n * Delete a region from the sweep line. This happens when the upper\n * and lower chains of a region meet (at a vertex on the sweep line).\n * The \"inside\" flag is copied to the appropriate mesh face (we could\n * not do this before -- since the structure of the mesh is always\n * changing, this face may not have even existed until now).\n */\n fun finishRegion(reg: ActiveRegion) {\n val e = reg.eUp\n val f = e.lFace!!\n f.inside = reg.inside\n f.anEdge = e /* optimization for __gl_meshTessellateMonoRegion() */\n deleteRegion(reg)\n }\n\n /**\n * We are given a vertex with one or more left-going edges. All affected\n * edges should be in the edge dictionary. Starting at regFirst.eUp,\n * we walk down deleting all regions where both edges have the same\n * origin vOrg. At the same time we copy the \"inside\" flag from the\n * active region to the face, since at this point each face will belong\n * to at most one region (this was not necessarily true until this point\n * in the sweep). The walk stops at the region above regLast; if regLast\n * is null we walk as far as possible. At the same time we relink the\n * mesh if necessary, so that the ordering of edges around vOrg is the\n * same as in the dictionary.\n */\n fun finishLeftRegions(regFirst: ActiveRegion, regLast: ActiveRegion?): GLUhalfEdge {\n var regPrev = regFirst\n var ePrev = regFirst.eUp\n while (regPrev !== regLast) {\n regPrev.fixUpperEdge = false /* placement was OK */\n val reg = regionBelow(regPrev)\n var e = reg.eUp\n if (e.org !== ePrev.org) {\n if (!reg.fixUpperEdge) {\n /**\n * Remove the last left-going edge. Even though there are no further\n * edges in the dictionary with this origin, there may be further\n * such edges in the mesh (if we are adding left edges to a vertex\n * that has already been processed). Thus it is important to call\n * FinishRegion rather than just DeleteRegion.\n */\n finishRegion(regPrev)\n break\n }\n /**\n * If the edge below was a temporary edge introduced by\n * ConnectRightVertex, now is the time to fix it.\n */\n e = Mesh.glMeshConnect(ePrev.oNext?.sym!!, e.sym!!)\n if (!fixUpperEdge(reg, e)) throw RuntimeException()\n }\n\n /* Relink edges so that ePrev.Onext == e */\n if (ePrev.oNext !== e) {\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev, e)) throw RuntimeException()\n }\n finishRegion(regPrev) /* may change reg.eUp */\n ePrev = reg.eUp\n regPrev = reg\n }\n return ePrev\n }\n\n /**\n * Purpose: insert right-going edges into the edge dictionary, and update\n * winding numbers and mesh connectivity appropriately. All right-going\n * edges share a common origin vOrg. Edges are inserted CCW starting at\n * eFirst; the last edge inserted is eLast.Sym.Lnext. If vOrg has any\n * left-going edges already processed, then eTopLeft must be the edge\n * such that an imaginary upward vertical segment from vOrg would be\n * contained between eTopLeft.Sym.Lnext and eTopLeft; otherwise eTopLeft\n * should be null.\n */\n fun addRightEdges(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eFirst: GLUhalfEdge, eLast: GLUhalfEdge?, eTopLeft: GLUhalfEdge?,\n cleanUp: Boolean\n ) {\n var eTopLeft = eTopLeft\n var firstTime = true\n\n /* Insert the new right-going edges in the dictionary */\n var e = eFirst\n do {\n addRegionBelow(tess, regUp, e.sym!!)\n e = e.oNext!!\n } while (e !== eLast)\n\n /**\n * Walk *all* right-going edges from e.Org, in the dictionary order,\n * updating the winding numbers of each region, and re-linking the mesh\n * edges to match the dictionary ordering (if necessary).\n */\n if (eTopLeft == null) {\n eTopLeft = regionBelow(regUp).eUp.sym?.oNext\n }\n var regPrev = regUp\n var ePrev = eTopLeft!!\n var reg: ActiveRegion\n while (true) {\n reg = regionBelow(regPrev)\n e = reg.eUp.sym!!\n if (e.org !== ePrev.org) break\n if (e.oNext !== ePrev) {\n /* Unlink e from its current position, and relink below ePrev */\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev.sym?.lNext!!, e)) throw RuntimeException()\n }\n /* Compute the winding number and \"inside\" flag for the new regions */\n reg.windingNumber = regPrev.windingNumber - e.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n\n /**\n * Check for two outgoing edges with same slope -- process these\n * before any intersection tests (see example in __gl_computeInterior).\n */\n regPrev.dirty = true\n if (!firstTime && checkForRightSplice(tess, regPrev)) {\n addWinding(e, ePrev)\n deleteRegion(regPrev)\n if (!Mesh.glMeshDelete(ePrev)) throw RuntimeException()\n }\n firstTime = false\n regPrev = reg\n ePrev = e\n }\n regPrev.dirty = true\n if (cleanUp) {\n /* Check for intersections between newly adjacent edges. */\n walkDirtyRegions(tess, regPrev)\n }\n }\n\n fun callCombine(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n data: Array, weights: FloatArray, needed: Boolean\n ) {\n val coords = DoubleArray(3)\n\n /* Copy coord data in case the callback changes it. */\n coords[0] = isect.coords[0]\n coords[1] = isect.coords[1]\n coords[2] = isect.coords[2]\n val outData = arrayOfNulls(1)\n tess.callCombineOrCombineData(coords, data, weights, outData)\n isect.data = outData[0]\n if (isect.data == null) {\n if (!needed) {\n isect.data = data[0]\n } else if (!tess.fatalError) {\n /**\n * The only way fatal error is when two edges are found to intersect,\n * but the user has not provided the callback necessary to handle\n * generated intersection points.\n */\n tess.callErrorOrErrorData(GLU.GLU_TESS_NEED_COMBINE_CALLBACK)\n tess.fatalError = true\n }\n }\n }\n\n /**\n * Two vertices with idential coordinates are combined into one.\n * e1.Org is kept, while e2.Org is discarded.\n */\n fun spliceMergeVertices(tess: GLUtessellatorImpl, e1: GLUhalfEdge, e2: GLUhalfEdge) {\n val data = arrayOfNulls(4)\n val weights = floatArrayOf(0.5f, 0.5f, 0.0f, 0.0f)\n data[0] = e1.org?.data\n data[1] = e2.org?.data\n callCombine(tess, e1.org!!, data, weights, false)\n if (!Mesh.glMeshSplice(e1, e2)) throw RuntimeException()\n }\n\n /**\n * Find some weights which describe how the intersection vertex is\n * a linear combination of \"org\" and \"dest\". Each of the two edges\n * which generated \"isect\" is allocated 50% of the weight; each edge\n * splits the weight between its org and dst according to the\n * relative distance to \"isect\".\n */\n fun vertexWeights(\n isect: GLUvertex, org: GLUvertex, dst: GLUvertex,\n weights: FloatArray\n ) {\n val t1 = Geom.vertL1dist(org, isect)\n val t2 = Geom.vertL1dist(dst, isect)\n weights[0] = (0.5 * t2 / (t1 + t2)).toFloat()\n weights[1] = (0.5 * t1 / (t1 + t2)).toFloat()\n isect.coords[0] += weights[0] * org.coords[0] + weights[1] * dst.coords[0]\n isect.coords[1] += weights[0] * org.coords[1] + weights[1] * dst.coords[1]\n isect.coords[2] += weights[0] * org.coords[2] + weights[1] * dst.coords[2]\n }\n\n /**\n * We've computed a new intersection point, now we need a \"data\" pointer\n * from the user so that we can refer to this new vertex in the\n * rendering callbacks.\n */\n fun getIntersectData(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n orgUp: GLUvertex, dstUp: GLUvertex,\n orgLo: GLUvertex, dstLo: GLUvertex\n ) {\n val data = arrayOfNulls(4)\n val weights = FloatArray(4)\n val weights1 = FloatArray(2)\n val weights2 = FloatArray(2)\n data[0] = orgUp.data\n data[1] = dstUp.data\n data[2] = orgLo.data\n data[3] = dstLo.data\n isect.coords[2] = 0.0\n isect.coords[1] = isect.coords[2]\n isect.coords[0] = isect.coords[1]\n vertexWeights(isect, orgUp, dstUp, weights1)\n vertexWeights(isect, orgLo, dstLo, weights2)\n weights1.copyInto(weights, 0)\n weights2.copyInto(weights, 2)\n callCombine(tess, isect, data, weights, true)\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Org is above eLo, or eLo.Org is below eUp (depending on which\n * origin is leftmost).\n *\n * The main purpose is to splice right-going edges with the same\n * dest vertex and nearly identical slopes (ie. we can't distinguish\n * the slopes numerically). However the splicing can also help us\n * to recover from numerical errors. For example, suppose at one\n * point we checked eUp and eLo, and decided that eUp.Org is barely\n * above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * our test so that now eUp.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants.\n *\n * One possibility is to check these edges for intersection again\n * (ie. CheckForIntersect). This is what we do if possible. However\n * CheckForIntersect requires that tess.event lies between eUp and eLo,\n * so that it has something to fall back on when the intersection\n * calculation gives us an unusable answer. So, for those cases where\n * we can't check for intersection, this routine fixes the problem\n * by just splicing the offending vertex into the other edge.\n * This is a guaranteed solution, no matter how degenerate things get.\n * Basically this is a combinatorial solution to a numerical problem.\n */\n fun checkForRightSplice(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.org!!, eLo.org!!)) {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Org appears to be below eLo */\n if (!Geom.vertEq(eUp.org!!, eLo.org!!)) {\n /* Splice eUp.Org into eLo */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n } else if (eUp.org !== eLo.org) {\n /* merge the two vertices, discarding eUp.Org */\n tess.pq?.pqDelete(eUp.org?.pqHandle!!) /* __gl_pqSortDelete */\n spliceMergeVertices(tess, eLo.sym?.lNext!!, eUp)\n }\n } else {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Org appears to be above eUp, so splice eLo.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n }\n return true\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Sym.Org is above eLo, or eLo.Sym.Org is below eUp (depending on which\n * destination is rightmost).\n *\n * Theoretically, this should always be true. However, splitting an edge\n * into two pieces can change the results of previous tests. For example,\n * suppose at one point we checked eUp and eLo, and decided that eUp.Sym.Org\n * is barely above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * the test so that now eUp.Sym.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants\n * (otherwise new edges might get inserted in the wrong place in the\n * dictionary, and bad stuff will happen).\n *\n * We fix the problem by just splicing the offending vertex into the\n * other edge.\n */\n fun checkForLeftSplice(regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.sym?.org!!, eLo.sym?.org!!)) {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.sym?.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Sym.Org is above eUp, so splice eLo.Sym.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n val e = Mesh.glMeshSplitEdge(eUp)\n if (!Mesh.glMeshSplice(eLo.sym!!, e)) throw RuntimeException()\n e.lFace?.inside = regUp.inside\n } else {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.sym?.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Sym.Org is below eLo, so splice eUp.Sym.Org into eLo */\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n val e = Mesh.glMeshSplitEdge(eLo)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym!!)) throw RuntimeException()\n e.sym?.lFace?.inside = regUp.inside\n }\n return true\n }\n\n /**\n * Check the upper and lower edges of the given region to see if\n * they intersect. If so, create the intersection and add it\n * to the data structures.\n *\n * Returns true if adding the new intersection resulted in a recursive\n * call to AddRightEdges(); in this case all \"dirty\" regions have been\n * checked for intersections, and possibly regUp has been deleted.\n */\n fun checkForIntersect(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n val orgUp = eUp.org!!\n val orgLo = eLo.org!!\n val dstUp = eUp.sym?.org!!\n val dstLo = eLo.sym?.org!!\n val isect = GLUvertex()\n if (orgUp === orgLo) return false /* right endpoints are the same */\n val tMinUp = orgUp.t.coerceAtMost(dstUp.t)\n val tMaxLo = orgLo.t.coerceAtLeast(dstLo.t)\n if (tMinUp > tMaxLo) return false /* t ranges do not overlap */\n if (Geom.vertLeq(orgUp, orgLo)) {\n if (Geom.edgeSign(dstLo, orgUp, orgLo) > 0) return false\n } else {\n if (Geom.edgeSign(dstUp, orgLo, orgUp) < 0) return false\n }\n\n /* At this point the edges intersect, at least marginally */\n debugEvent(tess)\n Geom.edgeIntersect(dstUp, orgUp, dstLo, orgLo, isect)\n if (Geom.vertLeq(isect, tess.event!!)) {\n /**\n * The intersection point lies slightly to the left of the sweep line,\n * so move it until it''s slightly to the right of the sweep line.\n * (If we had perfect numerical precision, this would never happen\n * in the first place). The easiest and safest thing to do is\n * replace the intersection by tess.event.\n */\n isect.s = tess.event!!.s\n isect.t = tess.event!!.t\n }\n /**\n * Similarly, if the computed intersection lies to the right of the\n * rightmost origin (which should rarely happen), it can cause\n * unbelievable inefficiency on sufficiently degenerate inputs.\n * (If you have the test program, try running test54.d with the\n * \"X zoom\" option turned on).\n */\n val orgMin = if (Geom.vertLeq(orgUp, orgLo)) orgUp else orgLo\n if (Geom.vertLeq(orgMin, isect)) {\n isect.s = orgMin.s\n isect.t = orgMin.t\n }\n if (Geom.vertEq(isect, orgUp) || Geom.vertEq(isect, orgLo)) {\n /* Easy case -- intersection at one of the right endpoints */\n checkForRightSplice(tess, regUp)\n return false\n }\n if ((!Geom.vertEq(dstUp, tess.event!!)\n && Geom.edgeSign(dstUp, tess.event!!, isect) >= 0)\n || (!Geom.vertEq(dstLo, tess.event!!)\n && Geom.edgeSign(dstLo, tess.event!!, isect) <= 0)\n ) {\n /**\n * Very unusual -- the new upper or lower edge would pass on the\n * wrong side of the sweep event, or through it. This can happen\n * due to very small numerical errors in the intersection calculation.\n */\n if (dstLo === tess.event) {\n /* Splice dstLo into eUp, and process the new region(s) */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eUp = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n addRightEdges(tess, regUp, eUp.sym?.lNext!!, eUp, eUp, true)\n return true\n }\n if (dstUp === tess.event) {\n /* Splice dstUp into eLo, and process the new region(s) */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo = regUp\n regUp = topRightRegion(regUp)\n val e = regionBelow(regUp).eUp.sym?.oNext\n regLo.eUp = eLo.sym?.lNext!!\n eLo = finishLeftRegions(regLo, null)\n addRightEdges(tess, regUp, eLo.oNext!!, eUp.sym?.oNext, e, true)\n return true\n }\n /**\n * Special case: called from ConnectRightVertex. If either\n * edge passes on the wrong side of tess.event, split it\n * (and wait for ConnectRightVertex to splice it appropriately).\n */\n if (Geom.edgeSign(dstUp, tess.event!!, isect) >= 0) {\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n eUp.org?.s = tess.event!!.s\n eUp.org?.t = tess.event!!.t\n }\n if (Geom.edgeSign(dstLo, tess.event!!, isect) <= 0) {\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n Mesh.glMeshSplitEdge(eLo.sym!!)\n eLo.org?.s = tess.event!!.s\n eLo.org?.t = tess.event!!.t\n }\n /* leave the rest for ConnectRightVertex */\n return false\n }\n\n /**\n * General case -- split both edges, splice into new vertex.\n * When we do the splice operation, the order of the arguments is\n * arbitrary as far as correctness goes. However, when the operation\n * creates a new face, the work done is proportional to the size of\n * the new face. We expect the faces in the processed part of\n * the mesh (ie. eUp.Lface) to be smaller than the faces in the\n * unprocessed original contours (which will be eLo.Sym.Lnext.Lface).\n */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n eUp.org?.s = isect.s\n eUp.org?.t = isect.t\n eUp.org?.pqHandle = tess.pq!!.pqInsert(eUp.org) /* __gl_pqSortInsert */\n getIntersectData(tess, eUp.org!!, orgUp, dstUp, orgLo, dstLo)\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n regionAbove(regUp)?.dirty = regUp.dirty\n return false\n }\n\n /**\n * When the upper or lower edge of any region changes, the region is\n * marked \"dirty\". This routine walks through all the dirty regions\n * and makes sure that the dictionary invariants are satisfied\n * (see the comments at the beginning of this file). Of course\n * new dirty regions can be created as we make changes to restore\n * the invariants.\n */\n fun walkDirtyRegions(tess: GLUtessellatorImpl, regUp: ActiveRegion) {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n while (true) {\n\n /* Find the lowest dirty region (we walk from the bottom up). */\n while (regLo.dirty) {\n regUp = regLo\n regLo = regionBelow(regLo)\n }\n if (!regUp.dirty) {\n regLo = regUp\n regUp = regionAbove(regUp) ?: return\n if (!regUp.dirty) return /* We've walked all the dirty regions */\n }\n regUp.dirty = false\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n if (eUp.sym?.org !== eLo.sym?.org) {\n /* Check that the edge ordering is obeyed at the Dst vertices. */\n if (checkForLeftSplice(regUp)) {\n\n /**\n * If the upper or lower edge was marked fixUpperEdge, then\n * we no longer need it (since these edges are needed only for\n * vertices which otherwise have no right-going edges).\n */\n if (regLo.fixUpperEdge) {\n deleteRegion(regLo)\n if (!Mesh.glMeshDelete(eLo)) throw RuntimeException()\n regLo = regionBelow(regUp)\n eLo = regLo.eUp\n } else if (regUp.fixUpperEdge) {\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n eUp = regUp.eUp\n }\n }\n }\n if (eUp.org !== eLo.org) {\n if (eUp.sym?.org !== eLo.sym?.org && !regUp.fixUpperEdge && !regLo.fixUpperEdge\n && (eUp.sym?.org === tess.event || eLo.sym?.org === tess.event)\n ) {\n /**\n * When all else fails in CheckForIntersect(), it uses tess.event\n * as the intersection location. To make this possible, it requires\n * that tess.event lie between the upper and lower edges, and also\n * that neither of these is marked fixUpperEdge (since in the worst\n * case it might splice one of these edges into tess.event, and\n * violate the invariant that fixable edges are the only right-going\n * edge from their associated vertex).\n */\n if (checkForIntersect(tess, regUp)) {\n /* WalkDirtyRegions() was called recursively; we're done */\n return\n }\n } else {\n /**\n * Even though we can't use CheckForIntersect(), the Org vertices\n * may violate the dictionary edge ordering. Check and correct this.\n */\n checkForRightSplice(tess, regUp)\n }\n }\n if (eUp.org === eLo.org && eUp.sym?.org === eLo.sym?.org) {\n /* A degenerate loop consisting of only two edges -- delete it. */\n addWinding(eLo, eUp)\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n }\n }\n }\n\n /**\n * Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n * to the unprocessed portion of the mesh. Since there are no right-going\n * edges, two regions (one above vEvent and one below) are being merged\n * into one. \"regUp\" is the upper of these two regions.\n *\n * There are two reasons for doing this (adding a right-going edge):\n * - if the two regions being merged are \"inside\", we must add an edge\n * to keep them separated (the combined region would not be monotone).\n * - in any case, we must leave some record of vEvent in the dictionary,\n * so that we can merge vEvent with features that we have not seen yet.\n * For example, maybe there is a vertical edge which passes just to\n * the right of vEvent; we would like to splice vEvent into this edge.\n *\n * However, we don't want to connect vEvent to just any vertex. We don''t\n * want the new edge to cross any other edges; otherwise we will create\n * intersection vertices even when the input data had no self-intersections.\n * (This is a bad thing; if the user's input data has no intersections,\n * we don't want to generate any false intersections ourselves.)\n *\n * Our eventual goal is to connect vEvent to the leftmost unprocessed\n * vertex of the combined region (the union of regUp and regLo).\n * But because of unseen vertices with all right-going edges, and also\n * new vertices which may be created by edge intersections, we don''t\n * know where that leftmost unprocessed vertex is. In the meantime, we\n * connect vEvent to the closest vertex of either chain, and mark the region\n * as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n * to the next processed vertex on the boundary of the combined region.\n * Quite possibly the vertex we connected to will turn out to be the\n * closest one, in which case we won''t need to make any changes.\n */\n fun connectRightVertex(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eBottomLeft: GLUhalfEdge\n ) {\n var regUp = regUp\n var eBottomLeft = eBottomLeft\n var eTopLeft = eBottomLeft.oNext!!\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n var degenerate = false\n if (eUp.sym?.org !== eLo.sym?.org) {\n checkForIntersect(tess, regUp)\n }\n\n /**\n * Possible new degeneracies: upper or lower edge of regUp may pass\n * through vEvent, or may coincide with new intersection vertex\n */\n if (Geom.vertEq(eUp.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eTopLeft.sym?.lNext!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eTopLeft = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n degenerate = true\n }\n if (Geom.vertEq(eLo.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eBottomLeft, eLo.sym?.lNext!!)) throw RuntimeException()\n eBottomLeft = finishLeftRegions(regLo, null)\n degenerate = true\n }\n if (degenerate) {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n return\n }\n\n /**\n * Non-degenerate situation -- need to add a temporary, fixable edge.\n * Connect to the closer of eLo.Org, eUp.Org.\n */\n var eNew = if (Geom.vertLeq(eLo.org!!, eUp.org!!)) eLo.sym?.lNext!! else eUp\n eNew = Mesh.glMeshConnect(eBottomLeft.oNext?.sym!!, eNew)\n\n /**\n * Prevent cleanup, otherwise eNew might disappear before we've even\n * had a chance to mark it as a temporary edge.\n */\n addRightEdges(tess, regUp, eNew, eNew.oNext, eNew.oNext, false)\n eNew.sym?.activeRegion?.fixUpperEdge = true\n walkDirtyRegions(tess, regUp)\n }\n\n /**\n * Because vertices at exactly the same location are merged together\n * before we process the sweep event, some degenerate cases can't occur.\n * However if someone eventually makes the modifications required to\n * merge features which are close together, the cases below marked\n * TOLERANCE_NONZERO will be useful. They were debugged before the\n * code to merge identical vertices in the main loop was added.\n */\n private const val TOLERANCE_NONZERO = false\n /**\n * The event vertex lies exacty on an already-processed edge or vertex.\n * Adding the new vertex involves splicing it into the already-processed\n * part of the mesh.\n */\n fun connectLeftDegenerate(\n tess: GLUtessellatorImpl,\n regUp: ActiveRegion, vEvent: GLUvertex\n ) {\n var regUp = regUp\n val e = regUp.eUp\n if (Geom.vertEq(e.org!!, vEvent)) {\n /**\n * e.Org is an unprocessed vertex - just combine them, and wait\n * for e.Org to be pulled from the queue\n */\n spliceMergeVertices(tess, e, vEvent.anEdge!!)\n return\n }\n if (!Geom.vertEq(e.sym?.org!!, vEvent)) {\n /* General case -- splice vEvent into edge e which passes through it */\n Mesh.glMeshSplitEdge(e.sym!!)\n if (regUp.fixUpperEdge) {\n /* This edge was fixable -- delete unused portion of original edge */\n if (!Mesh.glMeshDelete(e.oNext!!)) throw RuntimeException()\n regUp.fixUpperEdge = false\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, e)) throw RuntimeException()\n sweepEvent(tess, vEvent) /* recurse */\n return\n }\n regUp = topRightRegion(regUp)\n val reg = regionBelow(regUp)\n var eTopRight = reg.eUp.sym!!\n val eLast = eTopRight.oNext\n var eTopLeft = eLast\n if (reg.fixUpperEdge) {\n /**\n * Here e.Sym.Org has only a single fixable edge going right.\n * We can delete it since now we have some real right-going edges.\n */\n deleteRegion(reg)\n if (!Mesh.glMeshDelete(eTopRight)) throw RuntimeException()\n eTopRight = eTopLeft?.sym?.lNext!!\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, eTopRight)) throw RuntimeException()\n if (!Geom.edgeGoesLeft(eTopLeft!!)) {\n /* e.Sym.Org had no left-going edges -- indicate this to AddRightEdges() */\n eTopLeft = null\n }\n addRightEdges(tess, regUp, eTopRight.oNext!!, eLast, eTopLeft, true)\n }\n\n /**\n * Purpose: connect a \"left\" vertex (one where both edges go right)\n * to the processed portion of the mesh. Let R be the active region\n * containing vEvent, and let U and L be the upper and lower edge\n * chains of R. There are two possibilities:\n *\n * - the normal case: split R into two regions, by connecting vEvent to\n * the rightmost vertex of U or L lying to the left of the sweep line\n *\n * - the degenerate case: if vEvent is close enough to U or L, we\n * merge vEvent into that edge chain. The subcases are:\n *\t- merging with the rightmost vertex of U or L\n *\t- merging with the active edge of U or L\n *\t- merging with an already-processed portion of U or L\n */\n fun connectLeftVertex(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n /* Get a pointer to the active region containing vEvent */\n val tmp = ActiveRegion(vEvent.anEdge?.sym!!)\n val regUp = Dict.dictKey(Dict.dictSearch(tess.dict!!, tmp)) as ActiveRegion\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n\n /* Try merging with U or L first */\n if (Geom.edgeSign(eUp.sym?.org!!, vEvent, eUp.org!!) == 0.0) {\n connectLeftDegenerate(tess, regUp, vEvent)\n return\n }\n\n /**\n * Connect vEvent to rightmost processed vertex of either chain.\n * e.Sym.Org is the vertex that we will connect to vEvent.\n */\n val reg = if (Geom.vertLeq(eLo.sym?.org!!, eUp.sym?.org!!)) regUp else regLo\n if (regUp.inside || reg.fixUpperEdge) {\n val eNew = if (reg === regUp) {\n Mesh.glMeshConnect(vEvent.anEdge?.sym!!, eUp.lNext!!)\n } else {\n val tempHalfEdge = Mesh.glMeshConnect(eLo.sym?.oNext?.sym!!, vEvent.anEdge!!)\n tempHalfEdge.sym!!\n }\n if (reg.fixUpperEdge) {\n if (!fixUpperEdge(reg, eNew)) throw RuntimeException()\n } else {\n computeWinding(tess, addRegionBelow(tess, regUp, eNew))\n }\n sweepEvent(tess, vEvent)\n } else {\n /**\n * The new vertex is in a region which does not belong to the polygon.\n * We don''t need to connect this vertex to the rest of the mesh.\n */\n addRightEdges(tess, regUp, vEvent.anEdge!!, vEvent.anEdge, null, true)\n }\n }\n\n /**\n * Does everything necessary when the sweep line crosses a vertex.\n * Updates the mesh and the edge dictionary.\n */\n fun sweepEvent(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n tess.event = vEvent /* for access in EdgeLeq() */\n debugEvent(tess)\n\n /**\n * Check if this vertex is the right endpoint of an edge that is\n * already in the dictionary. In this case we don't need to waste\n * time searching for the location to insert new edges.\n */\n var e = vEvent.anEdge!!\n while (e.activeRegion == null) {\n e = e.oNext!!\n if (e === vEvent.anEdge) {\n /* All edges go right -- not incident to any processed edges */\n connectLeftVertex(tess, vEvent)\n return\n }\n }\n\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n val regUp = topLeftRegion(e.activeRegion!!)!!\n val reg = regionBelow(regUp)\n val eTopLeft = reg.eUp\n val eBottomLeft = finishLeftRegions(reg, null)\n\n /**\n * Next we process all the right-going edges from vEvent. This\n * involves adding the edges to the dictionary, and creating the\n * associated \"active regions\" which record information about the\n * regions between adjacent dictionary edges.\n */\n if (eBottomLeft.oNext === eTopLeft) {\n /* No right-going edges -- add a temporary \"fixable\" edge */\n connectRightVertex(tess, regUp, eBottomLeft)\n } else {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n }\n }\n\n /**\n * Make the sentinel coordinates big enough that they will never be\n * merged with real input features. (Even with the largest possible\n * input contour and the maximum tolerance of 1.0, no merging will be\n * done with coordinates larger than 3 * GLU_TESS_MAX_COORD).\n */\n private const val SENTINEL_COORD = 4.0 * GLU.GLU_TESS_MAX_COORD\n /**\n * We add two sentinel edges above and below all other edges,\n * to avoid special cases at the top and bottom.\n */\n fun addSentinel(tess: GLUtessellatorImpl, t: Double) {\n val e = Mesh.glMeshMakeEdge(tess.mesh!!)\n e.org?.s = SENTINEL_COORD\n e.org?.t = t\n e.sym?.org?.s = -SENTINEL_COORD\n e.sym?.org?.t = t\n tess.event = e.sym?.org /* initialize it */\n val reg = ActiveRegion(e)\n reg.windingNumber = 0\n reg.inside = false\n reg.fixUpperEdge = false\n reg.sentinel = true\n reg.dirty = false\n reg.nodeUp = Dict.dictInsert(tess.dict!!, reg) /* __gl_dictListInsertBefore */\n }\n\n /**\n * We maintain an ordering of edge intersections with the sweep line.\n * This order is maintained in a dynamic dictionary.\n */\n fun initEdgeDict(tess: GLUtessellatorImpl) {\n /* __gl_dictListNewDict */\n tess.dict = Dict.dictNewDict(\n tess,\n object : DictLeq {\n override fun leq(frame: Any, key1: Any?, key2: Any?): Boolean {\n return edgeLeq(\n tess,\n key1 as ActiveRegion,\n key2 as ActiveRegion\n )\n }\n }\n )\n addSentinel(tess, -SENTINEL_COORD)\n addSentinel(tess, SENTINEL_COORD)\n }\n\n fun doneEdgeDict(tess: GLUtessellatorImpl) {\n while (true) {\n val reg = Dict.dictKey(Dict.dictMin(tess.dict!!)) as ActiveRegion? ?: break\n /**\n * At the end of all processing, the dictionary should contain\n * only the two sentinel edges, plus at most one \"fixable\" edge\n * created by ConnectRightVertex().\n */\n deleteRegion(reg)\n /* __gl_meshDelete( reg.eUp )*/\n }\n Dict.dictDeleteDict(tess.dict!!) /* __gl_dictListDeleteDict */\n }\n\n /**\n * Remove zero-length edges, and contours with fewer than 3 vertices.\n */\n fun removeDegenerateEdges(tess: GLUtessellatorImpl) {\n val eHead = tess.mesh?.eHead!!\n\n /*LINTED*/\n var e = eHead.next!!\n while (e !== eHead) {\n var eNext = e.next!!\n var eLnext = e.lNext!!\n if (Geom.vertEq(e.org!!, e.sym?.org!!) && e.lNext?.lNext !== e) {\n /* Zero-length edge, contour has at least 3 edges */\n spliceMergeVertices(tess, eLnext, e) /* deletes e.Org */\n if (!Mesh.glMeshDelete(e)) throw RuntimeException() /* e is a self-loop */\n e = eLnext\n eLnext = e.lNext!!\n }\n if (eLnext.lNext === e) {\n /* Degenerate contour (one or two edges) */\n if (eLnext !== e) {\n if (eLnext === eNext || eLnext === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(eLnext)) throw RuntimeException()\n }\n if (e === eNext || e === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(e)) throw RuntimeException()\n }\n e = eNext\n }\n }\n\n /**\n * Insert all vertices into the priority queue which determines the\n * order in which vertices cross the sweep line.\n */\n fun initPriorityQ(tess: GLUtessellatorImpl): Boolean {\n /* __gl_pqSortNewPriorityQ */\n tess.pq =\n PriorityQ.pqNewPriorityQ()\n val pq = tess.pq!!\n val vHead = tess.mesh?.vHead!!\n var v = vHead.next!!\n while (v !== vHead) {\n v.pqHandle = pq.pqInsert(v) /* __gl_pqSortInsert */\n v = v.next!!\n }\n if (!pq.pqInit()) { /* __gl_pqSortInit */\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n tess.pq = null\n return false\n }\n return true\n }\n\n fun donePriorityQ(tess: GLUtessellatorImpl) {\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n }\n\n /**\n * Delete any degenerate faces with only two edges. WalkDirtyRegions()\n * will catch almost all of these, but it won't catch degenerate faces\n * produced by splice operations on already-processed edges.\n * The two places this can happen are in FinishLeftRegions(), when\n * we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n * and in CheckForLeftSplice(), where we splice already-processed\n * edges to ensure that our dictionary invariants are not violated\n * by numerical errors.\n *\n * In both these cases it is *very* dangerous to delete the offending\n * edge at the time, since one of the routines further up the stack\n * will sometimes be keeping a pointer to that edge.\n */\n fun removeDegenerateFaces(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n val e = f.anEdge!!\n if (e.lNext?.lNext === e) {\n /* A face with only two edges */\n addWinding(e.oNext!!, e)\n if (!Mesh.glMeshDelete(e)) return false\n }\n f = fNext\n }\n return true\n }\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by tess.windingRule.\n * Each interior region is guaranteed be monotone.\n */\n fun glComputeInterior(tess: GLUtessellatorImpl): Boolean {\n tess.fatalError = false\n\n /**\n * Each vertex defines an event for our sweep line. Start by inserting\n * all the vertices in a priority queue. Events are processed in\n * lexicographic order, ie.\n *\n *\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n */\n removeDegenerateEdges(tess)\n if (!initPriorityQ(tess)) return false /* if error */\n initEdgeDict(tess)\n\n /* __gl_pqSortExtractMin */\n while (true) {\n val v = tess.pq?.pqExtractMin() as GLUvertex? ?: break\n while (true) {\n var vNext = tess.pq?.pqMinimum() as GLUvertex? /* __gl_pqSortMinimum */\n if (vNext == null || !Geom.vertEq(vNext, v)) break\n\n /**\n * Merge together all vertices at exactly the same location.\n * This is more efficient than processing them one at a time,\n * simplifies the code (see ConnectLeftDegenerate), and is also\n * important for correct handling of certain degenerate cases.\n * For example, suppose there are two identical edges A and B\n * that belong to different contours (so without this code they would\n * be processed by separate sweep events). Suppose another edge C\n * crosses A and B from above. When A is processed, we split it\n * at its intersection point with C. However this also splits C,\n * so when we insert B we may compute a slightly different\n * intersection point. This might leave two edges with a small\n * gap between them. This kind of error is especially obvious\n * when using boundary extraction (GLU_TESS_BOUNDARY_ONLY).\n */\n vNext = tess.pq?.pqExtractMin() as GLUvertex /* __gl_pqSortExtractMin*/\n spliceMergeVertices(tess, v.anEdge!!, vNext.anEdge!!)\n }\n sweepEvent(tess, v)\n }\n\n /* Set tess.event for debugging purposes */\n /* __GL_DICTLISTKEY */\n /* __GL_DICTLISTMIN */\n tess.event = (Dict.dictKey(\n Dict.dictMin(\n tess.dict!!\n )\n ) as ActiveRegion).eUp.org\n debugEvent(tess)\n doneEdgeDict(tess)\n donePriorityQ(tess)\n if (!removeDegenerateFaces(tess.mesh!!)) return false\n Mesh.glMeshCheckMesh(tess.mesh!!)\n return true\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessMono {\n /**\n * __gl_meshTessellateMonoRegion( face ) tessellates a monotone region\n * (what else would it do??) The region must consist of a single\n * loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n * case means that any vertical line intersects the interior of the\n * region in a single interval.\n *\n * Tessellation consists of adding interior edges (actually pairs of\n * half-edges), to split the region into non-overlapping triangles.\n *\n * The basic idea is explained in Preparata and Shamos (which I don''t\n * have handy right now), although their implementation is more\n * complicated than this one. The are two edge chains, an upper chain\n * and a lower chain. We process all vertices from both chains in order,\n * from right to left.\n *\n * The algorithm ensures that the following invariant holds after each\n * vertex is processed: the untessellated region consists of two\n * chains, where one chain (say the upper) is a single edge, and\n * the other chain is concave. The left vertex of the single edge\n * is always to the left of all vertices in the concave chain.\n *\n * Each step consists of adding the rightmost unprocessed vertex to one\n * of the two chains, and forming a fan of triangles from the rightmost\n * of two chain endpoints. Determining whether we can add each triangle\n * to the fan is a simple orientation test. By making the fan as large\n * as possible, we restore the invariant (check it yourself).\n */\n fun glMeshTessellateMonoRegion(face: GLUface) {\n /**\n * All edges are oriented CCW around the boundary of the region.\n * First, find the half-edge whose origin vertex is rightmost.\n * Since the sweep goes from left to right, face->anEdge should\n * be close to the edge we want.\n */\n var up = face.anEdge!!\n while (Geom.vertLeq(up.sym?.org!!, up.org!!)) {\n up = up.oNext?.sym!!\n }\n while (Geom.vertLeq(up.org!!, up.sym?.org!!)) {\n up = up.lNext!!\n }\n var lo = up.oNext?.sym!!\n while (up.lNext !== lo) {\n if (Geom.vertLeq(up.sym?.org!!, lo.org!!)) {\n /**\n * up.Sym.Org is on the left. It is safe to form triangles from lo.Org.\n * The EdgeGoesLeft test guarantees progress even when some triangles\n * are CW, given that the upper and lower chains are truly monotone.\n */\n while (lo.lNext !== up && (Geom.edgeGoesLeft(lo.lNext!!)\n || Geom.edgeSign(lo.org!!, lo.sym?.org!!, lo.lNext?.sym?.org!!) <= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n lo = lo.oNext?.sym!!\n } else {\n /* lo.Org is on the left. We can make CCW triangles from up.Sym.Org. */\n while (lo.lNext !== up && (Geom.edgeGoesRight(up.oNext?.sym!!)\n || Geom.edgeSign(up.sym?.org!!, up.org!!, up.oNext?.sym?.org!!) >= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(up, up.oNext?.sym!!)\n up = tempHalfEdge.sym!!\n }\n up = up.lNext!!\n }\n }\n while (lo.lNext?.lNext !== up) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n }\n\n /**\n * __gl_meshTessellateInterior( mesh ) tessellates each region of\n * the mesh which is marked \"inside\" the polygon. Each such region\n * must be monotone.\n */\n fun glMeshTessellateInterior(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Make sure we don''t try to tessellate the new triangles. */\n val next = f.next!!\n if (f.inside) {\n glMeshTessellateMonoRegion(f)\n }\n f = next\n }\n return true\n }\n\n /**\n * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n * which are not marked \"inside\" the polygon. Since further mesh operations\n * on NULL faces are not allowed, the main purpose is to clean up the\n * mesh so that exterior loops are not represented in the data structure.\n */\n fun glMeshDiscardExterior(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Since f will be destroyed, save its next pointer. */\n val next = f.next!!\n if (!f.inside) {\n Mesh.glMeshZapFace(f)\n }\n f = next\n }\n }\n\n /**\n * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n * winding numbers on all edges so that regions marked \"inside\" the\n * polygon have a winding number of \"value\", and regions outside\n * have a winding number of 0.\n *\n * If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n * separate an interior region from an exterior one.\n */\n fun glMeshSetWindingNumber(mesh: GLUmesh, value: Int, keepOnlyBoundary: Boolean): Boolean {\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n val eNext = e.next!!\n if (e.sym?.lFace?.inside != e.lFace?.inside) {\n\n /* This is a boundary edge (one side is interior, one is exterior). */\n e.winding = if (e.lFace!!.inside) value else -value\n } else {\n\n /* Both regions are interior, or both are exterior. */\n if (!keepOnlyBoundary) {\n e.winding = 0\n } else {\n if (!Mesh.glMeshDelete(e)) return false\n }\n }\n e = eNext\n }\n return true\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessState {\n const val T_DORMANT = 0\n const val T_IN_POLYGON = 1\n const val T_IN_CONTOUR = 2\n}","package earth.worldwind.util.http\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.*\n\n/**\n * Returns new platform-dependent HTTP client instance configured by default.\n * In case some special configuration will be required on each platform, then make this function \"expected\".\n */\n@Suppress(\"FunctionName\")\nfun DefaultHttpClient(\n connectTimeout: Long = 3000L,\n requestTimeout: Long = 30000L,\n config: HttpClientConfig<*>.() -> Unit = {}\n) = HttpClient {\n config(this)\n\n install(HttpTimeout) {\n connectTimeoutMillis = connectTimeout\n requestTimeoutMillis = requestTimeout\n }\n}\n","package earth.worldwind.util.math\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Viewport\nimport kotlin.math.*\n\n/**\n * Restricts a value to the range [min, max] degrees, clamping values outside the range. Values less than min are\n * returned as min, and values greater than max are returned as max. Values within the range are returned\n * unmodified.\n *
\n * The result of this method is undefined if min is greater than max.\n *\n * @param value the values to clamp\n * @param min the minimum value\n * @param max the maximum value\n *\n * @return the specified values clamped to the range [min, max] degrees\n */\nfun clamp(value: Double, min: Double, max: Double) = value.coerceIn(min, max)\n\n/**\n * Returns the fractional part of a specified number\n *\n * @param value the number whose fractional part to compute\n *\n * @return The fractional part of the specified number: value - floor(value)\n */\nfun fract(value: Double) = value - floor(value)\n\n/**\n * Computes the linear interpolation of two values according to a specified fractional amount. The fractional amount\n * is interpreted as a relative proportion of the two values, where 0.0 indicates the first value, 0.5 indicates a\n * 50/50 mix of the two values, and 1.0 indicates the second value.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two values in the range [0, 1]\n * @param value1 the first value\n * @param value2 the second value\n *\n * @return the interpolated value\n */\nfun interpolate(amount: Double, value1: Double, value2: Double) = (1 - amount) * value1 + amount * value2\n\n/**\n * Returns the integer modulus of a specified number. This differs from the % operator in that the result is\n * always positive when the modulus is positive. For example -1 % 10 = -1, whereas mod(-1, 10) = 1.\n *\n * @param value the integer number whose modulus to compute\n * @param modulus the modulus\n *\n * @return the remainder after dividing the number by the modulus\n */\nfun mod(value: Int, modulus: Int) = (value % modulus + modulus) % modulus\n\n/**\n * Computes the bounding rectangle for a unit square after applying a transformation matrix to the square's four\n * corners.\n *\n * @param unitSquareTransform the matrix to apply to the unit square\n * @param result a pre-allocated Viewport in which to return the computed bounding rectangle\n *\n * @return the result argument set to the computed bounding rectangle\n */\nfun boundingRectForUnitSquare(unitSquareTransform: Matrix4, result: Viewport): Viewport {\n val m = unitSquareTransform.m\n\n // transform of (0, 0)\n val x1 = m[3]\n val y1 = m[7]\n\n // transform of (1, 0)\n val x2 = m[0] + m[3]\n val y2 = m[4] + m[7]\n\n // transform of (0, 1)\n val x3 = m[1] + m[3]\n val y3 = m[5] + m[7]\n\n // transform of (1, 1)\n val x4 = m[0] + m[1] + m[3]\n val y4 = m[4] + m[5] + m[7]\n val minX = min(min(x1, x2), min(x3, x4)).toInt()\n val maxX = max(max(x1, x2), max(x3, x4)).toInt()\n val minY = min(min(y1, y2), min(y3, y4)).toInt()\n val maxY = max(max(y1, y2), max(y3, y4)).toInt()\n return result.set(minX, minY, maxX - minX, maxY - minY)\n}\n\n/**\n * Indicates whether a specified value is a power of two.\n *\n * @param value the value to test\n *\n * @return true if the specified value is a power of two, false othwerwise\n */\nfun isPowerOfTwo(value: Int) = value != 0 && value and value - 1 == 0\n\n/**\n * Returns the value that is the nearest power of 2 greater than or equal to the given value.\n *\n * @param value the reference value. The power of 2 returned is greater than or equal to this value.\n *\n * @return the value that is the nearest power of 2 greater than or equal to the reference value\n */\nfun powerOfTwoCeiling(value: Int): Int {\n val pow = ceil(ln(value.toDouble()) / ln(2.0)).toInt()\n return 1 shl pow\n}","package earth.worldwind\n\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.gesture.*\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.WheelEvent\nimport kotlin.math.cos\nimport kotlin.math.max\nimport kotlin.math.sin\n\n/**\n * This class provides the default window controller for WorldWind for controlling the globe via user interaction.\n */\nopen class BasicWorldWindowController(wwd: WorldWindow): WorldWindowController(wwd) {\n val primaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also { it.addListener(this) }\n val secondaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also {\n it.addListener(this)\n it.button = 2 // secondary mouse button\n }\n val panRecognizer: GestureRecognizer = PanRecognizer(wwd.canvas).also { it.addListener(this) }\n val pinchRecognizer: GestureRecognizer = PinchRecognizer(wwd.canvas).also { it.addListener(this) }\n val rotationRecognizer: GestureRecognizer = RotationRecognizer(wwd.canvas).also { it.addListener(this) }\n val tiltRecognizer: GestureRecognizer = TiltRecognizer(wwd.canvas).also { it.addListener(this) }\n// val tapRecognizer: GestureRecognizer = TapRecognizer(wwd.canvas).also { it.addListener(this) }\n// val clickRecognizer: GestureRecognizer = ClickRecognizer(wwd.canvas).also { it.addListener(this) }\n /**\n * A copy of the viewing parameters at the start of a gesture as a look at view.\n */\n protected val beginLookAt = LookAt()\n protected val beginLookAtPoint = Vec3()\n /**\n * The current state of the viewing parameters during a gesture as a look at view.\n */\n protected val lookAt = LookAt()\n protected val lastPoint = Vec2()\n protected var lastRotation = 0.0\n protected var lastWheelEvent = 0\n protected var activeGestures = 0\n\n init {\n // Establish the dependencies between gesture recognizers. The pan, pinch and rotate gesture may recognize\n // simultaneously with each other.\n panRecognizer.recognizeSimultaneouslyWith(pinchRecognizer)\n panRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n pinchRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n\n // Since the tilt gesture is a subset of the pan gesture, pan will typically recognize before tilt,\n // effectively suppressing tilt. Establish a dependency between the other touch gestures and tilt to provide\n // tilt an opportunity to recognize.\n panRecognizer.requireRecognizerToFail(tiltRecognizer)\n pinchRecognizer.requireRecognizerToFail(tiltRecognizer)\n rotationRecognizer.requireRecognizerToFail(tiltRecognizer)\n }\n\n override fun handleEvent(event: Event) {\n super.handleEvent(event)\n if (!event.defaultPrevented) {\n if (event.type == \"wheel\") {\n event.preventDefault()\n handleWheelEvent(event as WheelEvent)\n } else GestureRecognizer.allRecognizers.forEach { r -> if (r.target == wwd.canvas) r.handleEvent(event) }\n }\n }\n\n override fun gestureStateChanged(recognizer: GestureRecognizer) {\n when(recognizer) {\n primaryDragRecognizer, panRecognizer -> handlePanOrDrag(recognizer)\n secondaryDragRecognizer -> handleSecondaryDrag(recognizer)\n pinchRecognizer -> handlePinch(recognizer)\n rotationRecognizer -> handleRotation(recognizer)\n tiltRecognizer -> handleTilt(recognizer)\n// clickRecognizer, tapRecognizer -> handleClickOrTap(recognizer)\n }\n }\n\n// protected open fun handleClickOrTap(recognizer: GestureRecognizer) {\n// if (recognizer.state == RECOGNIZED) {\n// val pickPoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n//\n// // Identify if the top picked object contains a URL for hyperlinking\n// val pickList = wwd.pick(pickPoint)\n// val userObject = pickList.topPickedObject?.userObject\n// // If the url object was appended, open the hyperlink\n// if (userObject is Renderable && userObject.hasUserProperty(\"url\")) {\n// window.open(userObject.getUserProperty(\"url\") as String, \"_blank\")\n// }\n// }\n// }\n\n protected open fun handlePanOrDrag(recognizer: GestureRecognizer) {\n if (wwd.engine.globe.is2D) handlePanOrDrag2D(recognizer) else handlePanOrDrag3D(recognizer)\n }\n\n protected open fun handlePanOrDrag3D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastPoint.set(0.0, 0.0)\n }\n CHANGED -> {\n // Convert the translation from screen coordinates to arc degrees. Use the view's range as a\n // metric for converting screen pixels to meters, and use the globe's radius for converting from meters\n // to arc degrees. Transform viewport pixel size to canvas client pixel size.\n val globe = wwd.engine.globe\n val globeRadius = max(globe.equatorialRadius, globe.polarRadius)\n val distance = max(1.0, lookAt.range)\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(distance) * wwd.engine.densityFactor\n val forwardMeters = (ty - lastPoint.y) * metersPerPixel\n val sideMeters = -(tx - lastPoint.x) * metersPerPixel\n val forwardRadians = forwardMeters / globeRadius\n val sideRadians = sideMeters / globeRadius\n\n // Apply the change in latitude and longitude to the view, relative to the current heading.\n val sinHeading = sin(lookAt.heading.inRadians)\n val cosHeading = cos(lookAt.heading.inRadians)\n lookAt.position.apply {\n latitude = latitude.plusRadians(forwardRadians * cosHeading - sideRadians * sinHeading)\n longitude = longitude.plusRadians(forwardRadians * sinHeading + sideRadians * cosHeading)\n }\n lastPoint.set(tx, ty)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePanOrDrag2D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n wwd.engine.globe.geographicToCartesian(\n beginLookAt.position.latitude,\n beginLookAt.position.longitude,\n beginLookAt.position.altitude,\n beginLookAtPoint\n )\n }\n CHANGED -> {\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(lookAt.range) * wwd.engine.densityFactor\n val forwardMeters = ty * metersPerPixel\n val sideMeters = - tx * metersPerPixel\n\n // Adjust the change in latitude and longitude based on observation point heading.\n val heading = lookAt.heading\n val sinHeading = sin(heading.inRadians)\n val cosHeading = cos(heading.inRadians)\n val x = beginLookAtPoint.x + forwardMeters * sinHeading + sideMeters * cosHeading\n val y = beginLookAtPoint.y + forwardMeters * cosHeading - sideMeters * sinHeading\n wwd.engine.globe.cartesianToGeographic(x, y, beginLookAtPoint.z, lookAt.position)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleSecondaryDrag(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the current translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the gesture translation to a fraction of an angle.\n val headingDegrees = 180.0 * tx / wwd.canvas.clientWidth\n val tiltDegrees = 90.0 * ty / wwd.canvas.clientHeight\n\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.heading = beginLookAt.heading.plusDegrees(headingDegrees)\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePinch(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val scale = (recognizer as PinchRecognizer).scaleWithOffset\n\n when(state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> if (scale != 0.0) {\n // Apply the change in pinch scale to this view's range, relative to the range when the gesture began.\n lookAt.range = beginLookAt.range / scale\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleRotation(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val rotation = (recognizer as RotationRecognizer).rotationWithOffset\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastRotation = 0.0\n }\n CHANGED -> {\n // Apply the change in gesture rotation to this view's current heading. We apply relative to the\n // current heading rather than the heading when the gesture began in order to work simultaneously with\n // pan operations that also modify the current heading.\n lookAt.heading = lookAt.heading.minusDegrees(rotation - lastRotation)\n lastRotation = rotation\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleTilt(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the gesture translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the translation to a fraction of an angle.\n val tiltDegrees = -90.0 * ty / wwd.canvas.clientHeight\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleWheelEvent(event: WheelEvent) {\n val timeStamp = event.timeStamp.toInt()\n if (timeStamp - lastWheelEvent > 500) {\n wwd.engine.cameraAsLookAt(lookAt)\n lastWheelEvent = timeStamp\n }\n\n // Normalize the wheel delta based on the wheel delta mode. This produces a roughly consistent delta across\n // browsers and input devices.\n val normalizedDelta = when(event.deltaMode) {\n WheelEvent.DOM_DELTA_PIXEL -> event.deltaY\n WheelEvent.DOM_DELTA_LINE -> event.deltaY * 20.0\n WheelEvent.DOM_DELTA_PAGE -> event.deltaY * 200.0\n else -> event.deltaY\n }\n\n // Compute a zoom scale factor by adding a fraction of the normalized delta to 1. When multiplied by the\n // view's range, this has the effect of zooming out or zooming in depending on whether the delta is\n // positive or negative, respectfully.\n val scale = 1.0 + (normalizedDelta / 1000.0)\n\n // Apply the scale to this view's properties.\n lookAt.range *= scale\n applyChanges()\n }\n\n protected open fun applyChanges() {\n // Update camera view\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n protected open fun gestureDidBegin() {\n if (activeGestures++ == 0) {\n wwd.engine.cameraAsLookAt(beginLookAt)\n lookAt.copy(beginLookAt)\n }\n }\n\n protected open fun gestureDidEnd() {\n // this should always be the case, but we check anyway\n if (activeGestures > 0) activeGestures--\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.LookAt\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.KeyboardEvent\n\n/**\n * The KeyboardControls module provides keyboard controls for the globe.\n * Note: the canvas must be focusable this can be accomplished by establishing the \"tabindex\"\n * on the canvas element.\n */\nopen class KeyboardControls(\n /**\n * The WorldWindow associated with these controls.\n */\n protected val wwd: WorldWindow\n) {\n /**\n * Enable/disable keyboard events processing\n */\n var isEnabled = true\n /**\n * The incremental amount to increase or decrease the eye distance (for zoom) each cycle.\n */\n var zoomIncrement = 0.01f\n /**\n * The scale factor governing the pan speed. Increased values cause faster panning.\n */\n var panIncrement = 0.0000000005f\n /**\n * The incremental amount to increase or decrease the tilt (in degrees) each cycle.\n */\n var tiltIncrement = 0.5\n /**\n * The current state of the viewing parameters during an operation as a look at view.\n */\n protected val lookAt = LookAt()\n /**\n * Is key down?\n */\n protected var isKeyDown = false\n /**\n * Controls the globe with the keyboard.\n */\n protected val handleKeyDown = EventListener { event ->\n if (!isEnabled || event !is KeyboardEvent) return@EventListener\n\n isKeyDown = true\n wwd.engine.cameraAsLookAt(lookAt)\n\n // TODO: find a way to make this code portable for different keyboard layouts\n when (event.keyCode) {\n 187, 61 -> { // + key || +/= key\n handleZoom(\"zoomIn\")\n event.preventDefault()\n }\n 189, 173 -> { // - key || _/- key\n handleZoom(\"zoomOut\")\n event.preventDefault()\n }\n 33 -> { // Page Up\n handleTilt(\"tiltUp\")\n event.preventDefault()\n }\n 34 -> { // Page down\n handleTilt(\"tiltDown\")\n event.preventDefault()\n }\n 37 -> { // Left arrow\n handlePan(\"panLeft\")\n event.preventDefault()\n }\n 38 -> { // Up arrow\n handlePan(\"panUp\")\n event.preventDefault()\n }\n 39 -> { // Right arrow\n handlePan(\"panRight\")\n event.preventDefault()\n }\n 40 -> { // Down arrow\n handlePan(\"panDown\")\n event.preventDefault()\n }\n 78 -> { // N key\n resetHeading()\n event.preventDefault()\n }\n 82 -> { // R key\n resetHeadingAndTilt()\n event.preventDefault()\n }\n }\n }\n /**\n * On keyboard event finished.\n */\n protected val handleKeyUp = EventListener { event->\n if (isKeyDown) {\n isKeyDown = false\n event.preventDefault()\n }\n }\n\n init {\n // The tabIndex must be set for the keyboard controls to work\n val tabIndex = wwd.canvas.tabIndex\n if (tabIndex < 0) wwd.canvas.tabIndex = 0\n // Add keyboard listeners\n wwd.addEventListener(\"keydown\", handleKeyDown)\n wwd.addEventListener(\"keyup\", handleKeyUp)\n // Ensure keyboard controls are operational by setting the focus to the canvas\n wwd.addEventListener(\"click\", EventListener { if (isEnabled) wwd.canvas.focus() })\n }\n\n /**\n * Reset the view to North up.\n */\n protected open fun resetHeading() {\n lookAt.heading = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * Reset the view to North up and nadir.\n */\n protected open fun resetHeadingAndTilt() {\n lookAt.heading = Angle.ZERO\n lookAt.tilt = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * This function is called by the timer to perform the Pan operation.\n */\n protected open fun handlePan(operation: String) {\n if (isKeyDown) {\n var heading = lookAt.heading\n val distance = panIncrement * lookAt.range\n when (operation) {\n \"panDown\" -> heading -= Angle.POS180\n \"panLeft\" -> heading -= Angle.POS90\n \"panRight\" -> heading += Angle.POS90\n }\n lookAt.position.greatCircleLocation(heading, distance, lookAt.position)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handlePan, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Range operation.\n */\n protected open fun handleZoom(operation: String) {\n if (isKeyDown) {\n if (operation == \"zoomIn\") lookAt.range *= (1 - zoomIncrement)\n else if (operation == \"zoomOut\") lookAt.range *= (1 + zoomIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleZoom, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Tilt operation.\n */\n protected open fun handleTilt(operation: String) {\n if (isKeyDown) {\n if (operation == \"tiltUp\") lookAt.tilt = lookAt.tilt.minusDegrees(tiltIncrement)\n else if (operation == \"tiltDown\") lookAt.tilt = lookAt.tilt.plusDegrees(tiltIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleTilt, 50, operation)\n }\n }\n}","package earth.worldwind\n\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.gesture.SelectDragDetector\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.WebKgl\nimport kotlinx.browser.window\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.WebGLContextAttributes\nimport org.khronos.webgl.WebGLContextEvent\nimport org.khronos.webgl.WebGLRenderingContext\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.roundToInt\n\n/**\n * Represents a WorldWind window for an HTML canvas.\n */\nopen class WorldWindow(\n /**\n * The HTML canvas associated with this WorldWindow.\n */\n val canvas: HTMLCanvasElement,\n /**\n * Render resource cache capacity in bytes\n */\n cacheCapacity: Long = RenderResourceCache.recommendedCapacity()\n) {\n /**\n * WebGL context associated with the HTML canvas.\n */\n protected val gl = createContext(canvas)\n /**\n * Main WorldWindow scope to execute jobs which should be cancelled on GL context lost\n */\n val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * Main WorldWind engine, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\n open val engine = WorldWind(WebKgl(gl), RenderResourceCache(cacheCapacity))\n /**\n * List of registered event listeners for the specified event type on this WorldWindow's canvas.\n */\n protected val eventListeners = mutableMapOf()\n /**\n * The controller used to manipulate the globe.\n */\n var controller: WorldWindowController = BasicWorldWindowController(this)\n /**\n * The controller used to manipulate the globe with the keyboard.\n */\n open val keyboardControls = KeyboardControls(this)\n /**\n * Renderable selection and drag gestures detector. Assign [SelectDragDetector.callback] to handle events.\n */\n open val selectDragDetector = SelectDragDetector(this)\n /**\n * The list of callbacks to call immediately before and immediately after performing a redrawn. The callbacks\n * have two arguments: this WorldWindow and the redraw stage, e.g., redrawCallback(worldWindow, stage);.\n * The stage will be either WorldWind.BEFORE_REDRAW or WorldWind.AFTER_REDRAW indicating whether the\n * callback has been called either immediately before or immediately after a redrawn, respectively.\n * Applications may add functions to this array or remove them.\n */\n val redrawCallbacks = mutableSetOf<(WorldWindow, RedrawStage)->Unit>()\n protected val frame = Frame()\n protected var redrawRequestId = 0\n protected var isRedrawRequested = false\n\n protected class EventListenerEntry(val callback: (Event) -> Unit) {\n val listeners = mutableListOf()\n }\n\n init {\n // Prevent the browser's default actions in response to mouse and touch events, which interfere with\n // navigation. Register these event listeners before any others to ensure that they're called last.\n val preventDefaultListener = EventListener { e -> e.preventDefault() }\n addEventListener(\"mousedown\", preventDefaultListener)\n addEventListener(\"touchstart\", preventDefaultListener)\n addEventListener(\"contextmenu\", preventDefaultListener)\n addEventListener(\"wheel\", preventDefaultListener)\n\n // Redirect various UI interactions to the appropriate handler.\n val onGestureEvent = EventListener { e -> controller.handleEvent(e) }\n if (window.navigator.maxTouchPoints == 0) {\n // Prevent the browser's default actions in response to pointer events which interfere with navigation.\n // This CSS style property is configured here to ensure that it's set for all applications.\n canvas.style.setProperty(\"touch-action\", \"none\")\n\n addEventListener(\"pointerdown\", onGestureEvent)\n window.addEventListener(\"pointermove\", onGestureEvent, false) // get pointermove events outside event target\n window.addEventListener(\"pointercancel\", onGestureEvent, false) // get pointercancel events outside event target\n window.addEventListener(\"pointerup\", onGestureEvent, false) // get pointerup events outside event target\n } else {\n addEventListener(\"mousedown\", onGestureEvent)\n window.addEventListener(\"mousemove\", onGestureEvent, false) // get mousemove events outside event target\n window.addEventListener(\"mouseup\", onGestureEvent, false) // get mouseup events outside event target\n addEventListener(\"touchstart\", onGestureEvent)\n addEventListener(\"touchmove\", onGestureEvent)\n addEventListener(\"touchend\", onGestureEvent)\n addEventListener(\"touchcancel\", onGestureEvent)\n }\n addEventListener(\"wheel\", onGestureEvent)\n\n // Set up to handle WebGL context events.\n canvas.addEventListener(\"webglcontextlost\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Inform WebGL that we handle context restoration, enabling the context restored event to be delivered.\n event.preventDefault()\n // Notify the draw context that the WebGL rendering context has been lost.\n contextLost()\n }, false)\n canvas.addEventListener(\"webglcontextrestored\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Notify the draw context that the WebGL rendering context has been restored.\n contextRestored()\n }, false)\n\n // Set up WebGL context and start rendering to the WebGL context in an animation frame loop.\n this.contextRestored()\n }\n\n /**\n * Registers an event listener for the specified event type on this WorldWindow's canvas. This function\n * delegates the processing of events to the WorldWindow's canvas. For details on this function and its\n * arguments, see the W3C [org.w3c.dom.events.EventTarget] documentation.\n * @see EventTarget\n *\n * When an event occurs, this calls the registered event listeners in order of reverse registration.\n *\n * @param type The event type to listen for.\n * @param listener The [EventListener] to call when the event occurs.\n */\n fun addEventListener(type: String, listener: EventListener) {\n var entry = eventListeners[type]\n if (entry == null) {\n entry = EventListenerEntry { event ->\n event.asDynamic().worldWindow = this@WorldWindow\n // calls listeners in reverse registration order\n entry?.listeners?.forEach{ l -> l.handleEvent(event) }\n }.also { eventListeners[type] = it }\n }\n\n if (!entry.listeners.contains(listener)) { // suppress duplicate listeners\n entry.listeners.add(0, listener) // insert the listener at the beginning of the list\n // first listener added, add the event listener callback\n if (entry.listeners.size == 1) canvas.addEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Removes an event listener for the specified event type from this WorldWindow's canvas. The listener must be\n * the same object passed to addEventListener. Calling removeEventListener with arguments that do not identify a\n * currently registered listener has no effect.\n *\n * @param type Indicates the event type the listener registered for.\n * @param listener The listener to remove.\n */\n fun removeEventListener(type: String, listener: EventListener) {\n val entry = eventListeners[type] ?: return // no entry for the specified type\n if (entry.listeners.remove(listener) && entry.listeners.isEmpty()) {\n canvas.removeEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Causes this WorldWindow to redraw itself at the next available opportunity. The redrawn occurs on the main\n * thread at a time of the browser's discretion. Applications should call redraw after changing the World\n * Window's state, but should not expect that change to be reflected on screen immediately after this function\n * returns. This is the preferred method for requesting a redrawn of the WorldWindow.\n */\n fun requestRedraw() { isRedrawRequested = true } // redraw during the next animation frame\n\n /**\n * Converts window coordinates to coordinates relative to this WorldWindow's canvas.\n * @param x The X coordinate to convert.\n * @param y The Y coordinate to convert.\n * @returns The converted coordinates.\n */\n fun canvasCoordinates(x: Number, y: Number): Vec2 {\n val bbox = canvas.getBoundingClientRect()\n val xc = x.toDouble() - (bbox.left + canvas.clientLeft) // * canvas.width / bbox.width\n val yc = y.toDouble() - (bbox.top + canvas.clientTop) // * canvas.height / bbox.height\n return Vec2(xc, yc)\n }\n\n /**\n * Requests the WorldWind objects displayed at a specified screen-coordinate point.\n *\n * If the point intersects the terrain, the returned list contains an object identifying the associated geographic\n * position. This returns an empty list when nothing in the WorldWind scene intersects the specified point.\n *\n * @param pickPoint The point to examine in this WorldWindow's screen coordinates.\n * @returns A list of picked WorldWind objects at the specified pick point.\n */\n fun pick(pickPoint: Vec2) = pickShapesInRegion(pickPoint.x, pickPoint.y)\n\n /**\n * Requests the WorldWind objects displayed within a specified screen-coordinate region. This returns all\n * objects that intersect the specified region, regardless of whether an object is actually visible, and\n * marks objects that are visible as on top.\n *\n * @param x the X coordinate relative to this WorldWindow's canvas.\n * @param y the Y coordinate relative to this WorldWindow's canvas.\n * @param width the width in canvas pixels\n * @param height the height in canvas pixels\n * @param pickCenter picks top shape and terrain in rectangle center as priority\n *\n * @returns A list of visible WorldWind objects within the specified region.\n */\n fun pickShapesInRegion(\n x: Double, y: Double, width: Double = 0.0, height: Double = 0.0, pickCenter: Boolean = true\n ): PickedObjectList {\n // Allocate a list in which to collect and return the picked objects.\n val pickedObjects = PickedObjectList()\n\n // Nothing can be picked if viewport is undefined.\n val viewport = engine.viewport\n if (viewport.isEmpty) return pickedObjects\n\n // Determine pick viewport\n val pickViewport = if (width != 0.0 && height != 0.0) Viewport(\n floor(x).toInt(), viewport.height - ceil(y + height).toInt(), ceil(width).toInt(), ceil(height).toInt()\n ) else Viewport(x.roundToInt() - 1, viewport.height - y.roundToInt() - 1, 3, 3)\n if (!pickViewport.intersect(viewport)) return pickedObjects\n\n // Prepare pick frame\n frame.pickedObjects = pickedObjects\n frame.pickViewport = pickViewport\n if (pickCenter) {\n // Compute the pick point in OpenGL screen coordinates, rounding to the nearest whole pixel. Nothing can be picked\n // if pick point is outside the WorldWindow's viewport.\n val px = pickViewport.x + pickViewport.width / 2.0\n val py = pickViewport.y + pickViewport.height / 2.0\n if (viewport.contains(px, py)) {\n val pickRay = Line()\n if (engine.rayThroughScreenPoint(px, viewport.height - py, pickRay)) {\n frame.pickPoint = Vec2(px, py)\n frame.pickRay = pickRay\n }\n }\n }\n frame.isPickMode = true\n redrawFrame()\n\n return pickedObjects\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been lost. This function removes all\n * cached WebGL resources and resets all properties tracking the current WebGL state.\n */\n protected open fun contextLost() {\n // Stop the rendering animation frame loop, resuming only if the WebGL context is restored.\n window.cancelAnimationFrame(redrawRequestId)\n\n // Cancel all async jobs but keep scope reusable\n mainScope.coroutineContext.cancelChildren()\n\n // Remove all cached WebGL resources, which are now invalid.\n engine.reset()\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been restored. This function prepares\n * this draw context to resume rendering.\n */\n protected open fun contextRestored() {\n // Remove all cached WebGL resources, which are now invalid.\n engine.renderResourceCache.clear()\n\n // Specify the default WorldWind OpenGL state.\n engine.setupDrawContext()\n\n // Store current screen density factor\n engine.densityFactor = window.devicePixelRatio.toFloat()\n\n // Enable WebGL depth texture extension to be able to use GL_DEPTH_COMPONENT texture format\n gl.getExtension(\"WEBGL_depth_texture\")\n\n // Enable WebGL support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements()\n gl.getExtension(\"OES_element_index_uint\")\n\n // Subscribe on events from WorldWind's global event bus.\n mainScope.launch {\n WorldWind.events.collect {\n when (it) {\n is WorldWind.Event.RequestRedraw -> requestRedraw()\n is WorldWind.Event.UnmarkResourceAbsent -> {\n engine.renderResourceCache.absentResourceList.unmarkResourceAbsent(it.resourceId)\n }\n }\n }\n }\n\n // Request redraw at least once.\n requestRedraw()\n\n // Resume the rendering animation frame loop until the WebGL context is lost.\n animationFrameLoop()\n }\n\n protected open fun animationFrameLoop() {\n // Render to the WebGL context as needed.\n redrawIfNeeded()\n\n // Continue the animation frame loop until the WebGL context is lost.\n redrawRequestId = window.requestAnimationFrame { animationFrameLoop() }\n }\n\n protected open fun redrawIfNeeded() {\n // Check if the drawing buffer needs to resize to match its screen size, which requires a redrawn.\n resize()\n\n // Redraw the WebGL drawing buffer only when necessary.\n if (!isRedrawRequested) return\n isRedrawRequested = false\n redrawFrame()\n }\n\n protected open fun redrawFrame() {\n val isPickMode = frame.isPickMode\n try {\n // Prepare to redraw and notify redraw callbacks that a redrawn is about to occur.\n if (!isPickMode) callRedrawCallbacks(RedrawStage.BEFORE_REDRAW)\n // Render frame. Propagate redraw requests submitted during rendering.\n if (engine.renderFrame(frame) || isPickMode) requestRedraw()\n // Redraw the WebGL drawing buffer.\n engine.drawFrame(frame)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"WorldWindow\", \"drawFrame\", \"Exception occurred during redrawing.\\n$e\"\n )\n } finally {\n // Recycle each frame to be reused\n frame.recycle()\n // Notify redraw callbacks that a redrawn has completed.\n if (!isPickMode) callRedrawCallbacks(RedrawStage.AFTER_REDRAW)\n }\n }\n\n protected open fun resize() {\n // Check if canvas size is changed\n val width = (gl.canvas.clientWidth * engine.densityFactor).roundToInt()\n val height = (gl.canvas.clientHeight * engine.densityFactor).roundToInt()\n\n if (gl.canvas.width != width || gl.canvas.height != height || engine.viewport.isEmpty) {\n // Make the canvas drawing buffer size match its screen size.\n gl.canvas.width = width\n gl.canvas.height = height\n\n // Set the WebGL viewport to match the canvas drawing buffer size.\n engine.setupViewport(gl.drawingBufferWidth, gl.drawingBufferHeight)\n\n // Cause this WorldWindow to redraw with the new size.\n requestRedraw()\n }\n }\n\n protected open fun callRedrawCallbacks(stage: RedrawStage) = redrawCallbacks.forEach {\n try {\n it(this, stage)\n } catch (e: Exception) {\n // Keep going. Execute the rest of the callbacks.\n log(ERROR, \"Exception calling redraw callback.\\n$e\")\n }\n }\n\n companion object {\n /**\n * Create the WebGL context associated with the HTML canvas.\n */\n protected fun createContext(canvas: HTMLCanvasElement): WebGLRenderingContext {\n // Request a WebGL context with antialiasing is disabled. Antialiasing causes gaps to appear at the edges of\n // terrain tiles.\n val glAttrs = WebGLContextAttributes(antialias = false)\n val context = canvas.getContext(\"webgl\", glAttrs)\n ?: canvas.getContext(\"experimental-webgl\", glAttrs)\n require(context is WebGLRenderingContext) {\n logMessage(ERROR, \"WorldWindow\", \"createContext\", \"webglNotSupported\")\n }\n return context\n }\n }\n\n enum class RedrawStage {\n /**\n * Indicates that a redrawn callback has been called immediately after a redrawn.\n */\n AFTER_REDRAW,\n /**\n * Indicates that a redrawn callback has been called immediately before a redrawn.\n */\n BEFORE_REDRAW;\n }\n}","package earth.worldwind\n\nimport earth.worldwind.gesture.GestureListener\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\n\n/**\n * This class provides a base window controller with required properties and methods which subclasses may\n * inherit from to create custom window controllers for controlling the globe via user interaction.\n */\nabstract class WorldWindowController(\n /**\n * The WorldWindow associated with this controller.\n */\n protected val wwd: WorldWindow\n): EventListener, GestureListener {\n protected val gestureEventListeners = mutableListOf()\n\n override fun handleEvent(event: Event) {\n for (i in gestureEventListeners.indices) {\n gestureEventListeners[i].handleEvent(event)\n if (event.defaultPrevented) break\n }\n }\n\n /**\n * Registers a gesture event listener on this controller. Registering event listeners using this function\n * enables applications to prevent the controller's default behavior.\n *\n * When an event occurs, application event listeners are called before WorldWindowController event listeners.\n *\n * @param listener The function to call when the event occurs.\n */\n protected open fun addGestureListener(listener: EventListener) { gestureEventListeners += listener }\n\n /**\n * Removes a gesture event listener from this controller. The listener must be the same object passed to\n * addGestureListener. Calling removeGestureListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addGestureListener.\n */\n protected open fun removeGestureListener(listener: EventListener) { gestureEventListeners -= listener }\n}","package earth.worldwind.formats.geotiff\n\nobject GeoTiffConstants {\n const val MODEL_PIXEL_SCALE = 33550\n const val MODEL_TRANSFORMATION = 34264\n const val MODEL_TIEPOINT = 33922\n const val GEO_KEY_DIRECTORY = 34735\n const val GEO_DOUBLE_PARAMS = 34736\n const val GEO_ASCII_PARAMS = 34737\n\n // GDAL\n const val GDAL_NODATA = 42113\n const val GDAL_METADATA = 42112\n\n const val GT_MODEL_TYPE_GEO_KEY = 1024\n const val GT_RASTER_TYPE_GEO_KEY = 1025\n const val GT_CITATION_GEO_KEY = 1026\n\n // Geographic CS Parameter Keys\n const val GEOGRAPHIC_TYPE_GEO_KEY = 2048\n const val GEOG_CITATION_GEO_KEY = 2049\n const val GEOG_GEODETIC_DATUM_GEO_KEY = 2050\n const val GEOG_PRIME_MERIDIAN_GEO_KEY = 2051\n const val GEOG_LINEAR_UNITS_GEO_KEY = 2052\n const val GEOG_LINEAR_UNIT_SIZE_GEO_KEY = 2053\n const val GEOG_ANGULAR_UNITS_GEO_KEY = 2054\n const val GEOG_ANGULAR_UNIT_SIZE_GEO_KEY = 2055\n const val GEOG_ELLIPSOID_GEO_KEY = 2056\n const val GEOG_SEMI_MAJOR_AXIS_GEO_KEY = 2057\n const val GEOG_SEMI_MINOR_AXIS_GEO_KEY = 2058\n const val GEOG_INV_FLATTENING_GEO_KEY = 2059\n const val GEOG_AZIMUTH_UNITS_GEO_KEY = 2060\n const val GEOG_PRIME_MERIDIAN_LONG_GEO_KEY = 2061\n const val GEOG_TOWGS84_GEO_KEY = 2062\n\n // Projected CS Parameter Keys\n const val PROJECTED_CS_TYPE_GEO_KEY = 3072\n const val PCS_CITATION_GEO_KEY = 3073\n const val PROJECTION_GEO_KEY = 3074\n const val PROJ_COORD_TRANS_GEO_KEY = 3075\n const val PROJ_LINEAR_UNITS_GEO_KEY = 3076\n const val PROJ_LINEAR_UNIT_SIZE_GEO_KEY = 3077\n const val PROJ_STD_PARALLEL_1_GEO_KEY = 3078\n const val PROJ_STD_PARALLEL_2_GEO_KEY = 3079\n const val PROJ_NAT_ORIGIN_LONG_GEO_KEY = 3080\n const val PROJ_NAT_ORIGIN_LAT_GEO_KEY = 3081\n const val PROJ_FALSE_EASTING_GEO_KEY = 3082\n const val PROJ_FALSE_NORTHING_GEO_KEY = 3083\n const val PROJ_FALSE_ORIGIN_LONG_GEO_KEY = 3084\n const val PROJ_FALSE_ORIGIN_LAT_GEO_KEY = 3085\n const val PROJ_FALSE_ORIGIN_EASTING_GEO_KEY = 3086\n const val PROJ_FALSE_ORIGIN_NORTHING_GEO_KEY = 3087\n const val PROJ_CENTER_LONG_GEO_KEY = 3088\n const val PROJ_CENTER_LAT_GEO_KEY = 3089\n const val PROJ_CENTER_EASTING_GEO_KEY = 3090\n const val PROJ_CENTER_NORTHING_GEO_KEY = 3091\n const val PROJ_SCALE_AT_NAT_ORIGIN_GEO_KEY = 3092\n const val PROJ_SCALE_AT_CENTER_GEO_KEY = 3093\n const val PROJ_AZIMUTH_ANGLE_GEO_KEY = 3094\n const val PROJ_STRAIGHT_VERT_POLE_LONG_GEO_KEY = 3095\n\n // Vertical CS Keys\n const val VERTICAL_CS_TYPE_GEO_KEY = 4096\n const val VERTICAL_CITATION_GEO_KEY = 4097\n const val VERTICAL_DATUM_GEO_KEY = 4098\n const val VERTICAL_UNITS_GEO_KEY = 4099\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_ASCII_PARAMS\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_DOUBLE_PARAMS\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nclass GeoTiffKeyEntry(\n keyId: Int,\n private val tiffTagLocation: Int,\n private val count: Int,\n private val valueOffset: Int\n) {\n init {\n require(keyId != 0) { logMessage(ERROR, \"GeoTiffKeyEntry\", \"constructor\", \"Missing key ID\") }\n }\n\n fun getGeoKeyValue(geoDoubleParamsValue: List): Number? = when (tiffTagLocation) {\n 0 -> valueOffset\n GEO_ASCII_PARAMS -> error(logMessage(ERROR, \"GeoTiffKeyEntry\", \"getGeoKeyValue\", \"Invalid key type\"))\n GEO_DOUBLE_PARAMS -> geoDoubleParamsValue[valueOffset]\n else -> null\n }\n\n fun getAsciiGeoKeyValue(geoAsciiParamsValue: String?): String? {\n require(tiffTagLocation == GEO_ASCII_PARAMS) {\n logMessage(ERROR, \"GeoTiffKeyEntry\", \"getAsciiGeoKeyValue\", \"Invalid key type\")\n }\n return geoAsciiParamsValue?.let {\n val keyValue = StringBuilder()\n for (i in valueOffset until count - 1) keyValue.append(it[i])\n if (it[count - 1] != '|') keyValue.append(it[count - 1])\n keyValue.toString()\n }\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Sector\n\nclass GeoTiffMetadata {\n var bitsPerSample: List = mutableListOf()\n var colorMap: Array? = null\n var compression: Int = 0\n var extraSamples: Array? = null\n var imageDescription: String? = null\n var imageLength: Int = 0\n var imageWidth: Int = 0\n var maxSampleValue: Number? = null\n var minSampleValue: Number? = null\n var orientation: Int = 0\n var photometricInterpretation: Int = -1\n var planarConfiguration: Int = -1\n var resolutionUnit: Number? = null\n var rowsPerStrip: Int = 0\n var samplesPerPixel: Int = 0\n var sampleFormat: Int = TiffConstants.SampleFormat.UNSIGNED\n var software: Array? = null\n var stripByteCounts: List = mutableListOf()\n var stripOffsets: List = mutableListOf()\n var tileByteCounts: List = mutableListOf()\n var tileOffsets: List = mutableListOf()\n var tileLength: Int = 0\n var tileWidth: Int = 0\n var xResolution: Number? = null\n var yResolution: Number? = null\n var geoAsciiParams: String? = null\n var geoDoubleParams: List = mutableListOf()\n var geoKeyDirectory: List = mutableListOf()\n var modelPixelScale: List = mutableListOf()\n var modelTiePoint: List = mutableListOf()\n var modelTransformation: List = mutableListOf()\n var noData: Number? = null\n var metaData: String? = null\n var bbox: Sector? = null\n var gtModelTypeGeoKey: Number? = null\n var gtRasterTypeGeoKey: Number? = null\n var gtCitationGeoKey: String? = null\n var geographicTypeGeoKey: Number? = null\n var geogCitationGeoKey: String? = null\n var geogAngularUnitsGeoKey: Number? = null\n var geogAngularUnitSizeGeoKey: Number? = null\n var geogSemiMajorAxisGeoKey: Number? = null\n var geogInvFlatteningGeoKey: Number? = null\n var projectedCSType: Number? = null\n var projLinearUnits: Number? = null\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.*\nimport kotlin.math.ceil\n\nclass GeoTiffReader(arrayBuffer: ArrayBuffer) {\n private val imageFileDirectories = mutableListOf()\n private val geoTiffData = DataView(arrayBuffer)\n private val metadata = GeoTiffMetadata()\n private var isLittleEndian = false\n\n init {\n getEndianness()\n require(isTiffFileType()) { logMessage(ERROR, \"GeoTiffReader\", \"constructor\",\"Invalid file type\") }\n parseImageFileDirectory(GeoTiffUtil.getBytes(geoTiffData, 4, 4, isLittleEndian).toInt())\n getMetadataFromImageFileDirectory()\n parseGeoKeys()\n setBBox()\n }\n\n private fun getEndianness() {\n isLittleEndian = when (GeoTiffUtil.getBytes(geoTiffData, 0, 2, isLittleEndian)) {\n 0x4949 -> true\n 0x4D4D -> false\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"getEndianness\",\"Invalid Byte Order Value\"))\n }\n }\n\n private fun isTiffFileType() = GeoTiffUtil.getBytes(geoTiffData, 2, 2, isLittleEndian) == 42\n\n private fun isGeoTiff() = getIFDByTag(GeoTiffConstants.GEO_KEY_DIRECTORY) != null\n\n fun createTypedElevationArray(): ArrayBufferView {\n val elevations = mutableListOf()\n if (metadata.stripOffsets.isNotEmpty()) {\n elevations.addAll(parseStrips(true).flatten())\n } else if (metadata.tileOffsets.isNotEmpty()) {\n val tiles = parseTiles(true)\n val tilesAcross = (metadata.imageWidth + metadata.tileWidth - 1) / metadata.tileWidth\n\n for (y in 0 until metadata.imageLength) for (x in 0 until metadata.imageWidth) {\n val tileAcross = x / metadata.tileWidth\n val tileDown = y / metadata.tileLength\n val tileIndex = tileDown * tilesAcross + tileAcross\n val xInTile = x % metadata.tileWidth\n val yInTile = y % metadata.tileLength\n val sampleIndex = yInTile * metadata.tileWidth + xInTile\n val pixelSamples = tiles[tileIndex][sampleIndex]\n elevations.add(pixelSamples)\n }\n } else error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid metadata\"))\n\n return when(metadata.bitsPerSample[0]) {\n 8 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int8Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint8Array(elevations.toTypedArray().unsafeCast>())\n }\n 16 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int16Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint16Array(elevations.toTypedArray().unsafeCast>())\n }\n 32 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int32Array(elevations.toTypedArray().unsafeCast>())\n TiffConstants.SampleFormat.IEEE_FLOAT -> Float32Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint32Array(elevations.toTypedArray().unsafeCast>())\n }\n 64 -> Float64Array(elevations.toTypedArray().unsafeCast>())\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid bits per sample\"))\n }\n }\n\n private fun parseStrips(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n return Array(metadata.stripOffsets.size) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.stripByteCounts[it],\n metadata.stripOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun parseBlock(\n returnElevation: Boolean, compression: Int, bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int,\n bitsPerSample: List, sampleFormat: Int\n ) = when (compression) {\n TiffConstants.Compression.UNCOMPRESSED ->\n parseUncompressedBlock(blockByteCount, bitsPerSample, blockOffset, sampleFormat, returnElevation, bytesPerPixel)\n TiffConstants.Compression.PACK_BITS ->\n parsePackBitsCompressedBlocks(bytesPerPixel, blockByteCount, blockOffset, bitsPerSample, sampleFormat, returnElevation)\n TiffConstants.Compression.CCITT_1D -> {\n log(WARN, \"Compression type not yet implemented: CCITT_1D\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_3_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_3_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_4_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_4_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.LZW -> {\n log(WARN, \"Compression type not yet implemented: LZW\")\n emptyArray()\n }\n TiffConstants.Compression.JPEG -> {\n log(WARN, \"Compression type not yet implemented: JPEG\")\n emptyArray()\n }\n else -> {\n log(WARN, \"Unsupported compression type $compression\")\n emptyArray()\n }\n }\n\n private fun parsePackBitsCompressedBlocks(\n bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int, bitsPerSample: List, sampleFormat: Int,\n returnElevation: Boolean\n ): Array {\n val block = mutableListOf()\n val arrayBuffer = if (metadata.tileWidth != 0 && metadata.tileLength != 0) {\n Int8Array(metadata.tileWidth * metadata.tileLength * bytesPerPixel)\n } else {\n Int8Array(metadata.rowsPerStrip * metadata.imageWidth * bytesPerPixel)\n }\n val uncompressedDataView = DataView(arrayBuffer.buffer)\n var newBlock = true\n var blockLength = 0\n var numOfIterations = 0\n var uncompressedOffset = 0\n\n for (byteOffset in 0 until blockByteCount) {\n if (newBlock) {\n blockLength = 1\n numOfIterations = 1\n newBlock = false\n when (val nextSourceByte = geoTiffData.getInt8(blockOffset + byteOffset)) {\n in 0..127 -> blockLength = nextSourceByte + 1\n in -127..-1 -> numOfIterations = -nextSourceByte + 1\n else -> newBlock = true\n }\n } else {\n val currentByte = GeoTiffUtil.getBytes(geoTiffData, blockOffset + byteOffset, 1, isLittleEndian)\n for (currentIteration in 0 until numOfIterations) {\n uncompressedDataView.setInt8(uncompressedOffset, currentByte.toByte())\n uncompressedOffset++\n }\n blockLength--\n if (blockLength == 0) newBlock = true\n }\n }\n\n for (byteOffset in 0 until arrayBuffer.length step bytesPerPixel) {\n val pixel = mutableListOf()\n for ((i, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = i * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n uncompressedDataView, byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0]) else block.addAll(pixel)\n }\n return block.toTypedArray()\n }\n\n private fun parseUncompressedBlock(\n blockByteCount: Int, bitsPerSample: List, blockOffset: Int, sampleFormat: Int, returnElevation: Boolean,\n bytesPerPixel: Int\n ): Array {\n val block = mutableListOf()\n var byteOffset = 0\n while (byteOffset < blockByteCount) {\n val pixel = mutableListOf()\n for ((m, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = m * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n geoTiffData, blockOffset + byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0])\n else block.addAll(pixel.toList())\n byteOffset += bytesPerPixel\n }\n return block.toTypedArray()\n }\n\n private fun parseTiles(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n val tilesAcross = ceil(metadata.imageWidth / metadata.tileWidth.toDouble()).toInt()\n val tilesDown = ceil(metadata.imageLength / metadata.tileLength.toDouble()).toInt()\n return Array(tilesDown * tilesAcross) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.tileByteCounts[it],\n metadata.tileOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun geoTiffImageToPCS(xValue: Double, yValue: Double) = when {\n metadata.modelTiePoint.size > 6 && metadata.modelPixelScale.isEmpty() -> TODO()\n metadata.modelTransformation.size == 16 -> Location(\n Angle.fromDegrees(yValue * metadata.modelTransformation[4] + yValue * metadata.modelTransformation[5]\n + metadata.modelTransformation[7]),\n Angle.fromDegrees(xValue * metadata.modelTransformation[0] + yValue * metadata.modelTransformation[1]\n + metadata.modelTransformation[3])\n )\n metadata.modelPixelScale.size < 3 || metadata.modelTiePoint.size < 6 -> Location(Angle.fromDegrees(yValue), Angle.fromDegrees(xValue))\n else -> Location(\n Angle.fromDegrees((yValue - metadata.modelTiePoint[1]) * -1 * metadata.modelPixelScale[1] + metadata.modelTiePoint[4]),\n Angle.fromDegrees((xValue - metadata.modelTiePoint[0]) * metadata.modelPixelScale[0] + metadata.modelTiePoint[3])\n )\n }\n\n private fun setBBox() {\n val upperLeft = geoTiffImageToPCS(0.0, 0.0)\n val upperRight = geoTiffImageToPCS(metadata.imageWidth.toDouble(), 0.0)\n val lowerLeft = geoTiffImageToPCS(0.0, metadata.imageLength.toDouble())\n metadata.bbox = Sector(lowerLeft.latitude, upperLeft.latitude, upperLeft.longitude, upperRight.longitude)\n }\n\n private fun getMetadataFromImageFileDirectory() {\n for (ifd in imageFileDirectories) when (ifd.tag) {\n TiffConstants.IFDTag.BITS_PER_SAMPLE -> metadata.bitsPerSample = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.COLOR_MAP -> metadata.colorMap = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.COMPRESSION -> metadata.compression = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.EXTRA_SAMPLES -> metadata.extraSamples = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.IMAGE_DESCRIPTION -> metadata.imageDescription = ifd.getIFDEntryAsciiValue()\n TiffConstants.IFDTag.IMAGE_LENGTH -> metadata.imageLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.IMAGE_WIDTH -> metadata.imageWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.MAX_SAMPLE_VALUE -> metadata.maxSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.MIN_SAMPLE_VALUE -> metadata.minSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.ORIENTATION -> metadata.orientation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PHOTOMETRIC_INTERPRETATION -> metadata.photometricInterpretation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PLANAR_CONFIGURATION -> metadata.planarConfiguration = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.ROWS_PER_STRIP -> metadata.rowsPerStrip = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.RESOLUTION_UNIT -> metadata.resolutionUnit = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.SAMPLES_PER_PIXEL -> metadata.samplesPerPixel = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SAMPLE_FORMAT -> metadata.sampleFormat = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SOFTWARE -> metadata.software = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.STRIP_BYTE_COUNTS -> metadata.stripByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.STRIP_OFFSETS -> metadata.stripOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_BYTE_COUNTS -> metadata.tileByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_OFFSETS -> metadata.tileOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_LENGTH -> metadata.tileLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.TILE_WIDTH -> metadata.tileWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.X_RESOLUTION -> metadata.xResolution = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.Y_RESOLUTION -> metadata.yResolution = ifd.getIFDEntryValue()[0]\n GeoTiffConstants.GEO_ASCII_PARAMS -> metadata.geoAsciiParams = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GEO_DOUBLE_PARAMS -> metadata.geoDoubleParams = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GEO_KEY_DIRECTORY -> metadata.geoKeyDirectory = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_PIXEL_SCALE -> metadata.modelPixelScale = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_TIEPOINT -> metadata.modelTiePoint = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GDAL_METADATA -> metadata.metaData = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GDAL_NODATA -> metadata.noData = ifd.getIFDEntryValue()[0]\n else -> log(WARN, \"Ignored GeoTiff tag: ${ifd.tag}\")\n }\n }\n\n private fun parseGeoKeys() {\n require(isGeoTiff()) { logMessage(Logger.INFO, \"GeoTiffReader\", \"parse\", \"Invalid GeoTiff file\") }\n val geoKeyDirectory = metadata.geoKeyDirectory\n if (geoKeyDirectory.isNotEmpty()) {\n val numberOfKeys = geoKeyDirectory[3]\n\n for (i in 0 until numberOfKeys) {\n val keyId = geoKeyDirectory[4 + i * 4]\n val tiffTagLocation = geoKeyDirectory[5 + i * 4]\n val count = geoKeyDirectory[6 + i * 4]\n val valueOffset = geoKeyDirectory[7 + i * 4]\n\n when (keyId) {\n GeoTiffConstants.GT_MODEL_TYPE_GEO_KEY ->\n metadata.gtModelTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count,valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_RASTER_TYPE_GEO_KEY ->\n metadata.gtRasterTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_CITATION_GEO_KEY ->\n metadata.gtCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOGRAPHIC_TYPE_GEO_KEY ->\n metadata.geographicTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_CITATION_GEO_KEY ->\n metadata.geogCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOG_ANGULAR_UNITS_GEO_KEY ->\n metadata.geogAngularUnitsGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_ANGULAR_UNIT_SIZE_GEO_KEY ->\n metadata.geogAngularUnitSizeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset )\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_SEMI_MAJOR_AXIS_GEO_KEY ->\n metadata.geogSemiMajorAxisGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_INV_FLATTENING_GEO_KEY ->\n metadata.geogInvFlatteningGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJECTED_CS_TYPE_GEO_KEY ->\n metadata.projectedCSType = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJ_LINEAR_UNITS_GEO_KEY ->\n metadata.projLinearUnits = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n else -> log(WARN, \"Ignored GeoTiff key: $keyId\")\n }\n }\n } else error(logMessage(INFO, \"GeoTiffReader\", \"parseGeoKeys\", \"missingGeoKeyDirectoryTag\"))\n }\n\n private fun parseImageFileDirectory(offset: Int) {\n val noOfDirectoryEntries = GeoTiffUtil.getBytes(geoTiffData, offset, 2, isLittleEndian).toInt()\n val directoryEntries = mutableListOf()\n var i = offset + 2\n repeat(noOfDirectoryEntries) {\n val tag = GeoTiffUtil.getBytes(geoTiffData, i, 2, isLittleEndian).toInt()\n val type = GeoTiffUtil.getBytes(geoTiffData, i + 2, 2, isLittleEndian).toInt()\n val count = GeoTiffUtil.getBytes(geoTiffData, i + 4, 4, isLittleEndian).toInt()\n val valueOffset = GeoTiffUtil.getBytes(geoTiffData, i + 8, 4, isLittleEndian).toInt()\n directoryEntries.add(TiffIFDEntry(tag, type, count, valueOffset, geoTiffData, isLittleEndian))\n i += 12\n }\n imageFileDirectories.addAll(directoryEntries)\n val nextIfdOffset = GeoTiffUtil.getBytes(geoTiffData, i, 4, isLittleEndian).toInt()\n if (nextIfdOffset != 0) parseImageFileDirectory(nextIfdOffset)\n }\n\n // Get image file directory by tag value.\n private fun getIFDByTag(tag: Int) = imageFileDirectories.find { it.tag == tag }\n}",null,null,"package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nobject GeoTiffUtil {\n\n fun getBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, isLittleEndian: Boolean, isSigned: Boolean = false\n ): Number = when {\n numOfBytes <= 0 -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"No bytes requested\"))\n numOfBytes <= 1 -> if (isSigned) geoTiffData.getInt8(byteOffset) else geoTiffData.getUint8(byteOffset)\n numOfBytes <= 2 -> if (isSigned) geoTiffData.getInt16(byteOffset, isLittleEndian) else geoTiffData.getUint16(byteOffset, isLittleEndian)\n numOfBytes <= 3 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) ushr 8 else geoTiffData.getUint32(byteOffset, isLittleEndian) ushr 8\n numOfBytes <= 4 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) else geoTiffData.getUint32(byteOffset, isLittleEndian)\n numOfBytes <= 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"Too many bytes requested\"))\n }\n\n fun getSampleBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, sampleFormat: Int, isLittleEndian: Boolean\n ): Number = when (sampleFormat) {\n TiffConstants.SampleFormat.UNSIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n TiffConstants.SampleFormat.SIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, true)\n TiffConstants.SampleFormat.IEEE_FLOAT -> when (numOfBytes) {\n 3 -> geoTiffData.getFloat32(byteOffset, isLittleEndian).toInt() ushr 8\n 4 -> geoTiffData.getFloat32(byteOffset, isLittleEndian)\n 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(\n ERROR, \"GeoTiffUtil\", \"getSampleBytes\",\n \"Do not attempt to parse the data not handled: $numOfBytes\"\n ))\n }\n else -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n }\n}","package earth.worldwind.formats.geotiff\n\nclass TiffConstants {\n object IFDTag {\n const val NEW_SUBFILE_TYPE = 254\n const val SUBFILE_TYPE = 255\n const val IMAGE_WIDTH = 256\n const val IMAGE_LENGTH = 257\n const val BITS_PER_SAMPLE = 258\n const val COMPRESSION = 259\n const val PHOTOMETRIC_INTERPRETATION = 262\n const val THRESHHOLDING = 263\n const val CELL_WIDTH = 264\n const val CELL_LENGTH = 265\n const val FILL_ORDER = 266\n const val DOCUMENT_NAME = 269\n const val IMAGE_DESCRIPTION = 270\n const val MAKE = 271\n const val MODEL = 272\n const val STRIP_OFFSETS = 273\n const val ORIENTATION = 274\n const val SAMPLES_PER_PIXEL = 277\n const val ROWS_PER_STRIP = 278\n const val STRIP_BYTE_COUNTS = 279\n const val MIN_SAMPLE_VALUE = 280\n const val MAX_SAMPLE_VALUE = 281\n const val X_RESOLUTION = 282\n const val Y_RESOLUTION = 283\n const val PLANAR_CONFIGURATION = 284\n const val PAGE_NAME = 285\n const val X_POSITION = 286\n const val Y_POSITION = 287\n const val FREE_OFFSETS = 288\n const val FREE_BYTE_COUNTS = 289\n const val GRAY_RESPONSE_UNIT = 290\n const val GRAY_RESPONSE_CURVE = 291\n const val T4_OPTIONS = 292\n const val T6_OPTIONS = 293\n const val RESOLUTION_UNIT = 296\n const val PAGE_NUMBER = 297\n const val TRANSFER_FUNCTION = 301\n const val SOFTWARE = 305\n const val DATE_TIME = 306\n const val ARTIST = 315\n const val HOST_COMPUTER = 316\n const val PREDICTOR = 317\n const val WHITE_POINT = 318\n const val PRIMARY_CHROMATICI_TIES = 319\n const val COLOR_MAP = 320\n const val HALFTONE_HINTS = 321\n const val TILE_WIDTH = 322\n const val TILE_LENGTH = 323\n const val TILE_OFFSETS = 324\n const val TILE_BYTE_COUNTS = 325\n const val INK_SET = 332\n const val INK_NAMES = 333\n const val NUMBER_OF_INKS = 334\n const val DOT_RANGE = 336\n const val TARGET_PRINTER = 337\n const val EXTRA_SAMPLES = 338\n const val SAMPLE_FORMAT = 339\n const val S_MIN_SAMPLE_VALUE = 340\n const val S_MAX_SAMPLE_VALUE = 341\n const val TRANSFER_RANGE = 342\n const val JPEG_PROC = 512\n const val JPEG_INTERCHANGE_FORMAT = 513\n const val JPEG_INTERCHANGE_FORMAT_LENGTH = 514\n const val JPEG_RESTART_INTERVAL = 515\n const val JPEG_LOSSLESS_PREDICTORS = 517\n const val JPEG_POINT_TRANSFORMS = 518\n const val JPEG_Q_TABLES = 519\n const val JPEG_DC_TABLES = 520\n const val JPEG_AC_TABLES = 521\n const val Y_CB_CR_COEFFICIENTS = 529\n const val Y_CB_CR_SUB_SAMPLING = 530\n const val Y_CB_CR_POSITIONING = 531\n const val REFERENCE_BLACK_WHITE = 532\n const val COPYRIGHT = 33432\n }\n\n object Compression {\n const val UNCOMPRESSED = 1\n const val CCITT_1D = 2\n const val GROUP_3_FAX = 3\n const val GROUP_4_FAX = 4\n const val LZW = 5\n const val JPEG = 6\n const val PACK_BITS = 32773\n }\n\n object Orientation {\n const val ROW0_IS_TOP_COL0_IS_LHS = 1\n const val ROW0_IS_TOP_COL0_IS_RHS = 2\n const val ROW0_IS_BOTTOM_COL0_IS_RHS = 3\n const val ROW0_IS_BOTTOM_COL0_IS_LHS = 4\n const val ROW0_IS_LHS_COL0_IS_TOP = 5\n const val ROW0_IS_RHS_COL0_IS_TOP = 6\n const val ROW0_IS_RHS_COL0_IS_BOTTOM = 7\n const val ROW0_IS_LHS_COL0_IS_BOTTOM = 8\n }\n\n object PhotometricInterpretation {\n const val WHITE_IS_ZERO = 0\n const val BLACK_IS_ZERO = 1\n const val RGB = 2\n const val RGB_PALETTE = 3\n const val TRANSPARENCY_MASK = 4\n const val CMYK = 5\n const val Y_CB_CR = 6\n const val CIE_LAB = 7\n }\n\n object PlanarConfiguration {\n const val CHUNKY = 1\n const val PLANAR = 2\n }\n\n object ResolutionUnit {\n const val NONE = 1\n const val INCH = 2\n const val CENTIMETER = 3\n }\n\n object SampleFormat {\n const val UNSIGNED = 1\n const val SIGNED = 2\n const val IEEE_FLOAT = 3\n const val UNDEFINED = 4\n }\n\n object Type {\n const val BYTE = 1\n const val ASCII = 2\n const val SHORT = 3\n const val LONG = 4\n const val RATIONAL = 5\n const val SBYTE = 6\n const val UNDEFINED = 7\n const val SSHORT = 8\n const val SLONG = 9\n const val SRATIONAL = 10\n const val FLOAT = 11\n const val DOUBLE = 12\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nclass TiffIFDEntry(\n val tag: Int,\n private val type: Int,\n private val count: Int,\n private val valueOffset: Int,\n private val geoTiffData: DataView,\n private val isLittleEndian: Boolean\n) {\n fun getIFDEntryValue(allowAscii: Boolean = false): List {\n require (allowAscii || type != TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Key Type - ASCII not allowed.\")\n }\n val length = getIFDTypeLength()\n return if (length * count <= 4) listOf(if (!isLittleEndian) valueOffset shr ((4 - length) * 8) else valueOffset)\n else getIFDEntryValueLongerThan4(length)\n }\n\n fun getIFDEntryAsciiValue(): String {\n require(type == TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\",\"Invalid Key Type - ASCII required.\")\n }\n return getIFDEntryValue(true).map { it.toInt().toChar() }.joinToString(\"\")\n }\n\n private fun getIFDTypeLength() = when (type) {\n TiffConstants.Type.BYTE, TiffConstants.Type.ASCII, TiffConstants.Type.SBYTE, TiffConstants.Type.UNDEFINED -> 1\n TiffConstants.Type.SHORT, TiffConstants.Type.SSHORT -> 2\n TiffConstants.Type.LONG, TiffConstants.Type.SLONG, TiffConstants.Type.FLOAT -> 4\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL, TiffConstants.Type.DOUBLE -> 8\n else -> -1\n }\n\n private fun getIFDEntryValueLongerThan4(ifdTypeLength: Int): List {\n val ifdValues = mutableListOf()\n for (i in 0 until count) {\n val indexOffset = ifdTypeLength * i\n if (ifdTypeLength >= 8) when (type) {\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL -> {\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 4, isLittleEndian))\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset + 4, 4, isLittleEndian))\n }\n TiffConstants.Type.DOUBLE -> ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 8, isLittleEndian))\n else -> error(logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Type of IFD\"))\n } else ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, ifdTypeLength, isLittleEndian))\n }\n return ifdValues\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple mouse clicks.\n */\nopen class ClickRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfClicks = 1\n var button: Short = 0\n var maxMouseMovement = 5\n var maxClickDuration = 500\n var maxClickInterval = 400\n protected val clicks = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n clicks.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (button != event.button) state = FAILED else {\n clicks.add(Click(clientX, clientY))\n failAfterDelay(maxClickDuration) // fail if the click is down too long\n }\n }\n\n override fun mouseMove(event: MouseEvent) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxMouseMovement * window.devicePixelRatio) state = FAILED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (mouseButtonMask != 0) return // wait until the last button is up\n if (clicks.size == numberOfClicks) {\n clientX = clicks[0].clientX\n clientY = clicks[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxClickInterval) // fail if the interval between clicks is too long\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() { timeout?.let { window.clearTimeout(it) }.also { timeout = null } }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for mouse drag gestures.\n */\nopen class DragRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var button: Short = 0\n var interpretDistance = 5\n\n override fun mouseMove(event: MouseEvent) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) {\n state = if (shouldRecognize()) {\n resetTranslation() // set translation to zero when the drag begins\n BEGAN\n } else {\n FAILED\n }\n }\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (mouseButtonMask == 0) { // last button up\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state == POSSIBLE) state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret mouse movement when the cursor moves far enough\n }\n\n /**\n * @return true when the specified button is the only button down\n */\n protected open fun shouldRecognize() = 1 shl button.toInt() == mouseButtonMask\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.util.Logger\nimport org.w3c.dom.Touch\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport org.w3c.dom.pointerevents.PointerEvent\n\n/**\n * Gesture recognizers translate user input event streams into higher level actions. A gesture\n * recognizer is associated with an event target, which dispatches mouse and keyboard events to the gesture\n * recognizer. When a gesture recognizer has received enough information from the event stream to interpret the\n * action, it calls its callback functions. Callback functions may be specified at construction or added to the\n * [gestureCallbacks] list after construction.\n */\nabstract class GestureRecognizer(\n /**\n * Indicates the document element this gesture recognizer observes for mouse and touch events.\n */\n val target: EventTarget,\n /**\n * An optional function to call when this gesture is recognized. If non-null, the\n * function is called when this gesture is recognized, and is passed a single argument: this gesture recognizer,\n * e.g., gestureCallback(recognizer).\n */\n callback: ((GestureRecognizer)->Unit)?\n): EventListener {\n /**\n * Indicates whether this gesture recognizer is enabled. When false, this gesture recognizer will ignore any events\n * dispatched by its target.\n */\n var isEnabled = true\n /**\n * Indicates this gesture's current state. Possible values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN],\n * [CHANGED], [CANCELLED] and [ENDED].\n */\n var state = POSSIBLE\n set(newState) {\n nextState = null // clear any pending state transition\n when (newState) {\n POSSIBLE -> field = newState\n FAILED -> {\n field = newState\n updateRecognizersWaitingForFailure()\n resetIfEventsEnded()\n }\n RECOGNIZED -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Recognized\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n BEGAN -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Began\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n }\n }\n CHANGED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n }\n CANCELLED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n ENDED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n }\n /**\n * Indicates the X coordinate of this gesture.\n */\n var clientX = 0\n /**\n * Returns the Y coordinate of this gesture.\n */\n var clientY = 0\n /**\n * Indicates this gesture's translation along the X axis since the gesture started.\n */\n var translationX = 0.0\n private set\n /**\n * Indicates this gesture's translation along the Y axis since the gesture started.\n */\n var translationY = 0.0\n private set\n /**\n * Indicates the currently pressed mouse buttons as a bitmask. A value of 0 indicates that no buttons are\n * pressed. A nonzero value indicates that one or more buttons are pressed as follows: bit 1 indicates the\n * primary button, bit 2 indicates the auxiliary button, bit 3 indicates the secondary button.\n */\n var mouseButtonMask = 0\n private set\n /**\n * Indicates the number of active touches.\n */\n val touchCount get() = touches.size\n /**\n * The list of functions to call when this gesture is recognized. The functions have a single argument:\n * this gesture recognizer, e.g., gestureCallback(recognizer). Applications may\n * add functions to this array or remove them.\n */\n val gestureCallbacks = mutableListOf<(GestureRecognizer)->Unit>()\n private var nextState: GestureState? = null\n private var clientStartX = 0\n private var clientStartY = 0\n private var translationWeight = 0.4\n private val touches = mutableListOf()\n private var touchCentroidShiftX = 0\n private var touchCentroidShiftY = 0\n private val canRecognizeWith = mutableSetOf()\n private val requiresFailureOf = mutableSetOf()\n private val requiredToFailBy = mutableSetOf()\n private val listenerList = mutableListOf()\n\n companion object {\n val allRecognizers = mutableListOf()\n }\n\n init {\n // Add the optional gesture callback.\n callback?.let { gestureCallbacks += it }\n\n // Add this recognizer to the list of all recognizers.\n allRecognizers += this\n }\n\n /**\n * Registers a gesture state listener on this GestureRecognizer. Registering state listeners using this function\n * enables applications to receive notifications of gesture recognition.\n *\n * @param listener The function to call when the event occurs.\n */\n fun addListener(listener: GestureListener) { listenerList += listener }\n\n /**\n * Removes a gesture state listener from this GestureRecognizer. The listener must be the same object passed to\n * addListener. Calling removeListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addListener.\n */\n fun removeListener(listener: GestureListener) { listenerList -= listener }\n\n fun touch(index: Int): TouchWrapper {\n require(index in touches.indices) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"touch\", \"indexOutOfRange\")\n }\n return touches[index]\n }\n\n fun recognizeSimultaneouslyWith(recognizer: GestureRecognizer) {\n canRecognizeWith.add(recognizer)\n recognizer.canRecognizeWith.add(this)\n }\n\n fun canRecognizeSimultaneouslyWith(recognizer: GestureRecognizer) = canRecognizeWith.contains(recognizer)\n\n fun requireRecognizerToFail(recognizer: GestureRecognizer) {\n requiresFailureOf.add(recognizer)\n recognizer.requiredToFailBy.add(this)\n }\n\n fun requiresRecognizerToFail(recognizer: GestureRecognizer) = requiresFailureOf.contains(recognizer)\n\n fun requiredToFailByRecognizer(recognizer: GestureRecognizer) = requiredToFailBy.contains(recognizer)\n\n open fun reset() {\n state = POSSIBLE\n nextState = null\n clientX = 0\n clientY = 0\n clientStartX = 0\n clientStartY = 0\n translationX = 0.0\n translationY = 0.0\n mouseButtonMask = 0\n touches.clear()\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun resetTranslation() {\n clientStartX = clientX\n clientStartY = clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun prepareToRecognize() {}\n\n protected open fun mouseDown(event: MouseEvent) {}\n protected open fun mouseMove(event: MouseEvent) {}\n protected open fun mouseUp(event: MouseEvent) {}\n\n protected open fun touchStart(touch: TouchWrapper) {}\n protected open fun touchMove(touch: TouchWrapper) {}\n protected open fun touchCancel(touch: TouchWrapper) {}\n protected open fun touchEnd(touch: TouchWrapper) {}\n \n protected open fun updateRecognizersWaitingForFailure() {\n // Transition gestures that are waiting for this gesture to transition to Failed.\n requiredToFailBy.forEach { r -> r.nextState?.let { r.state = it } }\n }\n\n protected open fun tryToRecognize(newState: GestureState): Boolean {\n // Transition to Failed if another gesture can prevent this gesture from recognizing.\n if (allRecognizers.any { r -> canBePreventedByRecognizer(r) }) {\n state = FAILED\n return false\n }\n\n // Delay the transition to Recognized/Began if this gesture is waiting for a gesture in the Possible state.\n if (allRecognizers.any { r -> isWaitingForRecognizerToFail(r) }) {\n nextState = newState\n return false\n }\n\n // Transition to Failed state all other gestures that can be prevented from recognizing by this gesture.\n allRecognizers.filter { r -> canPreventRecognizer(r) }.forEach { r -> r.state = FAILED }\n return true\n }\n\n protected open fun canPreventRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE &&\n (requiredToFailByRecognizer(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun canBePreventedByRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == RECOGNIZED &&\n (requiresRecognizerToFail(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun isWaitingForRecognizerToFail(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE && requiresRecognizerToFail(that)\n\n protected open fun notifyListeners() = listenerList.forEach { l -> l.gestureStateChanged(this) }\n\n protected open fun callGestureCallbacks() = gestureCallbacks.forEach { c -> c(this) }\n\n override fun handleEvent(event: Event) {\n if (!isEnabled) return\n\n if (event.defaultPrevented && state == POSSIBLE) return // ignore cancelled events while in the Possible state\n\n try {\n when {\n event.type == \"mousedown\" && event is MouseEvent -> handleMouseDown(event)\n event.type == \"mousemove\" && event is MouseEvent -> handleMouseMove(event)\n event.type == \"mouseup\" && event is MouseEvent -> handleMouseUp(event)\n event.type == \"touchstart\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchStart(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchmove\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchMove(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchcancel\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchCancel(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchend\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchEnd(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseDown(event)\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseMove(event)\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"mouse\" -> {\n // Intentionally left blank. The W3C Pointer Events specification is ambiguous on what cancel means\n // for mouse input, and there is no evidence that this event is actually generated (6/19/2015).\n }\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseUp(event)\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchStart(wrapPointer(event))\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchMove(wrapPointer(event))\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchCancel(wrapPointer(event))\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchEnd(wrapPointer(event))\n else -> Logger.logMessage(Logger.INFO, \"GestureRecognizer\", \"handleEvent\",\n \"Unrecognized event type: ${event.type}\")\n }\n } catch (e: Exception) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"handleEvent\", \"Error handling event.\\n$e\")\n }\n }\n\n protected open fun handleMouseDown(event: MouseEvent) {\n if (event.type == \"mousedown\" && touches.size > 0) return // ignore synthesized mouse down events on Android Chrome\n\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask != 0) return // ignore redundant mouse down events\n\n if (mouseButtonMask == 0) { // first button down\n clientX = event.clientX\n clientY = event.clientY\n clientStartX = event.clientX\n clientStartY = event.clientY\n translationX = 0.0\n translationY = 0.0\n }\n\n mouseButtonMask = mouseButtonMask or buttonBit\n mouseDown(event)\n }\n\n protected open fun handleMouseMove(event: MouseEvent) {\n if (mouseButtonMask == 0) return // ignore mouse move events when this recognizer does not consider any button to be down\n\n if (clientX == event.clientX && clientY == event.clientY) return // ignore redundant mouse move events\n\n val dx = event.clientX - clientStartX\n val dy = event.clientY - clientStartY\n val w = translationWeight\n clientX = event.clientX\n clientY = event.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n mouseMove(event)\n }\n\n protected open fun handleMouseUp(event: MouseEvent) {\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask == 0) return // ignore mouse up events for buttons this recognizer does not consider to be down\n\n mouseButtonMask = mouseButtonMask and buttonBit.inv()\n mouseUp(event)\n\n if (mouseButtonMask == 0) resetIfEventsEnded() // last button up\n }\n\n protected open fun handleTouchStart(touch: TouchWrapper) {\n touches.add(touch)\n\n if (touches.size == 1) { // first touch\n clientX = touch.clientX\n clientY = touch.clientY\n clientStartX = touch.clientX\n clientStartY = touch.clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n } else touchesAddedOrRemoved()\n\n touchStart(touch)\n }\n\n protected open fun handleTouchMove(nextTouch: TouchWrapper) {\n val touch = touchById(nextTouch.identifier) ?: return // ignore events for touches that did not start in this recognizer's target\n if (touch.clientX == nextTouch.clientX && touch.clientY == nextTouch.clientY) return // ignore redundant touch move events, which we've encountered on Android Chrome\n\n touch.clientX = nextTouch.clientX\n touch.clientY = nextTouch.clientY\n\n val centroid = touchCentroid()\n val dx = centroid.clientX - clientStartX + touchCentroidShiftX\n val dy = centroid.clientY - clientStartY + touchCentroidShiftY\n val w = translationWeight\n clientX = centroid.clientX\n clientY = centroid.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n\n touchMove(touch)\n }\n\n protected open fun handleTouchCancel(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchCancel(touch)\n resetIfEventsEnded()\n }\n\n protected open fun handleTouchEnd(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchEnd(touch)\n resetIfEventsEnded()\n }\n\n protected open fun resetIfEventsEnded() {\n if (state != POSSIBLE && mouseButtonMask == 0 && touches.size == 0) reset()\n }\n\n protected open fun touchesAddedOrRemoved() {\n touchCentroidShiftX += clientX\n touchCentroidShiftY += clientY\n val centroid = touchCentroid()\n clientX = centroid.clientX\n clientY = centroid.clientY\n touchCentroidShiftX -= clientX\n touchCentroidShiftY -= clientY\n }\n\n protected open fun touchCentroid(): Click {\n var x = 0\n var y = 0\n\n touches.forEach { touch ->\n x += touch.clientX / touches.size\n y += touch.clientY / touches.size\n }\n\n return Click(x, y)\n }\n\n protected open fun indexOfTouchWithId(identifier: Int) = touches.indexOfFirst { t -> t.identifier == identifier }\n\n protected open fun touchById(identifier: Int) = touches.firstOrNull { t -> t.identifier == identifier }\n\n protected open fun wrapTouch(event: Touch) = TouchWrapper(event.identifier, event.clientX, event.clientY)\n\n protected open fun wrapPointer(event: PointerEvent) = TouchWrapper(event.pointerId, event.clientX, event.clientY)\n\n protected class Click(\n /**\n * The X coordinate of the click point's location.\n */\n val clientX: Int,\n /**\n * The Y coordinate of the click point's location.\n */\n val clientY: Int\n )\n}",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for touch panning gestures.\n */\nopen class PanRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var minNumberOfTouches = 1\n var maxNumberOfTouches = Int.MAX_VALUE\n var interpretDistance = 20\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) state = if (shouldRecognize()) BEGAN else FAILED\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch cancelled\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n }\n\n override fun prepareToRecognize() {\n // set translation to zero when the pan begins\n resetTranslation()\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret touches when the touch centroid moves far enough\n }\n\n protected open fun shouldRecognize() = touchCount in minNumberOfTouches..maxNumberOfTouches\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger pinch gestures.\n */\nopen class PinchRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceDistance = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val scaleWithOffset get() = scale * offsetScale\n protected var scale = 1.0\n protected var offsetScale = 1.0\n protected val pinchTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n scale = 1.0\n offsetScale = 1.0\n referenceDistance = 0.0\n pinchTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (pinchTouches.size < 2) {\n pinchTouches.add(touch)\n if (pinchTouches.size == 2) {\n referenceDistance = currentPinchDistance()\n offsetScale *= scale\n scale = 1.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (pinchTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val distance = currentPinchDistance()\n val newScale = abs(distance / referenceDistance)\n val w = weight\n scale = scale * (1 - w) + newScale * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceDistance = currentPinchDistance()\n scale = 1.0\n }\n\n protected open fun shouldRecognize() =\n abs(currentPinchDistance() - referenceDistance) > interpretThreshold * window.devicePixelRatio\n\n protected open fun currentPinchDistance(): Double {\n val touch0 = pinchTouches[0]\n val touch1 = pinchTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return sqrt((dx * dx + dy * dy).toDouble())\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.atan2\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger rotation gestures.\n */\nopen class RotationRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceAngle = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val rotationWithOffset get() = rotation + offsetRotation\n protected var rotation = 0.0\n protected var offsetRotation = 0.0\n protected val rotationTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n rotation = 0.0\n offsetRotation = 0.0\n referenceAngle = 0.0\n rotationTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (rotationTouches.size < 2) {\n rotationTouches.add(touch)\n if (rotationTouches.size == 2) {\n referenceAngle = currentTouchAngle()\n offsetRotation += rotation\n rotation = 0.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (rotationTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val angle = currentTouchAngle()\n val newRotation = Angle.normalizeAngle180(angle - referenceAngle)\n val w = weight\n rotation = rotation * (1 - w) + newRotation * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0)\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceAngle = currentTouchAngle()\n rotation = 0.0\n }\n\n protected open fun shouldRecognize(): Boolean {\n rotation = Angle.normalizeAngle180(currentTouchAngle() - referenceAngle)\n return abs(rotation) > interpretThreshold\n }\n\n protected open fun currentTouchAngle(): Double {\n val touch0 = rotationTouches[0]\n val touch1 = rotationTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return Angle.toDegrees(atan2(dy.toDouble(), dx.toDouble()))\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.BasicWorldWindowController\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Highlightable\nimport earth.worldwind.shape.Movable\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.MouseEvent\n\nopen class SelectDragDetector(protected val wwd: WorldWindow) {\n /**\n * Main interface representing all interaction callbacks\n */\n var callback: SelectDragCallback? = null\n /**\n * Enable/disable mouse events processing.\n * If disabled, highlighting of Renderables and all callbacks will be switched off.\n */\n var isEnabled = true\n /**\n * Enable/disable dragging of flying objects using their terrain projection position\n */\n var isDragTerrainPosition = false\n protected var pickedPosition: Position? = null\n protected var pickedRenderable: Renderable? = null\n protected val oldHighlighted = mutableSetOf()\n protected val newHighlighted = mutableSetOf()\n protected var isDragging = false\n protected var isDraggingArmed = false\n private val dragRefPt = Vec2()\n private val lastTranslation = Vec2()\n\n protected val handlePick = EventListener { event ->\n // Do not pick new items if dragging is in progress or detector is disabled\n if (isDragging || !isEnabled) return@EventListener\n\n // Determine pick point from event\n var clientX = 0\n var clientY = 0\n when (event) {\n is MouseEvent -> {\n clientX = event.clientX\n clientY = event.clientY\n }\n is TouchEvent -> {\n event.changedTouches.item(0)?.let { touch ->\n clientX = touch.clientX\n clientY = touch.clientY\n } ?: return@EventListener\n }\n else -> return@EventListener\n }\n\n // Reset previous pick result\n pickedPosition = null\n pickedRenderable = null\n lastTranslation.set(0.0, 0.0)\n\n // Get pick point in canvas coordinates\n val pickPoint = wwd.canvasCoordinates(clientX, clientY)\n\n // Pick objects in selected point\n val pickList = wwd.pick(pickPoint)\n\n // Get picked position from terrain object, if user pressed inside the globe\n pickedPosition = pickList.terrainPickedObject?.terrainPosition\n\n// // NOTE Region selection use bounding box intersection with specified rectangle. Use highlighter path thickness instead.\n// if (!pickList.hasNonTerrainObjects) {\n// pickList = wwd.pickShapesInRegion(\n// Viewport(pickPoint.x - SLOPE / 2 , pickPoint.y - SLOPE / 2, SLOPE, SLOPE)\n// )\n// }\n\n // Redraw canvas in case we de-highlight old or highlight new renderables\n var redrawRequired = false\n\n // Put picked renderables into new highlighted set\n for (obj in pickList.objects) if (!obj.isTerrain && obj.userObject is Highlightable) newHighlighted.add(obj.userObject)\n\n // De-highlight any previously highlighted renderables which is not selected or picked\n for (highlighted in oldHighlighted)\n if (!newHighlighted.contains(highlighted)\n && highlighted is Renderable && highlighted.getUserProperty(HIGHLIGHT_LOCKED_KEY) != true) {\n highlighted.isHighlighted = false\n oldHighlighted.remove(highlighted)\n redrawRequired = true\n }\n\n // Highlight picked objects which was not highlighted yet\n for (highlighted in newHighlighted) if (!oldHighlighted.contains(highlighted)) {\n highlighted.isHighlighted = true\n oldHighlighted.add(highlighted)\n redrawRequired = true\n }\n\n // Clear new highlighted buffer until next frame\n newHighlighted.clear()\n\n // Update the window if we changed anything\n if (redrawRequired) wwd.requestRedraw()\n\n // Get top picked renderable to use it in listener callbacks\n val topPickedObject = pickList.topPickedObject?.userObject\n if (topPickedObject is Renderable) pickedRenderable = topPickedObject\n\n // Take reference position as a backup, if user pressed outside the globe\n if (topPickedObject is Movable && pickedPosition == null) pickedPosition = topPickedObject.referencePosition\n\n // Determine whether the dragging flag should be \"armed\".\n isDraggingArmed = topPickedObject is Renderable && callback?.canMoveRenderable(topPickedObject) == true\n }\n\n protected val handlePrimaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderablePicked(renderable, position) else callback.onTerrainPicked(position)\n } ?: callback.onNothingPicked()\n wwd.requestRedraw()\n }\n }\n\n protected val handleSecondaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderableContext(renderable, position) else callback.onTerrainContext(position)\n } ?: callback.onNothingContext()\n wwd.requestRedraw()\n }\n }\n\n protected val handleDrag: (GestureRecognizer) -> Unit = { recognizer ->\n when (recognizer.state) {\n BEGAN, CHANGED -> {\n val callback = callback\n val renderable = pickedRenderable\n // Reference position is a priority during movement\n val toPosition = if (renderable is Movable) renderable.referencePosition else pickedPosition\n if (toPosition != null && renderable != null && callback != null) {\n // Signal that dragging is in progress\n isDragging = true\n\n // First we compute the screen coordinates of the position's \"ground\" point. We'll apply the\n // screen X and Y drag distances to this point, from which we'll compute a new position,\n // wherein we restore the original position's altitude.\n val fromPosition = Position(toPosition)\n val clapToGround = isDragTerrainPosition || renderable !is Movable || renderable.altitudeMode == AltitudeMode.CLAMP_TO_GROUND\n val movePoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n if (clapToGround && wwd.engine.pickTerrainPosition(movePoint.x, movePoint.y, toPosition)\n || !clapToGround && wwd.engine.geographicToScreenPoint(fromPosition.latitude, fromPosition.longitude, 0.0, dragRefPt)\n && wwd.engine.screenPointToGroundPosition(\n dragRefPt.x + recognizer.translationX - lastTranslation.x,\n dragRefPt.y + recognizer.translationY - lastTranslation.y,\n toPosition\n )) {\n // Backup last translation\n lastTranslation.set(recognizer.translationX, recognizer.translationY)\n // Restore original altitude\n toPosition.altitude = fromPosition.altitude\n // Update movable position\n if (renderable is Movable) renderable.moveTo(wwd.engine.globe, toPosition)\n // Notify callback\n callback.onRenderableMoved(renderable, fromPosition, toPosition)\n // Reflect the change in position on the globe.\n wwd.requestRedraw()\n } else {\n // Probably clipped by near/far clipping plane or off the globe.\n // The position was not updated. Stop the drag.\n recognizer.state = CANCELLED\n }\n }\n }\n ENDED -> {\n val callback = callback\n val position = pickedPosition\n val renderable = pickedRenderable\n if (renderable != null && position != null && callback != null) {\n callback.onRenderableMovingFinished(renderable, position)\n wwd.requestRedraw()\n }\n cancelDragging()\n }\n CANCELLED -> cancelDragging()\n else -> {}\n }\n }\n\n protected val primaryClickRecognizer = ClickRecognizer(wwd.canvas, handlePrimaryClick)\n protected val tapRecognizer = TapRecognizer(wwd.canvas, handlePrimaryClick)\n protected val secondaryClickRecognizer = ClickRecognizer(wwd.canvas, handleSecondaryClick).apply { button = 2 } // Secondary mouse button\n protected val doubleTapRecognizer = TapRecognizer(wwd.canvas, handleSecondaryClick).apply { numberOfTaps = 2 } // Double tap\n protected val dragRecognizer = object : DragRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n protected val panRecognizer = object : PanRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n\n companion object {\n// const val SLOPE = 16\n const val HIGHLIGHT_LOCKED_KEY = \"highlight_locked\"\n }\n\n init {\n wwd.addEventListener(\"mousedown\", handlePick)\n wwd.addEventListener(\"mousemove\", handlePick)\n wwd.addEventListener(\"touchstart\", handlePick)\n wwd.addEventListener(\"touchmove\", handlePick)\n\n // Resolve conflict between item movement and globe rotation\n val controller = wwd.controller\n if (controller is BasicWorldWindowController) {\n controller.primaryDragRecognizer.requireRecognizerToFail(dragRecognizer)\n controller.panRecognizer.requireRecognizerToFail(panRecognizer)\n }\n }\n\n protected fun cancelDragging() {\n isDragging = false\n isDraggingArmed = false\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple taps.\n */\nopen class TapRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfTaps = 1\n var numberOfTouches = 1\n var maxTouchMovement = 20\n var maxTapDuration = 500\n var maxTapInterval = 400\n protected val taps = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n taps.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n\n if (touchCount > numberOfTouches) {\n state = FAILED\n } else if (touchCount == 1) { // first touch started\n taps.add(TouchWrapper(touchCount, clientX, clientY))\n failAfterDelay(maxTapDuration) // fail if the tap is down too long\n } else {\n val tap = taps[taps.size - 1]\n tap.identifier = touchCount // max number of simultaneous touches\n tap.clientX = clientX // touch centroid\n tap.clientY = clientY\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxTouchMovement * window.devicePixelRatio ) state = FAILED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n if (touchCount != 0) return // wait until the last touch ends\n val tapCount = taps.size\n val tap = taps[tapCount - 1]\n if (tap.identifier != numberOfTouches) {\n state = FAILED // wrong number of touches\n } else if (tapCount == numberOfTaps) {\n clientX = taps[0].clientX\n clientY = taps[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxTapInterval) // fail if the interval between taps is too long\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() = timeout?.let { window.clearTimeout(it) }.also { timeout = null }\n}","package earth.worldwind.gesture\n\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger tilt gestures.\n */\nopen class TiltRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : PanRecognizer(target, callback) {\n var maxTouchDistance = 300\n var maxTouchDivergence = 50\n\n companion object {\n const val LEFT = 1 shl 0\n const val RIGHT = 1 shl 1\n const val UP = 1 shl 2\n const val DOWN = 1 shl 3\n }\n\n override fun shouldInterpret(): Boolean {\n for (i in 0 until touchCount) {\n val touch = touch(i)\n val dx = touch.translationX\n val dy = touch.translationY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > interpretDistance) return true // interpret touches when any touch moves far enough\n }\n return false\n }\n\n override fun shouldRecognize(): Boolean {\n if (touchCount < 2) return false\n val touch0 = touch(0)\n val touch1 = touch(1)\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > maxTouchDistance * window.devicePixelRatio) return false // touches must be close together\n val tx = touch0.translationX - touch1.translationX\n val ty = touch0.translationY - touch1.translationY\n val divergence = sqrt((tx * tx + ty * ty).toDouble())\n if (divergence > maxTouchDivergence * window.devicePixelRatio) return false // touches must be moving in a mostly parallel direction\n\n val verticalMask = UP or DOWN\n val dirMask0 = touchDirection(touch0) and verticalMask\n val dirMask1 = touchDirection(touch1) and verticalMask\n return (dirMask0 and dirMask1) != 0 // touches must move in the same vertical direction\n }\n\n protected open fun touchDirection(touch: TouchWrapper): Int {\n val dx = touch.translationX\n val dy = touch.translationY\n var dirMask = 0\n if (abs(dx) > abs(dy)) {\n dirMask = dirMask or if (dx < 0) LEFT else 0\n dirMask = dirMask or if (dx > 0) RIGHT else 0\n } else {\n dirMask = dirMask or if (dy < 0) UP else 0\n dirMask = dirMask or if (dy > 0) DOWN else 0\n }\n return dirMask\n }\n}","package earth.worldwind.gesture\n\n/**\n * Represents a touch point.\n */\nopen class TouchWrapper(\n /**\n * A number uniquely identifying the touch point\n */\n var identifier: Int,\n /**\n * The X coordinate of the touch point's location.\n */\n var clientX: Int,\n /**\n * The Y coordinate of the touch point's location.\n */\n var clientY: Int\n) {\n /**\n * Indicates this touch point's translation along the X axis since the touch started.\n */\n var translationX: Int\n get() = clientX - clientStartX\n set(value) { clientStartX = clientX - value }\n /**\n * Indicates this touch point's translation along the Y axis since the touch started.\n */\n var translationY: Int\n get() = clientY - clientStartY\n set(value) { clientStartY = clientY - value }\n protected var clientStartX = clientX\n protected var clientStartY = clientY\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying elevations from a variety of sources.\n *
\n * ElevationSource supports following source types:\n * - Uniform Resource Locator [URL]\n *
\n * ElevationSource instances are intended to be used as a key into a cache or other data structure that enables sharing\n * of loaded elevation resources. File paths and URLs with the same string representation considered equals.\n */\nactual open class ElevationSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an elevation source with an [URL].\n *\n * @param url Uniform Resource Locator\n *\n * @return the new elevation source\n */\n fun fromUrl(url: URL) = ElevationSource(url.href)\n\n /**\n * Constructs an elevation source with a URL string.\n *\n * @param urlString complete URL string\n *\n * @return the new elevation source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ElevationSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an elevation source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ElevationSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new elevation source\n */\n actual fun fromUnrecognized(source: Any) = when(source) {\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ElevationSource(source)\n }\n }\n\n /**\n * Indicates whether this elevation source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when (source) {\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.formats.geotiff.GeoTiffReader\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport io.ktor.client.fetch.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.await\nimport kotlinx.coroutines.withContext\nimport org.khronos.webgl.*\nimport org.khronos.webgl.ArrayBuffer\nimport org.khronos.webgl.ArrayBufferView\nimport org.khronos.webgl.Uint8Array\nimport kotlin.math.roundToInt\n\nactual open class TiledElevationCoverage actual constructor(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n) : AbstractTiledElevationCoverage(tileMatrixSet, elevationSourceFactory) {\n /**\n * Makes a copy of this elevation coverage\n */\n actual open fun clone() = TiledElevationCoverage(tileMatrixSet, elevationSourceFactory).also {\n it.displayName = displayName\n it.sector.copy(sector)\n }\n\n override suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int) {\n val elevationSource = elevationSourceFactory.createElevationSource(tileMatrix, row, column)\n if (elevationSource.isUrl) {\n val url = elevationSource.asUrl()\n try {\n // Ktor JS Client cannot be used here, because it is not able to return ArrayBuffer directly.\n val response = fetch(url).await()\n if (response.ok) {\n val arrayBuffer = response.arrayBuffer().await()\n val contentType = response.headers.get(\"Content-Type\")\n var message: String? = null\n val buffer = when {\n contentType.equals(\"image/bil\", true) ||\n contentType.equals(\"application/bil\", true) ||\n contentType.equals(\"application/bil16\", true) -> Int16Array(arrayBuffer)\n contentType.equals(\"application/bil32\", true) -> Float32Array(arrayBuffer)\n contentType.equals(\"image/tiff\", true) -> decodeTiffImage(arrayBuffer)\n contentType.equals(\"text/xml\", true) -> {\n message = \"Elevations retrieval failed (${response.statusText}): $url.\\n\"\n +String.asDynamic().fromCharCode.apply(null, Uint8Array(arrayBuffer))\n null\n }\n else -> {\n message = \"Elevations retrieval failed (Unexpected content type $contentType): $url\"\n null\n }\n }?.let { elevationSource.postprocessor?.process(it) ?: it } // Apply buffer transformations\n decodeBuffer(buffer)?.let {\n retrievalSucceeded(key, it, \"Elevation retrieval succeeded: $url\")\n } ?: retrievalFailed(key, message ?: \"Elevations retrieval failed: $url\")\n } else {\n retrievalFailed(key, \"Elevations retrieval failed (${response.statusText}): $url\")\n }\n } catch (e: Throwable) {\n retrievalFailed(key, \"Elevations retrieval failed (${e.message}): $url\")\n }\n } else retrievalFailed(key, \"Unsupported elevation source type\")\n }\n\n private suspend fun decodeTiffImage(arrayBuffer: ArrayBuffer) = withContext(Dispatchers.Default) {\n GeoTiffReader(arrayBuffer).createTypedElevationArray()\n }\n\n protected open fun decodeBuffer(buffer: ArrayBufferView?) = when (buffer) {\n is Int16Array -> ShortArray(buffer.length) { buffer[it] }\n is Float32Array -> ShortArray(buffer.length) {\n val value = buffer[it]\n // Consider converting null value from float to short\n if (value == Float.MAX_VALUE) Short.MIN_VALUE else value.roundToInt().toShort()\n }\n else -> null\n }\n\n protected open fun retrievalSucceeded(key: Long, value: ShortArray, message: String) {\n retrievalSucceeded(key, value)\n if (isLoggable(DEBUG)) log(DEBUG, message)\n }\n\n protected open fun retrievalFailed(key: Long, message: String) {\n retrievalFailed(key)\n log(WARN, message)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nactual open class TiledImageLayer actual constructor(\n name: String?, tiledSurfaceImage: TiledSurfaceImage?\n): AbstractTiledImageLayer(name, tiledSurfaceImage) {\n /**\n * Makes a copy of this image layer\n */\n actual open fun clone() = TiledImageLayer(displayName, tiledSurfaceImage?.clone())\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.util.Level\nimport kotlinx.browser.document\nimport org.khronos.webgl.get\nimport org.khronos.webgl.set\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.math.floor\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nactual open class MercatorImageTile actual constructor(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): AbstractMercatorImageTile(sector, level, row, column) {\n companion object {\n val srcCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val srcCtx = srcCanvas.getContext(\"2d\", js(\"{ willReadFrequently: true }\")) as CanvasRenderingContext2D\n val dstCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val dstCtx = dstCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n\n override suspend fun process(resource: Resource) = if (resource is Image) {\n val width = resource.width\n val height = resource.height\n val widthDouble = resource.width.toDouble()\n val heightDouble = resource.height.toDouble()\n\n // Get source image data\n srcCanvas.width = width\n srcCanvas.height = height\n srcCtx.drawImage(resource, 0.0, 0.0, widthDouble, heightDouble)\n val srcData = srcCtx.getImageData(0.0, 0.0, widthDouble, heightDouble)\n\n // Prepare destination image data\n dstCanvas.width = width\n dstCanvas.height = height\n val dstData = dstCtx.createImageData(widthDouble, heightDouble)\n\n // Re-project mercator tile to equirectangular projection\n val sector = sector as MercatorSector\n val miny = sector.minLatPercent\n val maxy = sector.maxLatPercent\n for (y in 0 until height) {\n val sy = 1.0 - y / (height - 1.0)\n val lat = sy * sector.deltaLatitude.inDegrees + sector.minLatitude.inDegrees\n val dy = (1.0 - (gudermannianInverse(lat.degrees) - miny) / (maxy - miny)).coerceIn(0.0, 1.0)\n val srcRow = floor(dy * (height - 1)).toInt()\n for (x in 0 until width) {\n val src = 4 * (x + srcRow * width)\n val dst = 4 * (x + y * width)\n dstData.data[dst] = srcData.data[src]\n dstData.data[dst + 1] = srcData.data[src + 1]\n dstData.data[dst + 2] = srcData.data[src + 2]\n dstData.data[dst + 3] = srcData.data[src + 3]\n }\n }\n\n // Replace image source with transformed canvas image data\n dstCtx.putImageData(dstData, 0.0, 0.0)\n //resource.src = dstCanvas.toDataURL() // This approach is performance ineffective thus replaced by toBlob()\n dstCanvas.toBlob({\n // Setting new src will call onLoad or onError in RenderResourceCache and continue image retrieval process\n if (it != null) resource.src = URL.createObjectURL(it)\n // Call image.onError in RenderResourceCache to fail retrieval and mark resource as absent\n else resource.onerror?.invoke(\"Error saving canvas to Blob\", \"\", 0, 0, null) as Unit\n })\n\n resource // Do not call super.process to prevent unnecessary onLoad event processing\n } else super.process(resource)\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.CENTER\nimport org.w3c.dom.CanvasTextAlign\n\n/**\n * Holds attributes controlling the style, size and other attributes of [earth.worldwind.shape.Label] shapes and\n * the textual features of [earth.worldwind.shape.Placemark] and other shapes. The values used for these attributes are those\n * defined by the CSS Font property.\n */\nactual open class Font(\n /**\n * The font size.\n */\n var size: Int,\n /**\n * The font family.\n * @see CSS font-family for defined values.\n */\n var family: String = \"sans-serif\",\n /**\n * The font weight.\n * @see CSS font-weight for defined values.\n */\n var weight: String = \"normal\",\n /**\n * The font style.\n * @see CSS font-style for defined values.\n */\n var style: String = \"normal\",\n /**\n * The font variant.\n * @see CSS font-variant for defined values.\n */\n var variant: String = \"normal\",\n /**\n * The horizontal alignment of the font.\n * Recognized values are \"left\", \"center\" and \"right\".\n */\n var horizontalAlignment: CanvasTextAlign = CanvasTextAlign.CENTER\n) {\n actual constructor(): this(14)\n actual constructor(family: String, weight: FontWeight, size: Int): this(\n size, family,\n if (weight == FontWeight.BOLD) \"bold\" else \"normal\",\n if (weight == FontWeight.ITALIC) \"italic\" else \"normal\",\n )\n\n init {\n require(size > 0) {\n logMessage(ERROR, \"Font\", \"constructor\", \"invalidSize\");\n }\n }\n\n actual fun copy(font: Font) {\n size = font.size\n style = font.style\n variant = font.variant\n weight = font.weight\n family = font.family\n horizontalAlignment = font.horizontalAlignment\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Font) return false\n if (size != other.size) return false\n if (style != other.style) return false\n if (variant != other.variant) return false\n if (weight != other.weight) return false\n if (family != other.family) return false\n if (horizontalAlignment != other.horizontalAlignment) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = size\n result = 31 * result + style.hashCode()\n result = 31 * result + variant.hashCode()\n result = 31 * result + weight.hashCode()\n result = 31 * result + family.hashCode()\n result = 31 * result + horizontalAlignment.hashCode()\n return result\n }\n\n /**\n * A string representing this font's style, weight, size and family properties, suitable for\n * passing directly to a 2D canvas context.\n */\n override fun toString() = \"$style $variant $weight ${size}px $family\"\n}","package earth.worldwind.render\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.image.*\nimport earth.worldwind.util.AbsentResourceList\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.kgl.*\nimport kotlinx.browser.window\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.time.Duration.Companion.seconds\n\nactual open class RenderResourceCache(\n capacity: Long = recommendedCapacity(), lowWater: Long = (capacity * 0.75).toLong()\n) : LruMemoryCache(capacity, lowWater) {\n companion object {\n fun recommendedCapacity(): Long = (window.navigator.asDynamic().deviceMemory as? Number)\n ?.let { it.toLong() * 1024 * 1024 * 1024 / 16 * 3 } ?: (512L * 1024 * 1024) // 512 Mb as backup\n }\n\n override var age = 0L // Manually incrementable cache age\n var urlRetrievalQueueSize = 16\n /**\n * Main render resource retrieval scope\n */\n actual val mainScope = MainScope()\n /**\n * Identifies requested resources that whose retrieval failed.\n */\n actual val absentResourceList = AbsentResourceList(3, 60.seconds)\n /**\n * List of retrievals currently in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n\n override fun clear() {\n super.clear()\n currentRetrievals.clear()\n absentResourceList.clear()\n age = 0\n }\n\n actual fun incAge() { ++age }\n\n actual fun releaseEvictedResources(dc: DrawContext) {\n // TODO Implement evicted resources management\n }\n\n actual fun retrieveTexture(imageSource: ImageSource, options: ImageOptions?): Texture? {\n when {\n imageSource.isImage -> {\n // Following type of image sources is already in memory, so a texture may be created and put into the cache immediately.\n return createTexture(options, imageSource.asImage())?.also { put(imageSource, it, it.byteCount) }\n }\n imageSource.isImageFactory -> {\n val factory = imageSource.asImageFactory()\n if (factory.isRunBlocking) {\n // Image factory makes easy operations, so a texture may be created and put into the cache immediately.\n return factory.createImage()?.let { image ->\n createTexture(options, image)?.also { put(imageSource, it, it.byteCount) }\n }\n }\n }\n }\n\n // Ignore retrieval of already requested resources or marked as absent\n if (currentRetrievals.size >= urlRetrievalQueueSize || currentRetrievals.contains(imageSource)\n || absentResourceList.isResourceAbsent(imageSource.hashCode())) return null\n\n // Retrieve remote image source\n when {\n imageSource.isResource -> retrieveRemoteImage(imageSource, options, imageSource.asResource().fileUrl)\n imageSource.isUrl -> retrieveRemoteImage(imageSource, options, imageSource.asUrl())\n imageSource.isImageFactory -> {\n currentRetrievals += imageSource\n mainScope.launch {\n imageSource.asImageFactory().createImage()?.let {\n retrievalSucceeded(imageSource, options, it)\n } ?: retrievalFailed(imageSource)\n }\n }\n }\n\n return null\n }\n\n actual fun retrieveTextFile(fileResource: FileResource, result: (String) -> Unit) {\n mainScope.launch {\n try {\n result(fileResource.getText())\n } catch (e: Throwable) {\n log(ERROR, \"Resource retrieval failed ($fileResource): ${e.message}\")\n }\n }\n }\n\n protected open fun retrieveRemoteImage(imageSource: ImageSource, options: ImageOptions?, src: String) {\n val image = Image()\n var postprocessorExecuted = false\n image.onload = {\n // Check if image postprocessor is assigned and not yet executed.\n // OnLoad event can be called second time by reassigning image.src inside postprocessor.\n val postprocessor = imageSource.postprocessor\n if (postprocessor != null && !postprocessorExecuted) {\n postprocessorExecuted = true // Prevent cyclic processing due to src modification inside postprocessing.\n mainScope.launch { postprocessor.process(image) } // Apply image transformation.\n } else retrievalSucceeded(imageSource, options, image) // Consume original or processed image as retrieved\n if (postprocessor != null) URL.revokeObjectURL(image.src) // Revoke URL possibly created in postprocessor\n }\n image.onerror = { _, _, _, _, _ -> retrievalFailed(imageSource) }\n currentRetrievals += imageSource\n image.crossOrigin = \"anonymous\"\n image.src = src\n }\n\n protected open fun createTexture(options: ImageOptions?, image: TexImageSource): Texture? {\n var (width, height) = when (image) {\n is HTMLImageElement -> image.width to image.height\n is HTMLCanvasElement -> image.width to image.height\n else -> return null\n }\n\n // Process initialWidth and initialHeight if specified\n if (width == 0 || height == 0) {\n // If source image has dimensions, then resize it proportionally to fit initial size restrictions\n val ratioW = if (options != null && options.initialWidth > 0) width / options.initialWidth else 0\n val ratioH = if (options != null && options.initialHeight > 0) height / options.initialHeight else 0\n val ratio = if (ratioH > ratioW) ratioH else ratioW\n if (ratio > 0) {\n width /= ratio\n height /= ratio\n }\n } else if (options != null && options.initialWidth > 0 && options.initialHeight > 0) {\n // If source image has no dimensions (e.g. SVG image), then set initial size of image\n width = options.initialWidth\n height = options.initialHeight\n }\n\n // Create image texture and apply texture parameters\n val texture = ImageTexture(image, width, height)\n if (options?.resamplingMode == ResamplingMode.NEAREST_NEIGHBOR) {\n texture.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n texture.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n }\n if (options?.wrapMode == WrapMode.REPEAT) {\n texture.setTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT)\n texture.setTexParameter(GL_TEXTURE_WRAP_T, GL_REPEAT)\n }\n return texture\n }\n\n protected open fun retrievalSucceeded(source: ImageSource, options: ImageOptions?, image: TexImageSource) {\n // Create texture and put it into cache.\n createTexture(options, image)?.let { put(source, it, it.byteCount) }\n currentRetrievals -= source\n absentResourceList.unmarkResourceAbsent(source.hashCode())\n WorldWind.requestRedraw()\n if (isLoggable(DEBUG)) log(DEBUG, \"Image retrieval succeeded: $source\")\n }\n\n protected open fun retrievalFailed(source: ImageSource) {\n currentRetrievals -= source\n absentResourceList.markResourceAbsent(source.hashCode())\n log(WARN, \"Image retrieval failed: $source\")\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.render.image.ImageTexture\nimport earth.worldwind.shape.TextAttributes\nimport kotlinx.browser.document\nimport org.w3c.dom.*\nimport kotlin.math.ceil\n\nactual open class TextRenderer actual constructor(protected val rc: RenderContext) {\n private val lineSpacing = 0.15 // fraction of font size\n\n /**\n * Creates a texture for a specified text string and specified text attributes.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A texture for the specified text string.\n */\n actual fun renderText(text: String?, attributes: TextAttributes): Texture? =\n if (text?.isNotEmpty() == true) ImageTexture(drawText(text, attributes)) else null\n\n /**\n * Creates a 2D Canvas for a specified text string while considering current TextRenderer state regarding outline\n * usage and color, text color, typeface, and outline width.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A 2D Canvas for the specified text string.\n */\n protected open fun drawText(text: String, attributes: TextAttributes): HTMLCanvasElement {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n\n val textSize = textSize(ctx2D, text, attributes)\n val lines = text.split(\"\\n\")\n val strokeOffset = if (attributes.isOutlineEnabled) attributes.outlineWidth / 2.0 else 0.0\n\n canvas.width = ceil(textSize.x * rc.densityFactor).toInt()\n canvas.height = ceil(textSize.y * rc.densityFactor).toInt()\n\n ctx2D.scale(rc.densityFactor.toDouble(), rc.densityFactor.toDouble())\n ctx2D.font = attributes.font.toString()\n ctx2D.textBaseline = CanvasTextBaseline.BOTTOM\n ctx2D.textAlign = attributes.font.horizontalAlignment\n ctx2D.fillStyle = attributes.textColor.toCssColorString()\n ctx2D.strokeStyle = attributes.outlineColor.toCssColorString()\n ctx2D.lineWidth = attributes.outlineWidth.toDouble()\n ctx2D.lineCap = CanvasLineCap.ROUND\n ctx2D.lineJoin = CanvasLineJoin.ROUND\n\n when (attributes.font.horizontalAlignment) {\n CanvasTextAlign.LEFT -> ctx2D.translate(strokeOffset, 0.0)\n CanvasTextAlign.RIGHT -> ctx2D.translate(textSize.x - strokeOffset, 0.0)\n else -> ctx2D.translate(textSize.x / 2.0, 0.0)\n }\n\n for (i in lines.indices) {\n val line = lines[i]\n ctx2D.translate(0.0, attributes.font.size * (1.0 + lineSpacing) + strokeOffset)\n if (attributes.isOutlineEnabled) ctx2D.strokeText(line, 0.0, 0.0)\n ctx2D.fillText(line, 0.0, 0.0)\n }\n\n return canvas\n }\n\n /**\n * Returns the width and height of a specified text string considering the current typeFace and outline usage.\n * @param ctx2D Canvas rendering context\n * @param text The text string.\n * @param textAttributes Text font, size, color etc.\n * @returns A vector indicating the text's width and height, respectively, in pixels.\n */\n protected open fun textSize(ctx2D: CanvasRenderingContext2D, text: String, textAttributes: TextAttributes): Vec2 {\n if (text.isEmpty()) Vec2()\n\n ctx2D.font = textAttributes.font.toString()\n\n val lines = text.split(\"\\n\")\n var height = lines.size * (textAttributes.font.size * (1.0 + lineSpacing))\n var maxWidth = 0.0\n for (i in lines.indices) maxWidth = maxWidth.coerceAtLeast(ctx2D.measureText(lines[i]).width)\n\n if (textAttributes.isOutlineEnabled) {\n maxWidth += textAttributes.outlineWidth\n height += textAttributes.outlineWidth\n }\n\n return Vec2(maxWidth, height)\n }\n}","package earth.worldwind.render.image\n\nimport dev.icerock.moko.resources.ImageResource\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlinx.browser.document\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.collections.mutableMapOf\nimport kotlin.collections.set\n\n/**\n * Provides a mechanism for specifying images from a variety of sources. ImageSource retains the image source on behalf\n * of the caller, making this information available to WorldWind components that load images on the caller's behalf.\n *
\n * ImageSource supports following source types:\n * - Uniform Resource Locator [URL]\n * - [Image] object\n * - WorldWind [ImageSource.ImageFactory]\n * - Multi-platform resource identifier\n *
\n * ImageSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded images. Images are compared by reference. URLs with the same string representation considered equals.\n */\nactual open class ImageSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n protected val lineStippleFactories = mutableMapOf()\n /**\n * Constructs an image source with a multi-platform resource identifier.\n *\n * @param imageResource the multi-platform resource identifier\n *\n * @return the new image source\n */\n actual fun fromResource(imageResource: ImageResource) = ImageSource(imageResource)\n\n /**\n * Constructs an image source with an [Image]. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param image the [Image] to use as an image source\n *\n * @return the new image source\n */\n fun fromImage(image: Image) = ImageSource(image)\n\n /**\n * Constructs an image source with a [ImageFactory]. WorldWind shapes configured with an image factory image source\n * construct their images lazily, typically when the shape becomes visible on screen.\n *\n * @param factory the [ImageFactory] to use as an image source\n *\n * @return the new image source\n */\n fun fromImageFactory(factory: ImageFactory) = ImageSource(factory)\n\n /**\n * Constructs an image source with an [URL]. The image's dimensions should be no greater than 2048 x 2048.\n *\n * @param url Uniform Resource Locator\n *\n * @return the new image source\n */\n fun fromUrl(url: URL) = ImageSource(url.href)\n\n /**\n * Constructs an image source with a URL string. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param urlString complete URL string\n *\n * @return the new image source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ImageSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an image source with a line stipple pattern. The result is a one-dimensional image with pixels\n * representing the specified stipple factor and stipple pattern. Line stipple images can be used for displaying\n * dashed shape outlines. See [earth.worldwind.shape.ShapeAttributes.outlineImageSource].\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n *\n * @return the new image source\n */\n actual fun fromLineStipple(factor: Int, pattern: Short): ImageSource {\n val lFactor = factor.toLong() and 0xFFFFFFFFL\n val lPattern = pattern.toLong() and 0xFFFFL\n val key = lFactor shl 32 or lPattern\n val factory = lineStippleFactories[key] ?: LineStippleImageFactory(factor, pattern).also {\n lineStippleFactories[key] = it\n }\n return ImageSource(factory)\n }\n\n /**\n * Constructs an image source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ImageSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new image source\n */\n actual fun fromUnrecognized(source: Any) = when (source) {\n is ImageResource -> fromResource(source)\n is Image -> fromImage(source)\n is ImageFactory -> fromImageFactory(source)\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ImageSource(source)\n }\n }\n\n /**\n * Indicates whether this image source is a multi-platform resource.\n */\n val isResource get() = source is ImageResource\n /**\n * Indicates whether this image source is a [Image].\n */\n val isImage get() = source is Image\n /**\n * Indicates whether this image source is an image factory.\n */\n val isImageFactory get() = source is ImageFactory\n /**\n * Indicates whether this image source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source multi-platform resource identifier. Call isResource to determine whether the source is a\n * Multi-platform resource.\n */\n fun asResource() = source as ImageResource\n\n /**\n * @return the source [Image]. Call [isImage] to determine whether the source is a [Image].\n */\n fun asImage() = source as Image\n\n /**\n * @return the source [ImageFactory]. Call isImageFactory to determine whether the source is an image\n * factory.\n */\n fun asImageFactory() = source as ImageFactory\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when(source) {\n is ImageResource -> \"Resource: $source\"\n is Image -> \"Image: $source\"\n is ImageFactory -> \"ImageFactory: $source\"\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n\n /**\n * Factory for delegating construction of images. WorldWind shapes configured with a ImageFactory construct\n * their images lazily, typically when the shape becomes visible on screen.\n */\n interface ImageFactory {\n /**\n * Image factory runs asynchronously by default, but this behavior can be changed by overriding current attribute.\n */\n val isRunBlocking: Boolean get() = false\n\n /**\n * Returns the image associated with this factory. This method may be called more than once and may be called\n * from a non-UI thread. Each invocation must return an image with equivalent content, dimensions and\n * configuration. Any side effects applied to the WorldWind scene by the factory must be executed on the main\n * thread.\n *\n * @return the image associated with this factory\n */\n fun createImage(): TexImageSource?\n }\n\n protected open class LineStippleImageFactory(protected val factor: Int, protected val pattern: Short): ImageFactory {\n override fun createImage(): TexImageSource {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n canvas.width = if (factor <= 0) 16 else factor * 16\n canvas.height = 1\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n ctx2D.strokeStyle = \"white\"\n ctx2D.beginPath()\n if (factor <= 0) {\n ctx2D.moveTo(0.0, 0.5)\n ctx2D.lineTo(canvas.width.toDouble(), 0.5)\n } else {\n var offset = 0\n for (bi in 0..15) {\n val bit = pattern.toInt() and (1 shl bi)\n if (bit != 0) {\n ctx2D.moveTo(offset.toDouble(), 0.5)\n ctx2D.lineTo((offset + factor).toDouble(), 0.5)\n }\n offset += factor\n }\n }\n ctx2D.stroke()\n return canvas\n }\n\n override fun toString() = \"LineStippleCanvasFactory factor=$factor, pattern=\" + (pattern.toInt() and 0xFFFF).toString(16).uppercase()\n }\n\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.TexImageSource\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\n\nopen class ImageTexture(image: TexImageSource, width: Int, height: Int) : Texture(width, height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: TexImageSource? = image\n override val hasMipMap = isPowerOfTwo(width) && isPowerOfTwo(height)\n\n constructor(image: HTMLImageElement) : this(image, image.width, image.height)\n\n constructor(image: HTMLCanvasElement) : this(image, image.width, image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.Tile\nimport org.w3c.dom.Image\nimport org.w3c.dom.events.Event\n\nactual open class ImageTile actual constructor(\n sector: Sector, level: Level, row: Int, column: Int\n): Tile(sector, level, row, column), ResourcePostprocessor {\n actual var imageSource: ImageSource? = null\n actual var cacheSource: ImageSource? = null\n\n /**\n * Repeat image.onLoad event defined in RenderResourceCache to continue retrieval of original unprocessed image\n */\n override suspend fun process(resource: Resource): Resource {\n if (resource is Image) {\n resource.onload?.invoke(Event(\"load\"))\n }\n return resource\n }\n}","package earth.worldwind.util\n\n/**\n * Logs selected message types to the console.\n */\nactual object Logger {\n actual val ERROR = 1\n actual val WARN = 2\n actual val INFO = 3\n actual val DEBUG = 4\n\n /**\n * Indicates the current logging level [ERROR], [WARN], [INFO] or [DEBUG].\n */\n var loggingLevel = ERROR\n\n actual fun isLoggable(priority: Int) = priority in ERROR until loggingLevel\n\n actual fun log(priority: Int, message: String, tr: Throwable?) {\n if (isLoggable(priority)) {\n val messageWithTrace = tr?.run { message + '\\n' + stackTraceToString() } ?: message\n when (priority) {\n ERROR -> console.error(messageWithTrace)\n WARN -> console.warn(messageWithTrace)\n INFO -> console.info(messageWithTrace)\n else -> console.log(messageWithTrace)\n }\n }\n }\n\n actual fun logMessage(level: Int, className: String, methodName: String, message: String, tr: Throwable?) =\n makeMessage(className, methodName, message).also { log(level, it, tr) }\n\n actual fun makeMessage(className: String, methodName: String, message: String) =\n \"$className.$methodName: ${messageTable[message] ?: message}\"\n}","package earth.worldwind.util\n\n/**\n * JS use BasicPool instead of SynchronizedPool\n */\nactual class SynchronizedPool: BasicPool()","package earth.worldwind.util.kgl\n\nimport org.khronos.webgl.*\n\nactual data class KglShader(val obj: WebGLShader? = null) {\n actual companion object{ actual val NONE = KglShader() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglProgram(val obj: WebGLProgram? = null) {\n actual companion object{ actual val NONE = KglProgram() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglUniformLocation(val obj: WebGLUniformLocation? = null) {\n actual companion object{ actual val NONE = KglUniformLocation() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglBuffer(val obj: WebGLBuffer? = null) {\n actual companion object{ actual val NONE = KglBuffer() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglTexture(val obj: WebGLTexture? = null) {\n actual companion object{ actual val NONE = KglTexture() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglFramebuffer(val obj: WebGLFramebuffer? = null) {\n actual companion object{ actual val NONE = KglFramebuffer() }\n actual fun isValid() = obj != null\n}\n\nclass WebKgl(val gl: WebGLRenderingContext) : Kgl {\n\n override val hasMaliOOMBug = false\n\n override fun getParameteri(pname: Int): Int = gl.getParameter(pname) as Int\n\n override fun getParameterf(pname: Int): Float = gl.getParameter(pname) as Float\n\n override fun getParameteriv(pname: Int): IntArray = gl.getParameter(pname) as IntArray\n\n override fun getParameterfv(pname: Int): FloatArray = gl.getParameter(pname) as FloatArray\n\n override fun createShader(type: Int) = KglShader(gl.createShader(type))\n\n override fun shaderSource(shader: KglShader, source: String) = gl.shaderSource(shader.obj, source)\n\n override fun compileShader(shader: KglShader) = gl.compileShader(shader.obj)\n\n override fun deleteShader(shader: KglShader) = gl.deleteShader(shader.obj)\n\n override fun getShaderParameteri(shader: KglShader, pname: Int): Int {\n val value = gl.getShaderParameter(shader.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getProgramInfoLog(program: KglProgram): String = gl.getProgramInfoLog(program.obj) ?: \"\"\n\n override fun getShaderInfoLog(shader: KglShader): String = gl.getShaderInfoLog(shader.obj) ?: \"\"\n\n override fun createProgram() = KglProgram(gl.createProgram())\n\n override fun deleteProgram(program: KglProgram) = gl.deleteProgram(program.obj)\n\n override fun attachShader(program: KglProgram, shader: KglShader) = gl.attachShader(program.obj, shader.obj)\n\n override fun linkProgram(program: KglProgram) = gl.linkProgram(program.obj)\n\n override fun useProgram(program: KglProgram) = gl.useProgram(program.obj)\n\n override fun getProgramParameteri(program: KglProgram, pname: Int): Int {\n val value = gl.getProgramParameter(program.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getUniformLocation(program: KglProgram, name: String) =\n KglUniformLocation(gl.getUniformLocation(program.obj, name))\n\n override fun bindAttribLocation(program: KglProgram, index: Int, name: String) =\n gl.bindAttribLocation(program.obj, index, name)\n\n override fun createBuffer() = KglBuffer(gl.createBuffer())\n\n override fun bindBuffer(target: Int, buffer: KglBuffer) = gl.bindBuffer(target, buffer.obj)\n\n override fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int) {\n val len = size / 2\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun deleteBuffer(buffer: KglBuffer) = gl.deleteBuffer(buffer.obj)\n\n override fun vertexAttribPointer(\n location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int\n ) = gl.vertexAttribPointer(location, size, type, normalized, stride, offset)\n\n override fun enableVertexAttribArray(location: Int) = gl.enableVertexAttribArray(location)\n\n override fun disableVertexAttribArray(location: Int) = gl.disableVertexAttribArray(location)\n\n override fun enable(cap: Int) = gl.enable(cap)\n\n override fun disable(cap: Int) = gl.disable(cap)\n\n override fun uniform1f(location: KglUniformLocation, f: Float) =\n gl.uniform1f(location.obj, f)\n\n override fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 1\n gl.uniform1fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform1i(location: KglUniformLocation, i: Int) =\n gl.uniform1i(location.obj, i)\n\n override fun uniform2f(location: KglUniformLocation, x: Float, y: Float) =\n gl.uniform2f(location.obj, x, y)\n\n override fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 2\n gl.uniform2fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform2i(location: KglUniformLocation, x: Int, y: Int) =\n gl.uniform2i(location.obj, x, y)\n\n override fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float) =\n gl.uniform3f(location.obj, x, y, z)\n\n override fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 3\n gl.uniform3fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int) =\n gl.uniform3i(location.obj, x, y, z)\n\n override fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float) =\n gl.uniform4f(location.obj, x, y, z, w)\n\n override fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 4\n gl.uniform4fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int) = gl.uniform4i(location.obj, x, y, z, w)\n\n override fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 9\n gl.uniformMatrix3fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 16\n gl.uniformMatrix4fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun lineWidth(width: Float) = gl.lineWidth(width)\n\n override fun polygonOffset(factor: Float, units: Float) = gl.polygonOffset(factor, units)\n\n override fun cullFace(mode: Int) = gl.cullFace(mode)\n\n override fun frontFace(mode: Int) = gl.frontFace(mode)\n\n override fun depthFunc(func: Int) = gl.depthFunc(func)\n\n override fun depthMask(mask: Boolean) = gl.depthMask(mask)\n\n override fun blendFunc(sFactor: Int, dFactor: Int) = gl.blendFunc(sFactor, dFactor)\n\n override fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean) = gl.colorMask(r, g, b, a)\n\n override fun viewport(x: Int, y: Int, width: Int, height: Int) = gl.viewport(x, y, width, height)\n\n override fun clear(mask: Int) = gl.clear(mask)\n\n override fun clearColor(r: Float, g: Float, b: Float, a: Float) = gl.clearColor(r, g, b, a)\n\n override fun createTexture() = KglTexture(gl.createTexture())\n\n override fun deleteTexture(texture: KglTexture) = gl.deleteTexture(texture.obj)\n\n override fun texImage2D(\n target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?\n ) = gl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer?.unsafeCast())\n\n override fun activeTexture(texture: Int) = gl.activeTexture(texture)\n\n override fun bindTexture(target: Int, texture: KglTexture) = gl.bindTexture(target, texture.obj)\n\n override fun generateMipmap(target: Int) = gl.generateMipmap(target)\n\n override fun texParameteri(target: Int, pname: Int, value: Int) = gl.texParameteri(target, pname, value)\n\n override fun drawArrays(mode: Int, first: Int, count: Int) = gl.drawArrays(mode, first, count)\n\n override fun drawElements(mode: Int, count: Int, type: Int, offset: Int) = gl.drawElements(mode, count, type, offset)\n\n override fun getError() = gl.getError()\n\n override fun finish() = gl.finish()\n\n override fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer) = gl.bindFramebuffer(target, framebuffer.obj)\n\n override fun createFramebuffer() = KglFramebuffer(gl.createFramebuffer())\n\n override fun deleteFramebuffer(framebuffer: KglFramebuffer) = gl.deleteFramebuffer(framebuffer.obj)\n\n override fun checkFramebufferStatus(target: Int) = gl.checkFramebufferStatus(target)\n\n override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int) =\n gl.framebufferTexture2D(target, attachment, textarget, texture.obj, level)\n\n override fun readPixels(\n x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray\n ) = gl.readPixels(x, y, width, height, format, type, Uint8Array(buffer.unsafeCast().buffer))\n\n override fun pixelStorei(pname: Int, param: Int) = gl.pixelStorei(pname, param)\n}\n","package earth.worldwind.util.locale\n\nimport kotlinx.browser.window\n\nactual val language = window.navigator.language.split('-')[0]\nactual val country = window.navigator.language.split('-')[1]",null,null,null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.Instant\n\nactual fun convertToInstant(t: Any) = when(t) {\n is kotlin.js.Date -> Instant.fromEpochMilliseconds(t.getTime().toLong())\n else -> throw IllegalArgumentException(\"Can't convert to LocalDateTime: $t\")\n}\n",null,"package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\n\n/**\n * Represents transformations between geographic coordinates and Cartesian coordinates. GeographicProjection specifies\n * the Cartesian coordinate system used by Globe and WorldWindow.\n */\ninterface GeographicProjection {\n /**\n * This projection's display name.\n */\n val displayName: String\n /**\n * Indicates whether this projection is a 2D projection.\n */\n val is2D: Boolean get() = false\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous: Boolean get() = false\n /**\n * Indicates the geographic limits of this projection.\n * May be null to indicate the full range of latitude and longitude.\n */\n val projectionLimits: Sector? get() = null // Sector().setFullSphere()\n\n /**\n * Converts a geographic position to Cartesian coordinates.\n *\n * @param globe the globe this projection is applied to\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3\n\n fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3\n\n fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4\n\n fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?,\n verticalExaggeration: Float, origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray\n\n fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray\n\n /**\n * Converts a Cartesian point to a geographic position.\n *\n * @param globe Globe model\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position\n\n fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4\n\n /**\n * Computes the first intersection of a specified globe and line. The line is interpreted as a ray; intersection\n * points behind the line's origin are ignored.\n *\n * @param globe the globe this projection is applied to\n * @param line the line to intersect with the globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(globe: Globe, line: Line, result: Vec3): Boolean\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.TileFactory\n\ninterface MercatorTileFactory : TileFactory {\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) =\n MercatorImageTile(sector as MercatorSector, level, row, column).apply {\n imageSource = getImageSource(column, (1 shl level.levelNumber) - 1 - row, level.levelNumber)?.also {\n it.postprocessor = this\n }\n }\n\n fun getImageSource(x: Int, y: Int, z: Int): ImageSource?\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.render.Renderable\n\n/**\n * Interface for processing user input to interact with renderables.\n */\ninterface SelectDragCallback {\n /**\n * Nothing was picked due to picking point is outside the terrain.\n */\n fun onNothingPicked() {}\n\n /**\n * Nothing context was requested due to selected point is outside the terrain.\n */\n fun onNothingContext() {}\n\n /**\n * Terrain position was picked.\n *\n * @param position picked terrain position\n */\n fun onTerrainPicked(position: Position) {}\n\n /**\n * Terrain context at some position was requested.\n *\n * @param position picked terrain position\n */\n fun onTerrainContext(position: Position) {}\n\n /**\n * Check if renderable is pick-able.\n *\n * @param renderable some renderable intended to be picked\n * @return renderable is pick-able\n */\n fun canPickRenderable(renderable: Renderable) = false\n\n /**\n * Some renderable was picked.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderablePicked(renderable: Renderable, position: Position) {}\n\n /**\n * Some renderables context was requested.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderableContext(renderable: Renderable, position: Position) {}\n\n /**\n * Check if picked renderable is movable.\n *\n * @param renderable picked renderable\n * @return picked renderable is movable\n */\n fun canMoveRenderable(renderable: Renderable) = false\n\n /**\n * Renderable was moved from ane position to another.\n *\n * @param renderable picked renderable which is moving\n * @param fromPosition previous position\n * @param toPosition current position\n */\n fun onRenderableMoved(renderable: Renderable, fromPosition: Position, toPosition: Position) {}\n\n /**\n * Renderable movement was finished\n *\n * @param renderable renderable which was moved\n * @param position last position during movement\n */\n fun onRenderableMovingFinished(renderable: Renderable, position: Position) {}\n\n /**\n * Renderable was double-tapped or double-clicked\n *\n * @param renderable renderable which was double-tapped or double-clicked\n * @param position picked terrain or renderable center position\n */\n fun onRenderableDoubleTap(renderable: Renderable, position: Position) {}\n}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(960);\n"],"names":["root","factory","exports","module","define","amd","this","createErrorType","name","init","superErrorClass","JsJodaException","message","Error","captureStackTrace","constructor","stack","apply","arguments","toString","prototype","Object","create","DateTimeException","cause","msg","DateTimeParseException","text","index","parsedString","errorIndex","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","_inheritsLoose","subClass","superClass","__proto__","_assertThisInitialized","self","ReferenceError","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","assert$1","freeze","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","matches","RegExp","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","nanoString","rval","slice","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","prop","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","MONTHS","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","valueOf","dayOfWeek","style","locale","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","p1","p2","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","date","time","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","_ch","ap","hap","nod","cod","lod","sod","mod","los","cos","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","year","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","PARSER","PARSER$1","PARSER$2","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","UTC","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","MAX_WIDTH$1","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","_zeroSecs","_hi","_lo","_ldt","div","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","day","hour","secVal","nanoVal","sec","toEpochSecond","StringBuilder","_str","end","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","MonthDay","dayOfMonth","_month","_day","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","MAX_VALUE","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","f","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","withOffsetSameLocal","compare","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN_VALUE","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","used","jsJodaExports","use","fn","otherFormats","mainFormat","item","others","main","onZero","padding","structure","","isoDayNumber","receiver","timeZoneId","$this$Format","$this$alternativeParsing","$this$optional","contents","year$factory","monthNumber$factory","dayOfMonth$factory","hour$factory","hourOfAmPm$factory","amPm$factory","minute$factory","second$factory","isNegative$factory","totalHoursAbs$factory","minutesOfHour$factory","secondsOfMinute$factory","timeZoneId$factory","actualBuilder","actualFormat","reference","","ifZero","alternativeFormats","primaryFormat","monthNumber","isoDayOfWeek","names","element","ix2","isYearOfEra","$this$build","hourOfAmPm","amPm","nanosecond","zerosToAdd","totalHoursAbs","minutesOfHour","secondsOfMinute","spacePadding","outputPlusOnExceededWidth","NamedUnsignedIntFieldFormatDirective$getStringValue$ref","NamedUnsignedIntFieldFormatDirective$getStringValue$ref$lambda","target","getStringValue","accessor","defaultValue","property","minValue","maxValue","formats","directive","string","withPlusSign","Accessor$getter$ref","Accessor$getter$ref$lambda","Truth$test$ref","Truth$test$ref$lambda","$this_buildList","expectedValue","getter","predicates","allSubFormatsNegative","alwaysOutputSign","formatters","zeroPadding","setter","expected","whatThisExpects","conflicting","multiplyByMinus1","input","initialContainer","startIndex","errors","parseOptions","state","inputPosition","parserStructure","ix","commands","operations","followedBy","accumulator","iterator","unconditionalModifications","newOperations","currentNumberSpan","unconditionalModificationsForTails","op","simplified","list","mergedTails","firstOperation","it","withMinus","minNumberLength","maxNumberLength","maxPaddedNumberLength","accumulated","accumulatedWidth","prepadding","children","isTerminal","trie","newChildren","child","grandChildKey","grandChild","StringSetParserOperation$lambda","strings","node","searchResult","","consumerLengths","$numberString","$i","$error","consumers","sum","$input","$startIndex","isNegativeSetter","operation","$withMinus","$setter","$name","fractionalPart","digits","ofZone","zoneOffset","DateTimeFormatException_init_$Init$","DateTimeArithmeticException_init_$Init$","IllegalTimeZoneException_init_$Init$","","block","truncatedDate","secDelta","epochDays","intermediate","matched","String$toString$ref$lambda","Accessor$getterNotNull$ref","Accessor$getterNotNull$ref$lambda","plusOnExceedsWidth","parsers","container","oldValue","suffix","wasNegative","SignedFormatStructure$formatter$checkIfAllNegative$ref$lambda","this$0","seenNonZero","check","default","Predicate$test$ref","predicate","Predicate$test$ref$lambda","storage","numerator","indexOfNextUnparsed","$index","nextIndex","$conflictingValue","$value","conflictingValue","lastMatch","digitsInRow","$digitsInRow","numberString","$char","newDigits","denominator","decoder","epochMilliseconds","epochSeconds","nanosecondAdjustment","q","timeZone","ResourcePlatformDetails","engine","AbstractTutorial","ElevationHeatmapLayer","Color","Ellipse","GKGraticuleLayer","MGRSGraticuleLayer","Path","listOf","Polygon","thickenLine","ShowTessellationLayer","SurfaceImage","scope","window","$currentTutorial","$tutorials","$actionsContainer","$wwd","document","getElementById","wwd","WorldWindow","tutorialSelect","projectionSelect","actionsContainer","tutorials","mapOf","BasicTutorial","CameraViewTutorial","LookAtViewTutorial","PlacemarksTutorial","PathsTutorial","PolygonsTutorial","EllipsesTutorial","ShapesDashAndFillTutorial","LabelsTutorial","SightlineTutorial","SurfaceImageTutorial","ShowTessellationTutorial","MGRSGraticuleTutorial","GKGraticuleTutorial","WmsLayerTutorial","WmtsLayerTutorial","WcsElevationTutorial","ElevationHeatmapTutorial","projections","Wgs84Projection","MercatorProjection","currentTutorial","BackgroundLayer","StarFieldLayer","AtmosphereLayer","BasicElevationCoverage","innerHTML","onchange","event","$projections","actionName","$actionName","onclick","tutorial","projectionName","setCameraAction","aircraft","airport","heading","distanceMeters","tilt","LookAt","setLookAtAction","altitude","Position","positionView","mtRainier","eye","distance","$this$launch","$completion","launch","renderable","FileResource","identifier","userObject","layer","terrainPosition","po","MutableSharedFlow","asSharedFlow","gl","renderResourceCache","globe","tessellator","frameController","frameMetrics","Globe","BasicTessellator","BasicFrameController","LayerList","Camera","GoToAnimator","RenderContext","DrawContext","initLocation","initAltitude","BufferPool","VertexAttrib","DrawElements","lhs","rhs","DrawShapeState","bindTexture","dc","BoundingBox","DrawableQueue","inDegrees","angle","degrees","radians","coerceIn","adjustExtremes","rExtremes","s","sExtremes","t","tExtremes","p","pdr","pds","pdt","swapAxes","aExtremes","bExtremes","tmp","intersectsAt","plane","effectiveRadius","dq1","bq1","bq2","z","Vec3","Ellipsoid","semiMajorAxis","inverseFlattening","Frustum_init_$Init$","Viewport","Line_init_$Init$","Location_init_$Init$","latitude","longitude","LookAt_init_$Init$","altitudeMode","roll","Matrix3_init_$Init$","Matrix4_init_$Init$","xUnits","yUnits","Position_init_$Init$","Location","Range_init_$Init$","lower","upper","Sector_init_$Init$","sector","minLatitude","maxLatitude","minLongitude","maxLongitude","matrixWidth","matrixHeight","tileWidth","tileHeight","entries","Vec2_init_$Init$","Vec3_init_$Init$","Vec2","Viewport_init_$Init$","height","HelmertParameters","dX","dY","dZ","omegaX","omegaY","omegaZ","fromEllipsoid","toEllipsoid","MGRSString","convertUTMToMGRS","easting","northing","gridEasting","gridNorthing","east","north","letters","roundMGRS","getGridValues","setNumber","aaPattern","errorCode","getLatitudeLetter","latDeg","makeMGRSString","floorValue","intValue","j","iEast","sEast","iNorth","sNorth","hemisphere","PolarCoordConverter","ellipsoid","projection","ElevationModel","LruMemoryCache","$key","$tileMatrix","$row","$column","tileMatrixSet","elevationSourceFactory","AbstractElevationCoverage","AbsentResourceList","MainScope","serviceAddress","coverageName","outputFormat","resolution","buildTileMatrixSet","buildElevationSourceFactory","coverage","imageFormat","tiles","triStripElements","toList","level","row","column","$level","Tile","lazy","tiledSurfaceImage","RenderableLayer","imageSource","imageOptions","ImageOptions","surfaceImage","AbstractLayer","asInt","AbstractShaderProgram","AbstractAtmosphereProgram","greatCircleIntersectionAtLongitude","deltaLon","getDeltaLongitude","midPoint","greatCircleMidPoint","greatCircleIntersectionAtLatitude","azimuth","GraticuleSupport","AbstractTile","initRenderingParams","params","applyRenderingParams","opacity","o","color","applyOpacity","compArray","colorValue","path","getLineShapeAttributes","createLineShapeAttributes","attrs","lineWidth","getVisibleTiles","rc","tileList","vs","gridRectangle","getGridRectangleForSector","x1","x2","col","tile","callback","rows","cols","factor","toWgsParameters","fromWgsParameters","AbstractGraticuleLayer","GridTilesSupport","GKOverview","GKMetricLabels","renderLabel","appropriateType","label","shouldRenderLabel","shouldRenderSmallScale","shouldRenderMinimalScale","getTypeWithBiggerScale","generateMeridiansAndParallels","shouldGenerateMeridian","generateWestMeridian","minLon","minLat","latStep","positions","westLine","GridElement","shouldGenerateParallel","generateNorthParallel","lonStep","northLine","gkSector","tileType","previousName","countInParent","childNumber","AbstractGraticuleTile","getMillionNameByCoord","addLabel","point","labelType","labelBy","rowOrCol","takeLast","createLine","firstPosition","nextPosition","lineWithIntersection","intersectPoint","anotherPoint","startPoint","movedByXPoint","lineX","mutableListOf","getTypeLine","intersect","point1","point2","x3","y3","x4","y4","getWGSPositionFromXY","minXMinY","minXMaxY","maxXMaxY","maxXMinY","ZoneExtremes","removeLabels","yLabel","checkIfOutOfZone","xLabel","getTypeBy","shouldClean","isNotInScale","tooFar","getDistanceBy","scaleModulo","maxResolution","selectMGRSRenderables","getVisibleZones","zoneList","rectangle","coerceAtLeast","maxLat","gridSector","getGridColumn","y1","getGridRow","y2","MGRSGridZone","coerceAtMost","getGridSector","maxLon","AbstractUTMGraticuleLayer","MGRSOverview","setSquareName","sz","tenMeterDegree","mgrs","utm","","isPointInRange","altitudeAboveGround","UTMZone","UTMZoneSector","SWEasting","SWNorthing","UTMSquareSector","","adjustDateLineCrossingPoints","corners","locationsCrossDateLine","locations","posNext","delta","lonSign","corner","boundingSector","lat","lon","Sector","isNorthNeighborInView","isEastNeighborInView","ImageTile","getX","getY","getTilesX","tileDelta","getTilesY","minLatPercent","maxLatPercent","TiledImageLayer","tileFactory","levelSet","TiledSurfaceImage","isTransparent","MercatorTiledImageLayer","$urlParts","$randomValue","$randomValues","seen1","datatype","arraysize","ucd","serializationConstructorMarker","metadata","data","starDataSource","TiledElevationCoverage","coordinateSystem","$wmsTileFactory","serviceMetadata","layerName","layerNames","decodeWmsCapabilities","xmlText","withContext","$this$withContext","createWmsImageLayer","wmsLayers","WmsImageLayer","joinToString","createWmsSurfaceImage","layerLimit","wmsLayerConfig","levelSetConfig","config","$this$$receiver","$xmlText","lc","l","wmsVersion","styleNames","decodeWmtsCapabilities","createWmtsImageLayer","wmtsLayer","WmtsImageLayer","createWmtsSurfaceImage","determineCompatibleTileMatrixSet","tileMatrixSets","directAxisOrder","tileMatrices","minX","maxY","scaleDenominator","previousHeight","previousWidth","previousCorner","tileMatrix","topLeftCorner","toDouble","createWmtsTileFactory","w","resourceUrl","WmtsTileFactory","baseUrl","determineKvpUrl","dcp","getMethods","constraints","styleIdentifier","buildWmtsKvpTemplate","kvpServiceAddress","createWmtsLevelSet","pixelSpan","tileSpanX","tileSpanY","maxX","minY","deltaX","deltaY","template","tileMatrixIdentifiers","firstLevelHeight","title","onlineResource","logoURL","CRS","minx","maxx","miny","maxy","resx","resy","version","updateSequence","service","capability","request","layers","exception","emptyList","WmsException","addressType","address","city","stateOrProvince","postCode","country","voiceTelephone","facsimileTelephone","electronicMailAddress","contactAddress","contactPersonPrimary","contactPerson","contactOrganization","post","http","unitSymbol","multipleValues","nearestValue","south","west","authority","abstract","keywordList","_styles","_referenceSystems","_geographicBoundingBox","_boundingBoxes","_dimensions","_attribution","_authorityUrls","identifiers","metadataUrls","dataUrls","featureListUrls","_maxScaleDenominator","_minScaleDenominator","isQueryable","_cascaded","isOpaque","isNoSubsets","_fixedWidth","_fixedHeight","url","getCapabilities","getMap","getFeatureInfo","dcpType","fees","accessConstraints","contactInformation","maxHeight","legendUrls","styleSheetUrl","styleUrl","deliveryPoints","administrativeArea","postalCode","electronicMailAddresses","crs","lowerCorner","upperCorner","allowedValues","phone","hoursOfService","contactInstructions","postMethods","dcps","voice","fax","individualName","positionName","contactInfo","role","keywords","serviceType","serviceTypeVersions","providerName","serviceContact","serviceIdentification","serviceProvider","operationsMetadata","themes","serviceMetadataUrls","unitOfMeasure","valueDefault","boundingBoxes","wgs84BoundingBox","styles","infoFormats","tileMatrixSetLinks","resourceUrls","dimensions","resourceType","isDefault","layerRefs","tileMatrixIdentifier","minTileRow","maxTileRow","minTileCol","maxTileCol","supportedCrs","wellKnownScaleSet","boundingBox","tileMatrixSetLimits","AbstractRenderable","Color_init_$Init$","red","green","blue","alpha","attributes","TextRenderer","TextCacheKey","isRT","byteCount","appendBuffer","allocNewBuffer","usage","blockSize","blockCount","AbstractBufferObject","imageConfig","center","majorRadius","minorRadius","AbstractShape","RenderData","BoundingSphere","PlacemarkAttributes_init_$Init$","imageColor","imageOffset","imageScale","minimumImageScale","isDrawLabel","isDrawLeader","isDepthTest","labelAttributes","leaderAttributes","GLUtessellatorCallbackAdapter","ShapeAttributes_init_$Init$","isDrawInterior","isDrawOutline","isDrawVerticals","isDepthWrite","isLightingEnabled","interiorColor","outlineColor","outlineWidth","interiorImageSource","outlineImageSource","AbstractSurfaceRenderable","TextAttributes_init_$Init$","font","textColor","textOffset","isOutlineEnabled","maxTrys","minCheckInterval","source","levelNumber","roundToInt","tileOrigin","firstLevelDelta","numLevels","levelOffset","Level","capacity","lowWater","declination","rightAscension","keepWidth","roundUp","","nextDigit","pointPos","mb","","","","invalidFormat","","createTimeField","upperCase","tz","offsetAt","createIntegerField","insertField","createHexField","createOctalField","createCharacter","endStage","setDone","toInt","endStage$default","padStart","padEnd","insertField$default","createFloat","fractionPartLength","roundToLong","fl","rest","fractionalFormat","createScientific","ExponentFormatter","createAutoFloat","args","StringFormat","eUp","head","frame","leq","GLUvertex","GLUface","GLUhalfEdge","makeDormant","requireState","newState","gotoState","addVertex","coords","vertexData","flushCache","vertex","CachedVertex","dot","u","v","PriorityQ","PQnode","PQhandleElem","lt","swap","PriorityQHeap","FaceCount_init_$Init$","eStart","render","marked","addToTrail","freeTrail","isEven","RenderFan","RenderStrip","RenderTriangle","addWinding","eDst","eSrc","regionBelow","regionAbove","$tess","connectTimeout","requestTimeout","HttpClient","$config","$connectTimeout","$requestTimeout","$this$HttpClient","$this$install","$this$null","unitSquareTransform","modulus","WorldWindowController","EventListener","keyCode","preventDefault","tabIndex","focus","canvas","cacheCapacity","WorldWind","WebKgl","RenderResourceCache","BasicWorldWindowController","KeyboardControls","SelectDragDetector","Frame","preventDefaultListener","onGestureEvent","navigator","maxTouchPoints","setProperty","addEventListener","statusMessage","keyId","tiffTagLocation","valueOffset","parseBlock","returnElevation","compression","bytesPerPixel","blockByteCount","blockOffset","bitsPerSample","sampleFormat","parseUncompressedBlock","byteOffset","pixel","bytesPerSample","sampleOffset","parsePackBitsCompressedBlocks","arrayBuffer","Int8Array","uncompressedDataView","DataView","buffer","newBlock","blockLength","numOfIterations","uncompressedOffset","nextSourceByte","getInt8","currentByte","setInt8","geoTiffImageToPCS","xValue","yValue","parseImageFileDirectory","noOfDirectoryEntries","directoryEntries","tag","TiffIFDEntry","nextIfdOffset","GeoTiffMetadata","getEndianness","isTiffFileType","getMetadataFromImageFileDirectory","ifd","parseGeoKeys","isGeoTiff","getIFDByTag","geoKeyDirectory","numberOfKeys","GeoTiffKeyEntry","setBBox","upperLeft","upperRight","lowerLeft","geoTiffData","isLittleEndian","GestureRecognizer","clientX","clientY","DragRecognizer","PanRecognizer","changedTouches","pickPoint","pickList","redrawRequired","highlighted","topPickedObject","recognizer","toPosition","fromPosition","clapToGround","movePoint","ClickRecognizer","TapRecognizer","controller","AbstractSource","decodeTiffImage","$arrayBuffer","AbstractTiledElevationCoverage","AbstractTiledImageLayer","createElement","getContext","willReadFrequently","$resource","URL","createObjectURL","onerror","resource","AbstractMercatorImageTile","Font_init_$Init$","family","weight","variant","horizontalAlignment","$imageSource","$options","$result","$fileResource","$postprocessor","$image","$postprocessorExecuted","postprocessor","revokeObjectURL","src","image","Texture","isPowerOfTwo","BasicPool","KglShader","KglProgram","KglUniformLocation","KglBuffer","KglTexture","KglFramebuffer","language","Plane_init_$Init$","TileMatrixSet_init_$Init$","LevelSet_init_$Init$","PickedObject","positionCopy","r8","g8","b8","pickedObject","lookAtPosition","cameraPosition","lookAt","elevation","sinFovY2","radius","pickMode","isRedrawRequested","modelview","eyeAltitude","far","maxDepthValue","near","distanceToSurface","tanHalfFov","maxNearDistance","pool","instance","BasicDrawableTerrain","attribLocation","bufferBound","colorAttachment","depthAttachment","fill","framebuffer","program","textureUnit","texture","textureUnitIndex","pixelCount","pixelBuffer","packAlignment","resultSet","idx","matrix","mode","prim","DrawableHeatmap","terrain","terrainOrigin","DrawableLines","drawable","groupId","order","depth","increment","newEntries","entry","sortWith","DrawableScreenTexture","that","DrawableShape","DrawableSightline","depthTexture","DrawableStarField","sunBuffer","sunTexture","DrawableSurfaceColor","DrawableSurfaceShape","scratchList","terrainSector","shapeCount","shape","primIdx","DrawableSurfaceTexture","textureSector","texCoordMatrix","usingTerrainAttrs","DrawableTessellation","globeOffset","pickedObjectId","BasicShaderProgram","pickRay","pickedObjects","pickViewport","pickPointOnly","objectFound","topObjectId","topObject","terrainObject","normalizedLat","a1","a2","stride","rMin","rMax","sMin","sMax","tMin","tMax","rLen","sLen","tLen","rSum","sSum","tSum","cx","cy","cz","rx2","ry2","rz2","minHeight","heights","points","centroidLat","centroidLon","minDist2","dist2","frustum","coherentPlane","nr","viewport","subViewport","bln","blf","brn","brf","tln","tlf","trn","trf","left","right","bottom","top","mvpInv","va","vb","nl","nb","nt","nn","nf","pointA","pointB","elements","vx","vy","vz","sx","sy","epsilon","vert1x","vert1y","vert1z","vert2x","vert2y","vert2z","vert0x","vert0y","vert0z","edge1x","edge1y","edge1z","edge2x","edge2y","edge2z","px","py","pz","det","invDet","tx","ty","qx","qy","qz","latitudeDegrees","longitudeDegrees","offsetSec","offsetIn","offsetHours","latDegrees","lonDegrees","latitudeRadians","longitudeRadians","location","lat1","lon1","lat2","lon2","azimuthRadians","lat1Radians","lon1Radians","lat2Radians","lon2Radians","c","distanceRadians","latRadians","lonRadians","cosLat","sinLat","cosAzimuth","sinAzimuth","sinDistance","cosDistance","endLatRadians","endLonRadians","dLon","dPhi","dLat","xScale","yScale","dst","srcDeltaLat","srcDeltaLon","dstDeltaLat","dstDeltaLon","xs","ys","xt","yt","ma","ma0","ma1","ma2","contentEquals","contentHashCode","A","vv","big","k","dum","imax","ii","ip","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","zScale","viewportWidth","viewportHeight","vFieldOfView","nearDistance","farDistance","aspect","nearHeight","nearWidth","mx","my","mz","c11","c22","c33","c12","c13","c23","numPoints","dx","dy","dz","ma3","mr1","mr2","mr3","mr4","depthOffset","cr","sr","sh","ct","st","result1","result2","result3","u2","u2p1","i1","i2","i3","itemp","sw","nearResult","farResult","mw","nx","ny","nz","nw","fx","fy","fz","fw","Offset","vector","da","db","line","lDotV","magnitude","minLatDegrees","minLonDegrees","deltaLatDegrees","deltaLonDegrees","maxLatDegrees","maxLonDegrees","empty","deltaLatitudeDegrees","deltaLongitudeDegrees","lOrd","toLong","lRow","lCol","deltaLat","TileMatrix","TileMatrixSet","nearestIdx","nearestDelta2","delta2","converter","GKCoordConverter","GKCoord","nPow2","nPow3","e0","pLat","sinLatPow2","cosLatPow3","cosLatPow5","tanLat","tanLatPow2","tanLatPow4","n2","iii","iiia","iv","V","VI","l0","beta","cosBeta","cos2beta","bx","cosBx","cos2Bx","sinBx","sin2Bx","a22","a24","a26","a28","b13","b15","b17","b19","parameters","fromGlobe","toGlobe","fromCartesian","toCartesian","MGRSCoordConverter","err","MGRSCoord","ups","convertUPSToMGRS","falseEasting","falseNorthing","ltr2LowValue","invF","es2","sLat","esSin","powEs","cLat","onePlusEs","oneMinusEs","dLam","rho","Easting","Northing","tempPhi","minEasting","maxEasting","minNorthing","phi","sinPhi","aOrNull","fOrNull","originLatitude","centralMeridian","TMCoordConverter","TMCoord","scaleFactor","cm","tn","tn2","tn3","tn4","tn5","tempLong","tempOrigin","c3","c5","c7","tan2","tan4","tan6","eta","eta2","eta3","eta4","sn","tmd","t1","t2","t3","t4","t5","t6","t7","t8","t9","ftphi","t10","de","t11","t12","t13","t14","t15","t16","t17","UPSCoordConverter","UPSCoord","UTMCoordConverter","UTMCoord","tempZone","tm","State","ec2","numLat","numLon","verticalExaggeration","origin","rowOffset","rowStride","retrieve","maxTimestamp","timestamp","gridWidth","gridHeight","cancelChildren","targetIdx","x0","y0","x0y0","x1y0","x0y1","x1y1","xf","yf","targetPixelSpan","tileBlock","TileBlock","rasterWidth","rasterHeight","matrixMinLat","matrixMaxLat","matrixMinLon","matrixMaxLon","matrixDeltaLat","matrixDeltaLon","uIdx","i0","fract","col0","col1","vIdx","j0","row0","row1","tileArray","intersection","uMin","uMax","colMin","colMax","vMin","vMax","rowMin","rowMax","rIdx","hIdx","j1","wIdx","i0j0","i1j0","i0j1","i1j1","iMin","iMax","jMin","jMax","rowJMin","rowJMax","colIMin","colIMax","texel","ecc","vec","eqr","minLatLimit","maxLatLimit","minLonLimit","maxLonLimit","elevIndex","xOffset","yOffset","zOffset","rowIndex","latIndex","colIndex","lonIndex","resultIndex","skip","phiLast","lambda","cosLon","sinLon","rpm","eqr2","pol2","ux","uy","uz","ey","ez","hgt","h","zpx","zpxSqrt","ra2","e4","evoluteBorderTest","rad1","rad2","rad","rad3","aTan","dpySqrt","s2","m2","found","sf","tf","si","ti","tileRowStride","i00","i10","i01","i11","f00","f10","f01","f11","levelNumberDepth","minLevelNumber","TerrainTile","BasicTerrain","childs","vertexTexCoords","lineElements","FloatBufferObject","ds","tIdx","sIdx","toShort","ve","borderHeight","invWavelength","g","kr","km","fragMode","direction","eyePoint","equatorialRadius","atmosphereAltitude","ar","lightLocation","SkyProgram","GroundProgram","altitudes","ShortBufferObject","DrawableGroundAtmosphere","nightTexture","textureBound","DrawableSkyAtmosphere","renderingParams","paramsKey","needsToUpdate","labelOffset","pathType","surfacePoint","p1In","p2In","outPoint","inPoint","sectors","viewingVector","normalVector","GraticuleRenderingParams","GKGraticuleTile","isZeroOrMinimalValue","distanceToTile","enableRenderingForChildTile","typeWithBiggerScale","ge","renderMetricGraticule","shouldCreateSubTile","createSubTiles","newType","subTiles","subTile","createLabels","labelPos","createMetricGraticule","squares","b1","b2","determinant","previousScaleName","get500kPrefix","rowFromTop","num","get200kPrefix","get100kPrefix","get50kPrefix","countOf100Maps","get25kPrefix","countOf50Maps","get10kPrefix","lineType","xMinZone","xMaxZone","yMinZone","yMaxZone","firstRow","lastRow","firstCol","lastCol","createLinesAndLabels","startX","nextX","startY","nextY","movedByYPoint","createYLineThatIntersectCorners","firstY","lastX","intersectWest","lastY","intersectEast","labelLineIntersectionPoint","eastingOffset","northOffset","centerGK","centerXY","Pair","getLabelType","getLabelId","coord","ew","gt","contains","zoneNumber","polyline","computePositionFromUTM","computePositionFromUPS","utmZone","utmZoneSector","maxNorthing","startEasting","startNorthing","squaresArray","UTMSquareZone","graticuleType","createSquaresUPS","createSquaresUTM","lineSector","endsWith","latitude1","latitude2","UTMExtremes","levelExtremes","labelEasting","labelNorthing","labelHemisphere","northingOffset","viewFrustum","gridStep","gridStepTimesTen","currentHemisphere","sb","createSubGrids","subGrids","sg","UTMSquareGrid","pA","pB","centerPoint","squareGrid","ElevationHeatmapProgram","limits","colors","dPercent","dLatPercent","firstRowPercent","firstColLon","d1","d2","MercatorSector","childLevel","d0","t0","northRow","southRow","westCol","eastCol","percent","tileSize","transparent","resultServerUrl","urlTemplate","urlParts","parseUrl","serverUrl","randomValue","removeSurrounding","split","WebMercatorImageLayer","starData","sunCelestialLocation","StarFieldProgram","indexes","positionIndex","starInfo","pointSize","raIndex","decIndex","magIndex","starMetaInfo","numDays","minMag","maxMag","urlString","tileSector","retrieveWmsCapabilities","wmsCapabilities","DefaultHttpClient","bodyAsText","matchingCoordinateSystems","wmsLayerCoordinateSystems","toMutableSet","toSet","WmsLayerConfig","imageFormats","layerCapabilities","LevelSetConfig","minScaleDenominator","layerCapability","minRadiansPerPixel","retrieveWmtsCapabilities","wmtsCapabilities","flipRow","regex","lowerValues","upperValues","userProperties","hsv","rr","gg","bb","attachment","currentFramebuffer","textureName","tanFov2","modelPoint","zOrder","cameraDistance","sortOrder","hasMipMap","widthPow2","powerOfTwoCeiling","bytesPerRow","heightPow2","param","currentTexture","currentBuffer","sourceData","enoughSpace","subAllocAndPopulate","bufferSize","currentProgram","fs","enable","sightline","visibleColor","occludedColor","screenX","screenY","drawableCount","highlightAttributes","minDistance2","distance2","metersPerPixel","intervals","topRange","Range","sideRange","elementBuffer","toShortArray","drawState","drawableLines","drawStateLines","TriangleShaderProgram","elementBufferKey","IntBufferObject","side","calculatedIntervals","sanitizedIntervals","spineCount","majorArcRadians","minorArcRadians","isStandardAxisOrientation","headingAdjustment","deltaRadians","globeRadius","arrayOffset","spineIdx","spineRadius","firstLoc","azimuthDegrees","arcRadius","loc","firstOrLast","vertPoint","isExtrudedSkirt","offsetVertexIndex","texCoord2d","maxRadius","subdivisions","subdivisionCount","actualRotation","boundingRectForUnitSquare","pixelSizeMeters","SightlineProgram","vertexCount","begin","numSubsegments","deltaDist","deltaAlt","dist","alt","extrudeVertex","pixelSize","Placemark","offsetX","offsetY","scaleX","scaleY","activeTexture","visibilityScale","absTilt","camera","actualTilt","labelTexture","vertexIndex","outData","polygonData","boundaryEdge","errnum","noIntermediatePoints","lineVertexCount","verticalVertexCount","tess","isIntermediate","addIndices","v0","v1","v2","errNum","errStr","newArray","SurfaceTextureProgram","retrieveCurrentLevel","currentAncestorTile","currentAncestorTexture","ancestorTile","ancestorTexture","cacheSource","isCacheOnly","isCacheAbsent","permanent","resourceId","timeSinceLastMark","latAbsDifference","lonAbsDifference","nearestLat","lonDifference","nearestLon","last","radiansPerPixel","degreesPerPixel","newEntry","oldEntry","spaceRequired","sortedEntries","ca","sortedWith","evicted","meanLongitude","meanAnomaly","eclipticLongitude","eclipticLongitudeRad","obliquityOfTheEcliptic","CelestialLocation","celestialLocation","GMST","dayFraction","firstRowLat","detailFactor","texelSize","nearestPoint","distanceToCamera","latMin","lonMin","latMid","lonMid","latMax","lonMax","childRow","childCol","childSector","child0","child1","child2","cache","cacheSize","fractionWidth","take","createStringField","Specification","reason","convertToInstant","which","aCallback","coords_offset","Dict","DictNode","dict","newNode","aNode","aDict","GLUtessellatorImpl","tooLarge","clamped","cacheVertex","mesh","printStackTrace","weights","gapL","gapR","o1","o2","z1","z2","eNext","eSym","ePrev","aONext","bONext","newVertex","eOrig","vNext","vPrev","newFace","fNext","fPrev","eDel","del","vDel","newOrg","fDel","newLface","newVertex1","newVertex2","eOrg","joiningLoops","joiningVertices","eDelSym","eNew","eNewSym","tempHalfEdge","GLUmesh","fHead","vHead","eHead","norm","maxVal","minVal","minVert","maxVert","tNorm","maxLen2","tLen2","area","computedNormal","sUnit","tUnit","PriorityQSort","curr","hCurr","hChild","hParent","keyNew","free","hMin","Stack","seed","piv","pqKeys","sortMin","heapMin","fOrig","trail","headSize","tailSize","eTail","edgeState","vn","vc","xc","yc","zc","xp","yp","zp","key1","key2","reg1","reg2","e1","reg","newEdge","org","regAbove","eNewUp","regNew","ActiveRegion","regFirst","regLast","regPrev","regUp","eFirst","eLast","eTopLeft","cleanUp","firstTime","isect","needed","orgUp","dstUp","orgLo","dstLo","weights1","weights2","regLo","eLo","orgMin","eBottomLeft","degenerate","vEvent","eTopRight","eLnext","pq","face","up","keepOnlyBoundary","defaultPrevented","forwardRadians","sideRadians","sinHeading","cosHeading","forwardMeters","sideMeters","headingDegrees","clientWidth","tiltDegrees","clientHeight","rotation","timeStamp","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","DOM_DELTA_PAGE","setTimeout","KeyboardControls$handlePan$ref","KeyboardControls$handlePan$ref$lambda","KeyboardControls$handleZoom$ref","KeyboardControls$handleZoom$ref$lambda","KeyboardControls$handleTilt$ref","KeyboardControls$handleTilt$ref$lambda","glAttrs","listener","$entry","handleEvent","bbox","getBoundingClientRect","clientLeft","clientTop","pickCenter","PickedObjectList","cancelAnimationFrame","devicePixelRatio","getExtension","requestAnimationFrame","isPickMode","drawingBufferWidth","drawingBufferHeight","stage","geoDoubleParamsValue","geoAsciiParamsValue","keyValue","elevations","parseTiles","tilesAcross","tilesDown","tileAcross","tileDown","tileIndex","xInTile","yInTile","sampleIndex","pixelSamples","flatten","parseStrips","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Uint32Array","Float64Array","numOfBytes","isSigned","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat64","getFloat32","allowAscii","getIFDEntryValueLongerThan4","ifdTypeLength","ifdValues","indexOffset","button","Click","touch","delay","pointerType","buttonBit","nextTouch","centroid","touchIdx","TouchWrapper","pointerId","newScale","touch0","touch1","newRotation","tap","tapCount","dirMask","ElevationSource","href","GeoTiffReader","fetch","ok","statusText","headers","widthDouble","heightDouble","drawImage","srcData","getImageData","dstData","createImageData","srcRow","putImageData","toBlob","deviceMemory","options","fileResource","Image","onload","crossOrigin","ratioW","ratioH","ratio","ImageTexture","ctx2D","textSize","lines","strokeOffset","textBaseline","textAlign","fillStyle","strokeStyle","lineCap","lineJoin","translate","strokeText","fillText","textAttributes","measureText","imageResource","ImageSource","lFactor","lPattern","beginPath","moveTo","lineTo","bi","stroke","UNPACK_PREMULTIPLY_ALPHA_WEBGL","texImage2D","Event","priority","tr","messageWithTrace","stackTraceToString","console","warn","info","log","className","pname","getParameter","createShader","shader","shaderSource","compileShader","deleteShader","getShaderParameter","getProgramInfoLog","getShaderInfoLog","createProgram","deleteProgram","attachShader","linkProgram","useProgram","getProgramParameter","getUniformLocation","bindAttribLocation","createBuffer","bindBuffer","subarray","bufferData","bufferSubData","deleteBuffer","vertexAttribPointer","enableVertexAttribArray","disableVertexAttribArray","cap","disable","uniform1f","uniform1i","uniform2f","uniform3f","arr","uniform3fv","uniform4f","uniform4fv","transpose","uniformMatrix3fv","uniformMatrix4fv","polygonOffset","frontFace","func","depthFunc","mask","depthMask","sFactor","dFactor","blendFunc","colorMask","createTexture","internalFormat","border","generateMipmap","texParameteri","drawArrays","drawElements","bindFramebuffer","createFramebuffer","textarget","framebufferTexture2D","readPixels","pixelStorei","Wcs100ElevationSourceFactory","LN2","O","relativeStart","relativeEnd","finalValue","TypedArray","asUint","taylor_2_bound","taylor_n_bound","searchString","subjectString","lastIndex","initial","collection","destination","pair","pairs","expectedSize","comparator","destinationOffset","endIndex","rangeSize","subrange","fromIndex","toIndex","newSize","ArrayList_init_$Init$","initialCapacity","rangeCheck","comparison","$comparator","endInclusive","median","leftIndex","rightIndex","leftValue","rightValue","internalMap","HashMap_init_$Init$","loadFactor","original","backing","$entryIterator","backingMap","HashSet_init_$Init$","computeHashSize","computeShift","hashSize","InternalHashMap_init_$Init$","","","registerModification","ensureExtraCapacity","shouldCompact","extraCapacity","spareCapacity","gaps","ensureCapacity","minCapacity","newHashSize","allocateValuesArray","curValuesArray","newValuesArray","rehash","compact","valuesArray","putRehash","probesLeft","findKey","findValue","addKey","tentativeMaxProbeDistance","probeDistance","putIndex","removeKeyAt","removeHashAt","removedHash","hole","patchAttemptsLeft","putEntry","keysArray","presenceArray","hashArray","maxProbeDistance","LinkedHashMap_init_$Init$","LinkedHashSet_init_$Init$","seed1","seed2","jClass","givenSimpleName","isInstanceFunction","classifier","isMarkedNullable","jClasses","kClass","sequence","StringBuilder_init_$Init$","content","uppercase","code","radix","match","nextPattern","$match","$range","$nextPattern","ignoreCase","n1","thisChar","otherChar","thisOffset","otherOffset","bytes","throwOnMalformed","byteIndex","stringBuilder","byte","high","low","byte1","byte2","byte3","byte4","indent","qualifier","shortInfo","hasSeen","stackStart","dropCommonFrames","commonFrames","lastBreak","preLastBreak","messageLines","suppressed","suppressedIndent","sourceUnit","targetUnit","sourceCompareTarget","separator","postfix","limit","truncated","transform","single","to","minimumValue","maximumValue","KotlinNothingValueException_init_$Init$","interfaces","maxSize","masks","currentSize","imask","iid","iidImask","numberIndex","intArray","numberWithSettledBit","activeBit","initValue","$array","ia","descriptor","obj1","obj2","typeOf","shiftNumber","MASK","bigNumber","signum","chunk","hashCodeMap","symbol","cachedHashCode","constructorFunction","proto","this_","errorInfo","srcLen","dstLen","thisNeg","otherNeg","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","numBits","radixLong","rem","digitsPerTime","radixToPower","remDiv","twoPwr32","defaultConstructor","associatedObjectKey","associatedObjects","suspendArity","kind","ctor","metadataConstructor","iface","possibleActiveBit","arity","jsClass","objType","klassMetadata","parentProto","propName","base64","fromBase64","resultLength","shift","sixBit","needle","middle","toBase64","releaseIntercepted","intercepted","resultContinuation","completion","$receiver","$completion$1","Exception_init_$Init$","IllegalArgumentException_init_$Init$","IndexOutOfBoundsException_init_$Init$","IllegalStateException_init_$Init$","UnsupportedOperationException_init_$Init$","RuntimeException_init_$Init$","NoSuchElementException_init_$Init$","Error_init_$Init$","ConcurrentModificationException_init_$Init$","NullPointerException_init_$Init$","NoWhenBranchMatchedException_init_$Init$","ClassCastException_init_$Init$","implFindEntry","ArrayDeque_init_$Init$","copyElements","newCapacity","newElements","positiveMod","incremented","decremented","isVarargs","iteratorFactory","exceptionalState","$block","transformer","calcNext","sendWhen","ensureItemIterator","nextItemIterator","getInitialValue","getNextValue","acc","removed","interceptor","baseKey","safeCast","step","addend","thisUpper","otherUpper","$indent","firstChar","limitForMaxRadix","limitBeforeMul","delimiters","chars","charAtIndex","delimiter","currentOffset","isLimited","$delimitersList","$ignoreCase","currentIndex","indices","getNextMatch","rawValue","","isInNanos","isInMillis","normalValue","unitDiscriminator","addValuesMixedRanges","thisMillis","otherNanos","otherMillis","resultMillis","otherNanoRemainder","compareBits","","hasDays","hasHours","hasMinutes","hasSeconds","components","whole","fractional","fractionalSize","isoZeroes","fracString","nonZeroDigits","normalMillis","maxNsInUnit","valueInNs","normalNanos","isoChar","isTimeComponent","shortName","initializer","third","base","quotient","ac","bc","uradix","beforeAdding","dividend","CancellationException_init_$Init$","CharacterCodingException_init_$Init$","ArithmeticException_init_$Init$","AssertionError_init_$Init$","NumberFormatException_init_$Init$","UninitializedPropertyAccessException_init_$Init$","modified","$elements","predicateResultToRemove","iter","insertionRangeCheck","increaseLength","putAllEntries","updated","removeKey","classifierName","nullable","$arity","toInsert","newLength","stringCsq","lastStart","advanceToNextCharacter","code1","code2","approx","res","approxDouble","approx2","log2","approxRes","approxRem","bitCount","currentResult","currentException","outcome","oldCapacity","otherIterator","ourValue","internalLastIndex","internalIndex","decrementedInternalIndex","decrementedHead","tail","copyCollectionElements","oldElement","dest","collectionSize","nextNotReady","newLeft","containsAll","bits","rnd","rangeStart","rangeEnd","strictIso","infinityString","hasSign","prevUnit","component","dotIndex","afterFirst","allowSpaces","unitName","cont","annotationClass","size_local","mid","resultSize","reverseIndex","paramCount","superType","isPositive","Sequence$iterator$ref$lambda","Iterable$iterator$ref$lambda","throwOnInvalidSequence","charIndex","codePoint","lastTwoBits","threshold","oldChar","newChar","$delimiters","missingDelimiterValue","newIndent","minCommonIndent","marginPrefix","firstNonWhitespaceIndex","startFound","handler","trace","event1","event2","event3","event4","expect","update","onCancelling","invokeImmediately","parentContext","initParentJob","active","uCont","handle","delegate","","isReusable","callSegmentOnCancellation","segment","installParentHandle","invokeOnCancellationImpl","multipleHandlersError","dispatchResume","tryResume","undispatched","dispatcher","eventLoop","resumedState","proposedUpdate","resumeMode","onCancellation","idempotent","resumeImpl","resumeImpl$default","alreadyResumedError","detachChildIfNonResuable","cancelHandler","idempotentResume","cancelCause","handled","continuation","originalException","thrownException","unconfined","isActive","","","allocateList","finalizeFinishingState","wasCancelling","proposedException","exceptions","finalCause","getFinalRootCause","addSuppressedExceptions","rootCause","seenExceptions","unwrappedCause","unwrapped","finalException","finalState","completeStateFinalization","notifyCancelling","cancelParent","isCancellation","startInternal","addLastAtomic","promoteEmptyToNodeList","promoteSingleToNodeList","createCauseException","getOrPromoteCancellingList","tryMakeCancelling","cancelling","tryMakeCompleting","tryMakeCompletingSlowPath","finishing","notifyRootCause","firstChild","tryFinalizeSimpleState","tryWaitForChild","stateString","isCompleting","job","childJob","handlesException","parentJob","setElementLazy","prev","channel","pointers","onClosedHasNext","hasNextOnNoWaiterSuspend","cancellable","updCellResult","onClosedHasNextNoWaiterSuspend","","","updateCellSend","waiter","closed","updateCellSendSlow","bufferOrRendezvousSend","curSenders","updateCellReceive","senders","updateCellReceiveSlow","helpExpandBuffer","trySelectResult","expandBuffer","updateCellExpandBuffer","updateCellExpandBufferSlow","incCompletedExpandBufferAttempts","nAttempts","incCompletedExpandBufferAttempts$default","","completeCloseOrCancel","completeClose","sendersCur","lastSegment","closeLinkedList","lastBufferedCellGlobalIndex","markAllEmptyCellsAsClosed","globalIndex","cancelSuspendedReceiveRequests","sendersCounter","suspendedReceivers","completeCancel","removeUnprocessedElements","onUndeliveredElement","undeliveredElementException","suspendedSenders","sender","isClosed","sendersAndCloseStatusCur","isClosedForReceive","isCellNonEmpty","findSegmentSend","startFrom","updateSendersCounterIfLower","curCounter","findSegmentReceive","updateReceiversCounterIfLower","findSegmentBufferEnd","currentBufferEndCounter","moveSegmentBufferEndToSpecifiedOrLast","select","$element","$select","firstSegment","counter","pauseEB","closeStatus","createSegment$ref$lambda","holder","trySendImpl","isSendOp","trySendDropLatest","trySendDropOldest","onBufferOverflow","","","","","tryEmitLocked","tryEmitNoCollectorsLocked","","dropOldestLocked","newHead","correctCollectorIndexesOnDropOldest","enqueueLocked","curSize","curBuffer","growBuffer","newBuffer","updateBufferLocked","newReplayIndex","newMinCollectorIndex","newBufferEndIndex","newQueueEndIndex","cleanupTailLocked","tryTakeValue","slot","resumes","oldIndex","getPeekedValueLockedAt","resume","tryPeekLocked","awaitValue","findSlotsToResumeLocked","resumesIn","resumeCount","flow","replay","bufferCapacity","currentContext","collectElement","collectJob","emissionParentJob","","","","createNewSegment","newTail","$context","propertyName","fatalCompletion","findClause","clauseObject","trySelectInternalResult","token","combined","collector","collectContext","timeMillis","trySuspend","takenState","cancelLater","dispatched","cancellationCause","caller","upd","makeCancelHandler","tryResumeImpl","actualCompletion","task","queue","eh","continueCompleting","lastChild","waitChild","$this$sequence","makeNode","joinInternal","joinSuspend","cancelMakeCompleting","makeCancelling","causeExceptionCache","causeException","awaitSuspend","immediate","yieldContext","isSender","shouldSendSuspend","curSendersAndCloseStatus","globalCellIndex","ebCompleted","ebCompletedAndBit","pauseExpandBuffers","cancel","markCancellationStarted","closedByThisOperation","markCancelled","markClosed","invokeCloseHandler","closeHandler","minElem","cellState","cellStateString","cancelEmitter","emitter","emitted","emitSuspend","newBufferSize0","maxResumeCount","curEmitterIndex","newBufferSize1","subscriptionCount","curSlots","slots","fatalException","finallyException","internalResult","trySelectInternal","curState","clause","timeout","$continuation","await$lambda","addedContext","oldContext","coroutine","extraBufferCapacity","bufferCapacity0","deserializer","previousValue","$this$buildSerialDescriptor","baseClass","klassName","subClassName","missingFields","serialName","typeArguments","failOnMissingTypeArgSerializer","serializers","elementClassifierIfArray","keySerializer","valueSerializer","aSerializer","bSerializer","cSerializer","elementSerializer","rootClass","isNullable","$typeArguments","clazz","types","cachedSerializer","contextualSerializer","shouldBeNullable","$types","typeParameters","sdBuilder","builderAction","","elementsCount","elementDesc","keyDesc","valueDesc","elementDescriptor","keyDescriptor","valueDescriptor","primitive","eSerializer","kSerializer","vSerializer","primitiveSerializer","readIfAbsent","prepareHighMarksArray","slotsCount","elementsInLastSlot","highMarks","generatedSerializer","$primitiveSerializer","serializer","$serialName","objectInstance","","typeParams","elementDescriptors","namesHash","kindHash","bufferWithData","tagBlock","$keySerializer","$valueSerializer","$this$buildClassSerialDescriptor","class2ContextualFactory","polyBase2Serializers","polyBase2DefaultSerializerProvider","polyBase2NamedSerializers","polyBase2DefaultDeserializerProvider","provider","concreteClass","assocObject","$factory","SerializationException_init_$Init$","another","elementName","annotations","isOptional","composite","decodeSequentially","compositeDecoder","eClass","checkIndex","vIndex","readSize","requiredCapacity","markHigh","offsetInSlot","nextUnmarkedHighIndex","slotOffset","slotMarks","indexInSlot","buildIndices","annotation","nestedName","parentName","childName","inlineDescriptor","currentTag","$deserializer","$previousValue","decodeStructure","typeArgumentsSerializers","serializedClassName","registered","kclass","serial","actualClass","actualSerializer","defaultSerializerProvider","defaultDeserializerProvider","forClass","allowOverwrite","concreteSerializer","answer","baseClassSerializers","previousSerializer","previousByName","simpleName","seen","goldenMask","missingFieldsBits","configuration","serializersModule","encodeDefaults","ignoreUnknownKeys","isLenient","allowStructuredMapKeys","prettyPrint","explicitNulls","prettyPrintIndent","coerceInputValues","useArrayPolymorphism","classDiscriminator","allowSpecialFloatingPointValues","useAlternativeNames","namingStrategy","decodeEnumsCaseInsensitive","allowTrailingComma","classDiscriminatorMode","body","isString","coerceToInlineType","deferred","","$deferred","JsonElementMarker$readIfAbsent$ref","JsonElementMarker$readIfAbsent$ref$lambda","entity","json","$descriptor","useLowercaseEnums","strategyForClasses","nameToPut","$this_buildDeserializationNamesMap","resize","readArray","lastToken","readValue","readDeepRecursive","lexer","discriminator","jsonTree","discriminatorToSkip","coerceInputValue","handleUnknown","unknownKey","decodeStringKey","discriminatorHolder","lastPos","c4","unparsedPrimitive","absenceIsNull","polyDiscriminator","polyDescriptor","desc","keyKind","appendEscape","lastPosition","appendEsc","startPosition","currentPosition","currentChar","decodedString","takePeeked","appendHex","startPos","fromHexChar","character","consumeBooleanLiteral","literalSuffix","actual","initC2ESC","esc","initC2TC","cl","initEscape","initCharToToken","typeParamsSerializers","sd","readObject","hint","checkLeadingComma","newMode","skipLeftoverElements","isMapKey","decodeListIndex","hasComma","decodeObjectIndex","isUnknown","decodeMapIndex","decodingKey","currentObject","currentElement","strategy","baseName","deserializationNamesMap","fallbackName","cpos","snapshot","expectedToken","wasConsumed","doConsume","usedAppend","wasUnquotedString","eof","allowLenientStrings","tokenStack","processed","lastIndexOf","hintMessage","hasQuotation","exponentAccumulator","isExponentPositive","hasExponent","hasChars","doubleAccumulator","consumeBoolean","tc","closingQuote","keyToMatch","positionSnapshot","client","userConfig","manageEngine","$this$intercept","engineFactory","$engine","$previousConfigBlock","$configure","$plugin","pluginData","requestData","responseData","response","responseBody","$this$writer","callContext","$client","$response","","executeWithinCallContext","checkExtensions","requestedExtension","$requestData","$this$async","unsafeRequestHeaders","callJob","cleanupHandler","createCallContext$lambda","$cleanupHandler","engineName","requestHeaders","$requestHeaders","$content","$this$buildHeaders","observableContentPhase","BodyProgress$handle$slambda","observableByteChannel","cachedResponseText","addDefaultResponseValidation$lambda$slambda","$this$HttpResponseValidator","$contentType","$body","$this_intercept","defaultTransformers$slambda","$responseJobHolder","validateResponse","processException","responseValidators","callExceptionHandlers","expectSuccess","$builder","plugin","wrapContent","requestContentType","contentType","charset","charsets","charsetQuality","sendCharset","responseCharsetFallback","withQuality","withoutQuality","quality","truncatedQuality","allowHttpsDowngrade","$scope","checkHttpMethod","requestJob","clientEngineJob","$requestJob","$handler","nextSender","maxSendCount","requestTimeoutMillis","connectTimeoutMillis","socketTimeoutMillis","checkTimeoutValue","$request","$executionContext","$killer","hasNotNullTimeouts","timeoutMillis","originCall","method","executionContext","statusCode","requestTime","developmentMode","fallbackCharset","expectedType","checkCapabilities","HttpStatement$execute$slambda","contentLength","$contentLength","$listener","createWebSocket","urlString_capturingHack","protocolHeaderNames","protocols","ws_capturingHack","headers_capturingHack","executeWebSocketRequest","$headers_capturingHack","eventListener","$this_buildHeaders","awaitConnection$lambda","$eventListener","clientConfig","$jsHeaders","$clientConfig","$bodyBytes","$this$buildObject","stream","$stream","readChunk$lambda","promise","$controller","commonFetch$lambda","$responseData","$this_writer","coroutineContext","websocket","installedFeatures","configure","previousConfigBlock","exceptionResponseText","BeforeReceive","actualCharset","sendResult","requestBuilder","killer","savedCall","rawResponse","status","bodyBytes","frameData","definition","spaceToPlus","encodeURLParameter$lambda","$spaceToPlus","encodeFull","$encodeFull","plusIsSpace","encodeSlash","symbolSize","release","prefixEnd","digit1","digit2","encodeURLPath$lambda","contentSubtype","existingContent","slashesCount","slashIndex","out","escapeValue","parametersOnly","items","valueEnd","paramEnd","$parameters","headerName","headerValue","header","major","minor","decode","nameIndex","equalIndex","spaceNameIndex","spaceEndIndex","spaceEqualIndex","spaceValueIndex","spaceIndex","applyOrigin","tmpLocation","protocol","host","port","user","password","pathSegments","fragment","trailingQuery","encodedPath","encodedUser","encodedQueryParameters","schemeLength","incorrectSchemePosition","scheme","slashCount","nextSlash","passwordIndex","pathEnd","rawPath","basePath","rawChunks","relativePath","fragmentStart","colonIndex","defaultPort","encodedPassword","specifiedPort","pathStartIndex","pathEndIndex","queryStart","queryEnd","pathStart","usernameStart","usernameEnd","passwordStart","passwordEnd","encodedParametersBuilder","slash","subtype","hasParameter","parameter","flushImpl","flushWrittenBytes","ensureNotFailed","closeable","$count","autoFlush","$attachJob","$channel","$dispatcher","charactersCopied","after","before","decodedText","bytesWritten","memory","readRemaining","writeRemaining","availableSpace","writeSize","newWritePosition","overrunSize","allocator","typedArray","view","remaining","","readASCII","atLeastMinCharactersRequire","minShouldBeLess","copied","utf8","codepoint","readUtf8","lastByteCount","prematureEndOfStreamChars","fixGapAfterReadFallback","overrun","fixGapAfterReadFallbackUnreserved","chunk1","chunk2","new","doFill","appendView","prepareReadLoop","minSize","desiredExtraBytes","minSizeIsTooBig","afterRead","dstOffset","appendNewChunk","appendChainImpl","chainedSizeDelta","_tail","tailPosition","writePacketMerging","foreignStolen","lastSize","nextSize","maxCopySize","appendSize","prependSize","writePacketSlowPrepend","readPosition","newReadPosition","_head","pre","bytesCount","inputLength","subView","inputRemaining","chunkSize","characters","parentPool","cp","dstLimit","lastCharIndex","resultLimit","resultPosition","index1","resultPosition1","stage1Limit","freeSpace","highValue","lowValue","_charset","i8","writeIndex","encoder","dstRemaining","numChars","dropLastChar","endIndexExclusive","array1","charactersDecoded","bytesConsumed","nativeDecoder","maxCharacters","sizeInBytes","encoding","fatal","requestedEncoding","readRemainingSuspend","","builderSize","builderHead","addBytesRead","atLeast","closeElement","addBytesWritten","ensureNotClosed","rewindRemaining","startGap","endGap","newLimit","writePosition","chain","discardAsMuchAsPossible","skipped","currentCount","currentSkipped","ensureNext","flushChain","oldTail","writeByteFallback","appendCharFallback","packet","chunkBuffer","headRemaining","positionBefore","positionAfter","appendNext","sleepCondition","bufferOffset","attachJob","convertTo","ensureListForKey","caseInsensitiveName","listForKey","newMap","interceptors","subject","phase","relation","","","createContext","debugMode","sharedInterceptorsList","cacheInterceptors","interceptorsQuantity","phases","phaseIndex","phaseContent","findPhase","phasesList","findPhaseIndex","hasPhase","notSharedInterceptorsList","setInterceptorsListFromPhase","relativeTo","loop","direct","resumeRootWith","blocks","reifiedType","kotlinType","concurrent","hasNodeApi","stringValues","proceedLoop","copyInterceptors","lastRelatedPhaseIndex","resetInterceptorsList","tryAddToPhaseFastPath","currentInterceptors","discardLastRootContinuation","kType","firstIndex","maxElem","controlFrame","opcode","fin","rsv1","rsv2","rsv3","frameType","disposableHandle","Close_init_$Init$","fileUrl","fileName","darkFileUrl","times","initialDelay","maxDelay","segments","","","isAllowed","allow","unexpectedCharacterException","uri","unexpected","getNextCharacter","hexCharToValue","internalReason","","","encoded","decoded","$decoded","$encoded","segmentBuilder","","findPortSeparator","userInfoSeparator","portSeparator","encodedHost","portString","","encodedAuthority","","makeSchemeSpecificPart","_authorityPart","_pathPart","_queryPart","_fragmentPart","","ssp","","","","","","","uriString","ssi","fsi","qsi","expanded","opaquePart","encodedParameter","oldQuery","hasSchemeOrAuthority","oldLength","nextToEncode","nextAllowed","toEncode","bytesLength","convertPlus","throwOnFailure","hexValue","nextC","newDigit","part","oldPart","oldPath","secondary","namespace","","","endOfElement","writeIndent","newDepth","indentSeq","writeIndent$default","addToPending","requireCurrent","isAppend","xmlDeclMode","stringSerializer","prefixMap","filler","namespaces","","removeFirstToCurrent","ns","locationInfo","eventType","localName","namespaceUri","namespaceContext","standalone","parentNamespaceContext","namespaceDecls","namespacePrefix","writer","localname","reader","missingNamespaces","namespaceAt","prefixAt","localNameAt","finishPartialStartTag","close","endOfTag","down","highSurogate","lowSurogate","writeEscapedText","triggerStartDocument","repeats","pending","ev","ensureNamespaceIfRepairing","rawWriteAttribute","$this_appendXmlCodepoint","isRepairNamespaces","xmlVersion","versionString","namespaceIndicesAt","startIdx","endIdx","arrayUseAtDepth","prefixArrayPos","pairPos","nsArrayPos","getPrefix","getNamespace","indentSequence","nodeList","seenPrefixes","namespaceURI","localPart","doc","frag","wrapperElement","$wrapperElement","startLocation","initialDepth","wrappedString","IOException_init_$Init$","lazyMessage","prefixes","extendNamespace","nscount","wrapperNamespaceContext","getDelegate","actualInput","rootElementName","SimpleNamespaceContext_init_$Init$","XmlException_init_$Init$","","nodeType","attr","nsUri","$text","ce","$target","$data","processInstr","textElems","qualifiedName","publicId","systemId","attrNs","attrPrefix","textEvent","originalNSContext","$namespaceURI","events","decl","verString","effectiveEncoding","appliedPrefix","setElementStack","esp","hlp","actualPrefix","lastWasHyphen","existingNamespaceForPrefix","enlargeNamespaceBuffer","nextPair","setPrefix","setNamespace","prefixStr","namespaceUriStr","commentPos","orig","namespaceForPrefix","useNameInfo","useOutputKind","overriddenSerializer","tagName","pedantic","autoPolymorphic","encodeDefault","unknownChildHandler","typeDiscriminatorName","throwOnRepeatedElement","verifyElementOrder","parentNamespace","nextNulledItemsIdx","childDesc","defaultOrList","$inputType","","","xmlDescriptor","polyInfo","attrIndex","stringValue","polyMap","nameMap","childDescriptor","$xmlDescriptor","inputKind","candidates","repairNamespaces","indentString","policy","nilAttribute","xmlName","annotatedName","isDefaultNamespace","Builder_init_$Init$","isStrictAttributeNames","isStrictBoolean","nameToIdx","$parentDescriptor","eq","isStrictNames","","$serializersModule","serializerParent","tagParent","$policy","$serializerParent","","xmlPolyChildren","polyAttrName","qName","polyChild","childInfo","childSerializerParent","canBeAttribute","overrideOutputKind","serialDescriptor","useName","isDocumentRoot","outputKind","elementUseNameInfo","","$tagParent","childrenNameAnnotation","preserveSpace","","","keyNameInfo","parentInfo","keyTagParent","valueNameInfo","valueTagParent","","$canBeAttribute","childUseNameInfo","useParentInfo","effectiveUseNameInfo","getElementDescriptors","initialChildReorderInfo","descriptors","createElementDescriptor","","originalOrderNodes","allNodes","members","finalToDeclMap","declToOrderMap","nextElemIdx","attrOrMembers","general","minIdx","nextIdx","successor","requestedOutputKind","valueChildIndex","valueChild","invalidIdx","xmlCData","polyChildSpecification","pkgPos","typeNameBase","currentPkg","parentTag","eqPos","prefPos","typename","realSerialName","elementTypeDescriptor","elementUseOutputKind","elementIdx","childCount","beforeAny","hasWildCard","afterAny","nodes","beforesToCheck","aftersToCheck","unseenSuccessors","$beforeAny","$afterAny","$parentNamespace","readCompactFragmentContent","deserialize","nextValue","deserializeInput","contentSerializer","nameSpace","rootName","xmlDecoderBase","rootNameInfo","realName","rootDescriptor","defaultOverEmpty","defaultString","descOutputKind","deser","serialValueDecoder","tagId","attrName","childXmlDescriptor","effectiveDeserializer","inputType","isNameOfAttr","normalizedName","containingNamespaceUri","emptyNsPrefix","valChildDesc","singleParsed","orderedBefore","orderedAfter","seenSiblingIndex","alreadySeenTrailingIndex","valueKind","lastAttrIndex","peek","fixedIndex","rawIndex","polyMode","sdec","typeQName","childSerialName","childQnames","isMixed","typeTag","parentType","useAnnotations","isValue","parentChildDesc","elementKind","typeDescriptor","serialKind","typeNameInfo","parentSerialKind","parentDescriptor","childIndex","orderConstraints","orderNodes","xmlBefore","xmlAfter","befores","afters","isListEluded","childAnnotation","mapParent","keyUseName","pseudoKeyParent","keyEffectiveOutputKind","prefixedName","cIndex","elementSerialDescriptor","effectiveSerializerParent","effectiveTagParent","overridenSerializer","fallback","typeName","xmlCodecBase","defaultDecoder","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file